Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z dodaniem danych do bazy MySQL
Forum PHP.pl > Forum > PHP
sebap123
Mam pewien problem z dość zawiłą bazą danych. Chciałbym, żeby wszystko działo na dwóch tabelach -> jedna orders, a druga carts. W momencie dodania ,rekordu chce aby w orders pojawiało się (jeśli jeszcze nie istnieje): cartid i user. Cartdid jest tworzony z randoma a user pobierany zał, czy ma sesji. I takie coś ma byc tylko raz. A w carts ma się dla każdego rekordu tworzyć jeden wiersz ze stałym cartid. Wymyśliłem, żeby skrypt najpierw sprawdz już coś z tym userem w ordersach i potem pobierał z niego cartid i w nim umieszczał dane w carts. No i wszystko działa, oprócz własnie pobierania cartid z orders. Teraz nie wiem co jest nie tak. Tak ten fragment skryptu wygląda:
  1. else if($_GET['op']==1&&$_GET['op']!=null){
  2. $test0 = mysql_query("SELECT FROM orders WHERE user='".$_SESSION['user']."'");
  3. if(mysql_fetch_array($test0)<1){
  4. $dodajc = mysql_query("INSERT INTO carts (cartid, productid, quantity)
  5. VALUES ('".$cart_id."', '".$pr."', '7')");
  6. $test = mysql_query("SELECT FROM orders (cartid, user)
  7. VALUES ('".$cart_id."', '".$_SESSION['user']."')");
  8. if(mysql_fetch_array($test)<1){
  9. $dodaj_usr = mysql_query("INSERT INTO orders (cartid, user)
  10. VALUES ('".$cart_id."', '".$_SESSION['user']."')");
  11. }}
  12. else{
  13. $cart=mysql_fetch_array($test0);
  14. $dodajc = mysql_query("INSERT INTO carts (cartid, productid, quantity)
  15. VALUES ('".$cart['cartid']."', '".$pr."', '7')");
  16. }
  17. header("Location: twoj-koszyk.php?podstrona=aktualnie-w-koszyku&msg=1");
  18. }


W tabeli carts ląduje mi wszystko oprócz własnie cartid. Jest tylko pusta komórka. Co jest nie tak w tym skrypcie?
Quadina
O święta bogini Quapre...
  1. // po co && i !=null jak sprawdzales czy jest rowne 1?
  2. else if($_GET['op']==1&&$_GET['op']!=null){
  3. // stosuj gwiazdkę po SELECT, żeby nie robić bazie sieczki z dupy i poprawi to trochę czytelność Twojego kodu
  4. $test0 = mysql_query("SELECT FROM orders WHERE user='".$_SESSION['user']."'");
  5. // co to a sprawdzanie czy tablica jest mniejsza od 1? mysql_fetch_array() nie zwraca ile jest elementów tablicy. Wystarczy sprawdzić czy jest
  6. if(mysql_fetch_array($test0)<1){
  7. $dodajc = mysql_query("INSERT INTO carts (cartid, productid, quantity)
  8. VALUES ('".$cart_id."', '".$pr."', '7')");
  9. $test = mysql_query("SELECT FROM orders (cartid, user)
  10. VALUES ('".$cart_id."', '".$_SESSION['user']."')");
  11. if(mysql_fetch_array($test)<1){
  12. $dodaj_usr = mysql_query("INSERT INTO orders (cartid, user)
  13. VALUES ('".$cart_id."', '".$_SESSION['user']."')");
  14. }}
  15. else{
  16. // wyciagasz kolejny element z bazy juz wyciagajac go wczeniej w ifie, dostaniesz nulla, albo pusta tablice (nie pamietam jak to tam się dzieje jak już się elementy wyciągane z bazy skończą)
  17. $cart=mysql_fetch_array($test0);
  18. // i tutaj dodajesz cartid do bazy gdzie linijke wczesniej dostales pusta zmienna, zatem nie dziwne, ze do bazy za kazdym razem dodaje sie pusty string
  19. $dodajc = mysql_query("INSERT INTO carts (cartid, productid, quantity)
  20. VALUES ('".$cart['cartid']."', '".$pr."', '7')");
  21. }
  22. header("Location: twoj-koszyk.php?podstrona=aktualnie-w-koszyku&msg=1");
  23. }


Więc to co musisz zrobić to poprawić trochę logikę tego co napisałeś, zamienić to $cart=mysql... na coś co ma sens, bo tutaj nie ma go najmniejszego oraz zamienić w dodawaniu do bazy (opcja nie mamy danych w bazie) zmiennej $cart_id.
sebap123
No wiem, że trochę logikę miałem złą. Już po prostu miałem taki mętlik myśli, że nie myślałem racjonalnie smile.gif ale dzięki wielkie za pomoc, już wszystko dobrze działa.
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.