Message alert qui coupe la page

stealone Messages postés 33 Date d'inscription samedi 4 décembre 2010 Statut Membre Dernière intervention 31 mars 2016 - 26 juil. 2011 à 18:55
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.

5 réponses

stealone Messages postés 33 Date d'inscription samedi 4 décembre 2010 Statut Membre Dernière intervention 31 mars 2016
26 juil. 2011 à 19:00
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*/
?>
0
mikeyjoy Messages postés 28 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 8 août 2011
27 juil. 2011 à 13:32
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 .
++
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
28 juil. 2011 à 11:32
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
0
jmeunier Messages postés 86 Date d'inscription mardi 10 septembre 2002 Statut Membre Dernière intervention 17 mai 2013
28 juil. 2011 à 11:56
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
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.
0
Rejoignez-nous