[résolu]Optimiser la prévisualisation en php+javascript

Optimiser la prévisualisation en php+javascript [résolu] - PHP - Programmation

Marsh Posté le 22-04-2008 à 16:39:46    

Bonjour,
sur un site que je suis entrain de créer j'ai mis en place une prévisualisation.
Dès qu'on passe la souris sur le titre, un encart en javascript apparaît avec une partie du contenu de l'article. Si on clique dessus on accède à l'ensemble de l'article.
 
Le problème c'est qu'actuellement quand on passe la souris sur le titre, il y a en fait une requête mysql qui est exécutée afin d'afficher la prévisualisation. Du coup, il suffit qu'on passe allègrement la souris sur chaque titre pour que la charge du processeur augmente.
 
Comment optimiser cela ? D'après mes recherches, apparement ajax serait la solution (je m'y connais peu), est-ce vraiment le cas ? Ou alors devrais-je plutôt m'orienter vers une solution utilisant uniquement du xml (je m'y connais peu là aussi) que l'on chargerait pour chaque prévisualisation ?
 
Merci de me guider dans mes recherches, je suis un peu paumé là en fait  ;)  
 
ps : si une solution toute faite existe, je veux bien aussi  :D


Message édité par tostiere le 23-04-2008 à 14:09:55
Reply

Marsh Posté le 22-04-2008 à 16:39:46   

Reply

Marsh Posté le 22-04-2008 à 16:55:31    

Comment tu fait a faire une requéte mysql avec le javascript ???
 
Je vois pas l'interet d'une requéte supplémentaire, j'imagine que tu en fait une pour retourner les titres voir d'autres entrées (date, auteur ect...), si le texte est dans la même table, tu n'as qu'a t'en servir pour l'afficher dans une infobulle dhtml qui s'affiche au passage de la souris.

Reply

Marsh Posté le 22-04-2008 à 18:11:31    

Salut et merci pour ta réponse :)
 
En fait c'est un peu plus compliqué que ça. Dès qu'on passe la souris sur un titre, le javascript envoie l'id de l'article sur une requête sql, laquelle renvoie un résultat que le javascript récupère afin de l'afficher. Effectivement, ça retourne pas mal de choses.
 
Par contre je n'ai pas très bien compris ton conseil, puisque c'est effectivement ce que je cherche à faire mais en surchargeant le moins possible le processeur.


Message édité par tostiere le 22-04-2008 à 18:12:02
Reply

Marsh Posté le 22-04-2008 à 18:41:08    

C'est de l'ajax ton systéme alors, seul un script côté serveur peut executer une requéte mysql.
 
Mon conseil est assez simple, j'imagine que dans ton code PHP tu executes une requéte mysql pour afficher ta liste d'articles, notament pour récuperer le titre. Si le texte de cette article, comme c'est généralement le cas se trouve dans la même table, il te suffit de le recuperer en même temps.
 
Ensuite pour ton preview tu utilises une infobule dhtml classique, c'est a dire un vulgaire <div> caché qui est visible uniquement lorsque la souris passe sur ton titre. Il existe des tas de javascript de ce genre sur le net, tu n'auras aucun mal a en trouver un.
 
En revanche je comprend pas trop ta "surcharge" processeur, une simple requéte mysql ne peut pas surchargé un serveur quand même.

Reply

Marsh Posté le 22-04-2008 à 21:25:44    

Salut, bon je viens de comprendre. Effectivement ta solution m'a l'air plus qu'intéressante, je n'y avais pas songé :)
 
Sinon pour mieux expliquer mon principe, en fait il y a environ une 30aine de titres qui sont affichés en même temps. Si en l'espace de deux secondes on passe la souris sur 15 titres en mêmes, c'est autant de requêtes d'effectuées côté serveur. Mais ce n'est pas de l'ajax en tout cas, c'est du simple javascript (l'objet xmlhttprequest n'est jamais utilisé).

Reply

Marsh Posté le 23-04-2008 à 11:45:31    

Merci, je viens à l'instant de faire comme tu m'as dit et ça marche bien :)
 
Par contre, par simple curiosité, est-ce qu'en ajax/xml c'est possible de faire ce que je voulais, ou j'ai dit n'importe quoi ?

Reply

Marsh Posté le 23-04-2008 à 12:12:56    

L'ajax avec php, permet juste d'executer une (ou plusieurs) fonction en arriére plan, c'est a dire sans recharger la page entiérement, ca n'aurait pas empecher de faire une requéte mysql en plus.

Reply

Marsh Posté le 23-04-2008 à 14:09:38    

Oki merci pour cette précision alors ;)

Reply

Sujets relatifs:

Leave a Replay

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