Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] dlaczego INSERT wstawia dwa rekordy?
Forum PHP.pl > Forum > Przedszkole
rml
witam,

mam powazny problem. ponizszy kod ma wstawiac do koszyka produkt jesli nie ma takiego produktu w koszyku lub dodawac wiecej sztuk do istniejacego juz w koszu produktu...

niestety zamiast 1 szt wstawia 2 szt a zamiast 5 szt wstawia 10 szt, itd...

co oznacza ze wykonuje oba wstawienia pomimo ze sa warunkowe...

dlaczego moje warunki nie dzialaja?

  1. <?php
  2.  
  3. if ($produkt == TRUE AND $szt == TRUE AND $SESS_exist == YES)
  4. {
  5. $q = mysql_query(&#092;"SELECT * from carts where login = '$SESS_login' and kod = '$produkt'\");
  6. $q1 = mysql_num_rows($q);
  7.  
  8. if ($q1 == 0)
  9. {
  10. mysql_query (&#092;"INSERT INTO carts (login,kod,szt) VALUES ('$SESS_login','$produkt','$szt')\");
  11. echo &#092;"Produkt został dodany.<br><br>\";
  12. }
  13. elseif ($q1 > 0)
  14. {
  15. $p = mysql_query(&#092;"SELECT * from carts where login = '$SESS_login' and kod = '$produkt'\");
  16. while (list ($_login, $_kod, $_szt) = mysql_fetch_row($p)) {
  17. $_ile = $_szt;
  18.  }
  19. $plus = $_ile + $szt;
  20. mysql_query(&#092;"UPDATE carts SET szt='$plus' WHERE login = '$SESS_login' and kod = '$produkt'\");
  21. echo &#092;"Produkt został dodany.<br><br>\";
  22. }
  23. }
  24. else
  25. {}
  26.  
  27. ?>


prosze o porady,
rml.
johnnyno
A co to sa za zmienne $produkt, $szt, $SESS_exist?

Sprawdz czy te zmienne maja poprawne wartości i sprawdz kazdy warunek po kolei.

Najlepiej metoda eliminacji, az do skutku;)
rml
hej,

$produkt, $szt to zmienne podawane przez <form> dotyczace produktu i ilosci wkladanych do koszyka, a $SESS_login to zmienna w sesji ktora przyjmuje wartosci YES lub NO w zaleznosci czy ktos jest zalogowany czy nie...

odpowiada za to zeby nie pozwolic dodawac do koszyka osobie nie zalogowanej...

wyglada na to, ze wszystkie warunki sa ok, a do tego zmienne tez, dlatego ze rekord dodawany do bazy jest dobry. tylko tyle ze niepotrzebnie dodawany dwa razy...

no ide jeszcze przejsc po raz kolejny ten kod smile.gif


pozdro,
rml.
zbig13
Jeśli są to dane pobierane z formularza to powinno być chyba $_POST[] a poza tym jak sprawdzasz czy zostało coś wpisane to nie sprawdzaj == TRUE tylko używaj funkcji empty" title="Zobacz w manualu PHP" target="_manual() tzn. zrób tak:
  1. <?php
  2.  
  3. if ( (!empty($_POST['produkt'])) && (!empty($_POST['$szt'])) && ($SESS_exist == YES) )
  4. {
  5.  
  6. ?>
rml
sluchajcie, rozpoznawanie zmiennych jest ok, ify tez sa ok sad.gif sprawdzilem to echujac sobie na ekran rozne rzeczy... ale gdzies po wykonaniu skryptu (bo widac ten dodatkowy produkt dopiero po odswiezeniu strony (NIE! NIE WYSYLA PONOWNIE DANYCH!) sie dubluje...

czy sa jakies momenty w ktorych mysql moze dublowac wpis?

kurde, pomocy! smile.gif zupelnie nie wiem co robic!


pozdro,
rml.
Kuziu
Daj headerem na inny plik po dodaniu danych do mysql'a wtedy po odświeżeniu nie wykona Ci ponownie zapytania.
rml
witam,

z tamtym sie uporalem w sposob prostacki - zrobilem ifa sprawdzajacego czy taki wpis istnial w bazie...

ale... okazuje sie ze to nie jest problem jednostkowy!!! wlasnie napisalem inny zupelnie kawalek kodu i on tez dodaje dwa rekordy identyczne sad.gif(

czym to moze byc spowodowane? wiem napewno ze to wina tego ze dwa razy przetwarza plik - bo mam w nim losowanie liczby i wstawienie do bazy... i oba rekordy sa identyczne poza ta liczba... czyli musial sie cofnac, zeby ja jeszcze raz wygenerowac!

co moze powodowac takie objawy? pomozcie, bo jest 4 rano a ja nie wiem jak sie z tym uporac...


pzdr,
rml.
ferr
Cytat(rml @ 2005-04-02 14:39:40)
witam,

mam powazny problem. ponizszy kod ma wstawiac do koszyka produkt jesli nie ma takiego produktu w koszyku lub dodawac wiecej sztuk do istniejacego juz w koszu produktu...

niestety zamiast 1 szt wstawia 2 szt a zamiast 5 szt wstawia 10 szt, itd...

co oznacza ze wykonuje oba wstawienia pomimo ze sa warunkowe...

dlaczego moje warunki nie dzialaja?



prosze o porady,
rml.

  1. <?php
  2.  
  3. if ($produkt == TRUE AND $szt == TRUE AND $SESS_exist == YES)
  4. {
  5. $q = mysql_query(&#092;"SELECT * from carts where login = '$SESS_login' and kod = '$produkt'\");
  6. $q1 = mysql_num_rows($q);
  7.  
  8. if ($q1 == 0)
  9. {
  10. mysql_query (&#092;"INSERT INTO carts (login,kod,szt) VALUES ('$SESS_login','$produkt','$szt')\");
  11. echo &#092;"Produkt został dodany.<br><br>\";
  12. }
  13. else 
  14. {
  15. $p = mysql_query(&#092;"SELECT * from carts where login = '$SESS_login' and kod = '$produkt'\");
  16. while (list ($_login, $_kod, $_szt) = mysql_fetch_row($p)) {
  17. $_ile = $_szt;
  18.  }
  19. $plus = $_ile + $szt;
  20. mysql_query(&#092;"UPDATE carts SET szt='$plus' WHERE login = '$SESS_login' and kod = '$produkt'\");
  21. echo &#092;"Produkt został dodany.<br><br>\";
  22. }
  23. }
  24. else
  25. {}
  26.  
  27. ?>

?
rml
ferr, nie bardzo rozumiem co masz na mysli winksmiley.jpg)

bo zmian w kodzie nie widze... jesli to jakis niuans to moze napisz o co chodzi...

wciaz nie rozwiazalem tego problemu... okropnosc sad.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.