PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 10-10-2016 13:42:53

cahuet-200
Membre
Inscription : 14-11-2014
Messages : 14

Etre rediriger après x secondes après un submit

bonjour,

Après avoir regardé plusieurs postes, je n'ai pas réussi a trouver ce que je voulais ...

J'aimerais savoir si c'est possible de rediriger après X secondes ma pages principal après un bouton submit ?

J'ai trouver cette solution :

<meta http-equiv="refresh" content="5"; url=http://helsinki/HERMES/TEST/pages/menu.php">


mais le problème c'est qu'il ne s'effectue pas a partir du submit ...

Quelqu'un aurait il une idée ?

Merci d'avance

Hors ligne

#2 10-10-2016 15:49:38

Kaimite
Membre
Inscription : 14-11-2014
Messages : 14

Re : Etre rediriger après x secondes après un submit

Salut,

Si c'est sur un bouton submit il faut utiliser du Javascript pour intercepter l'événement submit, faire un temporisation de xx secondes en soumettre le formulaire via JS.


<form action="" id="myForm">
  <input type="submit" id="submitButton" value="Valider">
</form>

<script>
document.getElementById("submitButton").addEventListener("click", function (e) {
  e.preventDefault();
  setTimeout(function(){ document.getElementById("myForm").submit() }, 5000);
});
</script>
 

Kaimite

Hors ligne

#3 11-10-2016 06:59:21

cahuet-200
Membre
Inscription : 14-11-2014
Messages : 14

Re : Etre rediriger après x secondes après un submit

Bonjour Kaimite et merci pour votre réponse.
Cela marche bien je suis d'accord mais le problème en faisant ca est que les données ne s'enregistre plus dans ma base de données ...

Voici la fin de mon code :


foreach ($listNumDossiers as $numDossier)
{
if($appli == 'HL7IDEOLOC')
{
//Exécution du script pour effacer le dossier d'un patient
exec("/home/interface/dvt/html/HERMES/TEST/scripts/EFFACEDOSSIERCOMPLET.sh $numDossier");
}
// Pour chaque numero de dossier, on l'insert en base et on dit que la mise a jour a été faite!
$requeteInsert = "  Insert into INTERNEW.HL7_IMS_REEMIS (SEQ, ABONNE, TYPE_MSG, FORMAT_MSG, NDA, NIP, DATE_REEMIS, ETAT_REEMIS, MODE_REEMIS)";
$requeteInsert  .= " Values (HL7_REEMIS_SEQUENCE.NEXTVAL, '".$appli."', '".$TYPE_MSG."', '".$FORMAT_MSG."', '".$numDossier."','0', TO_DATE('31/12/2099 23:59:59', 'dd/mm/yyyy hh24:mi:ss'),  '".$ETAT_REEMIS."',  '".$MODE_REEMIS."')";
$resReq= exec_select( 'ORACLE8', 'TCPAGEI', $requeteInsert,'', $trace=true );
}
echo '<br/><br/>Votre réémission à bien été prise en compte !<br/>';
}
} // FIN du else
} // FIN du if($TYPE_MSG == 'LST')
?>
<br/>
</fieldset>
</form>
<form action="" id="myForm">
   <input type="submit" id="submitButton" class='btn' value="Sauvegarder">
</form>
<script>
   document.getElementById("submitButton").addEventListener("click", function (e) {
     e.preventDefault();
     setTimeout(function(){ document.getElementById("myForm").submit() }, 5000);
   });
</script>
</section>
<?php
   include ("PiedPage.php");
   ?>
</div>
</body>
</html>
 

Hors ligne

#4 11-10-2016 07:56:07

Kaimite
Membre
Inscription : 14-11-2014
Messages : 14

Re : Etre rediriger après x secondes après un submit

Salut,

En regardant ton code je ne vois aucune infos dans le formulaire, juste le bouton "submit", ni de test pour savoir si le formulaire a été soumis... 

Le délais de 5 secondes est là pour attendre la fin d'un traitement ?


<?php
if ( !empty($_POST['formulaireSoumis']) ) {
  //--> Mon traitement
}
?>

<form action="" id="myForm" method="post">
  <input type="hidden" name="formulaireSoumis" value="1" />
   <input type="submit" id="submitButton" class='btn' value="Sauvegarder">
</form>

<script>
   document.getElementById("submitButton").addEventListener("click", function (e) {
     e.preventDefault();
     setTimeout(function(){ document.getElementById("myForm").submit() }, 5000);
   });
</script>
 

Kaimite

Hors ligne

#5 11-10-2016 08:04:33

cahuet-200
Membre
Inscription : 14-11-2014
Messages : 14

Re : Etre rediriger après x secondes après un submit

Bonjour,

A la base je n'avais qu'un seul formulaire y compris mon bouton submit et réinitialisé
Mais maintenant j'aimerais simplifier le site en le réinitialisant a chaque enregistrement.

Le code que vous m'avez donné marche bien en général je l'ai tester et lorsque je clique sur le bouton il réinitialise la page.
C'est bien ce que je veut mais le problème est qu'il n'enregistre pas dans ma BDD les informations sélectionnés ...

Le délai de 5 secondes est pour que l'utilisateur puisse voir si son messages à bien été enregistré dans la BDD.
Je m'explique lorsque l'utilisateur sélectionne ce qu'il veut parmi les listes déroulantes, il doit ensuite saisir le numéro qu'il veut rejouer.
Après il clique sur le bouton sauvegarder qui par la suite lui fais un retour si le numéro a bien été pris en compte ou si il était incorrect :

 
foreach ($listNumPatient as $numPatient)
{
// Pour chaque numero de patient, on l'insert en base et on dit que la mise a jour a été faite!
$requeteInsert = "  Insert into INTERNEW.HL7_IMS_REEMIS (SEQ, ABONNE, TYPE_MSG, FORMAT_MSG, NDA, NIP, DATE_REEMIS, ETAT_REEMIS, MODE_REEMIS)";
$requeteInsert  .= " Values (HL7_REEMIS_SEQUENCE.NEXTVAL, '".$appli."', '".$TYPE_MSG."', '".$FORMAT_MSG."','0' ,'".$numPatient."', TO_DATE('31/12/2099 23:59:59', 'dd/mm/yyyy hh24:mi:ss'),  '".$ETAT_REEMIS."',  '".$MODE_REEMIS."')";
$resReq= exec_select( 'ORACLE8', 'TCPAGEI', $requeteInsert,'', $trace=true );
}
echo "<br/><br/>Votre réémission à bien été prise en compte !<br/>";
}else
{
echo '
<p>Aucun NIP à été enregistré !</p>
';
}

Cordialement
 

Hors ligne

#6 11-10-2016 08:32:20

Kaimite
Membre
Inscription : 14-11-2014
Messages : 14

Re : Etre rediriger après x secondes après un submit

J'avoue que je ne comprends pas tout mais, de toutes façons, le soucis doit venir des données à enregistrer.

D'où viennent $TYPE_MSG, $FORMAT_MSG, $numPatient, $ETAT_REEMIS et $MODE_REEMIS ?

Si elles viennent d'un formulaire ce doit être celui qui contient le bouton de soumission.

Vous ne pouvez pas faire ça :

<form>
<input type="text" name="TYPE_MSG" value="tutu" />
</form>

<form action="" id="myForm" method="post">
   <input type="submit" id="submitButton" class='btn' value="Sauvegarder">
</form>

L'appuie sur le bouton "submit" ne soumet que les données du formulaire parent, pas les autres.
Vous ne pouvez pas non plus, à ma connaissance, imbriquer des formulaires.

Kaimite

Hors ligne

#7 11-10-2016 08:46:07

cahuet-200
Membre
Inscription : 14-11-2014
Messages : 14

Re : Etre rediriger après x secondes après un submit

Merci de votre réponse, si je vous mets mon code entier est ce que vous verrez plus clair sur ce qu'il fait ?

Car je n'ai qu'un seul formulaire sur ma page principal, et toutes mes variables sont dans le formulaire.


<!-- PROGRAMME POUR TITI 14/04/2015-->
<?php
   ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   //  Programme développer par afin de pouvoir réemettre des messages en mode Stream et Batch a l'application qu'il désire  //
   //  12 Janvier 2015                                                                                                                     //
   /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////  
   
   
    include( "../include/infirst.inc"  );
    include( "../include/myfuncts.inc" );  
    include( "../include/my_sgbd.inc"  );
    include_once("function.php");  
   
   ?>
<!DOCTYPE HTML>
<html lang="fr">
   <head>
      <meta charset="UTF-8">
      <meta http-equiv="x-ua-compatible" content="IE=9">
      <meta name='Author' content=''>
      <meta http-equiv="refresh" content="S" URL=http://helsinki/HERMES/TEST/pages/menu.php">
      <title>Réémission</title>
      <link rel="stylesheet" href="../styles/css.css" />
      <script language='JavaScript' type='text/javascript' src='../include/javascript.js'></script>
   </head>
   <body>
      <div id="wrapper">
         <div class="banniere"></div>
         <section>
            <h1><strong>&nbsp; Réémission des Messages &nbsp; </strong></h1>
            <p class="message">HERMES</p>
            <form method='post' id='Application' action='<?php echo $_SERVER["PHP_SELF"]; ?> '>
               <fieldset>
                  <legend>Réemission des messages</legend>
                  <label for="MODE_REEMIS">Choisir un mode de réemission : BATCH (réemission différé) ou STREAM (réemission fil de l'eau : maximum 20 numéros)</label><br/>
                  <?php
                     // Déclarations des variables  
                        $appli = $_POST['abonne'];  
                        $TYPE_MSG     = $_POST['TYPE_MSG'];
                        $FORMAT_MSG   = $_POST['FORMAT_MSG'];
                        $MODE_REEMIS  = $_POST['MODE_REEMIS'];
                        $ETAT_REEMIS  = $_POST['ETAT_REEMIS'];
                        $appli      = $_POST['abonne'];
                        $hl7_IMS_ABONNE = $_POST['hl7_IMS_ABONNE'];
                       
                        /* --------------------------------------------------- Condition pour le Mode de Réémission  -----------------------------------------------*/ 
                        $MODE_REEMIS = $_POST['MODE_REEMIS'];
                        $ETAT_REEMIS = $_POST['ETAT_REEMIS'];
                       
                        // cacher le warning !
                        error_reporting(0);
                       
                        ?>
                  <!-- LISTE DEROULANTE POUR LE MODE REEMIS -->
                  <select name='MODE_REEMIS' id='MODE_REEMIS' onchange='submit()'>
                  <?php
                     if($MODE_REEMIS == '')
                     {
                      echo "  <option selected ='selected' value=''> </option>";
                     }
                     else {
                      echo "  <option value=''> </option>";
                     }
                     if($MODE_REEMIS == 'STREAM')
                      {
                        echo "<option selected ='selected' value='STREAM'>STREAM</option>";
                      }
                     else {
                      echo "<option value='STREAM'>STREAM</option>";
                     }
                     if($MODE_REEMIS == 'BATCH')
                      {
                        echo "<option selected='selected' value='BATCH'>BATCH</option>";
                        header('Location: menuBatch.php');
                      }
                     else {
                      echo "<option value='BATCH'>BATCH</option>";
                     }
                     ?>
                  </select><br/>
                  <?php
                     if($MODE_REEMIS == 'STREAM')
                     {
                      $ETAT_REEMIS = 'A';
                     }else{
                      $ETAT_REEMIS = 'A';
                     }
                     /* ------------------------------------------------- Condition pour les abonnees destinataires --------------------------------------------*/ 
                     ?>
                  <!-- LISTE DEROULANTE POUR LES APPLICATIONS -->
                  <label for="abonne">Sélectionner l'application destinataire de la réémission  :</label><br/>
                  <select  id='abonne' name='abonne' onchange='submit()'>
                  <?php
                     $requete = 'SELECT RECEIVING_APPLICATION FROM hl7_IMS_ABONNE order by 1' ;
                     $res= exec_select( 'ORACLE8', 'TITI', $requete,'', $trace=true );
                     
                     for($i=0 ; $i < sizeof($res); $i++)
                     {
                     
                      $resultat=($res[$i]['RECEIVING_APPLICATION']);
                      if($resultat == $appli)
                      {
                        echo " <option selected ='selected' value='".$resultat."'>".$resultat."</option>";
                      }
                      else
                      {
                        echo " <option value='".$resultat."'>".$resultat."</option>";
                       
                      }
                     }
                     
                     /*if($appli == 'HL7IDEOLOC')
                     {
                      echo"<script>alert(\"Vous venez de sélectionner l'application IDEOMED les messages seront donc effacés avant d'être rejoués\")</script>";
                      //echo '<script type="text/javascript">window.alert("\Vous venez de sélectionner l application IDEOMED, les messages seront donc éffacés avant d être rejoués\");</script>';
                     }
                     */
                     ?>
                  </select><br/>
                  <?php
                     // RECAPITULATIF DE L'ABONNE SUR LE QUEL NOUS ALLONS REEMETTRE
                     
                     if (isset( $appli)) {
                      echo "<p>Vous avez sélectionné l'application : " .  $appli . "</p> ";
                     }
                     $requete1 = 'SELECT DISTINCT TYPE_MSG FROM hl7_IMS_REEMIS order by 1' ;
                     $res1= exec_select( 'ORACLE8', 'TITI', $requete1,'', $trace=true );
                     ?>
                  <label for="TYPE_MSG"> Sélectionner le type de message ou collection(MSG ou LST) à réémettre : </label><br/>
                  <!-- LISTE DEROULANTE POUR LE TYPES DE MESSAGES A REJOUER -->
                  <select  id='TYPE_MSG' name='TYPE_MSG'  onchange='submit()'>
                  <?php       for($i=0 ; $i < sizeof($res1); $i++)
                     {
                      $resultat1=($res1[$i]['TYPE_MSG']);
                      if($resultat1 == $TYPE_MSG)
                      {
                        echo " <option selected ='selected' value='".$resultat1."'>".$resultat1."</option>";
                      }
                      else
                      {
                        echo " <option value='".$resultat1."'>".$resultat1."</option>";
                       
                      }
                     }
                     ?>
                  </select><br/>
                  <!-- RECAPITULATIF DU TYPE DE MESSAGE SUR LE QUEL NOUS ALLONS REEMETTRE -->
                  <?php
                     if (isset( $TYPE_MSG))
                     {
                      echo "<p>La valeur que vous avez séctionnée est : " .  $TYPE_MSG . "</p> ";
                     }
                     /* --------------------------------------------------------- Condition pour le MSG  --------------------------------------------------------*/    
                     
                     if($TYPE_MSG == 'MSG')
                     { 
                      // LISTE DEROULANTE POUR LE FORMATS DE MESSAGES
                     echo "     <select name='FORMAT_MSG' id='FORMAT_MSG' onchange='submit()'>";
                        if($FORMAT_MSG == '')
                          {
                            echo "  <option selected ='selected' value=''> </option>";
                          }
                        else {
                          echo "  <option value=''> </option>";
                        }
                        if($FORMAT_MSG == 'M1')
                          {
                            echo "  <option selected ='selected' value='M1'>M1</option>";
                          }
                        else {
                          echo "  <option value='M1'>M1</option>";
                        }
                        if($FORMAT_MSG == 'M2')
                        {
                          echo "  <option selected ='selected' value='M2'>M2</option>";
                        }
                        else {
                          echo "  <option value='M2'>M2</option>";
                        }
                        if($FORMAT_MSG == 'M6')
                        {
                          echo "  <option selected ='selected' value='M6'>M6</option>";
                        }
                        else {
                          echo "  <option value='M6'>M6</option>";
                        }
                        if($FORMAT_MSG == 'M8')
                        {
                          echo "  <option selected ='selected' value='M8'>M8</option>";
                        }
                        else {
                          echo "  <option value='M8'>M8</option>";
                        }
                        if($FORMAT_MSG == 'M9')
                        {
                          echo "  <option selected ='selected' value='M9'>M9</option>";
                        }
                        else {
                          echo "  <option value='M9'>M9</option>";
                        }
                     echo"    </select>";
                     
                      $FORMAT_MSG = $_POST['FORMAT_MSG'];
                      echo "<br/>";
                     
                      if($FORMAT_MSG == 'M1')
                      {
                        if (isset($_POST['NIP']))
                        {  
                          $NIP=$_POST['NIP'];
                        }else
                        {
                          $NIP = '';
                        }
                       
                        echo " <p>Saisir le ou les NIP séparés par un espace ou un retour chariot : </p>";
                        echo "<textarea id='NIP' name='NIP' rows='3' cols = '50'>";
                        echo $NIP;
                        echo "</textarea>";
                       
                        $ReemissionOk=$_POST['ReemissionOk'];
                        // boolean à TRUE par défaut
                        $ReemissionOk=FALSE;
                       
                        // Recuperation de la liste des numéro de patients
                        $listNumPatient = preg_split('/[\s]+/', trim($NIP));
                        $k = 1;
                        // Taille defaut des numero de patient
                          $lenghtNumPatient = 12;
                          // Pour chaque numero de patient
                        for($y = 0; $y < sizeof($listNumPatient); $y++)
                        {
                          // On verifie si il est nulle
                          if($listNumPatient[$y] == "")
                          {
                            // Si il est null, on le retire du tableau
                            unset($listNumPatient[$y]);
                          }
                        }
                        // Des qu'on a retirer les vides, on remet en ordre les values du tableau
                        $listNumPatient = array_values($listNumPatient);
                        // On crée un tableau d'erreur vide
                        $listErrorNumPatient = array();
                        // Pour chaque numero de patient
                        foreach ($listNumPatient as $numPatient)
                        {
                          // On verifie qu'il soit pas vide
                          if ($numPatient != '')
                          {
                            // Si il est pas vide, on fait la verfi_nip sur le numero de patient en cours dans la boucle, la fonction renvoi TRUE ou FALSE
                            $verif_nip = verif_nip($numPatient);
                            // Si la fonction renvoi FALSE
                            if (!$verif_nip)
                            {
                              // Il y a une erreur dans le numero, on l'affiche et on note le numero eronné dans le tableau d'erreur
                              echo '<p>Le numéro de dossier "' . $numPatient . '" est incorrect</p>';                        
                              $listErrorNumPatient[] = $numPatient;
                            }else
                            {
                              //Sinon si le numero de patient est un numérique (type INT)
                              if(is_numeric($numPatient))
                              {
                                // Et qu'il n'est pas vide
                                if($numPatient != '' )
                                {
                                  // On incrémente $k et on dit que la réémission est toujours faisable
                                  $k++;
                                  // on le met à true que si tu insères une ligne correctement !
                                    $ReemissionOk=TRUE;
                                }
                              }else
                              {
                                // Sinon on a une erreur et on affiche a l'utilisateur que le numero de patient ne contient pas que des chiffres et on notifie l'erreur dans le tableau d'erreur !
                                echo '<p>Le numéro d identifiant patient"' . $numPatient . '" ne contient pas que des chiffres </p>';
                                $listErrorNumPatient[] = $numPatient;
                              }
                            }
                          }
                        }
                        // à l'exterieur du foreach (Rajouter le 25/03/2015)
                        if(!empty($_POST['NIP']))
                        {
                          // Si le $_POST['NIP'] est remplis
                          if (sizeof($listErrorNumPatient) == 0 && sizeof($listNumPatient) > 0)
                          {
                            // Si le tableau d'erreur est vide et que les numero de patient sont remplit
                            foreach ($listNumPatient as $numPatient)
                            {
                              // Pour chaque numero de patient, on l'insert en base et on dit que la mise a jour a été faite!
                              $requeteInsert = "  Insert into TOTO (SEQ, ABONNE, TYPE_MSG, FORMAT_MSG, NDA, NIP, DATE_REEMIS, ETAT_REEMIS, MODE_REEMIS)";
                              $requeteInsert  .= " Values (HL7_REEMIS_SEQUENCE.NEXTVAL, '".$appli."', '".$TYPE_MSG."', '".$FORMAT_MSG."','0' ,'".$numPatient."', TO_DATE('31/12/2099 23:59:59', 'dd/mm/yyyy hh24:mi:ss'),  '".$ETAT_REEMIS."',  '".$MODE_REEMIS."')";
                              $resReq= exec_select( 'ORACLE8', 'TITI', $requeteInsert,'', $trace=true );
                            }
                            echo "<br/><br/>Votre réémission à bien été prise en compte !<br/>";
                          }else
                          {
                            // Sinon c'est qu'aucune mise a jour a été faite vue qu'il y a des erreurs
                            echo '<p>Aucun NIP à été enregistré !</p>';
                          }
                        }          
                      }else
                      {  
                        // Si $_POST['NDA_MSG'] existe : Soumission d'un formulaire
                        if (isset($_POST['NDA_MSG']))
                        {
                          // On affecte la valeur du formumaire dans $NDA_MSG
                          $NDA_MSG=$_POST['NDA_MSG'];
                        }else
                        {
                          // SINON $NDA_MSG est initialisé à vide
                          $NDA_MSG = '';
                        }
                        echo "<p>Saisir le ou les NDA séparés par un espace ou un retour chariot :</p>";
                        echo "<textarea id='NDA_MSG' name='NDA_MSG' rows='3' cols = '50'>";
                        echo $NDA_MSG;
                        echo "</textarea>";
                               
                        //on découpe la chaîne en fonction des espaces rencontrés (eclatement d'une chaine)
                        $result = preg_match('/^([0-9]{12}\s*)*$/',$NDA_MSG, $result);
                        //on decoupe la chaine en fonction des espaces rencontres
                          $listNumDossiers = preg_split('~[ \s]+~', trim($NDA_MSG));
                          //le dernier item est vide car la chaine se termine par un espace ce qui cree une entree
                        $i = 1;
                        $verif_all_num_dossier = TRUE;
                        // Pour chaque numero de patient
                        foreach ($listNumDossiers as $numDossier)
                        {
                          // On verifie qu'il soit pas vide
                          if($numDossier != '')
                          {
                            // Si il est pas vide, on fait la verif_num_dossier sur le numero de dossier en cours dans la boucle, la fonction renvoi TRUE ou FALSE
                            $verif_num_dossier = attribution_num_dossier($numDossier);
                            // Si la fonction renvoi FALSE
                            if(!$verif_num_dossier)
                            {
                              // Il y a une erreur dans le numero, on l'affiche
                                    $verif_all_num_dossier = FALSE;
                                    echo '<br/><p>Le numéro de dossier "' . $numDossier . '" est incorrect</p>';
                                    echo '<p>Aucun NDA à été enregistré !</p>';
                                    break;
                            }else
                            {
                              // On incrémente $i et on dit que la réémission est toujours faisable
                                    $i++;  
                            }
                          }else
                          {
                            // on le met à FALSE
                                $verif_all_num_dossier = FALSE;
                                break;
                          }
                        }
                        if($verif_all_num_dossier)
                        {
                            foreach ($listNumDossiers as $numDossier)
                          {
                            // Pour chaque numero de dossier, on l'insert en base et on dit que la mise a jour a été faite!
                            $requeteInsert = "  Insert into TOTO (SEQ, ABONNE, TYPE_MSG, FORMAT_MSG, NDA, NIP, DATE_REEMIS, ETAT_REEMIS, MODE_REEMIS)";
                            $requeteInsert  .= " Values (HL7_REEMIS_SEQUENCE.NEXTVAL, '".$appli."', '".$TYPE_MSG."', '".$FORMAT_MSG."', '".$numDossier."','0', TO_DATE('31/12/2099 23:59:59', 'dd/mm/yyyy hh24:mi:ss'),  '".$ETAT_REEMIS."',  '".$MODE_REEMIS."')";
                            $resReq= exec_select( 'ORACLE8', 'TITI', $requeteInsert,'', $trace=true );
                            }
                            echo '<br/><br/>Votre réémission à bien été prise en compte !<br/>';
                        }
                      }
                     }
                     
                     /* --------------------------------------------------------- Condition pour le LST  --------------------------------------------------------*/    
                     
                     if($TYPE_MSG == 'LST')
                     {
                      // LISTE DEROULANTE POUR LE FORMATS DE MESSAGES
                     
                     echo "     <select name='FORMAT_MSG' id='FORMAT_MSG' onchange='submit()'>";
                        if($FORMAT_MSG == '')
                        {
                          echo "  <option selected ='selected' value=''> </option>";
                        }
                        else {
                        echo "  <option value=''> </option>";
                        }
                        if($FORMAT_MSG == 'DOSP')
                        {
                          echo "  <option selected ='selected' value='DOSP'>DOSP : Tous messages NIP</option>";
                        }
                        else {
                          echo "  <option value='DOSP'>DOSP : Tous messages NIP</option>";
                        }
                        if($FORMAT_MSG == 'MDOS')
                          {
                            echo "  <option selected ='selected' value='MDOS'>MDOS : Tous messages NDA</option>";
                          }
                        else {
                          echo "  <option value='MDOS'>MDOS : Tous messages NDA</option>";
                        }
                     
                        if($FORMAT_MSG == 'DSIT')
                        {
                          echo "  <option selected ='selected' value='DSIT'>DSIT : dernière situation d'un NDA</option>";
                        }
                        else {
                          echo "  <option value='DSIT'>DSIT : dernière situation d'un NDA</option>";
                        }
                     echo "   </select>";
                     echo "   <br />";
                     
                     $FORMAT_MSG = $_POST['FORMAT_MSG'];
                     
                     // (Rajouter le 25/03/2015)
                     
                     $ReemissionOk=$_POST['ReemissionOk'];
                     $ReemissionOk=FALSE; // boolean à faux par défaut  
                     if($FORMAT_MSG == 'DOSP')
                     {
                     // Si $_POST['NIP'] existe : Soumission d'un formulaire
                        if (isset($_POST['NIP']))
                            {  
                              // On affecte la valeur du formumaire dans $NIP
                                $NIP=$_POST['NIP'];
                            }else
                            {
                              // SINON $NIP est initialisé à vide
                                $NIP = '';
                            }
                     
                     echo "<p>Saisir le ou les NIP séparés par un espace ou un retour chariot : </p>";
                          echo " <textarea id='NIP' name='NIP' rows='3' cols = '50'>";
                          echo $NIP;
                          echo " </textarea>";
                         
                          // Recuperation de la liste des numéro de patients
                          $listNumPatient = preg_split('/[\s]+/', trim($NIP));
                          // Pour chaque numero de patient
                          for($y = 0; $y < sizeof($listNumPatient); $y++)
                     {
                      // On verifie si il est nulle
                        if($listNumPatient[$y] == "")
                        {
                          // Si il est null, on le retire du tableau
                            unset($listNumPatient[$y]);
                        }
                     }
                     
                     // Des qu'on a retirer les vides, on remet en ordre les values du tableau
                     $listNumPatient = array_values($listNumPatient);
                     // On crée un tableau d'erreur vide
                          $listErrorNumPatient = array();
                          $j = 1;
                          // Pour chaque numero de patient
                          foreach ($listNumPatient as $numPatient)
                          {
                            // On verifie qu'il soit pas vide
                              if ($numPatient != '')
                              {
                                // Si il est pas vide, on fait la verfi_nip sur le numero de patient en cours dans la boucle, la fonction renvoi TRUE ou FALSE
                                  $verif_nip = verif_nip($numPatient);
                                  // Si la fonction renvoi FALSE
                                  if (!$verif_nip)
                                  {
                                    // Il y a une erreur dans le numero, on l'affiche et on note le numero eronné dans le tableau d'erreur
                                      echo '<p>Le numéro d identifiant patient "' . $numPatient . '" est incorrect</p>';                        
                                      $listErrorNumPatient[] = $numPatient;
                                  }else
                                  {
                                    //Sinon si le numero de patient est un numérique (type INT)
                                      if(is_numeric($numPatient))
                                      {
                                        // Et qu'il n'est pas vide
                                          if($numPatient != '' )
                                          {
                                            // On incrémente $j et on dit que la réémission est toujours faisable
                                              $j++;
                                              $ReemissionOk=TRUE; // on le met à true que si tu insères une ligne correctement !
                                          }
                                      }else
                                      {
                                        // Sinon on a une erreur et on affiche a l'utilisateur que le numero de patient ne contient pas que des chiffres et on notifie l'erreur dans le tableau d'erreur !
                                          echo '<p>Le numéro d identifiant patient"' . $numPatient . '" ne contient pas que des chiffres </p>';
                                          $listErrorNumPatient[] = $numPatient;
                                      }
                                  }
                              }
                          }
                        if ($FORMAT_MSG == 'DOSP')
                        {
                          echo"<script>alert(\"ATTENTION, vous allez rejouer tous les dossiers du NIP que vous allez saisir !\")</script>";
                        }
                     // à l'exterieur du foreach (Rajouter le 25/03/2015)
                        if(!empty($_POST['NIP']))
                        {
                          // Si le $_POST['NIP'] est remplis
                          if (sizeof($listErrorNumPatient) == 0 && sizeof($listNumPatient) > 0)
                           {
                            // Si le tableau d'erreur est vide et que les numero de patient sont remplit
                               foreach ($listNumPatient as $numPatient)
                               {
                                // Pour chaque numero de patient, on l'insert en base et on dit que la mise a jour a été faite!
                        $requeteInsert = "  Insert into TOTO (SEQ, ABONNE, TYPE_MSG, FORMAT_MSG, NDA, NIP, DATE_REEMIS, ETAT_REEMIS, MODE_REEMIS)";
                        $requeteInsert  .= " Values (HL7_REEMIS_SEQUENCE.NEXTVAL, '".$appli."', '".$TYPE_MSG."', '".$FORMAT_MSG."','0' ,'".$numPatient."', TO_DATE('31/12/2099 23:59:59', 'dd/mm/yyyy hh24:mi:ss'),  '".$ETAT_REEMIS."',  '".$MODE_REEMIS."')";
                        $resReq= exec_select( 'ORACLE8', 'TITI', $requeteInsert,'', $trace=true );
                               }
                               echo "<br/><br/>Votre réémission à bien été prise en compte !<br/>";
                           }else
                           {
                                 echo '<p>Aucun NIP à été enregistré !</p>';
                           }
                      }  
                     }else
                      {
                        if (isset($_POST['NDA']))
                        {
                          $NDA=$_POST['NDA'];
                        }else
                        {
                          $NDA = '';
                        }
                        echo "<p> Saisir le ou les NDA séparés par un espace ou un retour chariot : </p>";
                        echo "<textarea id='NDA' name='NDA' rows='3' cols = '50'>";
                        echo $NDA;
                        echo "</textarea>";
                     
                        $listNumDossiers = preg_split('/[\s]+/', trim($NDA));
                          $i = 1; // pour aider l'utilisateur à savoir quel numéro de dossier il a mal saisi
                        $verif_all_num_dossier = TRUE;
                       
                        // Pour chaque numero de patient
                        foreach ($listNumDossiers as $numDossier)
                        {
                          // On verifie qu'il soit pas vide
                          if($numDossier != '')
                          {
                            // Si il est pas vide, on fait la verfi_nip sur le numero de patient en cours dans la boucle, la fonction renvoi TRUE ou FALSE
                            $verif_num_dossier = attribution_num_dossier($numDossier);
                            // Si la fonction renvoi FALSE
                            if(!$verif_num_dossier)
                            {
                              // Il y a une erreur dans le numero, on l'affiche
                                    $verif_all_num_dossier = FALSE;
                                    echo '<br/><p>Le numéro de dossier "' . $numDossier . '" est incorrect</p>';
                                    echo '<p>Aucun NDA à été enregistré !</p>';
                                    break;
                            }else
                            {
                                    $i++;  
                            }
                          }else
                          {
                                $verif_all_num_dossier = FALSE;
                                break;
                          }
                        }
                     /*echo "Le".$_POST['valid'];
                        //SI  l'application est HL7IDEOLOC et que le TYPE de message est LST et que son format est MDOS ou Si l'application est HL7IDEOLOC et que le TYPE de message est LST et que son format est DSIT
                        if (($appli == 'HL7IDEOLOC' && $TYPE_MSG =='LST' && in_array('MDOS', 'DSIT',$FORMAT_MSG)) && !empty($_POST['valid']))
                        {
                          echo "Les".$_POST['valid'];
                     // ouvrir une POPUP pour avertir que nous sommes sur l'application IDEOMED
                     echo"<script>alert(\"ATTENTION, vous avez choisi de réémettre les messages pour IDEOMED : Le(s) dossier(s) seront supprimés avant la réémission des messages\")</script>";
                     }*/
                     if (($appli == 'HL7IDEOLOC' && $TYPE_MSG == 'LST' && $FORMAT_MSG=='MDOS' || $appli == 'HL7IDEOLOC' && $TYPE_MSG =='LST' && $FORMAT_MSG=='DSIT') && empty($_POST['valid']))
                     {
                     // ouvrir une POPUP pour avertir que nous sommes sur l'application IDEOMED
                     echo"<script>alert(\"ATTENTION, vous avez choisi de réémettre les messages pour IDEOMED : Le(s) dossier(s) seront supprimés avant la réémission des messages\")</script>";
                     }
                        // Si les numero de dossiers sont remplit
                        if($verif_all_num_dossier && sizeof($listNumDossiers) > 0)
                        {
                            foreach ($listNumDossiers as $numDossier)
                          {
                     
                            if($appli == 'HL7IDEOLOC')
                            {
                              //Exécution du script pour effacer le dossier d'un patient
                           
                              exec("/home/interface/dvt/html/HERMES/TEST/scripts/EFFACEDOSSIERCOMPLET.sh $numDossier");
                            }
                           
                            // Pour chaque numero de dossier, on l'insert en base et on dit que la mise a jour a été faite!
                                $requeteInsert = "  Insert into TOTO (SEQ, ABONNE, TYPE_MSG, FORMAT_MSG, NDA, NIP, DATE_REEMIS, ETAT_REEMIS, MODE_REEMIS)";
                            $requeteInsert  .= " Values (HL7_REEMIS_SEQUENCE.NEXTVAL, '".$appli."', '".$TYPE_MSG."', '".$FORMAT_MSG."', '".$numDossier."','0', TO_DATE('31/12/2099 23:59:59', 'dd/mm/yyyy hh24:mi:ss'),  '".$ETAT_REEMIS."',  '".$MODE_REEMIS."')";
                            $resReq= exec_select( 'ORACLE8', 'TITI', $requeteInsert,'', $trace=true );
                            }
                            echo '<br/><br/>Votre réémission à bien été prise en compte !<br/>';
                        }
                      } // FIN du else
                     } // FIN du if($TYPE_MSG == 'LST')
                     ?>
                  <br/>
                  <input id='Submit' type='Submit'  class='btn' name='valid' value='Sauvegarder'/>
                  <a class="btn" href='<?php echo $_SERVER["PHP_SELF"]; ?>'>Réinitialiser</a>
               </fieldset>
            </form>
            <form action="" id="myForm">
            <!--   <input type="submit" class='btn' id="submitButton" value="Valider">
               </form>
               
               <script>
               document.getElementById("submitButton").addEventListener("click", function (e) {
                 e.preventDefault();
                 setTimeout(function(){ document.getElementById("myForm").submit() }, 5000);
               });
               </script> -->
         </section>
         <?php
            include ("PiedPage.php");
            ?>
      </div>
   </body>
</html>
 

Hors ligne

#8 11-10-2016 13:03:44

Kaimite
Membre
Inscription : 14-11-2014
Messages : 14

Re : Etre rediriger après x secondes après un submit

Bonjour,

J'ai essayé de comprendre le traitement du formulaire mais le code est assez compliqué à lire...

Vous pouvez essayer ceci :

Selon votre code :
<form method='post' id='Application' action='<?php echo $_SERVER["PHP_SELF"]; ?> '>
...
...
...
<input id='Submit' type='Submit'  class='btn' name='valid' value='Sauvegarder'/>

<script>
               document.getElementById("Submit").addEventListener("click", function (e) {
                 e.preventDefault();
                 setTimeout(function(){ document.getElementById("Application").submit() }, 5000);
               });
               </script>

Kaimite

Hors ligne

#9 11-10-2016 13:08:09

cahuet-200
Membre
Inscription : 14-11-2014
Messages : 14

Re : Etre rediriger après x secondes après un submit

bonjour,

Ca ne change absolument rien il fais juste le submit uniquement

Hors ligne

#10 11-10-2016 13:26:43

Kaimite
Membre
Inscription : 14-11-2014
Messages : 14

Re : Etre rediriger après x secondes après un submit

Bonjour,

Voici un code rapide pour vérifier le fonctionnement de la soumission retardée.


<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>PHP Débutant</title>
</head>
<body>

<form method='post' id='Application' action='<?php echo $_SERVER["PHP_SELF"]; ?> '>

  <p>
  <label for="MODE_REEMIS">Choisir un mode de réemission : BATCH (réemission différé) ou STREAM (réemission fil de l'eau : maximum 20 numéros)</label><br/>
  <select name="MODE_REEMIS" id="MODE_REEMIS">
    <option value="STREAM">STREAM</option>
    <option value="BATCH">BATCH</option>
  </select>
  </p>

  <p>
  <label for="abonne">Sélectionner l'application destinataire de la réémission  :</label><br/>
  <select name="abonne" id="abonne">
    <option value="abonne1">abonne1</option>
    <option value="abonne2">abonne2</option>
    <option value="abonne3">abonne3</option>
    <option value="abonne4">abonne4</option>
  </select>
  </p>
<input id='Submit' type='Submit'  class='btn' name='valid' value='Sauvegarder'/>
</form>

<?php

if ( !empty($_POST) ) {
  echo "<p>Informations du POST</p>";
  echo "<pre>" . print_r($_POST, true) . "</pre>";
} else {
  echo "Merci de soumettre le formulaire";
}

?>

<script>
  document.getElementById("Submit").addEventListener("click", function (e) {
    e.preventDefault();
    setTimeout(function(){ document.getElementById("Application").submit() }, 1500);
  });
</script>
</body>
</html>

Pour le test j'ai mis le délais à 1.5 sec
 

Si ça fonctionne ça veut dire que votre soucis vient d'ailleurs dans le code.

Kaimite

Hors ligne

#11 11-10-2016 13:47:20

cahuet-200
Membre
Inscription : 14-11-2014
Messages : 14

Re : Etre rediriger après x secondes après un submit

J'ai ca :

Choisir un mode de réemission : BATCH (réemission différé) ou STREAM (réemission fil de l'eau : maximum 20 numéros)
Sélectionner l'application destinataire de la réémission :

Informations du POST

Array
(
    [MODE_REEMIS] => STREAM
    [abonne] => abonne3
)

Pour le test j'ai mis le délais à 1.5 sec

Hors ligne

#12 11-10-2016 13:54:24

Kaimite
Membre
Inscription : 14-11-2014
Messages : 14

Re : Etre rediriger après x secondes après un submit

donc ça fonctionne vu que les infos du POST sont affichées smile

Essayez dans votre page de mettre :

<?php

if ( !empty($_POST) ) {
  echo "<p>Informations du POST</p>";
  echo "<pre>" . print_r($_POST, true) . "</pre>";
}

?>

Pour voir si le POST est bien transmis.

Kaimite

Hors ligne

#13 11-10-2016 13:57:35

cahuet-200
Membre
Inscription : 14-11-2014
Messages : 14

Re : Etre rediriger après x secondes après un submit

Donc en faisant ce que vous m'avez dis j'ai cela comme retour :

Array
(
    [MODE_REEMIS] => STREAM
    [abonne] => HL7IDEOLOC
    [TYPE_MSG] => LST
    [FORMAT_MSG] => MDOS
    [NDA] => 123456789
)
Donc c'est bien ce que je lui rentre mais a partir du bouton sauvegarder j'ai un message que je lui dis d'afficher :

Votre réémission à bien été prise en compte !

Est ce cela qui peux poser soucis pour la réinitialisation sachant que pour l'insert en table j'ai une requête qui permet d'allez verifier sur le NDA existe dans la BDD =/ ?

Hors ligne

#14 11-10-2016 14:04:40

Kaimite
Membre
Inscription : 14-11-2014
Messages : 14

Re : Etre rediriger après x secondes après un submit

ok, si vous avez les données affichées ça veut dire que les infos du formulaire sont bien transmises...

Pour qu'on soit bien clairs, le code que je vous ai donné permet de faire ceci uniquement.

Au clic sur le bouton "Sauvegarder" une pause de xx secondes est faite (rien d'autre) et à la fin des xx secondes le formulaire est soumis.

C'est bien ce que vous vouliez faire ?

Hors ligne

#15 11-10-2016 14:32:05

cahuet-200
Membre
Inscription : 14-11-2014
Messages : 14

Re : Etre rediriger après x secondes après un submit

Alors moi ce que je voudrais c'est que l'utilisateur remplisse comme j'ai fais les informations puis les soumettent.
Le message par la suite leur indique que la réémission c'est bien ou pas effectuer et après j'aimerais que sa réinitialise la page entièrement ..

Hors ligne

#16 11-10-2016 14:37:50

Kaimite
Membre
Inscription : 14-11-2014
Messages : 14

Re : Etre rediriger après x secondes après un submit

ok, désolé j'ai compris l'inverse...

<?php

if ($traitementFiniEtOK == true) {
echo "Traitement terminé, vous allez être redirigé...";
echo '<script>setTimeout(function(){ window.location = "<?php echo $_SERVER['PHP_SELF']?>"; }, 5000);</script>';
}

?>

 

ça devrait faire l'affaire !

Kaimite

Hors ligne

#17 11-10-2016 14:49:16

cahuet-200
Membre
Inscription : 14-11-2014
Messages : 14

Re : Etre rediriger après x secondes après un submit

Pas de soucis ^^ !
Par contre le $traitementFiniEtOK il ne doit pas être déclaré avant ?

Hors ligne

#18 11-10-2016 14:52:51

Kaimite
Membre
Inscription : 14-11-2014
Messages : 14

Re : Etre rediriger après x secondes après un submit

si mais ça c'est toi qui sais ce qu'il va être et quand l'afficher...


echo '<br/><br/>Votre réémission à bien été prise en compte !<br/>';

<<-- Afficher le code JS ici
echo '<script>setTimeout(function(){ window.location = "<?php echo $_SERVER['PHP_SELF']?>"; }, 5000);</script>';


                        }
                      } // FIN du else
                     } // FIN du if($TYPE_MSG == 'LST')
 

Hors ligne

#19 11-10-2016 14:54:23

cahuet-200
Membre
Inscription : 14-11-2014
Messages : 14

Re : Etre rediriger après x secondes après un submit

Et le script ne fonctionne pas la syntaxe est pas bonne car le <?php n'est pas en rouge ..

Hors ligne

#20 11-10-2016 16:29:07

Kaimite
Membre
Inscription : 14-11-2014
Messages : 14

Re : Etre rediriger après x secondes après un submit

Petite erreur de copier coller mais simple a corriger :

echo '<script>setTimeout(function(){ window.location = "' . $_SERVER['PHP_SELF'] . '"; }, 5000);</script>';

Hors ligne

#21 12-10-2016 06:57:13

cahuet-200
Membre
Inscription : 14-11-2014
Messages : 14

Re : Etre rediriger après x secondes après un submit

A oui ca fonctionne bien !
Mais pas dans tout les cas ...

Hors ligne

#22 13-10-2016 07:30:20

Kaimite
Membre
Inscription : 14-11-2014
Messages : 14

Re : Etre rediriger après x secondes après un submit

cad ?

Hors ligne

#23 13-10-2016 08:08:10

cahuet-200
Membre
Inscription : 14-11-2014
Messages : 14

Re : Etre rediriger après x secondes après un submit

J'ai réussi à résoudre le problèmes car j'avais ajouté le bout de code que vous m'avez donnez a un seul endroit.
Erreur de ma part ^^! Ca marche très bien cette fois ci et pour tout les cas du site web merci beaucoup Kaimite !

Hors ligne

#24 16-11-2016 08:22:41

cahuet-200
Membre
Inscription : 14-11-2014
Messages : 14

Re : Etre rediriger après x secondes après un submit

Bonjour Kaimite,

J'ai un dernier petit soucis le bout de code que vous m'avez donné je l'ai mis partout sauf a un endroit ou je ne vois pas ou le mettre a cause du break ...

foreach ($listNumDossiers as $numDossier)
{
// On verifie qu'il soit pas vide
if($numDossier != '')
{
// Si il est pas vide, on fait la verif_num_dossier sur le numero de dossier en cours dans la boucle, la fonction renvoi TRUE ou FALSE
$verif_num_dossier = attribution_num_dossier($numDossier);
// Si la fonction renvoi FALSE
if(!$verif_num_dossier)
{
// Il y a une erreur dans le numero, on l'affiche
$verif_all_num_dossier = FALSE;
echo '<br/>
<p>Le numéro de dossier "'
. $numDossier . '" est incorrect</p>
'
;
echo '
<p>Aucun NDA à été enregistré !</p>
'
;  
break;
}else
{
// On incrémente $i et on dit que la réémission est toujours faisable
$i++;  
}
}else
{
// on le met à FALSE
$verif_all_num_dossier = FALSE;
break;
}
}
 

Savez vous ou je peux le mettre ?

Bien Cordialement

Hors ligne

Pied de page des forums