Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zapytanie w pętli...problem, Do bazy dodaje tylko pierwszy rekord.
MateuszRyaN
post
Post #1





Grupa: Zarejestrowani
Postów: 84
Pomógł: 0
Dołączył: 10.11.2010
Skąd: Jastrzębie Zdrój

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


Witam.

mam dynamiczny formularz na dodawanie kilka rekordów. Wszystko ładnie trafia do tablicy, którą moge spokojnie wyświetlić. Chciałbym w tej pętli docelowo wykonac zapytanie, które wsadzi mi te rekordy do bazy danych. (id celowo nie jest auto_increment).

  1. 5 , 24-01-2011 , GRAFITT TAMARA MEREDYK , Rybnik , Miejska 13a , 647-147-72-59 , towar1 , 1 , szt. , 50 , 40.65 , 9.35 , 40.65 , 50 , 23%
  2. 5 , 24-01-2011 , GRAFITT TAMARA MEREDYK , Rybnik , Miejska 13a , 647-147-72-59 , towar2 , 1 , szt. , 100 , 81.3 , 18.7 , 81.3 , 100 , 23%
  3. 5 , 24-01-2011 , GRAFITT TAMARA MEREDYK , Rybnik , Miejska 13a , 647-147-72-59 , towar3 , 1 , szt. , 150 , 121.95 , 28.05 , 121.95 , 150 , 23%


Wszystko działa jak należy, niestety dodaje mi tylko pierwszy towar. Co robię źle? Poniżej kod php.

  1. if (isset($_POST['wystaw_fakture']))
  2. {
  3. $fak = array();
  4. $fak['nt'] = $_POST['nazwa_towaru'];
  5. $fak['il'] = $_POST['ilosc'];
  6. $fak['jm'] = $_POST['j_m'];
  7. $fak['cb'] = $_POST['cena_brutto'];
  8.  
  9. $id_wynik = mysql_query("SELECT `id` FROM `faktury` ORDER BY `id` DESC LIMIT 1") or die ('Błąd zapytania');
  10. $row = mysql_fetch_array($id_wynik);
  11. $last_id = $row['id'] + 1;
  12.  
  13. for ($i=0,$to=count($fak['nt']);$i<$to;$i++) {
  14. $fak['cn'][$i] = round($fak['cb'][$i] / 1.23, 2);
  15. $fak['kv'][$i] = round(($fak['cn'][$i] * 0.23 * $fak['il'][$i]), 2);
  16. $fak['wn'][$i] = round($fak['cn'][$i] * $fak['il'][$i], 2);
  17. $fak['wb'][$i] = $fak['wn'][$i] + $fak['kv'][$i];
  18. $fak['v'][$i] = $_POST['vat'];
  19. $fak['nb'][$i] = $_POST['nabywca'];
  20. $fak['dt'][$i] = $_POST['data'];
  21. echo $last_id.' , '.$fak['dt'][$i].' , '.$fak['nb'][$i].' , '.$fak['nt'][$i].' , '.$fak['il'][$i].' , '.$fak['jm'][$i].' , '.$fak['cb'][$i].' , '.$fak['cn'][$i].' , '.$fak['kv'][$i].' , '.$fak['wn'][$i].' , '.$fak['wb'][$i].' , '.$fak['v'][$i].'<br>';
  22. $fak_insert = "INSERT INTO `faktury` SET id='$last_id', data='".$fak['dt'][$i]."', nabywca='".$fak['nb'][$i]."', nazwa_towaru='".$fak['nt'][$i]."', ilosc='".$fak['il'][$i]."', j_m='".$fak['jm'][$i]."', cena_brutto='".$fak['cb'][$i]."', cena_netto='".$fak['cn'][$i]."', kwota_vat='".$fak['kv'][$i]."', wartosc_netto='".$fak['wn'][$i]."', wartosc_brutto='".$fak['wb'][$i]."', vat='".$fak['v'][$i]."'";
  23. $ins = @mysql_query($fak_insert);
  24.  
  25. }
  26. }
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
-mkdes-
post
Post #2





Goście







To powinno być w pętli for. $last_id = $row['id'] + 1;
Ale $row['id'] powinieneś przenieść do jakiejś zmiennej pomocniczej. np. $rowid = $row[id];
Na kolumnie "id" daj w bazie opcję "autoincrement" i w zapytaniu usuń wstawianie id. Zostanie ustawione automatycznie z inkrementacją.
Go to the top of the page
+Quote Post
MateuszRyaN
post
Post #3





Grupa: Zarejestrowani
Postów: 84
Pomógł: 0
Dołączył: 10.11.2010
Skąd: Jastrzębie Zdrój

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


Ale nie rozumiesz...ja chce żeby numery id były takie same. I generalnie wszystko sie zgadza.

Załóżmy...robie sobie zapytanie o ID DESCL LIMIT 1...pobiera mi np. 4.

dodaje 1...i mam $last_id = 5. I kolejne rekordy ktore dodam powinny miec id 5...nie udało by się to gdybym miał auto increment prawda?

Po prostu potrzebuje to zapytanie...żeby dodało mi w pętli te rekordy...ale żeby ID było takie samo. Rozumiesz?

Tablica wyświetlana jest OK. Wszystko jak należy. Do bazy dodaje mi tylko pierwszy rekord. Nie wiem dlaczego. Czyżby nie można dodać kilka rekordów o jednakowym ID? przecież nie mam ustawionego id na auto_increment.

  1. 5 , 24-01-2011 , GRAFITT TAMARA MEREDYK , Rybnik , Miejska 13a , 647-147-72-59 , towar1 , 1 , szt. , 100 , 81.3 , 18.7 , 81.3 , 100 , 23%
  2. 5 , 24-01-2011 , GRAFITT TAMARA MEREDYK , Rybnik , Miejska 13a , 647-147-72-59 , towar2 , 1 , szt. , 150 , 121.95 , 28.05 , 121.95 , 150 , 23%
  3. 5 , 24-01-2011 , GRAFITT TAMARA MEREDYK , Rybnik , Miejska 13a , 647-147-72-59 , towar3 , 1 , szt. , 200 , 162.6 , 37.4 , 162.6 , 200 , 23%
  4.  
  5. (
  6. [nt] => Array
  7. (
  8. [0] => towar1
  9. [1] => towar2
  10. [2] => towar3
  11. )
  12.  
  13. [il] => Array
  14. (
  15. [0] => 1
  16. [1] => 1
  17. [2] => 1
  18. )
  19.  
  20. [jm] => Array
  21. (
  22. [0] => szt.
  23. [1] => szt.
  24. [2] => szt.
  25. )
  26.  
  27. [cb] => Array
  28. (
  29. [0] => 100
  30. [1] => 150
  31. [2] => 200
  32. )
  33.  
  34. [cn] => Array
  35. (
  36. [0] => 81.3
  37. [1] => 121.95
  38. [2] => 162.6
  39. )
  40.  
  41. [kv] => Array
  42. (
  43. [0] => 18.7
  44. [1] => 28.05
  45. [2] => 37.4
  46. )
  47.  
  48. [wn] => Array
  49. (
  50. [0] => 81.3
  51. [1] => 121.95
  52. [2] => 162.6
  53. )
  54.  
  55. [wb] => Array
  56. (
  57. [0] => 100
  58. [1] => 150
  59. [2] => 200
  60. )
  61.  
  62. [v] => Array
  63. (
  64. [0] => 23%
  65. [1] => 23%
  66. [2] => 23%
  67. )
  68.  
  69. [nb] => Array
  70. (
  71. [0] => GRAFITT TAMARA MEREDYK , Rybnik , Miejska 13a , 647-147-72-59
  72. [1] => GRAFITT TAMARA MEREDYK , Rybnik , Miejska 13a , 647-147-72-59
  73. [2] => GRAFITT TAMARA MEREDYK , Rybnik , Miejska 13a , 647-147-72-59
  74. )
  75.  
  76. [dt] => Array
  77. (
  78. [0] => 24-01-2011
  79. [1] => 24-01-2011
  80. [2] => 24-01-2011
  81. )
  82.  
  83. [idik] => Array
  84. (
  85. [0] => 5
  86. [1] => 5
  87. [2] => 5
  88. )
  89.  
  90. )
  91.  
Go to the top of the page
+Quote Post
tehaha
post
Post #4





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


Cytat
Czyżby nie można dodać kilka rekordów o jednakowym ID? przecież nie mam ustawionego id na auto_increment.

1. jeżeli dałeś to pole jako primarykey albo unique key to nie może, ID rekordu to ID rekordu, ma być unikalne, jeżeli ma być to relacja to dodaj drugą kolumnę np. id_faktury, które nie będzie kluczem
2. To można dodać jednym zapytaniem, Twój sposób jest bardzo nie wydajny, używając składni: INSERT INTO table(column, column) VALUES(value, value), (value, value), (value, value), (value, value), (value, value), (value, value)


Ten post edytował tehaha 24.01.2011, 12:14:03
Go to the top of the page
+Quote Post
MateuszRyaN
post
Post #5





Grupa: Zarejestrowani
Postów: 84
Pomógł: 0
Dołączył: 10.11.2010
Skąd: Jastrzębie Zdrój

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


Cytat(tehaha @ 24.01.2011, 12:13:13 ) *
ID rekordu to ID rekordu, ma być unikalne, jeżeli ma być to relacja to dodaj drugą kolumnę np. id_faktury, które nie będzie kluczem

Masz racje. O tym nie pomyślałem. Jak będę miał z tym jakieś problemy to jeszcze tu napiszę. Na razie dzięki smile.gif
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: 21.08.2025 - 08:55