![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 2.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
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? Ten post edytował Ivellios 6.09.2008, 21:58:01 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 2 Dołączył: 20.08.2004 Skąd: Warszawa Grochów Ostrzeżenie: (0%) ![]() ![]() |
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 (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) |
|
|
![]()
Post
#3
|
|
Developer Grupa: Moderatorzy Postów: 3 045 Pomógł: 290 Dołączył: 20.01.2007 ![]() |
Proszę o zmianę tytułu tematu, tytuł ma opisywać problem.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 2.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
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. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 2 Dołączył: 20.08.2004 Skąd: Warszawa Grochów Ostrzeżenie: (0%) ![]() ![]() |
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... |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 2.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
rolling_stone, jesteś wielki! Uratowałeś właśnie wyszukiwarkę serwisu Paranormalium (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Dzięki wielkie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 16:43 |