Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Problem ze zmiennymi w pętli przekazywanej z formularza
mario_7
post 10.03.2013, 13:55:33
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 10.03.2013

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


Witam na forum, bo właśnie założyłem konto, choć od jakiegoś czasu zdarza mi się tu zaglądać.
Mam pewien problem, a mianowicie jak pisze w temacie nie ogarniam przekazywania danych z formularza z pętli. To znaczy:
Na początku ktoś określa ile rekordów chce dodać, potem pętla tworzy odpowiednią ilość komórek w formularzu a następnie wysyła, żeby to wpakować do bazy.
Plik "formularzdowydania.php":
  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5. <?php
  6. mysql_connect("localhost", "root", "");
  7. mysql_select_db("magazyn");
  8. $c= $_POST['c'];
  9. echo '<form action="wydanie.php" method="post">
  10. znowu podaj ilosc sztuk <input type="text" name="zmienna" /><br>
  11. Klient: <select name="idklienta"><
  12. ';
  13.  
  14. $array2 = mysql_query('SELECT * FROM klienci ORDER BY idk ASC');
  15.  
  16. if(mysql_num_rows($array2) > 0)
  17. {
  18. while($l = mysql_fetch_assoc($array2))
  19. {
  20. echo "<option value='{$l['idk']}'>{$l['nazwaklienta']}</option>";
  21. }
  22. }
  23.  
  24. echo '</select></br>
  25. ';
  26. for($b=0;$b<$c;$b++)
  27. {
  28. 'szt: <input type="text" name="szt' . $b;
  29. echo'">
  30. szyba: <select name="idszyby' . $b;
  31. echo'"><
  32. ';
  33.  
  34.  
  35.  
  36. $array = mysql_query('SELECT * FROM katalog ORDER BY ids ASC');
  37.  
  38. if(mysql_num_rows($array) > 0)
  39. {
  40. while($l = mysql_fetch_assoc($array))
  41. {
  42. echo "<option value='{$l['ids']}'>{$l['nazwaszyby']}</option>";
  43. }
  44. }
  45.  
  46. echo '</select></br>';
  47. }
  48. <br/><input type="submit" value="Dodaj"></form>';
  49. ?>
  50. </body>
  51. </html>

plik: "wydanie.php"
  1. <html>
  2. <head></head>
  3. <body>
  4. <?php
  5. mysql_connect("localhost", "root", "");
  6. mysql_select_db("magazyn");
  7. $zmienna= $_POST['zmienna'];
  8. $idklienta= $_POST['idklienta'];
  9. $dupa = mysql_query("SELECT * FROM 'przyjecie' ORDER BY idt DESC LIMIT 1");
  10. $idt=$dupa+1;
  11. // echo $_POST['ids0'];
  12. for( $w=0; $w<$zmienna; $w++) {
  13. $sztuki = 0;
  14. $id_szyby = 0;
  15. }
  16. for( $b=0; $b<$zmienna; $b++) {
  17. $szt.$b = $_POST["szt$b"];
  18. $idszyby.$b = $_POST["idszyby$b"];
  19.  
  20. $sql=("INSERT INTO wydanie VALUES ('', '$idklienta', '$idszyby.$b', '$idt', '$sztuki.$b', NOW()");
  21. $x = mysql_query($sql);
  22.  
  23. if($x) echo "Dodano szybe";
  24. else echo "Blad, sproboj ponownie";
  25.  
  26. }
  27.  
  28. ?>
  29. <br>
  30. <a href="index.php">powrot</a>
  31.  
  32.  
  33. </body>
  34. </html>


Jeszcze błędy jakie wyskakują:
Notice: Undefined variable: szt in C:\xampp\htdocs\magazyn\wydanie.php on line 17

Notice: Undefined variable: idszyby in C:\xampp\htdocs\magazyn\wydanie.php on line 18

Notice: Undefined variable: idszyby in C:\xampp\htdocs\magazyn\wydanie.php on line 20
Blad, sproboj ponownie
powrot
Byłbym wdzięczny za pomoc, bo zobowiązałem się pomóc kumplowi w zrobieniu czegoś w rodzaju bazy magazynu.
Pewnie jest to jakiś banał, jak sam dział głosi na poziomie przedszkola smile.gif
Go to the top of the page
+Quote Post
nospor
post 11.03.2013, 07:56:08
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




nie: $szt.$b = $_POST["szt$b"];

$idszyby.$b = $_POST["idszyby$b"];
a:
$szt = $_POST["szt$b"];

$idszyby = $_POST["idszyby$b"];

I do bazy wkładaj $szt oraz $idszyby


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mario_7
post 11.03.2013, 10:06:17
Post #3





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 10.03.2013

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


Faktycznie, teraz to rozumiem. Skrypt leci dalej. Ale nadal nie wrzuca do tabeli wartości.
a w formularzu mam zostawić jak jest :
  1. {
  2. 'szt: <input type="text" name="szt' . $b;
  3. echo'">
  4. szyba: <select name="idszyby' . $b;
  5. echo'"><

czy pousuwać te $b?
Bo teraz (bez zmiany formularza) otrzymuje:
Notice: Undefined index: idszyby0 in C:\xampp\htdocs\magazyn\wydanie.php on line 18
Blad, sproboj ponownie
Wogóle dzięki za zainteresowanie tematem smile.gif
Go to the top of the page
+Quote Post
nospor
post 11.03.2013, 10:10:05
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




nie: $x = mysql_query($sql);
a: $x = mysql_query($sql) or die(mysql_error());
A dowiesz się jaki błąd zwraca ci baza.

zrób też print_r($_POST);
by zobaczyć co idzie z forma.

I w ogóle przeczytaj ten temat i się do niego zastosuj
Temat: Jak poprawnie zada pytanie


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mario_7
post 11.03.2013, 10:32:43
Post #5





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 10.03.2013

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


Otrzymuje coś takiego, jak podam dwa rekordy:
Array ( [zmienna] => 2 [idklienta] => 1 [szt0] => 2 [idszyby0] => 1 [szt1] => 2 [idszyby1] => 2 )

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Ten post edytował mario_7 11.03.2013, 10:34:36
Go to the top of the page
+Quote Post
nospor
post 11.03.2013, 10:38:15
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Notice: Undefined index: idszyby0 in C:\xampp\htdocs\magazyn\wydanie.php on line 18
Jak możesz dostawać taki komunikat, skoro widać z posta że masz taki indeks

nie: a: $x = mysql_query($sql) or die(mysql_error());
a:

echo $sql;
a: $x = mysql_query($sql) or die(mysql_error());

i pokaz jakwygląda wygenerowane zapytanie.

A najlepiej pokaż jeszcze cały kod po poprawkach

edit: a już widze w zapytaniu blad.

nie: VALUES(.....
a:VALUES(.....)
zjadles nawias zamykający.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mario_7
post 11.03.2013, 10:45:12
Post #7





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 10.03.2013

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


Ała.. Faktycznie.
Wielkie dzięki, napawdę smile.gif Jeździ i szaleje!
Tylko jeszcze mala kosmetyczna poprawka- nie zwieksza mi o 1 wartości idt, a jest to id transakcji. Będe kombinował, ale jakbyś wpadł szybciej co zrobiłem źle, to możesz napisać smile.gif chodzi o linię 9-10 z pliku wydanie.php
Jeszcze raz dzięki.
Go to the top of the page
+Quote Post
nospor
post 11.03.2013, 10:47:41
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




$dupa = mysql_query("SELECT * FROM 'przyjecie' ORDER BY idt DESC LIMIT 1");
$idt=$dupa+1;

.....
Bić czy jeszcze nie bić? Po pierwsze masz błąd zapytania. Jak wyświetlać błedy zapytania już ci napisałem.
Podałem ci nawet link, z którym miałeś się zapoznać, ale widzę olałeś mnie ciepłym moczem. Proszę poraz ostatni: zapoznaj się z nim i do niego zastosuj.


Jak już to zrobisz, to zajrzyj do manuala i zobacz co zwraca mysql_query() i co zrobić by dostać rekord z bazy. Bo mysql_query nie zwraca rekordu z bazy


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mario_7
post 11.03.2013, 11:30:31
Post #9





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 10.03.2013

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


Poczytałem manuala i wykrzesałem coś takiego:
  1. $dupa = mysql_query("SELECT * FROM 'przyjecie' ORDER BY idt DESC LIMIT 1") or die (mysql_error());
  2. $row= mysql_fetch_array ($dupa);
  3. $idt=$row['idt'];


Na ekranie zwraca mi:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''przyjecie' ORDER BY idt DESC LIMIT 1' at line 1

Próbowałem też w pętli (w sumie nie wiem po co) ale to samo
  1. while($row= mysql_fetch_array ($dupa))
  2. {
  3. $idt=$row['idt'];
  4. }


Ten post edytował mario_7 11.03.2013, 11:32:41
Go to the top of the page
+Quote Post
nospor
post 11.03.2013, 11:33:06
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




brawo. A teraz doczytaj w manualu mysql jaka jest różnica między tekstem z nazwą tabeli, a nazwą tabeli.
Oraz do czego służą apostrofy ' oraz do czego służa takie znaczki ` lub ich brak

Bo właśnie to powoduje błąd zapytania


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mario_7
post 11.03.2013, 12:23:10
Post #11





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 10.03.2013

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


Nie wiem. stoję na czymś takim:
  1. $dupa = mysql_query("SELECT * FROM przyjecie ORDER BY 'idt' DESC LIMIT 1") or die (mysql_error());
  2. $row= mysql_fetch_array ($dupa);
  3. $idt=$row["idt"];


Array ( [zmienna] => 1 [idklienta] => 1 [szt0] => 1 [idszyby0] => 3 )
Notice: Undefined index: idt in C:\xampp\htdocs\magazyn\wydanie.php on line 12
Dodano szybe

Dodaje rekord, ale nie zmienia idt.
Go to the top of the page
+Quote Post
nospor
post 11.03.2013, 12:25:56
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




1) Mówiłem byś rozróżniał 'tekst' od nazwy pola czy tabeli.... nie: 'idt' a : idt

2) Widać twoja tabela przyjecie nie ma pola o nazwie idt o czym dość jasno informuje cię ten komunikat:
Notice: Undefined index: idt in C:\xampp\htdocs\magazyn\wydanie.php on line 12
cięzko przeczytać?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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 Wersja Lo-Fi Aktualny czas: 15.06.2025 - 07:13