Marcin Antosik

Marcin Antosik Lean 6Sigma Black
Belt, Faurecia S.A

Temat: Problem z błędem "Fatal error: Call to a member function...

No waśnie tak jak w temacie nie wiem co zrobiłem źle, ponieważ mam już podobną strukturę w innym pliku szukającym danych w innej tabeli i wszystko hula.

Oto mój plik

<?php
require_once('auth.php');
require_once('config.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Rezultat wyszukiwania</title>
<link href="loginmodule.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="pods_rekordu.js"></script>
</head>
<body>
<br /><br /><br /><br />
<h1>Rezultat wyszukiwania</h1>
<a href="member-profile.php">Mój Profil</a> | <a href="member-index.php">Strona główna</a> | <a href="logout.php">Wyloguj</a>

<?php
//tworzenie krótkich nazw zmiennych
$metoda_szukania=$_POST['metoda_szukania'];
$wyrazenie=$_POST['wyrazenie'];
$wyrazenie = trim($wyrazenie);
if (!$metoda_szukania || !$wyrazenie)
{
echo 'Brak parametrów wyszukiwania. Wróć do poprzedniej strony i spróbuj ponownie.';
exit;
}
if (!get_magic_quotes_gpc())
{
$metoda_szukania = addslashes($metoda_szukania);
$wyrazenie = addslashes($wyrazenie);
}

//Łączenie z MySQL
$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
if(!$link) {
die('Nieudana proba polaczenia z serwerem: ' . mysql_error());
}

//Wybór bazy danych
$db = mysql_select_db(DB_DATABASE);
if(!$db) {
die("Nie mozna sie polaczyc z baza danych");
}
$zapytanie = "select * from tools where ".$metoda_szukania." like '%".$wyrazenie."%'order by date desc";
$wynik = @mysql_query($zapytanie);

$ile_znalezionych = $wynik->num_rows;

echo '<p>Znalezionych pozycji: '.$ile_znalezionych.'</p>';
echo '<br /><br /><br /><br /><br /><br />';
echo '<table id="table" style="background-color: aliceblue" border="1" width="100%" cellspacing="0" cellpadding="2" bordercolorlight="#000000">
<tr>
<td width="100%" colspan="19" bgcolor="#1E90FF">
<p align="center" style="color:white;"><b><font size="4">Wyniki wyszukiwania</font></b></td>
</tr>
<tr>
<td width="6%" align="center" bgcolor="#E0E0E0">
<p align="center"><font size="1"> Data aktualizacji</font></td>
<td width="5%" align="center" bgcolor="#E0E0E0">
<p align="center"><font size="1">Projekt</font></td>
<td width="2%" align="center" bgcolor="#E0E0E0"><font size="1">Numer narzędzia</font></td>
<td width="3%" align="center" bgcolor="#E0E0E0"><font size="1">Typ narzędzia</font></td>
<td width="5%" align="center" bgcolor="#E0E0E0"><font size="1">Indeks narzędzia</font></td>
<td width="5%" align="center" bgcolor="#E0E0E0"><font size="1">Narzędzie uniwersalne?</font></td>
<td width="1%" align="center" bgcolor="#E0E0E0"><font size="1">Status produkcyjny</font></td>
<td width="5%" align="center" bgcolor="#E0E0E0"><font size="1">Nr. rysunku</font></td>
<td width="1%" align="center" bgcolor="#E0E0E0"><font size="1">Typ izocyjanianu</font></td>
<td width="5%" align="center" bgcolor="#E0E0E0"><font size="1">Lokalizacja narzędzia</font></td>
<td width="5%" align="center" bgcolor="#E0E0E0"><font size="1">Raport wymiarowy</font></td>
<td width="1%" align="center" bgcolor="#E0E0E0"><font size="1">Komentarz</font></td>
</tr>
';

for ($i=0; $i<$ile_znalezionych; $i++)
{
$wiersz = mysql_query($wynik);
echo '<tr><td height=40><center><strong>'.stripslashes($wiersz['last_update_date']).'</strong></td>';
echo '<td><center><strong>'.stripslashes($wiersz['project']).'</strong></td>';
echo '<td><center><strong>'.stripslashes($wiersz['reference_nr']).'</strong></td>';
echo '<td><center><strong>'.stripslashes($wiersz['reference_type']).'</strong></td>';
echo '<td><center><strong>'.stripslashes($wiersz['t_index']).'</strong></td>';
echo '<td><center><strong>'.stripslashes(strlen($wiersz['universal']) ? $wiersz['universal'] : '---').'</strong></td>';
echo '<td><center><strong>'.stripslashes(strlen($wiersz['production_status']) ? $wiersz['production_status'] : '---').'</strong></td>';
echo '<td><center><strong>'.stripslashes(strlen($wiersz['drawing_nr']) ? $wiersz['drawing_nr'] : '---').'</strong></td>';
echo '<td><center><strong>'.stripslashes(strlen($wiersz['iso_type']) ? $wiersz['iso_type'] : '---').'</strong></td>';
echo '<td><center><strong>'.stripslashes(strlen($wiersz['tool_location']) ? $wiersz['tool_location'] : '---').'</strong></td>';
echo '<td><center><strong>'.stripslashes(strlen($wiersz['dimension_report']) ? $wiersz['dimension_report'] : '---').'</strong></td>';
echo '<td><center><strong>'.stripslashes(strlen($wiersz['comment']) ? $wiersz['comment'] : '---').'</strong></td></tr>';


}
$wynik->free();
mysql_close($db);
?>

<script type="text/javascript">
addTableRolloverEffect('table','tableRollOverEffect1','tableRowClickEffect1');
</script>

</body>
</html>


No i błąd jaki mi wywala to:
"Fatal error: Call to a member function free() on a non-object in C:\Program Files\OCS Inventory NG\xampp\htdocs\zi\search-tool-results.php on line 94"

W linii 94 mam wpis "$wynik->free();"

Z góry dzięki za pomocMarcin Antosik edytował(a) ten post dnia 20.05.11 o godzinie 11:09
Tomasz Krasoń

Tomasz Krasoń Programista php,
Centrum Systemów
Informatycznych Sp z
o.o.

Temat: Problem z błędem "Fatal error: Call to a member function...

Na szybko bo nie mam czasu analizować.
mysql_free_result($wynik) raczej?
Marcin Antosik

Marcin Antosik Lean 6Sigma Black
Belt, Faurecia S.A

Temat: Problem z błędem "Fatal error: Call to a member function...

2 błędy sie ukazały :/

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in C:\Program Files\OCS Inventory NG\xampp\htdocs\zi\search-tool-results.php on line 94

Warning: mysql_close(): supplied argument is not a valid MySQL-Link resource in C:\Program Files\OCS Inventory NG\xampp\htdocs\zi\search-tool-results.php on line 95

konto usunięte

Temat: Problem z błędem "Fatal error: Call to a member function...

$db = mysql_select_db(DB_DATABASE);

Poszukaj w manualu co robisz zle.

konto usunięte

Temat: Problem z błędem "Fatal error: Call to a member function...

Paweł Krefta:
$db = mysql_select_db(DB_DATABASE);

Poszukaj w manualu co robisz zle.

a jeszcze lepiej zmień to na coś lepszego, np. PDO...
Marcin Antosik

Marcin Antosik Lean 6Sigma Black
Belt, Faurecia S.A

Temat: Problem z błędem "Fatal error: Call to a member function...

Zaraz poszukam co robie źle w tej linijce, ale powiedzcie mi dlaczego działa to w przypdaku innej tabeli?? Róźnica w kodzie źródłowym jest tylko w nazwach wierszy. Tak na przyszłość żebym wiedział :)

konto usunięte

Temat: Problem z błędem "Fatal error: Call to a member function...

Powiedz Marcin szczerze - Ty to sam napisales ? Bo ten kod z pierwszego posta dupy sie nie trzyma i nie wydaje mi sie abys go napisac z palca a potem poprawial ....
Marcin Antosik

Marcin Antosik Lean 6Sigma Black
Belt, Faurecia S.A

Temat: Problem z błędem "Fatal error: Call to a member function...

Szczerze sam go napisałem (oczywiście przy wsparciu wiedzy ksiązkowej i manuala), ale zajmuje się tym od niedawna. Bardziej to hobby i jak widać dopiero jeszcze się uczę :)

Nikt nie odpowiedział na moje ostatnie pytanie. Jeśli z powodzeniem zaimplementowałem to już raz to czemu nie chce hulać drugi raz?? Rożnica jest jedynie w tabeli i danych w których chcę szukać informacji i je wyświetlić.

Paweł powiedz mi co tam według Ciebie nie trzyma się przysłowiowej "dupy" ??Marcin Antosik edytował(a) ten post dnia 20.05.11 o godzinie 20:56
Robert Nodzewski

Robert Nodzewski Tworzenie serwisów
www oraz paneli do
zarządzania/raporto.
..

Temat: Problem z błędem "Fatal error: Call to a member function...

Marcin Antosik:
Paweł powiedz mi co tam według Ciebie nie trzyma się przysłowiowej "dupy" ??
Ja ci mogę odpowiedzieć póki Pawła nie ma :)

mysql_query() zwraca RESOURCE a nie obiekt. Ty zaś do wyniku mysql_query podchodzisz tak, jakby ci zwracał obiekt i na tym wyniku tak operujesz.
$wynik->free();
$wynik->num_rows;

$wynik nie jest obiektem więc nic dziwnego, że to ci nie działa.

Innym skolei razem piszesz:
$wiersz = mysql_query($wynik);
czyli do mysql_query przekazujesz wynik mysql_query.... Piszesz na chybił trafił, bez jakiegokolwiek zastanowienia co robisz.

Ten kod nie ma prawa działać i nie pisz proszę, że dokładnie taki sam kod ci już działała bo to nie prawda.

konto usunięte

Temat: Problem z błędem "Fatal error: Call to a member function...

działało by, gdyby zamiast mysql użył mysqli.
Marcin Antosik

Marcin Antosik Lean 6Sigma Black
Belt, Faurecia S.A

Temat: Problem z błędem "Fatal error: Call to a member function...

Już znalazłem błąd.
Mimo Waszych opinii na temat mieszania podejścia strukturalnego z obiektowym wyszukiwarka zaczęła działać i to poprawnie.

Błąd jaki miałem to źle skonstruowane zapytanie do bazy, a w zasadzie ostatnia część zapytania.

Miałem:
$zapytanie = "select * from tools where ".$metoda_szukania." like '%".$wyrazenie."%'order by date desc";


A powinno być:
$zapytanie = "select * from tools where ".$metoda_szukania." like '%".$wyrazenie."%'order by last_update_date desc";


Nie zwróciłem uwagi, że gdy zmieniałem nazwe wiersza to zapomniałem poprawić to w zapytaniu.

Tak czy siak dzieki za wszelkie porady, a i tak postaram się przerobić wyszukiwarke by wyglądała bardziej spójnie jeśli chodzi o sam kod :)Marcin Antosik edytował(a) ten post dnia 23.05.11 o godzinie 10:39
Robert Nodzewski

Robert Nodzewski Tworzenie serwisów
www oraz paneli do
zarządzania/raporto.
..

Temat: Problem z błędem "Fatal error: Call to a member function...

No to w takim razie magia istnieje ;)
Kod co tu pokazałeś nie ma prawa działać i nie chodzi tu o błąd, który ty znalazłeś.
Jesteś pewien, że pokazałeś nam dokładnie kod jaki używasz?
Jesteś pewien że używasz mysql_query a nie mysqli_query?
Tomasz Krasoń

Tomasz Krasoń Programista php,
Centrum Systemów
Informatycznych Sp z
o.o.

Temat: Problem z błędem "Fatal error: Call to a member function...

Nie wiem dlaczego ci to zadziałało i mniejsza z tym. Dam ci radę : naucz cię czytać błędy - nie jest ich dużo a zrozumienie ich bardzo ci pomoże.
Moja rada nie zadziałała bo miałeś złe zapytanie i dostałeś 2 warningi.
Warning to nie błąd zasadniczo i jego treść jednoznacznie nakierowywała cię na to co masz nie tak.
Marcin Antosik

Marcin Antosik Lean 6Sigma Black
Belt, Faurecia S.A

Temat: Problem z błędem "Fatal error: Call to a member function...

Jeszcze raz prześledze dokładnie kod jutro w pracy, ale jestem pewien na 99% że wkleiłem ten sam kod z którym mialem problem.
Tak jak już pisałem Panowie - uczę się - dużo czytałem, ale nie ma to jak nauka na własnych błędach :)

pozdrawiam i dziekuje za porady



Wyślij zaproszenie do