Message alert qui coupe la page

Signaler
Messages postés
33
Date d'inscription
samedi 4 décembre 2010
Statut
Membre
Dernière intervention
31 mars 2016
-
Messages postés
33
Date d'inscription
samedi 4 décembre 2010
Statut
Membre
Dernière intervention
31 mars 2016
-
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.

5 réponses

Messages postés
33
Date d'inscription
samedi 4 décembre 2010
Statut
Membre
Dernière intervention
31 mars 2016

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*/
?>
Messages postés
28
Date d'inscription
dimanche 3 avril 2011
Statut
Membre
Dernière intervention
8 août 2011

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 .
++
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
36
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
Messages postés
86
Date d'inscription
mardi 10 septembre 2002
Statut
Membre
Dernière intervention
17 mai 2013

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
Messages postés
33
Date d'inscription
samedi 4 décembre 2010
Statut
Membre
Dernière intervention
31 mars 2016

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.