Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z pobieraniem id
Forum PHP.pl > Forum > PHP
attimo
  1. Witam,
  2.  
  3. Moja przygoda z PHP zaczeła się tydzień temu w ramach nauki postanowiłem stworzyć stronę która działała by na zasadzie sklepu: są jakieś produkty można je kupić i potem można podejrzeć to co się dodało do koszyka itd. Niestety Mam problem z pobraniem id w celu późniejszego wpisania go do tabeli w koszyku. Dodałem komentarze do kodu by było wiadomo o co chodzi.
  4.  
  5. Kod wygląda tak:
  6.  
  7. <?php
  8. //Łączenie z serwerem
  9. $polaczenie = mysql_connect('mysql.cba.pl', '...', '...') or die("brak polaczenia: ".mysql_error());
  10.  
  11. $baza = mysql_select_db('attimo_cba_pl',$polaczenie) or exit("nie wybrano bazy, blad". mysql_error());
  12.  
  13. $zapytanie = 'SELECT nazwa, cena FROM Produkty';
  14.  
  15. $wynik = mysql_query($zapytanie, $polaczenie) or die(mysql_error());
  16.  
  17. $rekord = mysql_fetch_assoc($wynik);
  18. ?>
  19. //odbieranie formularza
  20. <?php
  21. if ($_POST['Kup']){
  22. $ilosc = $_POST['ilosc'];
  23. $id = $_POST['id'];
  24.  
  25. }
  26. // wpisanie do tabeli nowych wartosci jesli zostal nacisniety przycisk dodaj
  27. if (!empty($ilosc) && is_numeric($ilosc) && $ilosc > 0){
  28. $zapytanie = "INSERT INTO koszyk (id,ilosc) VALUES ($id,$ilosc)";
  29. $wynik = mysql_query($zapytanie) or die ('Nie podano produktu'. mysql_error());
  30. echo "<p />ilosc dodanych " . mysql_affected_rows($polaczenie);
  31. }
  32. else
  33. echo "bledna ilosc";
  34.  
  35.  
  36.  
  37.  
  38. ?>
  39. <table>
  40. <th>Produkt</th>
  41. <th>Cena</th>
  42.  
  43.  
  44. <?php
  45.  
  46. $zapytanie = "SELECT * FROM Produkty ORDER BY nazwa ASC";
  47. $wynik = mysql_query($zapytanie, $polaczenie) or die ('blad' . mysql_error());
  48. //wyswietlanie produktow
  49. while($rekord = mysql_fetch_assoc($wynik)){
  50. echo "<tr>"."</tr>" ."<tr>" ."</tr>" ."<td>" . $rekord['nazwa'] . "</td> "."<td>" . $rekord['cena'] ."</td>";
  51. echo '<input type="hidden" name="id" value= "'. $rekord['id'] .'" />'; //tutaj jest główny problem. chce pobrac wartosc id z tabeli by później móc odwołać sie do niego gdy bede wprowadzal dane. teoretycznie dane sie zapisuja jak nalezy. niestety gdy chce sie odwolac przy odczytywaniu danych z formularzy czyli to co powyżej to wywala mi błąd: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '10)' at line 1".
  52.  
  53.  
  54. ?>
  55. <td>
  56. <form action="<?php echo $_SERVER['PHP_SELF'];?> "method="post">
  57. <input name ="ilosc" size="3" >
  58. <input type="submit" name="Kup" value="Dodaj" />
  59. </td>
  60. </form>
  61. <?php
  62. }
  63. ?>
  64. </table>
  65. </body>
  66. </html>


Ja już nie mam pomysłów. Może Wy coś poradzicie ?

Odświeżam temat, może jednak ktoś wie ?
nospor
blad co podales nie dotyczy selecta, gdyz nie masz w nim nigdzie '10)'
bim2
Zakładam że błąd jest tutaj:
  1. $zapytanie = "INSERT INTO koszyk (id,ilosc) VALUES ($id,$ilosc)";
blooregard
Cytat
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '10)' at line 1".

Przecież masz wyraźnie napisane, co jest nie tak.

Zapytanie INSERT INTO koszyk (id,ilosc) VALUES ($id,$ilosc) jest błędne, bo $id w tym miejscu jest PUSTE.

A czemu?
Popatrz na swój kod i miejsce, w którym ZACZYNASZ formularz, a pole <hidden> z wartością id jest PRZED ZNACZNIKIEM OTWIERAJĄCYM <form>.

Z kolei w tym warunku:
  1. if (!empty($ilosc) && is_numeric($ilosc) && $ilosc > 0){

nie sprawdzasz, czy $id ma jakąś wartość, skupiasz się jedynie na $ilosc, zmienna $ilosc ma prawidłowo przypisywaną wartość w formularzu, dlatego warunek masz spełniony i zapytanie INSERT się wykonuje. Tzn. nie wykonuje, z powodów podanych powyżej.
attimo
Tak tylko w tym formularzu powinno zapisać sie id, ale sie nie zapisuje. nie mam pojecia dlaczego. dlaczego nie przypisuje tam zadnej wartosci ? zmienilem kod tak aby znajdowalo sie to w form ale dalo to taki sam rezultat
echo '<input type="hidden" name="id" value= "'. $rekord['id'] .'" />';
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.