Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mysql] dlaczego INSERT wstawia dwa rekordy?
rml
post
Post #1





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.03.2005

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


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
johnnyno
post
Post #2





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 21.02.2004

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


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;)
Go to the top of the page
+Quote Post
rml
post
Post #3





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.03.2005

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


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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)


pozdro,
rml.
Go to the top of the page
+Quote Post
zbig13
post
Post #4





Grupa: Zarejestrowani
Postów: 214
Pomógł: 0
Dołączył: 3.04.2004
Skąd: Legionowo

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


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. ?>
Go to the top of the page
+Quote Post
rml
post
Post #5





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.03.2005

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


sluchajcie, rozpoznawanie zmiennych jest ok, ify tez sa ok (IMG:http://forum.php.pl/style_emoticons/default/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! (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) zupelnie nie wiem co robic!


pozdro,
rml.

Ten post edytował rml 4.04.2005, 00:51:42
Go to the top of the page
+Quote Post
Kuziu
post
Post #6





Grupa: Zarejestrowani
Postów: 743
Pomógł: 0
Dołączył: 11.11.2003
Skąd: Toruń

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


Daj headerem na inny plik po dodaniu danych do mysql'a wtedy po odświeżeniu nie wykona Ci ponownie zapytania.
Go to the top of the page
+Quote Post
rml
post
Post #7





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.03.2005

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


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 (IMG:http://forum.php.pl/style_emoticons/default/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.
Go to the top of the page
+Quote Post
ferr
post
Post #8





Grupa: Zarejestrowani
Postów: 122
Pomógł: 3
Dołączył: 18.12.2004

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


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. ?>

?
Go to the top of the page
+Quote Post
rml
post
Post #9





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.03.2005

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


ferr, nie bardzo rozumiem co masz na mysli (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) )

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

wciaz nie rozwiazalem tego problemu... okropnosc (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post

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: 23.08.2025 - 16:17