Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL][PHP]Wyświetlenie z sesji produktów w sklepie internetowym
Mikele7
post
Post #1





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 15.07.2014

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


Witam. Próbuję stworzyć koszyk zakupów dla sklepu internetowego. Po dodaniu produktu do koszyku powinien tam produkt się wyświetlać w koszyku. Jednak wywala mi błąd i nie potrafię dojść co jest nie tal, choć myślę, że problem może leżeć w zapytaniu SQL. Błąd mi wywala w linii 37, czyli gdzie powinno mi rozpocząć pętlę while, ale jest problem. Wiecie może co robię nie tam? Z góry dziękuję za pomoc, a jeśli chodzi o start sesji to jest zawarty w pliku nagłówka header.php jakby co wink.gif

  1. <?php // Koszyk zakupów
  2.  
  3. require_once('includes/config.php');
  4. $page_title = 'Oglądaj koszyk z zakupami';
  5. include('includes/header.php');
  6.  
  7. if(isset($_POST['submitted'])){
  8. foreach($_POST['qty'] as $k => $v){
  9. $id = (int) $k;
  10. $qty = (int) $v;
  11. if($qty == 0){
  12. unset($_SESSION['basket'][$id]);
  13. }elseif($qty > 0){
  14. $_SESSION['basket'][$id]['quantity'] = $qty;
  15. }
  16. }
  17. }
  18.  
  19. if(!empty($_SESSION['basket'])){
  20. require_once(MYSQL);
  21. $q = "SELECT product_id, name, price FROM products WHERE product_id IN (";
  22. foreach($_SESSION['basket'] as $id => $value){
  23. $q.= $id.',';
  24. }
  25. $q = substr($q, 0, -1).') ORDER BY product_id ASC';
  26. $r = mysqli_query($dbc, $q);
  27.  
  28. echo '<form action="view_basket.php" method="post">
  29. <table border="0" width="80%" cellspacing="3" cellpadding="3" align="center">
  30. <tr>
  31. <td align="left"><b>Nazwa produktu</b></td>
  32. <td align="right"><b>Cena</b></td>
  33. <td align="center"><b>Ilość</b></td>
  34. <td align="right"><b>Kwota</b></td>
  35. </tr>';
  36. $total = 0;
  37. while($row = mysqli_fetch_array($r, MYSQLI_ASSOC)){
  38. $subtotal = $_SESSION['basket'][$row['product_id']]['quantity']*$_SESSION['basket'][$row['product_id']]['price'];
  39. $total += $subtotal;
  40. echo '\t<tr>
  41. <td align="left">'.$row['name'].'</td>
  42. <td align="right">'.$_SESSION['basket'][$row['name']]['price'].'</td>
  43. <td align="center"><input type="text" size="3" name="qty['.$row['product_id'].']" value="'.$_SESSION['basket'][$row['product_id']]['quantity'].'" />
  44. </td>
  45. <td align="right">'.number_format($subtotal, 2).'</td>
  46. </tr>\n';
  47. }
  48. mysqli_close($dbc);
  49. echo '<tr><td colspan="4" align="right"><b>Total: </b></td>
  50. <td align="right">'.number_format($total, 2).'</td>
  51. </tr>
  52. </table>
  53. <div align="center"><input type="submit" name="submit" value="Zakualizuj koszyk" /></div>
  54. <input type="hidden" name="submitted" value="TRUE" />
  55. </form><p>Jeśli wprowadzisz 0 to wyniki się wyzerują</p><br /><br />
  56. <a href="check.php">Złóż zamówienie</a>';
  57. }else{
  58. echo '<p>Twój koszyk jest obecnie pusty</p>';
  59. }
  60. include('includes/footer.php');
  61.  
  62. ?>


A oto błąd:
W 37. wierszu skryptu '/home/u571599614/public_html/Rejestracja/Projekt/view_basket.php' wystąpił błąd: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
com
post
Post #2





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


zacznijmy od :
var_dump($r);
Go to the top of the page
+Quote Post
Mikele7
post
Post #3





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 15.07.2014

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


Nie rozwiązało to niestety mojego problemu...
Go to the top of the page
+Quote Post
kamilo818
post
Post #4





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.01.2014

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


pokaz co ci wyświetla...
Go to the top of the page
+Quote Post
Mikele7
post
Post #5





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 15.07.2014

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


W 38. wierszu skryptu '/home/u571599614/public_html/Rejestracja/Projekt/view_basket.php' wystąpił błąd: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




facepalmxd.gif
Miales wyswietlic co zwraca VAR_DUMP....

Dobra, nie wazne, przeciez widac jak wol ze zwraca false... Masz blad zapytania. TU masz napisane jak sobie je wyswietlac i ogolnie jak radzic sobie z analizą tak banalnych bledow...
Temat: Jak poprawnie zada pytanie
zastosuj sie do tego tematu


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Mikele7
post
Post #7





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 15.07.2014

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


No tak jak już pisałem na początku tak sądziłem, że problem jest z zapytaniem SQL, ale nie wiem co jest nie tak. Stąd ten temat
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No i dlatego napisalem ci wszystko co masz zrobic... Potrzebujesz jakiejs specjalnej zachety?? Wszystko masz podane na tacy, tylko teraz to zrob co ci podano.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 15.07.2014

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


Ok zorobiłem tak jak napiałeś i doszedłem do tego, że błąd się brał z innego pliku, gdzie nie zapisywało mi identyfikatorów w tablicy. Teraz po części działa, ale nie wiem czemu mi wstawia na początku id w tym wyrażeniu IN:

np. tak jak tutaj:
W 27. wierszu skryptu '/home/u571599614/public_html/Rejestracja/Projekt/view_basket.php' wystąpił błąd: Zapytanie: SELECT product_id, name, price FROM products WHERE product_id IN (id,3,4) ORDER BY product_id ASC
Błąd MySQL: Unknown column 'id' in 'where clause'
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Pewnie dlatego ze w session basket masz tekst ID... sprawdziles? Pewnie nie, bo po co...


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Mikele7
post
Post #11





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 15.07.2014

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


Dobrze usunąłem dane sesji i pozmieniałem parę rzeczy i działa jak znalazł. Dzięki nospor
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: 19.08.2025 - 09:17