Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Wyszukiwarka - dziwny błąd
Forum PHP.pl > Forum > Przedszkole
mike-j
Mam taki kod:

Kod
<?
$szukacz="";
?>
<div align="center"><form method="post" action="index.php?action=szukaj">
SZUKAJ W NAZWACH <input type="text" name="szukacz" value="<? print($szukacz); ?>"> <input type="submit" value="SZUKAJ"></form>
</div>
<?
$link = mysql_connect('localhost', 'login', 'haslo')
    or die('Nie mozna sie polaczyc: ' . mysql_error());
mysql_select_db('baza') or die ('Nie mozna wybrac bazy danych');

$zapytanie = "SELECT `id`, `miasto`, `prefix`, `nazwa`, `oplacono` FROM `nadmorzem` WHERE `nazwa` LIKE \"%$szukacz%\" ORDER BY DESC";
$idzapytania = mysql_query($zapytanie);
$wiersze = mysql_num_rows($zapytanie);
if ($wiersze == 0)
print 'Nie znaleziono żadnego wyniku z frazą'.$szukacz.' w nazwie.';
else
print 'Znaleziono $wiersze wyników z frazą $szukacz:<br><br>';
print '<table width="800" border="0" cellspacing="0" cellpadding="5">';
while ($wiersz = mysql_fetch_row($idzapytania))
{
  echo'<tr><td rowspan="3" width="120" height="90" align="center" valign="middle"><a href="index.php?acion=edytuj&id=' . $wiersz[0] .'"><img border="0" height="90" width="120" src="http:/www.wczasy-nad-morzem.pl/' . $wiersz[1] .'/' . $wiersz[2] .'/mini.jpg"></a></td>';
  .'<td align="left" valign="middle"><span class="style9">' . $wiersz[1] .'</span></td>';
  .'<td rowspan="3" width="100" align="center" valign="middle"><span class="style10">Oplacono do: ' . $wiersz[4] .'</span></td></tr>';
  .'<tr><td align="left" valign="middle"><a href="index.php?acion=edytuj&id=' . $wiersz[0] .'" class="style7">' . $wiersz[3] .'</a></td></tr>';
  .'<tr><td align="right" valign="middle"><span class="style8"><a href="index.php?acion=edytuj&id=' . $wiersz[0] .'">::EDYTUJ::</a> <a href="index.php?acion=usun&id=' . $wiersz[0] .'">::USUN::</a></span></td></tr>';
}
?> <table>
<?


I wyskakuje mi błąd o treści:

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /home/accounts_m/mike/public_html/panel/index.php on line 216

a linia 216 to
Kod
if ($wiersze == 0)


Proszę o analizę kodu i radę
dyniaq
Spróbuj tak
  1. <?php
  2. $wiersze = mysql_num_rows($idzapytania);
  3. ?>


I czytaj zawsze manual PHPowy: TUTAJ
Jako argument musisz podać to, co zwróci zapytanie do MySQL'a: mysql_query()
mike-j
Po poprawie i kilku poprawkach kod wygląda tak:
Kod
$zapytanie = "SELECT `id`, `miasto`, `prefix`, `nazwa`, `oplacono` FROM `nadmorzem` WHERE `nazwa` LIKE '$szukacz' ORDER BY DESC";
$idzapytania = mysql_query($zapytanie);
$wiersze = mysql_num_rows($idzapytania);
if ($wiersze == 0) {
print 'Nie znaleziono żadnego wyniku z frazą '.$szukacz.' w nazwie.';
} else {
print 'Znaleziono $wiersze wyników z frazą <strong>'.$szukacz.'</strong>:<br><br>';
print '<table width="800" border="0" cellspacing="0" cellpadding="5">';
while ($wiersz = mysql_fetch_row($idzapytania))  
{
  print'<tr><td rowspan="3" width="120" height="90" align="center" valign="middle"><a href="index.php?acion=edytuj&id=' . $wiersz[0] .'"><img border="0" height="90" width="120" src="http:/www.wczasy-nad-morzem.pl/' . $wiersz[1] .'/' . $wiersz[2] .'/mini.jpg"></a></td>';
  print'<td align="left" valign="middle"><span class="style9">' . $wiersz[1] .'</span></td>';
  print'<td rowspan="3" width="100" align="center" valign="middle"><span class="style10">Oplacono do: ' . $wiersz[4] .'</span></td></tr>';
  print'<tr><td align="left" valign="middle"><a href="index.php?acion=edytuj&id=' . $wiersz[0] .'" class="style7">' . $wiersz[3] .'</a></td></tr>';
  print'<tr><td align="right" valign="middle"><span class="style8"><a href="index.php?acion=edytuj&id=' . $wiersz[0] .'">::EDYTUJ::</a> <a href="index.php?acion=usun&id=' . $wiersz[0] .'">::USUN::</a></span></td></tr>';
}
?> <table>
<? }


i tym razem błąd

Warning
: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/accounts_m/mike/public_html/panel/index.php on line 215

bo usunąłem linijkę z definicją, że szukacz jest pusty.
dyniaq
Możliwe, że coś w składni zapytania jest nie tak. Bo $idzapytania nie jest poprawnym rezultatem zapytania do bazy danych. Tak wynika z błędu. Spróbuj zamiast ' dać ` przed i po $szukacz w zapytaniu do MySQLa.
mike-j
Zero efektu.

A kolejność pól w mysql ma znaczenie?
kaem
Kolejność nie ma znaczenia.
Po order by nie masz nazwy kolumny wg. której ma sortować.
Spróbuj:
  1. "SELECT id, miasto, prefix, nazwa, oplacono FROM nadmorzem WHERE nazwa LIKE '".$szukacz."' ORDER BY jakies_pole DESC";
mike-j
Dzięki bardzo. Zadziało : )
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.