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
tehaha
post
Post #2





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

Posty w temacie


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

 



RSS Aktualny czas: 6.10.2025 - 07:23