Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Problem z nauką PHP
Forum PHP.pl > Forum > Przedszkole
tonapewno
po przeczytaniu manuala PHP, zacząłem korzystać z tej o to książki:

http://helion.pl/ksiazki/phmsv3.htm

ale w niej jest masakrycznie dużo błedów i właśnie teraz napotkałem się z takim:

  1. Fatal error: Call to a member function free() on a non-object in /home/www/php/rezultaty.php on line 48


ale w ja nie popełniłem żadnego błedu przepisując kod z książki bo przeglądałem kod kilka razy, i jakoś sobie z tym poradzę, ale prosiłbym o wyjasnienie co ma robić ten kod na końcu chodzi mo i linkije

  1. $wynik -> free()


a tutaj jest cały kod:

  1. <html>
  2. <head>
  3. <title>Rezultat wyszukiwania</title>
  4. </head>
  5. <body>
  6. <h1>Rezulat wyszukania</h1>
  7. <?php
  8. $metoda = $_POST['metoda'];
  9. $wyrazenie = $_POST['wyrazenie'];
  10.  
  11. $wyrazenie = trim($wyrazenie);
  12. if (!$metoda || !$wyrazenie)
  13. {
  14. echo 'brak parametrow wyszukiwania. Wroc do poprzedniej strony i sprobuj ponowanie';
  15. }
  16. {
  17. $metoda = addslashes($metoda);
  18. $wyrazenie = addslashes($wyrazenie);
  19. }
  20. @ $db = mysql_connect('localhost', 'root', 'zaq12wsx', 'ksiazki');
  21. if (mysqli_connect_errno())
  22. {
  23. echo 'Blad: Polaczenia z baza danych. Sprobuj pozniej';
  24. }
  25. $zapytanie = " select * from tbl_ksiazki ".$metoda." LIKE '%".$wyrazenie."%'";
  26. $wynik = mysql_query($zapytanie);
  27.  
  28. $ile_znaleziono = 'num_rows';
  29.  
  30. echo '<p> Ilosc znalezionych pozycji: '.$ile_znaleziono.'</p>';
  31.  
  32. for ($i = 0; $i < $ile_znaleziono; $i++)
  33. {
  34. $wiersz = $wynik -> fetch_assoc();
  35. echo '<p><strong>'.($i+1).'.Tytul: ';
  36. echo stripslashes($wiersz['tytul']);
  37. echo '</strong><br /> Autor: ';
  38. echo stripslashes($wiersz['autor']);
  39. echo '<br > ISBN: ';
  40. echo stripslashes($wiersz['isbn']);
  41. echo '<br /> Cena: ';
  42. echo stripslashes($wiersz['cena']);
  43. echo '</p>';
  44. }
  45. $wynik -> free();
  46. $db -> close();
  47.  
  48. ?>
nospor
nie chce mi się wierzyć ze masz tak w ksiązce:
$wynik -> free();
$db -> close();

PRzeciez $wynik i $db to wg. kodu co podałeś nie są obiekty
230005
Mi też się nie chce wierzyć - przeczytałem tą książkę, a tak epicki błąd zapadłby mi raczej w pamięć.

Tak jak napisał nospor - dwie zmienne na końcu to nie są obiekty i w sumie dziwi mnie, że ta linia:

$wiersz = $wynik -> fetch_assoc(); ci działa. Powinno być raczej mysql_fetch_assoc($wynik) i dalej mysql_free_result($wynik), mysql_close(nie pamiętam czy tu ma być zmienna smile.gif)



nospor
haha, bo tam nie powinno byc
mysql_
tylko
mysqli_
winksmiley.jpg
tonapewno
naprawdę! kod który przepisałem i zamieściłem tutaj jest taki sam jak podany w książce, jeśli mi się uda to zamieszczę tutaj jakiegoś *.jpg i zobaczycie sami, i właśnie wiem że to jest błąd dlatego chciałem was zapytać dlaczego to jest napisane bo nie rozumiałem tego.
nospor
no przeciez w moim poprzednim poscie podałem ci rozwiązanie...
tonapewno
wiem będę poprawiał zaraz kod, ale chce pokazać 230005 że ja się nie pomyliłem i że ta książka zawiera taki błąd
artur_dziocha
błędy są praktycznie w każdej książce. Przeczytaj erratę
tonapewno
230005 to spójrz na to i zobaczysz że jednak nie dokładnie przeczytałeś tą ksiąkę:

http://img265.imageshack.us/i/ss2k.png/
http://img515.imageshack.us/i/ss1js.png/
nospor
@tonapewno nie wiem co ty chciałeś udowodnić tymi linkami, ale na tych obrazkach widać ewidetnie, że pokazałeś nam tu inny kod niż w tej książce - nie jest dokładnie przepisane jak to nas zapewniałeś a różnice widać "gołym okiem".... no comments....
tonapewno
nospor linki podałem po to aby 230005 zobaczył że ten bład o który was pytam czyli:

  1. $wynik -> free();
  2. $db -> close();


naprawde jest w tej książce, a nie że ja to wziąłem z kosmosu. Bo to że kod nie jest taki samo to ja to wiem bo Ja staram się poprawić ten co jest w książce na taki żeby działał bo jeżeli przepiszesz ten kod z linków to zobaczysz że ona zawiera dużo więcej błedów.
nospor
Cytat
bo Ja staram się poprawić ten co jest w książce na taki żeby działał
to poprawiasz go fatalnie. Napisz kod dokladnie jak jest w książce, pokaż go wówczas nam jak go przepisałeś, i pokaż jeszcze raz dokładnie jaki masz błąd, wówczas będziemy mogli probować ci pomoc.

A to że nie chcieliśmy wierzyc w ten kod wynikalo z tego ze kod co pokazałes jest bez sensu a ty nam wciskales kit ze go dokladnie przepisales z ksiązki... teraz sam mowisz ze jest to juz kod po modyfikacjach...wiec z łaski swojej nie wprowadzaj ludzi w błąd i potem nie próbuj im czegoś udowadniać bez przedstawienia wszystkich faktów
tonapewno
  1. <html>
  2. <head>
  3. <title>"Książkorama" - Rezultaty wyszukiwania</title>
  4. </head>
  5. <body>
  6. <h1>"Książkorama" - Rezultat wyszukiwania </h1>
  7. <?php
  8. //utworzenie krótkich nazw zmiennych
  9. $metoda_szukania=$_POST['metoda_szukania'];
  10. $wyrazenie=$_POST['wyrazenie'];
  11.  
  12. $wyrazenie = trim($wyrazenie);
  13.  
  14. if (!$metoda_szukania || !$wyrazenie)
  15. {
  16. echo 'Brak parametrów wyszukiwania. Wróć do poprzedniej strony i spróbuj ponowanie.';
  17. }
  18.  
  19. {
  20. $metoda_szukania = addslashes($metoda_szukania);
  21. $wyrazenie = addslashes($wyrazenie);
  22. }
  23. @ $db = new mysqli('localhost', 'ksiazkorama', 'ksiazkorama123', 'ksiazki');
  24.  
  25. if (mysqli_connect_errno())
  26. {
  27. echo 'Bład: Połączenie z bazą danych nie powiodło się. Spróbuj jeszcze raz później.';
  28. }
  29.  
  30. $zapytanie = "select * from ksiazki where ".$metoda_szukania." like '%".$wyrazenie."%'";
  31. $wynik = $db->query($zapytanie);
  32.  
  33. $ile_znalezionych = $wynik->num_rows;
  34.  
  35. echo '<p>Ilość znalezionych pozycji: '.$ile_znalezionych.'</p>';
  36.  
  37. for ($i=0; $i <$ile_znalezionych; $i++)
  38. {
  39. $wiersz = $wynik->fetch_assoc();
  40. echo '<p><strong>'.($i+1).'.Tytuł: ';
  41. echo stripslashes($wiersz['tytuł']);
  42. echo '</strong><br />Autor: ';
  43. echo stripslashes($wiersz['autor']);
  44. echo '<br />ISBN: ';
  45. echo stripslashes($wiersz['isbn']);
  46. echo '<br /> Cena: ';
  47. echo stripslashes($wiersz['cena']);
  48. echo '</p>';
  49. }
  50.  
  51. $wynik->free();
  52. $db->close();
  53. ?>
  54. </body>
  55. </html>


przepisałem cały kod taki jak jest w książce, i chodzi mi teraz tylko o to żebyście mi powiedzieli(napisali) do czego ma służyć bo tylko tego z całego kody nie rozumiem:

  1. $wynik->free();
  2. $db->close();


a co do twojego ostatniego posta, to ja dopiero tydzień uczę się php więc dlatego może "poprawiam go fatalnie".
nospor
Cytat
i chodzi mi teraz tylko o to żebyście mi powiedzieli(napisali) do czego ma służyć bo tylko tego z całego kody nie rozumiem:

http://pl.php.net/manual/en/mysqli.close.php
http://pl.php.net/manual/en/mysqli-result.free.php
230005
Po pierwsze, tak jak pisze nospor - nie to nam pokazałeś, po drugie, linki podane przez niego odpowiedzią są na twoje pytania smile.gif, po trzecie, z tego co pamiętam, to książkorama była gdzieś tak za połową tej książki więc uczysz się w iście diabelskim tempie (bo sam napisałeś, że dopiero od tygodnia, a jesteś już tak daleko) - polecam troszkę zwolnić, np przerabiając przykłady na milion sposobów, żeby wszystko dokładnie zrozumieć.
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.