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...
omega2
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
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). :)
ethernal
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
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:
ethernal
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>";
}
dropsy
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
ethernal
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 :)
dropsy
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
ethernal
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 ?
dropsy
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?