Message alert qui coupe la page

Messages postés
33
Date d'inscription
samedi 4 décembre 2010
Statut
Membre
Dernière intervention
31 mars 2016
- - Dernière réponse : stealone
Messages postés
33
Date d'inscription
samedi 4 décembre 2010
Statut
Membre
Dernière intervention
31 mars 2016
- 5 août 2011 à 02:19
Bonjour j'ai une petite difficulté sur mes pages web dans le code source j'ai des messages alert pour des avertissements, confirmation... alors lorsque 'enregistre par exemple une donnée dans la bd je fais un message de confirmation si le messages est bien enregistré ou d'avertissement si il y a un risque de doublon. le problème est que lorsque le message s'affiche la page est à moitié coupée elle est coupé je pense au niveau ou il ya le code source du message alors comment faire pour afficher le message après le chargement complet de toute la page. Merci
Mon code est du genre:

 <?php 
   $sql mysql_query("SELECT COUNT(*) AS nb FROM Matable WHERE ceci cela");
   $verif = mysql_fetch_array($sql);
   if($verif['nb'] > 0)
      {
        ?><script language ="javascript">alert("Cet entrée existe déja");</script>
          <script language ="javascript">location="continuer.php"</script><?php
      }


Tout ce qui brille n'est pas or.
Afficher la suite 

5 réponses

Messages postés
33
Date d'inscription
samedi 4 décembre 2010
Statut
Membre
Dernière intervention
31 mars 2016
0
Merci
Voi ci le même code avec la correction des erreurs.

 <?php 
   $sql mysql_query("SELECT COUNT(*) AS nb FROM Matable WHERE ceci '$cela'");
   $verif = mysql_fetch_array($sql);
   if($verif['nb'] > 0)
      {
        ?><script language ="javascript">alert("Cet entrée existe déja");</script>
          <script language ="javascript">location="continuer.php"</script><?php
      }
/* le massage ja va s'affiche avant que la page soit totalemment chargée. j'ai même essayé de mettre le code à la fin du code mais sans succès*/
?>
Commenter la réponse de stealone
Messages postés
28
Date d'inscription
dimanche 3 avril 2011
Statut
Membre
Dernière intervention
8 août 2011
0
Merci
Salut stealone,
Je ne suis pas un expert, mais voici comment je vois ton problème:
Le Javascript n'est pas un code "bloquant". C'est-à-dire qu'il n'attend pas qu'une instruction soit terminée pour passer à la suivante.
Donc, dans ton cas de figure voici ce qu'il se passe d'après moi: l'ordre est donné d'afficher ta page, la page commence à s'afficher mais l'instruction suivante est tout de suite interprétée avant que la page soit complètement affichée; la vérification ($verif...) se fait et affiche l'alert, peu importe si la page soit complètement affichée ou pas.

Voici ce que j'essayerais à ta place:
1° Différer l'alert de quelques millisecondes, genre :
setTimeout("alert('Cet entrée existe déja')", 800);


Peut-être que cela suffira. Je ne sais pas exactement ce qu'il y a dans ta page qui s'affiche. C'est clair c'est pas une écriture joli-joli et c'est de la bricole, mais à toi de voir.

2° Je ne sais pas par quelles fonctions tu affiches ta page mais si c'est par exemple avec une boucle qui traite les élément d'un tableau successivement, tu peux faire que seulement lorsque le dernier élément du tableau a été afficher que tu arrêtes la boucle (par un break par ex., en javascript) et seulement alors l'instruction suivant est lue.

3° Tu peux aussi remplacer ta fenêtre d'alert par l'affichage d'une DIV personnalisée. Comme ça l'affichage de ta page continue en arrière plan. (En effet les fenêtre d'alert bloquent la lecture du code).

Voilà j'espère que ça t'aura été utile .
++
Commenter la réponse de mikeyjoy
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
29
0
Merci
Bonjour,

"Le Javascript n'est pas un code "bloquant". C'est-à-dire qu'il n'attend pas qu'une instruction soit terminée pour passer à la suivante. "
C'est faux...

Ce qu'il faut, c'est lancer l'alert sur l'evenement onLoad

Cordialement,

Maxime
Commenter la réponse de coucou747
Messages postés
86
Date d'inscription
mardi 10 septembre 2002
Statut
Membre
Dernière intervention
17 mai 2013
0
Merci
Bonjour,

<?php 
   $sql mysql_query("SELECT COUNT(*) AS nb FROM Matable WHERE ceci cela");
   $verif = mysql_fetch_array($sql);
 ?>

<script language ="javascript">
v="<?php echo $verif['nb'] ?>"*1
if (v > 0)
{
alert("Cet entrée existe déja")
}
else
{
document.location="continuer.php"
}
</script>

jako
Commenter la réponse de jmeunier
Messages postés
33
Date d'inscription
samedi 4 décembre 2010
Statut
Membre
Dernière intervention
31 mars 2016
0
Merci
Un grand et gigantesque merci à tous les deux, tous d'abord j'ai toujours éviter le java script parce qu'il est je dirais pas difficile mais un peu complexe. Mais compte tenu des avantages de dynamisme qu'il offre j'ai été obligé de lui emprunter quelque bout de code genre message alert et quelque contrôles des formulaire.
Pour ce qui est de ma page je faits justement des vérifications des données récupérées dans un formulaire avec les regex version php. et si quand toutes les données sont épurées je les enregistre tout en voulant éviter les doublons: un petit code:
if(!empty($_POST))	
   {
     $nom =  $_POST['nom'];
     $prenom = $_POST['prenom'];
     $Matricule = $_POST['matricule'];
     $retour = 1;
     $erreur = new array(); // le tableau des erreurs
    
     if(preg_match("#°=~&#164;£²µ%ù§!:;,_\<\>@`#", $Prenom))
      {
       $erreur["Prenom"][] = "Le prénom que vous avez inséré contient des caractères non autorisés";								          $retour=0;
      }	
  //même vérification pour toutes les variables post
    if (count($erreur) 1 AND $retour 0) 
      {
        echo "
Une erreur a été détectée. Veuillez la corriger:
";   
echo "";
           foreach ($erreur as $champEnErreur => $erreursDuChamp) 
    {
              echo "<li>"; echo "$message_erreur"; echo"</li>";
            }
     }
       echo " 
 
 Corriger le champ erroné "; 

if (count($erreur)  == 0 )
   {
     $sql mysql_query("SELECT COUNT(*) AS nb FROM Matable WHERE ceci '$cela'");
      $verif = mysql_fetch_array($sql);
      $val = true;
   if($verif['nb'] > 0)
      { $val = false;
        ?><script language ="javascript">alert("Cet entrée existe déja");</script><?php
      }
    if($val == true)
      {
        // insertion deans la bd suivi du message de confirmation et de la redirection
       ?><script language="Javascript">alert("Les informations ont été enregistrées avec    succès!");/script> <?php
      }
/* Voila un peu un exemple de ce que je fais comme code je sais que c'est pas le forum approprié pour le php mais j'ai osé*/
?>
   } 
                                
}
else{
      // on affiche le formulaire
    }					         


Et merci encore à vous.
Tout ce qui brille n'est pas or.
Commenter la réponse de stealone