Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] błąd Call to a member function Fields()...
TeTaim
post 28.12.2010, 19:42:23
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 28.12.2010

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


Witam. Jestem początkująca w temacie php i baz danych, więc postanowiłam prosić Was o pomoc.
Otóż stworzyłam bazę danych w formacie .mdb. Ma pięć kolumn - klub, drink, cena, składnik 1, składnik 2.
Chcę teraz zrobić na stronie internetowej (konkretniej w drupalu) wyszukiwarkę drinków wg maksymalnej ceny.

Oto kod:
  1. <table border="1">
  2. <tr>
  3. <th>Klub</th>
  4. <th>Drink</th>
  5. <th>Cena</th>
  6. <th>Składnik 1</th>
  7. <th>Składnik 2</th>
  8. </tr>
  9.  
  10. <?php
  11.  
  12.  
  13. // polaczenie z baza danych
  14. include_once('adodb5\adodb.inc.php');
  15. $db = NewADOConnection('access');
  16. $db->Connect('Driver={Microsoft Access Driver (*.mdb)};Dbq='.
  17. realpath('sites\http://***.lab.kti.ue.poznan.pl\firma.mdb'));
  18.  
  19. // polecenie SQL
  20. $drink = $_REQUEST['drink'];
  21. $cena = $_REQUEST['cena'];
  22. $sql = "select * from drinki where drink like '$drink%' and cena <=
  23. $cena";
  24. $rs = $db->Execute($sql);
  25.  
  26. // odczyt danych
  27. while (!$rs->EOF) {
  28. echo "<tr><td>";
  29. echo $rs->Fields("klub");
  30. echo "</td><td>";
  31. echo $rs->Fields("drink");
  32. echo "</td><td>";
  33. echo $rs->Fields("cena");
  34. echo "</td><td>";
  35. echo $rs->Fields("składnik1");
  36. echo "</td><td>";
  37. echo $rs->Fields("składnik2");
  38. echo "</td></tr>";
  39. $rs->MoveNext();
  40. }
  41. $db->Close();
  42. ?>
  43. </table>


a to błąd, który nie daje mi żyć:

Fatal error: Call to a member function Fields() on a non-object in C:\bin\apache22\htdocs\includes\common.inc(1695) : eval()'d code on line 29

Czy może mi jakaś dobra dusza wytłumaczyć gdzie jest błąd i co spartaczyłam? I w ogóle co znaczy ten błąd? Będę wdzięczna:)
I tak w sumie skąd wzięła się ta cała ścieżka C:\bin\... skoro nawet mój komputer jej nie posiada?

Ten post edytował TeTaim 28.12.2010, 20:28:53
Go to the top of the page
+Quote Post
Rid
post 28.12.2010, 19:48:16
Post #2





Grupa: Zarejestrowani
Postów: 715
Pomógł: 47
Dołączył: 5.12.2010

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


Z tego co widze to masz zadeklarowane tylko:
  1. #
  2. $drink = $_REQUEST['nazwa'];
  3. #
  4. $cena = $_REQUEST['cena'];
a gdzie pozostałe wartości??
Go to the top of the page
+Quote Post
TeTaim
post 28.12.2010, 20:01:24
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 28.12.2010

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


Pozostałe wartości nie są mi potrzebne, że tak powiem.

Na zajęciach miałam do czynienia z jedną bazą danych i kod wyglądał niemal identycznie jak ten, baza danych też była podobna, też były zdeklarowane tylko dwie wartości, a reszta się miała tylko wyświetlać i działało.
Go to the top of the page
+Quote Post
Mephistofeles
post 28.12.2010, 20:03:56
Post #4





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


$rs nie jest obiektem. Sprawdź var_dumpem co zwraca execute.
Go to the top of the page
+Quote Post
TeTaim
post 28.12.2010, 20:30:15
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 28.12.2010

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


Jestem na tyle początkująca, że nie wiem czego ode mnie wymagasz:(

Po przeładowaniu strony z tym błędem wyskakuje mi kolejny:
warning: odbc_connect() [function.odbc-connect]: SQL error: [Microsoft][ODBC Microsoft Access Driver] Cannot open database '(unknown)'. It may not be a database that your application recognizes, or the file may be corrupt., SQL state S1000 in SQLConnect in C:\bin\php\includes\adodb5\drivers\adodb-odbc.inc.php on line 60.


Dodam też, że część skryptu
// polaczenie z baza danych
została stworzona przez prowadzącego zajęcia, więc raczej jest ok

Bazę danych też umieściłam tam, gdzie prowadzący chciał.

Chcę zrobić dokładnie to samo, co na zajęciach, mam tylko inną bazę danych, ale w kodzie php pozmieniałam - tam, gdzie w poprzednio była "nazwa" teraz mam "drink" itd.
Jak to możliwe, że jest błąd?
Go to the top of the page
+Quote Post
Mephistofeles
post 28.12.2010, 21:55:12
Post #6





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


Sprawdź, czy ta baza rzeczywiście istnieje (dla skryptu, bo się mogą różne magiczne rzeczy dziać czasami biggrin.gif), wywołaj file_get_contents z adresem do niej - jak działa to dalej sprawdź co zwraca metoda Execute:
  1. var_dump($rs = $db->Execute($sql));

Ściągnij sobie tą bazę do katalogu skryptu i wtedy sprawdź.
Ale mam pytanie, czemu używasz AdoDB? W tej chwili to samo osiągniesz przez natywne PDO, nie ma sensu zaprzęgać dodatkowych bibliotek do pracy.
Go to the top of the page
+Quote Post
TeTaim
post 29.12.2010, 14:45:25
Post #7





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 28.12.2010

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


Już to jakoś postawiłam na nogi, dziękuję bardzo za pomoc smile.gif
Wybrałam rozwiązanie najprostsze, napisałam z pytaniami do wykładowcy:)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 09:34