ugrás a tartalomhoz

Keresés - Találatok kilistázása

fmateka · 2011. Jún. 9. (Cs), 18.36
Sziasztok!
Volna egy problémám. Van egy weboldal, amin lehetősége van a látogatóknak nyelvtan szabályok, irodalmi fogalmak között keresni. (Erről a weboldalról lenne szó) A találatok kilistázását így oldottam meg:
  1. // ELSŐ OLDAL  
  2. if (($_GET['oldal'] == "") || ($_GET['oldal'] == "1")) {  
  3.     $elso_sql = "SELECT * FROM tartalmak WHERE tartalom LIKE '%{$_GET[kif]}%' LIMIT 0,6";  
  4.     $elso_eredm = mysql_query($elso_sql,$osszor die(mysql_error());  
  5.     while ($list = mysql_fetch_array($elso_eredm)) {  
  6.         $talalatok .= "<tr><td id='myObject".$list['id']."' valign='top'>".$list['tartalom']."</td></tr>";  
  7.     }  
  8.     $talalatok .= "</table>";  
  9. }  
Ez csak az első oldal, a többi oldalt ugyanígy oldottam meg, csak persze apró eltérések a számoknál... Tulajdonképpen működik a dolog, csak nem túl praktikus. Tud valaki valamilyen egyszerűbb megoldást erre?
 
1

Ilyesmi

Poetro · 2011. Jún. 9. (Cs), 18.50
  1. <table>  
  2.   <tbody>  
  3.   
  4. <?php  
  5. $oldal = max(1, isset($_GET['oldal']) ? intval($_GET['oldal']) : 1);  
  6. $sql = sprintf(  
  7.   "SELECT * FROM tartalmak WHERE tartalom LIKE '%%%s%%' LIMIT %d, 6",  
  8.   mysql_real_escape_string($_GET['kif']), ($oldal - 1) * 6  
  9. );  
  10. $eredm = mysql_query($sql);  
  11. while ($list = mysql_fetch_array($eredm)):  
  12. ?>  
  13.   
  14.     <tr>  
  15.       <td id="myObject<?php echo $list['id'] ?>" valign="top">  
  16.         <?php echo $list['tartalom']; ?>  
  17.       </td>  
  18.     </tr>  
  19.   
  20. <?php endwhile; ?>  
  21.   </tbody>  
  22. </table>  
2

Nem működik

fmateka · 2011. Jún. 9. (Cs), 19.01
Még most sem működik sajnos. A max() függvényt és a mysql_real_escape_string() függvényt nem ismerem. Mit is csinálnak?

Biztos jó amit írtál, csak az én tudásom nem elég jó hozzá...
3

Elolvasod

Poetro · 2011. Jún. 9. (Cs), 19.10
Gondolom nem esik nehezedre elolvasni, mit csinál a max, és a mysql_real_escape_string.
Olyat pedig nem írunk egy szakmai fórumon, hogy nem működik. Kötelező olvasmány: Hogyan kérdezzünk okosan.
4

Igaz

fmateka · 2011. Jún. 9. (Cs), 19.25
Igazad van. Megpróbálom bővebben kifejteni: kilistázza a találatokat, csak nem oldalszámhoz mérten. Kicsit átszabtam, most így néz ki:
  1. <?php    
  2. $tartalom = "<table>";  
  3. $oldal = max(1, isset($_GET['oldal']) ? intval($_GET['oldal']) : 1);    
  4. $sql = sprintf(    
  5.   "SELECT * FROM tartalmak WHERE tartalom LIKE '%%%s%%' LIMIT %d",    
  6.   mysql_real_escape_string($_GET['kif']), ($oldal - 1) * 6    
  7. );    
  8. $eredm = mysql_query($sql);    
  9. while ($list = mysql_fetch_array($eredm)) {  
  10.   $tartalom .= "  
  11.     <tr>    
  12.       <td id='myObject".$list['id']."' valign='top'>    
  13.         ".$list['tartalom']."  
  14.       </td>    
  15.     </tr>";    
  16. }  
  17. $tartalom .= "</table>";  
  18. print $tartalom;  
  19. ?>  
És ha az oldal értékét 1-nél nagyobbra írom át és úgy próbálom meg, akkor sem csinál semmit azon kívül, hogy visszaugrik arra az URL-re, aminek az oldal értéke egy.

Amúgy köszi szépen az eddigi segítségeid! :)
5

Visszaugrik?

Poetro · 2011. Jún. 9. (Cs), 19.36
A fenti kódban semmi féle visszaugrás nincsen, úgyhogy az a kódod valamely más részében lesz.