Temporiser un echo ??

Eléphanteau du PHP | 12 Messages

05 mars 2020, 17:07

Bonjour,

J'ai une page dans laquelle je traite à la fois l'affichage d'un formulaire de saisie et l'enregistrement en base de ces données.

Une fois donc ce formulaire validé (par le button type:submit), je souhaiterais afficher (via un echo) un message pendant 2/3 secondes du style "Enregistrement crée" en bas de la page puis pouvoir recharger le formulaire de saisie (afin de saisir un autre enregistrement)
J'ai essayé différentes méthodes, après le INSERT en base ds le If...{.....}(Rf. Script).
(Les 2 premières ne fonctionnent pas (le message ne reste pas) et de plus si je pouvais éviter Javascript...à moins que ce soit la seule solution..???
et la 3ème ne fait pas tout à fait ce que je souhaiterais....: Après avoir validé, l'écran reste qqs secondes puis affiche une page blanche avec le msg ("Enreg crée") en bas de la page....mais ce que je voudrais c'est qu'il affiche le msg qqs secondes en gardant bien évidemment l'affichage de l' écran. (peut-être enlever le Refresh...??)

1/
echo "<div id=\"msgfoot\"> Enregistrement cree </div>";
sleep(5);
header("location:ajout1.php");


2/
<div id=\"msgfoot\"> Enregistrement cree </div>";
<script language='javascript'
temp.document.getElementById('msgfoot'')
settimeout('temp.style.display="none", 5000)

3/

echo "<div id=\"msgfoot\"> Enregistrement cree </div>
<meta http-equiv='Refresh' content='5;URL=ajout1.php'>";

Merci bcp Pr vos conseils car je galère pas mal avec ça pour un p'tit truc.....;-)))
<!--  ***************  INSERTION des PARTIES (HEADER, MENU, FOOTER,...) ***** -->

        <?php include("menuDVD.php"); ?>   

<!--  ******************************************************** -->

<!DOCTYPE html>
<HTML>
 <head>
  <title> Accès aux applications </title>
      <meta charset="utf-8"/>
      <link rel="stylesheet" href="ajout1.css"/>
	 
	  
	   <style>
         #msgfoot {
         text-align: center; 
         left:500px;
         width: 400px;
         height: 25px;
         position:absolute;
         bottom: 0px; 
         background:red;
             }
      </style>      
	  
 </head>
  
 

<!-- ===========================================================  -->
<!-- =          APPEL  PHP                                        --> 
<!-- ===========================================================  -->

<?php
try
{
      // On se connecte ? MySQL
      $bdd = new PDO('mysql:host=localhost;dbname=base1;charset=utf8','root','',array
      (PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); 
}

catch(Exception $e)
{
      // En cas d'erreur on affiche un msg et on arr?te tout
             die('Erreur : '.$e->getmessage());

}
   

//   TEST si BOUTON valide existe (a ete submit ?)

  if (!isset ($_POST['Valid']))
     { 

      //   echo 'AFFichage Formulaire AJOUT <br>';

  
    
               $reponse = $bdd->query('SELECT max(Num) AS cpt FROM DVD');
               $donnees = $reponse->fetch();
               $cpt = $donnees['cpt'];
               ++$cpt;


         //  ************************************************************
         //  *                AFFICHER  FORMULAIRE 
         //  ************************************************************
         
?>


 <form class="formulaire" method="post" action="ajout1.php" >
          <div>
                <label for="Titre">.Titre : </label>
                <input type="text" id="titre" name="Titre" size="30" required>
                <label for="Num">      .Num : </label><input type="number" id="num" name="Num" size="3" readonly="readonly"
                 value="<?php echo $cpt; ?>" />
                <br/> <br/>
          </div>

          <div>
                <label for="Genre">.Genre : </label>
                <select name="Genre" id="Genre" >
                      <option value="Thriller">Thriller</option>
                      <option value="Comedie">Comedie</option>
                      <option value="SF">SF</option>
                      <option value="Aventures">Aventures</option>
                      <option value="Drame">Drame</option>
                      <option value="Guerre">Guerre</option>
                      <option value="Autre">Autre</option>
                </select>
                <br/><br/>

          </div>
          <div>
                <label for="Duree">.Duree : </label>
                <input type="text" id="duree" name="Duree" size="5"   maxlength="5"> 
                <br/><br/>
          </div>
          <div>
                <label for="Annee">.Annee : </label>
                <input type="number" id="annee" name="Annee" size="4" maxlength="4">
                <br/>
          </div>
          <div id="Valid">
                <button type="submit" name="Valid" value="OKValid" style="padding : 15px"> VALIDER </button>
          </div>
	 
      </form>

<?php
   }
else
   {

       //    echo 'OK AJOUT  Passage Trait AJOUT form <br>';

//var_dump($_POST);
 
//  ************************************************************
//  *                TRAIT   FORMULAIRE 
//  ************************************************************

            $requete = 'INSERT INTO DVD VALUES ("'.$_POST['Num'].'", "'.$_POST['Titre'].'","'.$_POST['Genre'].'","'.$_POST['Duree'].'","'.$_POST['Annee'].'")';
            $resultat= $bdd->query($requete);
       //   var_dump($resultat); 
  
         if ($resultat)
          {
         
            echo "<div id=\"msgfoot\">  Enregistrement cree </div>
            <meta http-equiv='Refresh' content='5;URL=ajout1.php'>";

	   }
      else
          {  
              echo " **** ERREUR ***** ";
          }

   }
?>

</html>

Mammouth du PHP | 512 Messages

05 mars 2020, 17:13

L'utilisation de header() sera à faire avant tout code HTML, tenter le refresh dans le code header(), comme:

Code : Tout sélectionner

header("Refresh:5; url=page.php");