Proboje zrobić formularz zamowien produktow oparty na tabelach powiazanych relacjami Wiele do Wielu.
W tym celu stworzyłem trzy tabele:
'produkty' z kolumnami: IDproduktu, NazwaProduktu
'zlecenia' z kolumnami: IDzlecenia, NazwaPracownika, DataRealizacji
'opiszlecenia' z kolumnami: IDopisu, IDproduktu, IDzlecenia, Ilosc
Tabela 'opiszlecenia' jest tabelą wiazaca pozostałe dwie w relacje Wiele Do Wielu.
Skrypt ktory proboje stworzyc ma w pierwszej kolejnosci wyswietlic formularz do wypelnienia tabeli 'zlecenia', następnie po nacisnieciu przycisku SUBMIT wyswietlić wprowadzone do tej tabeli dane oraz rozwijane pole z wyborem produktu i przyciskiem 'Dodaj nastepny produkt' do wypelnienia tabeli 'opiszlecenia'. Po nacisnieciu tego przycisku skrypt powinien nadal wyswietlac dane z tabeli 'zlecenia' oraz pierwszy z dodanych produktow a takze nastepne rozwijane pole wyboru produktu z przyciskiem 'Dodaj nastepny produkt' i tak do momentu nacisniecia przycisku 'zakoncz zlecenie'.
Moj problem polega na tym ze skrypt robi wszystko to co chce tylko do momentu dodania do tabeli 'opiszlecenia' wybranego produktu. Po nacisnieciu przycisku 'Dodaj nastepny produkt' skrypt zamiast przejsc dalej i wyswietlic dodany produkt wraca do pierwszego formularza, w ktorym wypelnialem tabele 'zlecenia'. Juz nie mam pomyslow co to moze byc

Oto stworzone skrypty:
<?php include ('autoryzacja.php'); include ('naglowek1.html'); require_once ('baza.php'); // Połącz się z bazą danych. function escape_data ($data) { // Utworz funkcję wstawiającą przed znakami specjalnymi znak odwrotnego ukośnika. } } // Koniec funkcji. $message = NULL; // Utwórz nową, pustą zmienną. $day = FALSE; $message .= '<p>Zapomniałeś/-aś podać dzień!</p>'; } else { $day = escape_data($_POST['day']); } $month = FALSE; $message .= '<p>Zapomniałeś/-aś podać miesiąc!</p>'; } else { $month = escape_data($_POST['month']); } $year = FALSE; $message .= '<p>Zapomniałeś/-aś podać rok!</p>'; } else { $year = escape_data($_POST['year']); } $data = $year.'-'.$month.'-'.$day; if ($data) { // Jeżeli wszystko jest OK. $query = "SELECT IDzlecenia FROM zlecenia WHERE IDzlecenia=''"; // Utwórz zapytanie. $query = "INSERT INTO zlecenia (NazwaPracownika, DataRealizacji) VALUES ('".$_SESSION[login_pracownika]."', '$data')"; if ($result) { // Jeżeli zostało ono wykonane bez przeszkód. $query = "SELECT zlecenia.* FROM zlecenia ORDER BY IDzlecenia DESC LIMIT 1"; if ($result) { echo '<table cellspacing="2" cellpadding="6"> <tr align="center" bgcolor="rgb(240,250,255)"><td><b>Pracownik przyjmuj±cy zlecenie:</b></td><td><b>Data<p>realizacji</b></td></tr>'; } } include 'zleceniaa.php'; include 'stopka.html'; // Dołącz stopkę HTML. } else { // Jeżeli zapytanie nie zostało wykonane. $message = '<p>Pozycja nie została dodana do bazy z powodu awarii naszego systemu. Przeprasz
amy za kłopot. </p><p>' . mysql_error() . '</p>'; } } else { $message = '<p align="center">Takie zlecenie zostało już przyjęte do bazy danych.</p>'; } } else { $message .= '<p>Spróbuj jeszcze raz.</p>'; } } // Koniec głównego wyrażenia warunkowego Submit. // Jeżeli jest jakiś komunikat o błędzie, wyświetl go na stronie } ?> <fieldset><legend>Wprowadź do poniższego formularza informacje o zleceniu:</legend> <p><b>Data Realizacji:</b> <?php // Utwórz menu rozwijalne. echo '<select name="day"> <OPTION value=0 selected>Dzień</OPTION>'; for ($day = 1; $day <= 31; $day++) { } echo '<select name="month"> <OPTION value=0 selected>Miesiąc</OPTION>'; foreach ($months as $key => $value) { if ($value == $this_month) { } } echo '<select name="year"> <OPTION value=0 selected>Rok</OPTION>'; } ?> </fieldset> <div align="center"><input type="submit" name="submit" value="Wyślij dane" /></div> </form><!-- Koniec formularza --> <?php include ('stopka.html'); ?>
Skrypt z formularzem wypelniajacym tabele 'opiszlecenia':
<form action="zlecenia2.php" method="post"> <fieldset><legend>Wybierz produkt</legend> <?php include 'baza.php'; // Połącz się z bazą danych. $sql = "SET CHARSET latin2"; // Zmiana kodowania znaków w bazie danych. echo '<p><table cellspacing="2" cellpadding="5"> <tr> <td><b>Nazwa produktu</b></td> <td><b>Ilość</b></td></tr> <tr> <td> <SELECT name="IDproduktu" size="1"><OPTION value=0 selected>Wybierz produkt</OPTION>'; $query = mysql_query("SELECT * FROM produkty order by NazwaProduktu") or die("Error SQL: produkty"); { } echo '</SELECT></td> <td>'; ?> <input type="submit" name="nastepny" value="Dodaj następny" /> <?php ?> </fieldset> <div align="center"><input type="submit" name="koniec" value="Zakończ dodawanie" /></div> </form><!-- Koniec formularza -->
Skrypt obslugujacy formularz wypelniajacy tabele 'opiszlecenia':
<?php function escape_data ($data) { // Utworz funkcję wstawiającą przed znakami specjalnymi znak odwrotnego ukośnika. } } // Koniec funkcji. $message = NULL; // Utwórz nową, pustą zmienną. $p = FALSE; $message .= '<p>Zapomniałeś/-aś podać nazwę produktu!</p>'; } else { $p = escape_data($_POST['IDproduktu']); } $i = FALSE; $message .= '<p>Zapomniałeś/-aś podać ilość!</p>'; } else { $i = escape_data($_POST['Ilosc']); } if ($p && $i) { // Jeżeli wszystko jest OK. $query = "SELECT IDopisuZlecenia FROM opiszlecenia WHERE IDopisuZlecenia=''"; // Utwórz zapytanie. $query = "INSERT INTO opiszlecenia (IDproduktu, Ilosc, IDzlecenia) VALUES ('$p', '$i', '$idz')"; if ($result) { // Jeżeli zostało ono wykonane bez przeszkód. include 'opis_zlecenia.php'; include 'zlecenia_form.php'; include ('stopka.html'); // Dołącz stopkę HTML. } else { // Jeżeli zapytanie nie zostało wykonane. $message = '<p>Pozycja nie została dodana do bazy z powodu awarii naszego systemu. Przeprasz
amy za kłopot. </p><p>' . mysql_error() . '</p>'; } } else { $message = '<p align="center">Takie zlecenie zostało już przyjęte do bazy danych.</p>'; } } else { $message .= '<p>Spróbuj jeszcze raz.</p>'; } } // Koniec głównego wyrażenia warunkowego Submit. // Jeżeli jest jakiś komunikat o błędzie, wyświetl go na stronie } ?> <?php include 'zlecenia_form.php'; ?>
Dodam jeszcze że skrypt z formularzem do tabeli 'opiszlecenia' oraz skrypt wyswietlajacy rekordy z tej tabeli uzyte bez pierwszego skryptu dzialaja tak jak powinny.
Juz sam nie wiem moze jest latwiejszy sposob na zalatwienie takiego tematu.
Pilnie prosze o pomoc.
Z gory dziekuje
funky_beat (aw)