|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Invité de passage
![]() Étudiant Inscription : janvier 2013 Messages : 14 ![]() |
Salut tout le monde, je suis tout nouveau sur ce forum donc désolé si je me suis trompé de section ^^
je réalise actuellement un site, comme chaque site il y a un contenu, mais il y a aussi une div appelé "flash" (pour information flash), dans la base de donnée il peut y avoir une, deux... X flash et ce que je souhaiterais, c'est que toutes les flash s'affichent dans le coin "flash" a intervalle régulière Problème : j'arrive a afficher les info flash avec une intervalle, MAIS je suis obligé de cliquer sur chaque info flash (j'ai fais une boucle foreach en php pour afficher leurs id) ce qui signifie qu'elles ne se chargent pas automatiquement, autre problème, l'intervalle n'est pas régulière, j'ai crus voir que si je fixais une intervalle de 8secondes, pour 3 flash disponible, 2 flash feraient leurs apparitions en 1secondes chacune et la dernière prendrait les 8secondes restantes. J'espère avoir été le plus clair possible en ce qui concerne le contexte ^^ Maintenant un peu de code : Le code JS qui me permet de faire ce qui a déjà été réalisé : Code :
Code php :
Enfin, si ça peut aider, la partie qui fabrique la ligne flash : Code php :
j'avais réalisé une recherche sur le net, mais rien ne correspondant a mon cas précis, je vous remercie d'avances pour vos réponses et désolé si j'ai mal utilisé les balises! |
||||||
|
|
00
|
|
|
#2 |
|
Membre éprouvé
![]() Yann IUT Informatique Inscription : mars 2011 Messages : 400 ![]() |
Salut,
J'ai un peu de mal à tout comprendre ^^. Mais pour tes flash info, ton contenu à afficher il est bien récupérer par la fonction getFlash() ? Pour ton intervalle tu parle de celui qui tu met dans setTimeout? |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Étudiant Inscription : janvier 2013 Messages : 14 ![]() |
Enfaite, pour l'instant j'ai 3 flash, avec la boucle foreach, ça m'affiche :
1 2 3 Chacun a son value de flash, le problème, c'est que ça m'affiche que 1 2 3 alors que je voudrais que ça m'affiche automatiquement le contenu de la flash 1, après 4secondes par exemple le contenu de la flash 2, 4secondes après le contenu de la flash 3 et on revient a la flash 1. Seulement, pour l'affichage d'une flash, je dois cliquer dessus, c'est le premier problème. Le second problème est la durée d'affichage : les 3 flash ne sont pas affiché avec une même durée, une va être affiché 8secondes, et les deux autres seront affiché 1seconde chacune, le temps est respecté je crois, il affiche bien les 3 flash pour une durée de 10secondes, mais le temps d'affichage n'est pas équilibré. Pour complexifier la chose, il peut y avoir 2 flash, comme il peut y en avoir 8 |
|
|
00
|
|
|
#4 | ||
|
Membre éprouvé
![]() Yann IUT Informatique Inscription : mars 2011 Messages : 400 ![]() |
Okok, alors en faite, ça t'affiche 1 2 et 3 parce que tu fais uniquement un echo de $i, et le contenu tu le charge uniquement au onclick. il faut revoir le fonctionnement. Moi je ferai un truc de ce style (je te fais un exemple en mode léger)
Code :
|
||
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Étudiant Inscription : janvier 2013 Messages : 14 ![]() |
Je te remercie de ta réponse, je vais essayer et je te tiens au courant
j'y repense, mais je ne connais rien au Jquery :s j'ai fais de l'ajax cette année, |
|
|
00
|
|
|
#6 |
|
Membre éprouvé
![]() Yann IUT Informatique Inscription : mars 2011 Messages : 400 ![]() |
Tu dois avoir des équivalent en natif. Je sais que html tu peux le remplacer par innerHTML mais empty je sais pas du tout l'équivalent ...
|
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Étudiant Inscription : janvier 2013 Messages : 14 ![]() |
Sinon j'avais pensé a autre chose,
charger toutes les flash avec ma fonction php (donc je n'envoie pas d'id) je fais un premier split / pour différencier les différentes parties d'une flash et un autre split - pour différencier les flash mais je crois que je me torture un peu trop l'esprit, non? |
|
|
00
|
|
|
#8 |
|
Membre éprouvé
![]() Yann IUT Informatique Inscription : mars 2011 Messages : 400 ![]() |
Possible que tu te torture l'esprit ^^.
J'ai un peu relu ce que t'as fais, je pense que si tu utilise ta fonction getLesFlash, tu encode en JSON pour que ce soit léger et tu le renvois à ta fonction ajax, et après t'as plus qu'à traiter par rapport à l'id (si tes id fonctionnent comme des indices de tableau). Je sais pas si je me suis bien expliqué sur la méthode que j'aurai utilisé ^^ |
|
|
00
|
|
|
#9 | ||||||
|
Invité de passage
![]() Étudiant Inscription : janvier 2013 Messages : 14 ![]() |
je pars sur une nouvelle idée qui devrait être moins prise de tête
Code pour l'affichage (qui n'affiche pas encore^^) : Code html :
Le script php qui réupère toutes les flash (les champs sont séparés par des / et les flash par des --) Code php :
Enfin le code JS : Code :
Edit: Enfaite je viens de rajouter onload au body.. et j'ai fais un alert, j'ai modifié le petit truc qui n'allait pas en php, j'ai fais un alert de xhr , et j'obtient... l'id de chaque flash, exemple 6/6/6/6/6-8/8/8/8/8-9/9/9/9/9, je crois qu'on y est presque.. Edit : je vous tiens au courant des avancées quand même... le onload se fait bien, mes split se font bien, le problème, c'est que mes <span> affichent undifined SAUF si je fais un alert quelconque... a ce moment la ça m'affiche bien le résultat, sauf que je n'ai pas vraiment envie que l'utilisateur ai a se taper la boucle de flash dés son arrivé esur le site.. |
||||||
|
|
00
|
|
|
#10 | ||
|
Invité de passage
![]() Étudiant Inscription : janvier 2013 Messages : 14 ![]() |
Voici la dernière version du script :
Code :
Ensuite, avec le alert(temps) cette fois, il semblerait que les informations s'actualisent environ toutes les 5secondes, mais ne boucle pas a l'infini( arrivé a la dernière flash, le script s'arrête), c'est pas encore bon mais y a du mieux |
||
|
|
00
|
|
|
#11 | ||||
|
Membre du Club
![]() ![]() Sébastien DAMARTDéveloppeur Web Inscription : septembre 2012 Messages : 29 ![]() |
Quelque critique si tu me le permet :
Tu utilise trop de tableau dans tout les sens au bout d'un moment tu va forcément finir par t'y perdre. tu part dans la bonne direction néanmoins. Le JavaScript possède un outil puissant le JSON Code :
Voila il ne reste plus qu'a itérer. Là encore, tu partais dans la bonne direction mais jamais tu ne ré-itére la fonction donc elle tourne pas en boucle. Exemple Code :
|
||||
|
00
|
|
|
#12 |
|
Invité de passage
![]() Étudiant Inscription : janvier 2013 Messages : 14 ![]() |
Je débute en javascript, je l'apprend en cours, je suis pour l'instant limité a ajax, j'ai déjà entendu parler de Json et de Jquery qui semblent être de formidable outils, mais je ne les connais pas (encore).
Je viens quand même de regarder quelques exemples sur le net.. ça me fais un peu penser a DOM et a l'utilisation du XML, non? |
|
|
00
|
|
|
#13 |
|
Invité de passage
![]() Étudiant Inscription : janvier 2013 Messages : 14 ![]() |
Pour le Json, je ne vois pas comment l'adapter a mon script,
De plus, après avoir de nouveau testé le script, enfaite il plante, et me propose de continuer ou d'arrêter le script (difficile a dire si niveau algo il fonctionne), du fait qu'il plante, il affiche directement la dernière valeur Edit : j'ai testé le script avec l'outil Ardoise Javascript et j'obtient ça en commentaire après la tentative d'éxécution : /* Exception: syntax error @Scratchpad:1 */ /* undefined */ |
|
|
00
|
|
|
#14 | ||||||||||
|
Membre du Club
![]() ![]() Sébastien DAMARTDéveloppeur Web Inscription : septembre 2012 Messages : 29 ![]() |
Pour le JSON, il s'agit d'un système de notation rapide pour générer des objet à la volée.
En JavaScript (comme dans n'importe quel langage) il faut éviter les codes trop lourd Si j'écris Code :
Alors qu'en JSON Code :
Si j'écris Code :
Donc je peu appeler qui est plus clair que Dans ton dernier code tu soirt un tableau à deux dimensions La première constitue l'ensemble de tes flashs info et la seconde les flashs info en eux même Plus tôt que de jongler avec les index des tableau mieux vaut dédié des champs Code :
Et si on décidé de récupérer le JSON directement du serveur Code :
et fini
|
||||||||||
|
00
|
|
|
#15 | ||||
|
Invité de passage
![]() Étudiant Inscription : janvier 2013 Messages : 14 ![]() |
Enfaite la je suis perdu, voici le code actuel :
v_chercherFlash.php : Code :
Code :
|
||||
|
|
00
|
|
|
#16 | ||||
|
Membre éprouvé
![]() Yann IUT Informatique Inscription : mars 2011 Messages : 400 ![]() |
Salut,
Je pense que t'y est presque mais il te faut juste bien réussir à récupérer toutes les données et ajusté comme il faut le changement auto. Une possible solution, à arranger et corriger. Ca ressemble beaucoup à la première solution que je t'ai proposé mais je pense que c'est l'approche à avoir Code php :
La tu renvoie ton tableau brut avec tous tes flashs Code :
Tu appel une fonction pour afficher le premier flash. Ensuite on incrémente de 1 la variable idEnCours pour afficher le flash suivant quand la fonction sera rappeler. Puis ensuite tu indique que la fonction changeMessage sera rappelé au bout de 8000ms |
||||
|
|
10
|
|
|
#17 |
|
Invité de passage
![]() Étudiant Inscription : janvier 2013 Messages : 14 ![]() |
j'ai testé le script, avec la console développeur web de firefox activé, idEnCours n'est pas défini
et typeError xhr[idEnCours] is undifined |
|
|
00
|
|
|
#18 | ||
|
Membre du Club
![]() ![]() Sébastien DAMARTDéveloppeur Web Inscription : septembre 2012 Messages : 29 ![]() |
Paradoxalement, l'AJAX ce joue essentiellement coté serveur.
I.E la façon dont les données sont formatées. Si ton serveur retourne une chaine CVS (libelle1|desc_1|12.8#libelle2|desc_2|21.8) Il faut prévoir un script pour transformer cela coté client exemple Code :
En revenche, si ton serveur retourne une chaîne JSON [{libelle:"libelle1",desc:"desc1",prix:12.80},{libelle:"libelle2",desc:"desc2",prix:21.80}] Coté client c'est des vacance ! Code :
var _a=eval('('+xhr.responseText+')'); |
||
|
00
|
|
|
#19 | ||
|
Invité de passage
![]() Étudiant Inscription : janvier 2013 Messages : 14 ![]() |
Il semblerait que ça se rapproche du but la, j'arrive a afficher les informations dans les span, après quelques secondes (prévues par le settimeout) je vois qu'il y a bien l'appel de ma fonction d'affichage, seulement, la flash suivante n'est pas affiché et j’obtiens [object HTMLDivElement] dans un alert(flash), comme ci mes flash étaient transformé lors de l'appel de la fonction
Code :
|
||
|
|
00
|
|
|
#20 | ||
|
Invité de passage
![]() Étudiant Inscription : janvier 2013 Messages : 14 ![]() |
Le script fonctionne ! Je vous remercie tous pour votre aide importante.
Je fourni la fonction dans le cas où ça intéresserai quelqu'un plus tard : Code :
|
||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com