Alerte script en php

Eléphant du PHP | 256 Messages

20 févr. 2012, 16:07

Bonjour,
Dans une page php, je voudrais afficher une boîte d'alerte; je fais

Code : Tout sélectionner

if(condition) echo "<script>alert(\"A partir de samedi prochain départ à 14h00\")</script>";
Ca fonctionne très bien si ce n'est que je ne praviens pas à faire sortir cette boîte après l'affichage complet de la page.
La page en question est ici http://www.rudyv.be/VTT/index.php
Merci d'avance pour votre aide.

ViPHP
xTG
ViPHP | 7331 Messages

20 févr. 2012, 16:15

Soit tu le mets à la fin de ta page HTML générée.
Soit tu le mets dans un listener sur le chargement de la balise body : http://stackoverflow.com/questions/1235 ... nt-with-js

Eléphant du PHP | 179 Messages

20 févr. 2012, 16:23

Tu as deux solutions soit tu mets ce truc tout en bas de ta page ( a voir si c'est possible si c'est du MVC ).. et certaines photos ne se chargeront pas d'emblé :/
Soit tu utilises un autre procédé.. par exemple une sorte d'alert personnalisé que tu crée en html/css.. enfin la il faut faire marcher l'imagination, mais il y a peu être un truc miracle que je ne connais pas ^^.

Eléphant du PHP | 256 Messages

20 févr. 2012, 16:30

Merci pour la réponse,
En fin HTML c'est la première chose que j'ai essayé :

Code : Tout sélectionner

<TD WIDTH="72%" VALIGN="MIDDLE"><P ALIGN="CENTER"><a href="agenda2004.htm"><FONT COLOR=Yellow>Cliquer ici pour voir le détail</a></TD> </TR></TBODY></TABLE> <?php ... if(date("m", $nextS)=="11" && date("d", $nextDate)<"08") echo "<script>alert(\"A partir de samedi prochain départ à 13h30\")</script>"; ?> </body> </html>
La dernière chose générée est bien "Cliquer ici pour voir le détail" mais l'alerte ne sort pas du tout !

Eléphant du PHP | 256 Messages

21 févr. 2012, 17:55

Bonjour,
J'ai trouvé pourquoi l'alerte ne sortait pas : erreur dans le if :D
Maintenant elle sort bien mais les images ne sont pas affichées avant qu'on clique sur le OK de l'alerte !

Eléphant du PHP | 179 Messages

21 févr. 2012, 17:59

tu mets ce truc tout en bas de ta page ( a voir si c'est possible si c'est du MVC ).. et certaines photos ne se chargeront pas d'emblé :/
pour ma part je ferais une div html toute belle que tu met au milieu de l'écran au dessus de tout, avec un petit bouton dedans qui quand on click dessus met la div en display :none ( la cache )

Eléphant du PHP | 256 Messages

21 févr. 2012, 18:19

tu mets ce truc tout en bas de ta page ( a voir si c'est possible si c'est du MVC ).. et certaines photos ne se chargeront pas d'emblé
pour ma part je ferais une div html toute belle que tu met au milieu de l'écran au dessus de tout, avec un petit bouton dedans qui quand on click dessus met la div en display :none ( la cache )
Que je mette l'alert en haut ou en bas c'estla même chose.
Ne puis-je ajouter dans le script une instruction qui terminerait l'affichage de la page avant d'exécuter l'alert ?
Sinon la solution div je vois comment je peux activer un script en cliquant dessus mais pas comment ce script pourrait changer l'attribut de la div.
Peux-tu m'aider d'avantage ?

Eléphant du PHP | 179 Messages

21 févr. 2012, 18:29

onClick="document.getElementById('madiv').style.display = 'none';"

truc du genre, creuse la dedans :)

Eléphant du PHP | 209 Messages

21 févr. 2012, 18:36

Salut,

Il vaut mieux mettre l'alerte en fin de page mais effectivement ça ne changera pas grand chose (pas visible pour l'humain forcément). Sinon comme l'a dit xTG, en appelant ton alerte via l'attribut onLoad. Tu peux lui ajouter une "minuterie" avec la fonction setTimeout()

Pour l'affichage/masquage d'un div, Thibaud C en a très bien parlé sur un autre sujet : php-debutant/afficher-masquer-div-dans- ... 62808.html

++

Eléphant du PHP | 256 Messages

21 févr. 2012, 20:07

Tu peux lui ajouter une "minuterie" avec la fonction setTimeout()
Veux-tu dire que si j'utilise SetTimeout pour envoyer l'alerte après par exemple une seconde la page s'afficherait complètement (pour autant qu'elle puisse s'afficher en une seconde) ?

Si oui, ceci est-il correct ?

Code : Tout sélectionner

<html> <head> <script type="javascript"> function timeMsg(Msg) { var t=setTimeout("alertMsg(Msg)",1000); } function alertMsg(Msg) { alert(Msg); } </script> </head> <body> <script>timeMsg("Mon message");</script> </body> </html>

ViPHP
xTG
ViPHP | 7331 Messages

21 févr. 2012, 20:40

Utiliser l'évènement body load complete suffit amplement en fait. (cf mon lien)
Il n'y aura que les images qui ne seront peut être pas chargée.
Car même avec un timeout si le DOM de la page est gigantesque on peut arriver à un état où l'alert est exécuté avant l'affichage de la page sur certains navigateurs.
Car certains navigateurs affichent les requêtes sous forme de streaming et donc exécutent le JS avant même de recevoir la fin de la page tandis que d'autres attendent la page complète avant d'interpréter le contenu.

Eléphant du PHP | 256 Messages

21 févr. 2012, 21:51

Utiliser l'évènement body load complete suffit amplement en fait. (cf mon lien)
Heu, lequel ? Et suffit pour faire quoi ?
Il n'y aura que les images qui ne seront peut être pas chargée.
donc ça ne va pas
Car même avec un timeout si le DOM de la page est gigantesque on peut arriver à un état où l'alert est exécuté avant l'affichage de la page sur certains navigateurs.
Car certains navigateurs affichent les requêtes sous forme de streaming et donc exécutent le JS avant même de recevoir la fin de la page tandis que d'autres attendent la page complète avant d'interpréter le contenu.
Je peux mettre 5 secondes aussi, ce n'est même pas plus mal.

ViPHP
xTG
ViPHP | 7331 Messages

21 févr. 2012, 22:32

Il n'existe aucun évènement à ma connaissance qui implique que les images sont chargées dans une page.
Sinon je n'ai posté qu'un seul lien... Tu ne devrais pas avoir de mal à le retrouver non ? ^^

Eléphant du PHP | 256 Messages

21 févr. 2012, 23:05

je n'ai posté qu'un seul lien... Tu ne devrais pas avoir de mal à le retrouver non ? ^^
Si c'est celui-ci
Soit tu le mets dans un listener sur le chargement de la balise body : http://stackoverflow.com/questions/1235 ... nt-with-js
Je n'ai rien compris !

ViPHP
xTG
ViPHP | 7331 Messages

21 févr. 2012, 23:25

Le second message donne un script permettant d'appeler une fonction init() après le chargement de la page et ce pour différents navigateurs.
En gros en dessous du commentaire "do Stuff" tu mets ton code et pis voilà...

Toujours est-il qu'en informatique l'anglais est incontournable. ;)