Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL][PHP]Wyświetlenie z sesji produktów w sklepie internetowym
Forum PHP.pl > Forum > Przedszkole
Mikele7
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
com
zacznijmy od :
var_dump($r);
Mikele7
Nie rozwiązało to niestety mojego problemu...
kamilo818
pokaz co ci wyświetla...
Mikele7
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
nospor
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
Mikele7
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
nospor
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.
Mikele7
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'
nospor
Pewnie dlatego ze w session basket masz tekst ID... sprawdziles? Pewnie nie, bo po co...
Mikele7
Dobrze usunąłem dane sesji i pozmieniałem parę rzeczy i działa jak znalazł. Dzięki nospor
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.