Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Problem z nauką PHP
tonapewno
post
Post #1





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 5.11.2009

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


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





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




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
Go to the top of the page
+Quote Post
230005
post
Post #3





Grupa: Zarejestrowani
Postów: 316
Pomógł: 36
Dołączył: 2.04.2008

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


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 (IMG:style_emoticons/default/smile.gif) )



Go to the top of the page
+Quote Post
nospor
post
Post #4





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




haha, bo tam nie powinno byc
mysql_
tylko
mysqli_
(IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
tonapewno
post
Post #5





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 5.11.2009

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


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.

Ten post edytował tonapewno 25.11.2009, 22:23:58
Go to the top of the page
+Quote Post
nospor
post
Post #6





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




no przeciez w moim poprzednim poscie podałem ci rozwiązanie...
Go to the top of the page
+Quote Post
tonapewno
post
Post #7





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 5.11.2009

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


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
Go to the top of the page
+Quote Post
artur_dziocha
post
Post #8





Grupa: Zarejestrowani
Postów: 320
Pomógł: 53
Dołączył: 18.09.2007
Skąd: Radom

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


błędy są praktycznie w każdej książce. Przeczytaj erratę
Go to the top of the page
+Quote Post
tonapewno
post
Post #9





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 5.11.2009

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


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/
Go to the top of the page
+Quote Post
nospor
post
Post #10





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




@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....
Go to the top of the page
+Quote Post
tonapewno
post
Post #11





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 5.11.2009

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


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.
Go to the top of the page
+Quote Post
nospor
post
Post #12





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




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
Go to the top of the page
+Quote Post
tonapewno
post
Post #13





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 5.11.2009

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


  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".

Ten post edytował tonapewno 26.11.2009, 16:14:54
Go to the top of the page
+Quote Post
nospor
post
Post #14





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




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
Go to the top of the page
+Quote Post
230005
post
Post #15





Grupa: Zarejestrowani
Postów: 316
Pomógł: 36
Dołączył: 2.04.2008

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


Po pierwsze, tak jak pisze nospor - nie to nam pokazałeś, po drugie, linki podane przez niego odpowiedzią są na twoje pytania (IMG:style_emoticons/default/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ć.
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: 20.12.2025 - 21:37