Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][SQL]Problem z wyszukiwarką - podana ilość wyników inna, ilość wyników wyświetlanych inna
Forum PHP.pl > Forum > Przedszkole
Ivellios
Mam problem z napisaną przez siebie wyszukiwarką. Otóż jej kod wygląda tak:

Kod
<?php

$string = "$_POST[tekst]";
$przeszukaj = "$_POST[przeszukaj]";


$sql = "SELECT * FROM nuke_pages WHERE page_header LIKE '%$_POST[tekst]%' ORDER BY pid DESC";
$query = mysql_query($sql) or die(mysql_error());
$row_sql = mysql_fetch_assoc($query);
$total = mysql_num_rows($query);

$sql2 = "SELECT * FROM nuke_stories WHERE bodytext LIKE '%$_POST[tekst]%' ORDER BY sid DESC";
$query2 = mysql_query($sql2) or die(mysql_error());
$row_sql2 = mysql_fetch_assoc($query2);
$total2 = mysql_num_rows($query2);

$sql3 = "SELECT * FROM download_files WHERE title LIKE '%$_POST[tekst]%' ORDER BY did DESC";
$query3 = mysql_query($sql3) or die(mysql_error());
$row_sql3 = mysql_fetch_assoc($query3);
$total3 = mysql_num_rows($query3);


if($total>0 && $przeszukaj=='artykuly') {
        echo 'Znaleziono '.$total.' pasuj±cych wyników<BR><BR>';
        while ($row_sql = mysql_fetch_assoc($query)) {//echo out the results
        echo '<a href="'.$row_sql['pid'].','.$row_sql['cid'].',artykul.html">'.$row_sql['title'].'</a><br><BR>';
        }
} else if($total>0 && $przeszukaj=='newsy') {
        echo 'Znaleziono '.$total2.' pasuj±cych wyników<BR><BR>';
        while ($row_sql2 = mysql_fetch_assoc($query2)) {//echo out the results
        echo '<a href="index.php?akcja=news&id='.$row_sql2['sid'].'">'.$row_sql2['title'].'</a><br><BR>';
        }
} else if($total>0 && $przeszukaj=='download') {
        echo 'Znaleziono '.$total3.' pasuj±cych wyników<BR><BR>';
        while ($row_sql3 = mysql_fetch_assoc($query3)) {//echo out the results
        echo '<a href="'.$row_sql3['did'].',download,plik.html">'.$row_sql3['title'].'</a><br><BR>';
        }        
} else
        {
        echo "<center>Przepraszamy, nie znaleziono żadnych wyników spełniaj±cych Twoje kryteria.<BR>Być może, wpisuj±c frazę do wyszukania, popełniłe¶ jak±¶ literówkę? SprawdĽ frazę i spróbuj ponownie.</center>";
}
?>


Problem jest tego typu, że wyszukiwarka pokazuje informację, że znalazła np 3 pasujące artykuły, ale wyświetla tylko 2. Przy komunikacie o 1 znalezionym artykule nie wyświetla żadnego.
W czym może tkwić błąd?
rolling_stone
Coś jest chyba pomieszane z $totalami. Przyjrzyj się. Sprawdzasz w warunku if czy $total jest większy od zera, a potem wypisujesz np. $total3.

Nie wiem czy to to - taki pierwszy rzut oka. Spać się trochę chce tongue.gif
webdice
Proszę o zmianę tytułu tematu, tytuł ma opisywać problem.
Ivellios
To raczej nie total'e. Pozmieniałem co nieco, kod wygląda teraz tak:

Kod
<?php

$string = "$_POST[tekst]";
$przeszukaj = "$_POST[przeszukaj]";


$sql = "SELECT * FROM nuke_pages WHERE page_header LIKE '%$_POST[tekst]%' ORDER BY pid DESC";
$query = mysql_query($sql) or die(mysql_error());
$row_sql = mysql_fetch_assoc($query);
$total = mysql_num_rows($query);

$sql2 = "SELECT * FROM nuke_stories WHERE bodytext LIKE '%$_POST[tekst]%' ORDER BY sid DESC";
$query2 = mysql_query($sql2) or die(mysql_error());
$row_sql2 = mysql_fetch_assoc($query2);
$total2 = mysql_num_rows($query2);

$sql3 = "SELECT * FROM download_files WHERE title LIKE '%$_POST[tekst]%' ORDER BY did DESC";
$query3 = mysql_query($sql3) or die(mysql_error());
$row_sql3 = mysql_fetch_assoc($query3);
$total3 = mysql_num_rows($query3);


if($total>0 && $przeszukaj=='artykuly') {



        echo 'Znaleziono '.$total.' pasuj±cych wyników<BR><BR>';
        while ($row_sql = mysql_fetch_assoc($query)) {//echo out the results
        echo '<a href="'.$row_sql['pid'].','.$row_sql['cid'].',artykul.html">'.$row_sql['title'].'</a><br><BR>';
        }
} else if($total2>0 && $przeszukaj=='newsy') {



        echo 'Znaleziono '.$total2.' pasuj±cych wyników<BR><BR>';
        while ($row_sql2 = mysql_fetch_assoc($query2)) {//echo out the results
        echo '<a href="index.php?akcja=news&id='.$row_sql2['sid'].'">'.$row_sql2['title'].'</a><br><BR>';
        }
} else if($total3>0 && $przeszukaj=='download') {


      
        echo 'Znaleziono '.$total3.' pasuj±cych wyników<BR><BR>';
        while ($row_sql3 = mysql_fetch_assoc($query3)) {//echo out the results
        echo '<a href="'.$row_sql3['did'].',download,plik.html">'.$row_sql3['title'].'</a><br><BR>';
        }        
} else
        {
        echo "<center>Przepraszamy, nie znaleziono żadnych wyników spełniaj±cych Twoje kryteria.<BR>Być może, wpisuj±c frazę do wyszukania, popełniłe¶ jak±¶ literówkę? SprawdĽ frazę i spróbuj ponownie.</center>";
}
?>


...ale problem z wyświetlaną ilością wyników nadal występuje.
rolling_stone
Spróbuj wywalić te fragmenty (te nie w pętli while tylko przy wywoływaniu mysql_query() ):

CODE
$row_sql = mysql_fetch_assoc($query);


Nie wiem jak działa mysql_fetch_assoc() ale może usuwać pobrany wiersz z rezultatu w parametrze...
Ivellios
rolling_stone, jesteś wielki! Uratowałeś właśnie wyszukiwarkę serwisu Paranormalium biggrin.gif
Dzięki wielkie winksmiley.jpg
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.