Witam,

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 sad.gif Moze ktos z Was pomoze

Oto stworzone skrypty:

  1. <?php
  2. include ('autoryzacja.php');
  3. include ('naglowek1.html');
  4.  
  5.  
  6. if (isset($_POST['submit'])) {  // Obsłuż formularz.
  7. require_once ('baza.php'); // Połącz się z bazą danych.
  8. function escape_data ($data) { // Utworz funkcję wstawiającą przed znakami specjalnymi znak odwrotnego ukośnika.
  9. global $dbc;  // Potrzebujemy połączenia.
  10. if (ini_get('magic_quotes_gpc')) {
  11. $data = stripslashes($data);
  12. }
  13. return mysql_real_escape_string($data, $dbc);
  14. }  // Koniec funkcji.
  15. $message = NULL;  // Utwórz nową, pustą zmienną.
  16.  
  17.  
  18.  
  19. if (empty($_POST['day'])) { // Sprawdź IDspedytora.
  20. $day = FALSE;
  21. $message .= '<p>Zapomniałeś/-aś podać dzień!</p>';
  22. } else {
  23. $day = escape_data($_POST['day']);
  24. }
  25.  
  26.  
  27. if (empty($_POST['month'])) { // Sprawdź IDspedytora.
  28. $month = FALSE;
  29. $message .= '<p>Zapomniałeś/-aś podać miesi&#261c!</p>';
  30. } else {
  31. $month = escape_data($_POST['month']);
  32. }
  33.  
  34.  
  35. if (empty($_POST['year'])) { // Sprawdź IDspedytora.
  36. $year = FALSE;
  37. $message .= '<p>Zapomniałeś/-aś podać rok!</p>';
  38. } else {
  39. $year = escape_data($_POST['year']);
  40. }
  41.  
  42. $data = $year.'-'.$month.'-'.$day;
  43.  
  44.  
  45. if ($data) {  // Jeżeli wszystko jest OK.
  46.  
  47. $query = "SELECT IDzlecenia FROM zlecenia WHERE IDzlecenia=''";
  48. $result = @mysql_query ($query);  // Wykonaj zapytanie.
  49. if (mysql_num_rows($result) == 0) {
  50. // Utwórz zapytanie.
  51. $query = "INSERT INTO zlecenia (NazwaPracownika, DataRealizacji) VALUES ('".$_SESSION[login_pracownika]."', '$data')";
  52. $result = @mysql_query ($query);
  53. if ($result) {  // Jeżeli zostało ono wykonane bez przeszkód.
  54.  
  55.  
  56.  
  57. echo '<b>Dane zlecenia</b>';
  58.  
  59.  
  60. $query = "SELECT zlecenia.* FROM zlecenia ORDER BY IDzlecenia DESC LIMIT 1";
  61. $result = @mysql_query($query);
  62. $num = mysql_num_rows ($result); // Ilu jest użytkownikow?
  63. if ($result) {
  64.  
  65. echo '<table cellspacing="2" cellpadding="6">
  66. <tr align="center" bgcolor="rgb(240,250,255)"><td><b>Pracownik przyjmuj&plusmn;cy zlecenie:</b></td><td><b>Data<p>realizacji</b></td></tr>';
  67.  
  68. while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
  69.  
  70.  
  71. echo '<tr align="center"><td>'.$row[1].'</td><td>'.$row[2].'</td></tr>';
  72.  
  73. }
  74. echo '</table>';
  75. mysql_free_result ($result); // Zwolnij zasoby.
  76.  
  77.  
  78.  
  79. echo $idz;
  80.  
  81.  
  82.  
  83. }
  84.  
  85. include 'zleceniaa.php';
  86. include 'stopka.html'; // Dołącz stopkę HTML.
  87. exit(); // Opuść skrypt.
  88.  
  89. } else { // Jeżeli zapytanie nie zostało wykonane.
  90. $message = '<p>Pozycja nie została dodana do bazy z powodu awarii naszego systemu. Przeprasz
    amy za kłopot. </p><p>'
     . mysql_error() . '</p>'; 
  91. }
  92. } else {
  93. $message = '<p align="center">Takie zlecenie zostało już przyjęte do bazy danych.</p>';
  94. }
  95. mysql_close(); // Zamknij połączenie z bazą danych.
  96.  
  97. } else {
  98. $message .= '<p>Spróbuj jeszcze raz.</p>';
  99. }
  100.  
  101. } // Koniec głównego wyrażenia warunkowego Submit.
  102.  
  103. // Jeżeli jest jakiś komunikat o błędzie, wyświetl go na stronie
  104. if (isset($message)) {
  105. echo '<font color="red">', $message, '</font>';
  106. }
  107. ?>
  108.  
  109. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  110. <fieldset><legend>Wprowadź do poniższego formularza informacje o zleceniu:</legend>
  111.  
  112.  
  113.  
  114.  
  115.  
  116. <p><b>Data Realizacji:</b>
  117.  
  118. <?php
  119. $months = array (1 => '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12');
  120.  
  121. // Utwórz menu rozwijalne.
  122. echo '<select name="day">
  123. <OPTION value=0 selected>Dzień</OPTION>';
  124. for ($day = 1; $day <= 31; $day++) {
  125. echo "<option value=\"$day\">$day</option>\n";
  126. }
  127.  
  128. echo '</select>';
  129.  
  130.  
  131.  
  132. echo '<select name="month">
  133. <OPTION value=0 selected>Miesi&#261c</OPTION>';
  134. foreach ($months as $key => $value) {
  135. echo "<option value=\"$key\"";
  136. if ($value == $this_month) {
  137. echo ' selected="selected"';
  138. }
  139. echo ">$value</option>\n";
  140. }
  141.  
  142. echo '</select>';
  143.  
  144.  
  145.  
  146. echo '<select name="year">
  147. <OPTION value=0 selected>Rok</OPTION>';
  148. for ($year = date('Y'); $year <= 2025; $year++) {
  149. echo "<option value=\"$year\">$year</option>\n";
  150. }
  151.  
  152. echo '</select>';
  153.  
  154. ?>
  155.  
  156.  
  157.  
  158. </fieldset>
  159.  
  160. <div align="center"><input type="submit" name="submit" value="Wyślij dane" /></div>
  161.  
  162. </form><!-- Koniec formularza -->
  163.  
  164.  
  165.  
  166.  
  167.  
  168. <?php
  169. include ('stopka.html');
  170. ?>




Skrypt z formularzem wypelniajacym tabele 'opiszlecenia':


  1. <form action="zlecenia2.php" method="post">
  2. <fieldset><legend>Wybierz produkt</legend>
  3.  
  4.  
  5. <?php
  6. include 'baza.php';  // Połącz się z bazą danych.
  7.  
  8.  
  9. $sql = "SET CHARSET latin2"; // Zmiana kodowania znaków w bazie danych.
  10. mysql_query($sql);
  11.  
  12. echo '<p><table cellspacing="2" cellpadding="5">
  13. <tr>
  14. <td><b>Nazwa produktu</b></td>
  15. <td><b>Ilość</b></td></tr>
  16.  
  17. <tr>
  18. <td>
  19. <SELECT name="IDproduktu" size="1"><OPTION value=0 selected>Wybierz produkt</OPTION>';
  20. $query = mysql_query("SELECT * FROM produkty order by NazwaProduktu") or die("Error SQL: produkty");
  21. while($res=mysql_fetch_row($query))
  22. {
  23. echo '<OPTION value="'.$res[0].'">'.$res[1].'</OPTION>';
  24. }
  25. echo '</SELECT></td>
  26. <td>';
  27. ?>
  28.  
  29. <input type="text" name="Ilosc" size="4" maxlength="4" value="<?php if (isset($_POST['Ilosc'])) echo $_POST['Ilosc']; ?>" />
  30. <input type="submit" name="nastepny" value="Dodaj następny" />
  31. <?php
  32. echo '</td></tr></table>';
  33.  
  34. ?>
  35.  
  36.  
  37.  
  38.  
  39.  
  40. </fieldset>
  41.  
  42. <div align="center"><input type="submit" name="koniec" value="Zakończ dodawanie" /></div>
  43.  
  44. </form><!-- Koniec formularza -->



Skrypt obslugujacy formularz wypelniajacy tabele 'opiszlecenia':

  1. <?php
  2.  
  3. if (isset($_POST['nastepny'])) {  // Obsłuż formularz.
  4.  
  5.  
  6. function escape_data ($data) { // Utworz funkcję wstawiającą przed znakami specjalnymi znak odwrotnego ukośnika.
  7. global $dbc;  // Potrzebujemy połączenia.
  8. if (ini_get('magic_quotes_gpc')) {
  9. $data = stripslashes($data);
  10. }
  11. return mysql_real_escape_string($data, $dbc);
  12. }  // Koniec funkcji.
  13. $message = NULL;  // Utwórz nową, pustą zmienną.
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20. if (empty($_POST['IDproduktu'])) { // Sprawdź nazwę produktu.
  21. $p = FALSE;
  22. $message .= '<p>Zapomniałeś/-aś podać nazwę produktu!</p>';
  23. } else {
  24. $p = escape_data($_POST['IDproduktu']);
  25. }
  26.  
  27.  
  28. if (empty($_POST['Ilosc'])) { // Sprawdź nazwę produktu.
  29. $i = FALSE;
  30. $message .= '<p>Zapomniałeś/-aś podać ilość!</p>';
  31. } else {
  32. $i = escape_data($_POST['Ilosc']);
  33. }
  34.  
  35.  
  36.  
  37. if ($p && $i) {  // Jeżeli wszystko jest OK.
  38.  
  39. $query = "SELECT IDopisuZlecenia FROM opiszlecenia WHERE IDopisuZlecenia=''";
  40. $result = @mysql_query ($query);  // Wykonaj zapytanie.
  41. if (mysql_num_rows($result) == 0) {
  42. // Utwórz zapytanie.
  43.  
  44. $query = "INSERT INTO opiszlecenia (IDproduktu, Ilosc, IDzlecenia) VALUES ('$p', '$i', '$idz')";
  45. $result = @mysql_query ($query);
  46. if ($result) {  // Jeżeli zostało ono wykonane bez przeszkód.
  47.  
  48.  
  49.  
  50. include 'opis_zlecenia.php';
  51.  
  52. include 'zlecenia_form.php';
  53.  
  54. include ('stopka.html'); // Dołącz stopkę HTML.
  55. exit(); // Opuść skrypt.
  56.  
  57. } else { // Jeżeli zapytanie nie zostało wykonane.
  58. $message = '<p>Pozycja nie została dodana do bazy z powodu awarii naszego systemu. Przeprasz
    amy za kłopot. </p><p>'
     . mysql_error() . '</p>'; 
  59. }
  60. } else {
  61. $message = '<p align="center">Takie zlecenie zostało już przyjęte do bazy danych.</p>';
  62. }
  63. mysql_close(); // Zamknij połączenie z bazą danych.
  64.  
  65. } else {
  66. $message .= '<p>Spróbuj jeszcze raz.</p>';
  67. }
  68.  
  69. } // Koniec głównego wyrażenia warunkowego Submit.
  70.  
  71. // Jeżeli jest jakiś komunikat o błędzie, wyświetl go na stronie
  72. if (isset($message)) {
  73. echo '<font color="red">', $message, '</font>';
  74. }
  75. ?>
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83. <?php
  84. include 'zlecenia_form.php';
  85. ?>



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)