[php] moteur de recherche avec mysql

moteur de recherche avec mysql [php] - Programmation

Marsh Posté le 31-10-2001 à 12:41:53    

voila, g une bdd mysql que je consulte avec php. Je fais une recherche sur ma bdd avec une requete select. Mais je veux afficher au maximum 20 lignes sur ma page html et garder les lignes suivantes pour les afficher sans refaire une requête à la bdd lorsque l'utilisateur clique sur suite. (comme sur n'importe kel moteur de recherche koi! :))
qqun a une idée sur comment on peut faire ca?

Reply

Marsh Posté le 31-10-2001 à 12:41:53   

Reply

Marsh Posté le 31-10-2001 à 13:16:50    

je l'ai toujours fait en refaisant la requête chaque fois, mais en utilisant un LIMIT $indice_debut,$nb_enr dans la requête pour n'avoir que ce qui m'intéresse pour chaque page.
 
y a un autre moyen ?

Reply

Marsh Posté le 31-10-2001 à 14:25:44    

oui sans aucun doute, parce que niveau bdd c pas très optimisé de refaire la requête à chaque fois   :sarcastic:
mais en attendant de trouver mieux je vais utiliser ta méthode :)
merci ethernal
 
si il y a d'autres idées, je suis preneur

Reply

Marsh Posté le 31-10-2001 à 14:32:18    

tu peux peut-être stoker le résultat dans une variable de session.
session_start();
session_register("result" );
$result= mysql_query($query, $connexion);
ou  
$result= serialize(mysql_query($query, $connexion));  
 
mais je sais pas du tout si ça fct, si tu as le temps de tester, ça m'intéresserait :)

Reply

Marsh Posté le 31-10-2001 à 15:14:05    

pr le moment, c une version alpha (et encore, peut-être la version avant la alpha:)) que je suis en train de faire... dc si le projet continue, je fais le teste et je te tiens au courant, sinon, je ferai le test chez moi, mais ca prendra bcp + de temps  :D

Reply

Marsh Posté le 31-10-2001 à 16:04:09    

ok thx :)
 
la solution est identique au topic "afficher par page":
 
//accès à la page
$debut= page*nbenrparpage
$query="SELECT... from ... LIMIT $debut,$nbenrparpage";
$result= mysql_query($query,$connexion);
while($row= mysql_fetch_object($result)){
echo $row->message;
}
 
//affichage des page dispos
$query="SELECT id from table";
$result=mysql_query($query,$connexion);
$nbenr= mysql_num_rows($result);
$nbpage= ceil($nbenr/$nbenrparpage);
for ($i=0; $i<$nbpage; i++){
  echo "<A HREF='mapage?page=$i'>".($i+1)."</A>";
}

Reply

Marsh Posté le 31-10-2001 à 16:13:24    

oui, g vu ce topic ... trop tard   :D (la prochaine fois je chercehrai un peu plus avant de poser mes question  :D )
je vais partir dans un premier tps sur cette soluce, puis si le projet va plus loin j'optimiserai le nb de requête
 
thx  :hello:

Reply

Marsh Posté le 31-10-2001 à 17:40:38    

il y avait un article dans programmez.com la dessus (l'optimisation du multipage en asp)... le principe est le même en php :)
 
il stocke tout les enregs dans des tableaux javascripts (--> 1 seule requête) et modifie l'affichage en fonction de ce qui est demandé.
l'avantage : 1 seul accès BD
inconvénient : page assez lourde à charger
 
http://www24.brinkster.com/breithoff/menu1.htm

Reply

Marsh Posté le 31-10-2001 à 18:27:14    

ethernal a écrit a écrit :

il y avait un article dans programmez.com la dessus (l'optimisation du multipage en asp)... le principe est le même en php :)
 
il stocke tout les enregs dans des tableaux javascripts (--> 1 seule requête) et modifie l'affichage en fonction de ce qui est demandé.
l'avantage : 1 seul accès BD
inconvénient : page assez lourde à charger
 
http://www24.brinkster.com/breithoff/menu1.htm  




Personellemnt, je trouve cette méthode super lourde.
Elle est incompatible avec certains navigateur ce qui peut être très génant pour certain site à cause de la cible choisi.
Cette méthode a de forte chance de provoquer des chargements partiel de la page. (surtout si la requête ramène beaucoup d'enregistrement)
Cette méthode peut rendre le temps d'attente insuportable pour le visiteur qui ira voir ailleur.
 
Personellemnt, je ne vois pas l'intérét de cette méthode. Le gain de temps passé à ne plus lancer de requête sur la base sera perdus plusieurs fois a cause de ceux qui veulent accéder a des liens ou des données situées après l'endroit où leur navigateur à arrêter le chargement de la page.
 
BREf, vive les requêtes contenant des LIMIT (ou équivalent). :)

Reply

Marsh Posté le 31-10-2001 à 23:30:54    

c vrai que leur page de démos j'ai du la recharger 4x avant de l'avoir en entier ... j'ai l'ADSL en plus...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed