![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 29.04.2017 Ostrzeżenie: (0%) ![]() ![]() |
Właśnie zauważyłem, że ten temat powinien wylądować w przedszkolu. Proszę o przeniesienie. Witam, jestem początkującym w temacie programowania. Proszę o większą wyrozumiałość. Napotkałem się z problemem w trakcie tworzenia formularza, który ma posiadać 2 listy rozwijana: (nazwa aktora, tytuł filmu). Po kliknięciu przycisku wyślij do tabeli obsada będzie dodawana nowa pozycja aktor i film, w którym zagrał. Prowadzący zaproponował stworzenie funkcji, która będzie tworzyć listę rozwijana. Tak też zrobiłem. Obie listy działają poprawnie (aktorzy: function getAktorsHtmlList($pdo) filmy: function getFilmsHtmlList($pdo)) Niestety nie umiem teraz zagnieździć tych funkcji w funkcji tworzącej formularz: function generateFromObsada($action) Konfiguracje połączenia serwera oraz przesyłania danych już wykonałem. Stworzyłem również funkcje wyświetlającą tabele obsada tak, aby widzieć czy została dodany kolejny rekord: function getObsadaHtmlList($pdo) Zawartość serwera bazy danych: tablica aktorzy (id_aktora, imie, nazwisko) tablica filmy (id_filmu, tytul) tablica obsada (id_obsady, id_aktora, id_filmu) CODE <?php
require_once 'include/settings.php'; /** * Funkcja zwracająca nam rozwijana liste aktorow * @param $pdo referencja do obiektu klasy PDO połączenia z bazą danych */ function getAktorsHtmlList($pdo) { $HTML_return_string=""; try { $stmt = $pdo->prepare ( 'SELECT imie, nazwisko, id_aktora FROM aktorzy;'); $stmt->execute(); $HTML_return_string .= '<b>Aktor: </b>'; $HTML_return_string .= '<select name="id_aktora">'; $HTML_return_string .= '<option value="">Wybierz aktora</option>'; //może być ale nie musi foreach ($stmt as $row) { $HTML_return_string .= '<option value="' .$row['id_aktora'].'"> '.$row['imie'].' '.$row['nazwisko'].'</option>' ; } $HTML_return_string.= '</select>'; } catch (PDOException $e) { $HTML_return_string.="Błąd zaypytania do bazy." .$e->getMessage(); } return $HTML_return_string; } /** * Funkcja zwracająca nam rozwijana liste filmow * @param $pdo referencja do obiektu klasy PDO połączenia z bazą danych */ function getFilmsHtmlList($pdo) { $HTML_return_string=""; try { $stmt = $pdo->prepare ( 'SELECT tytul, id_filmu FROM filmy;'); $stmt->execute(); $HTML_return_string .= '<b>Film: </b>'; $HTML_return_string .= '<select name="id_filmu">'; $HTML_return_string .= '<option value="">Wybierz film</option>'; //może być ale nie musi foreach ($stmt as $row) { $HTML_return_string .= '<option value="' .$row['id_filmu'].'"> '.$row['tytul'].' </option>' ; } $HTML_return_string.= '</select>'; } catch (PDOException $e) { $HTML_return_string.="Błąd zaypytania do bazy." .$e->getMessage(); } return $HTML_return_string; } /** * Funkcja zwracająca nam obsadę sformatowaną w HTML * @param $pdo referencja do obiektu klasy PDO połączenia z bazą danych */ function getObsadaHtmlList($pdo) { $HTML_return_string=""; try { $stmt = $pdo->prepare( 'SELECT imie, nazwisko, tytul FROM obsada cross join aktorzy on aktorzy.id_aktora=obsada.id_aktora cross join filmy on filmy.id_filmu=obsada.id_filmu;'); $stmt->execute(); $HTML_return_string .= '</br><br/></br><b>Obsada filmów:</b><br/>'; $HTML_return_string .= '<u1>'; foreach ($stmt as $row) { $HTML_return_string.= '<li>Aktor: '.$row['imie'].' '.$row['nazwisko'].' Film: '.$row['tytul'].' </li>'; } $stmt->closeCursor(); $HTML_return_string .= '<u1>'; } catch (PDOException $e) { $HTML_return_string.="Zapytanie do bazy nie mogło zostać wykonane" .$e->getMessage(); } return $HTML_return_string; } /** * Funkcja generująca formularz * @param string $action - nazwa skryptu do ktorego zostaną przesłane dane formularza * @return string */ function generateFromObsada($action) { $form=""; $form.="<form action='$action' method='post'>".PHP_EOL; $form.="<fieldset><legend> Obsada </legend>" .PHP_EOL; $form.="<select name=id_aktora>"; $form.="<option></option>"; $form.="</select>".PHP_EOL; $form.="<input type='submit' name='submit' value='Ustaw obsadę' /><br/>".PHP_EOL; $form.="</fieldset>".PHP_EOL; $form.="</form>".PHP_EOL; return $form; } //Próba połączenia z bazą danych try { $pdo = new PDO("$DBEngine:host=$DBServer;dbname=$DBName", $DBUser, $DBPass); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //Konfiguracja zgłaszania błedów poprzez wyjątki } catch (PDOException $e) { echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage(); die(); } //Dodanie obsady gdy został przesłany formularz if (isset($_POST['submit'])) { //Dodajmy jak zostały przesłane pola aktor i film // i żadne z nich nie jest puste if(($_POST['id_aktora']!="Wybierz aktora") && ($_POST['id_filmu'] != "Wybierz film")) { try { $stmt=$pdo->prepare(' INSERT INTO obsada (id_aktora,id_filmu) VALUES (:id_aktora, :id_filmu); '); $stmt->bindValue(':id_aktora', $_POST['id_aktora'], PDO::PARAM_STR); $stmt->bindValue(':id_filmu', $_POST['id_filmu'], PDO::PARAM_STR); $stmt->execute(); $stmt->closeCursor(); } catch (PDOException $e) { echo "nie udało się dodać rekordu do bazy: ".$e->getMessage(); } } } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Edycja obsady</title> </head> <body> <?php //echo getAktorsHtmlList($pdo); //echo getFilmsHtmlList($pdo); echo generateFromObsada(basename(__FILE__)); echo getObsadaHtmlList($pdo); ?> </body> </html> Ten post edytował gmarcing 29.04.2017, 08:05:32 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 872 Pomógł: 230 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) ![]() ![]() |
1. To nie jest programowanie obiektowe. Stosowanie obiektów, nie kwalifikuje że programujesz obiektowo.
2. Zamiast tagu CODE, stosuj PHP. 3. zamiast tworzyć listę HTML aktorów czy filmów, stwórz funkcję która będzie zwracać tylko i wyłącznie tablice z aktorami i filmami. Wtedy możesz do funkcji tworzącej formularz dodać taką listę.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.05.2025 - 11:58 |