Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL] Kilka formularzy zapisanych do bazy
alien69
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 25.05.2009

Ostrzeżenie: (0%)
-----


Witam.
Na początku zaznaczę że to mój pierwszy post smile.gif
Mam problem z wprowadzaniem danych z formularza do bazy.
Mam taki kod, który wyświetla mi wszystkie dostępne towary w magazynie. Jego celem ma być wysłanie danych o towarach zakupionych.
Ponieważ w bazie jest więcej niż jeden towar(rekord) czy jest możliwość jakiejś pętli czy czegoś aby każdy rekord z wpisaną wartością ilosc_s został zapisany do innej bazy? Zaznaczam że wprowadzenie metodą $_POST dla jednego rekordu (dodanie towaru do bazy) udało mi się wykonać. Natomiast mam problem z wieloma rekordami

  1. <?php
  2.  
  3. $connection = @mysql_connect(localhost,root,dex)
  4.  
  5. or die ('brak polaczenia');
  6. $db = @mysql_select_db('Sklep',$connection)
  7. or die ('brak polaczenia');
  8. $wynik = mysql_query("SELECT * FROM magazyn ORDER BY nazwa")
  9. or die('błąd zapytania');
  10. echo "<table cellpandding=\"2\" border=1>";
  11. echo "<tr>";
  12. echo   "<td width='120'>nazwa</td>";
  13. echo    "<td width='40'>ilosc</td>";
  14. echo    "<td width='50'>cena_n</td>";
  15. echo    "<td width='50'>cena_b</td>";
  16. echo  "</tr>";
  17. echo "</table>";
  18. if(mysql_num_rows($wynik) > 0) {
  19. echo "<table border=1>";
  20. while($r = mysql_fetch_array($wynik)) {
  21. echo "<tr>";
  22. echo ('<form action="kup.php" method="post">');
  23. echo ('<td width="120"><input type="text" value="'.$r[1].'" name="nazwa" />  </td>');
  24. echo ('<td width="120"><input type="text" value="'.$r[2].'" name="ilosc" /> </td>');
  25. echo ('<td width="120"><input type="text" value="'.$r[3].'" name="cena_n" />  </td>');
  26. echo ('<td width="120"><input type="text" value="'.$r[4].'" name="cena_b" />  </td>');
  27. echo ('<td width="50"><input type="text" value="ilość" name="ilosc_s" />  </td>');
  28. echo "</tr>";
  29. }
  30. echo "</table>";
  31.  
  32.  
  33. echo "<br />";
  34. echo ('<input type="submit" value="dodaj" />');
  35. mysql_close($connection);
  36. }
  37. ?>

Z góry dziękuję za wszelkie sugestie
Krytykę przyjmuję ze skuchą biggrin.gif

W takiej postaci do bazy zostaje dodany tylko ostatni rekord.
Czyli trzeba zastosować jakiś sposób numeracji pól.
No to mam zagwozdkę.

Ten post edytował alien69 26.05.2009, 18:00:27
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
TheaSiX
post
Post #2





Grupa: Zarejestrowani
Postów: 110
Pomógł: 10
Dołączył: 3.09.2006
Skąd: Bishop Auckland

Ostrzeżenie: (0%)
-----


po pierwsze kod PHP ujmij w znaczniki
Cytat
[ php]
[ /php]

aby został on czytelnie wyświetlony na forum

i możesz pokazać kod pliku kup.php ?

I takie pytanie, czemu wszystkie rekordy wyświetlasz w input text ?

Ten post edytował TheaSiX 26.05.2009, 00:29:26
Go to the top of the page
+Quote Post
alien69
post
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 25.05.2009

Ostrzeżenie: (0%)
-----


prawdę mówiąc na chwilę obecną tak już namieszałem, próbując coś poprawić że kup.php nie ma całkowicie sensu.
Zastosowałem input text aby móc wykorzystać $_POST.
zastanawiam się nad pętlą w kup.php, jaką trzeba zastosować.

Apropo pytania TheaSiX czy można pola input zadeklarować w innej formie aby nie było możliwości zmiany wartości.
Czy nik nie ma pomysłu pętle czy inną magiczną sztuczkę aby to zadzaiałało?
Go to the top of the page
+Quote Post
TheaSiX
post
Post #4





Grupa: Zarejestrowani
Postów: 110
Pomógł: 10
Dołączył: 3.09.2006
Skąd: Bishop Auckland

Ostrzeżenie: (0%)
-----


przeczytałem Twojego posta jeszcze raz.

powód dla którego przesłany zostaje tylko ostatni rekord to dlatego, że formularz otwierasz N razy, a zamykasz go tylko raz, np:

  1. </form>

Logiczne jest więc działanie, że tylko ostatni form zostanie przesłany. Ja w takich rzeczach użyłbym osobnych przycisków dla każdego forma lub normalne wyświetlanie + użycie linku kup.php?nazwa=$nazwa&cena=$cena etc. + metody GET

Oczywiście jest to trochę roboty przy kilkudziesięciu rekordach, więc to zależy od tego ile naraz chciałbyś wprowadzić do tej drugiej bazy. Żeby nie było, że wszystko wygląda tak źle, to w pliku kup.php możesz użyć header(Location:), aby po wprowadzeniu od razu przenosiło Cię z powrotem na stronę z wypisanymi wszystkimi produktami..

Ten post edytował TheaSiX 26.05.2009, 20:04:54
Go to the top of the page
+Quote Post
alien69
post
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 25.05.2009

Ostrzeżenie: (0%)
-----


Dla potomności załączam działający kod

  1. <?php
  2.  
  3. $connection = @mysql_connect(localhost,root,dex)
  4.  
  5. or die ('brak polaczenia');
  6. $db = @mysql_select_db('Sklep',$connection)
  7. or die ('brak polaczenia');
  8. $wynik = mysql_query("SELECT * FROM magazyn ORDER BY nazwa")
  9. or die('błąd zapytania');
  10. echo "<table cellpandding=\"2\" border=1>";
  11. echo "<tr>";
  12. echo   "<td width='150'>nazwa</td>";
  13. echo    "<td width='150'>ilosc</td>";
  14. echo    "<td width='150'>cena_n</td>";
  15. echo    "<td width='150'>cena_b</td>";
  16. echo    "<td width='150'>sztuk</td>";
  17. echo  "</tr>";
  18. echo "</table>";
  19. if(mysql_num_rows($wynik) > 0) {
  20. echo "<table border=1>";
  21. while($r = mysql_fetch_array($wynik)) {
  22. echo "<tr>";
  23. echo ('<form action="kup.php" method="post">');
  24. echo ('<td width="120"><input type="text" value="'.$r[1].'" name="nazwa" />  </td>');
  25. echo ('<td width="40"><input type="text" value="'.$r[2].'" name="ilosc" /> </td>');
  26. echo ('<td width="50"><input type="text" value="'.$r[3].'" name="cena_n" />  </td>');
  27. echo ('<td width="50"><input type="text" value="'.$r[4].'" name="cena_b" />  </td>');
  28. echo ('<td width="50"><input type="text"  name="ilosc_s" />  </td>');
  29.  
  30. echo ('<td width="50"><input type="submit" value="Kup" /></form> </td>');
  31. echo "</tr>";
  32. }
  33. echo "</table>";
  34.  
  35.  
  36. echo "<br />";
  37.  
  38. mysql_close($connection);
  39. }
  40. ?>


oraz kup.php

  1. <?php
  2. $nazwa = $_POST['nazwa'];
  3. $cena_n = $_POST['cena_n'];
  4. $cena_b = $_POST['cena_b'];
  5. $ilosc_s = $_POST['ilosc_s'];
  6. if ($nazwa and $ilosc and $cena_n and $cena_b)
  7. {
  8. $connection = @mysql_connect(localhost,root,dex)
  9.  
  10. or die ('brak polaczenia');
  11. $db = @mysql_select_db('Sklep',$connection)
  12. or die ('brak polaczenia');
  13.  
  14. $ins = @mysql_query("INSERT INTO sprzedarz SET nazwa='$nazwa',ilosc='$ilosc_s',cena_netto='$cena_n',cena_brutto='$cena_b'");
  15. if($ins) echo "rekord dodany";
  16. else echo "błąd dodawania";
  17. mysql_close($connection);
  18. }
  19. header("Location: <a href=\"http://localhost/Sklep/test2.php");&#092;" target=\"_blank\">http://localhost/Sklep/test2.php");</a>
  20. ?>


ładnie dodaje towar do listy sprzedanych i wraca do list towarów
Teraz popracuje nad detalami (odejmowanie kupionego towaru od stanu magazynu itp.)
Go to the top of the page
+Quote Post
TheaSiX
post
Post #6





Grupa: Zarejestrowani
Postów: 110
Pomógł: 10
Dołączył: 3.09.2006
Skąd: Bishop Auckland

Ostrzeżenie: (0%)
-----


header. wystarczy, że zrobisz tak: (nie wiem po co ten dodatkowy kod tam jest?)
  1. <?php
  2. header("Location: /test2.php");
  3. ?>
Go to the top of the page
+Quote Post
alien69
post
Post #7





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 25.05.2009

Ostrzeżenie: (0%)
-----


Prawdę mówiąc nie mam pojęcia skąd to sie tam wzięło smile.gif
u mnie wygląda to tak
header("Location: http://localhost/Sklep/test2.php");

Już wiem skąd smile.gif jak puszczam kod w znacznikach [php][/php] dodaje się automatycznie

Ten post edytował alien69 26.05.2009, 23:05:45
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 04:51