Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z pobieraniem id
attimo
post
Post #1





Grupa: Zarejestrowani
Postów: 115
Pomógł: 6
Dołączył: 23.01.2010

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


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





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




blad co podales nie dotyczy selecta, gdyz nie masz w nim nigdzie '10)'
Go to the top of the page
+Quote Post
bim2
post
Post #3





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


Zakładam że błąd jest tutaj:
  1. $zapytanie = "INSERT INTO koszyk (id,ilosc) VALUES ($id,$ilosc)";
Go to the top of the page
+Quote Post
blooregard
post
Post #4


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




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.

Ten post edytował blooregard 24.01.2010, 20:31:26
Go to the top of the page
+Quote Post
attimo
post
Post #5





Grupa: Zarejestrowani
Postów: 115
Pomógł: 6
Dołączył: 23.01.2010

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


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'] .'" />';

Ten post edytował attimo 25.01.2010, 10:03:51
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: 16.09.2025 - 19:01