Vous n'êtes pas identifié(e).
Pages : 1
Petite erreur de copier coller mais simple a corriger :
echo '<script>setTimeout(function(){ window.location = "' . $_SERVER['PHP_SELF'] . '"; }, 5000);</script>';
si mais ça c'est toi qui sais ce qu'il va être et quand l'afficher...
<<-- 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')
Salut,
Est-ce qu'un client peut avoir plusieurs articles ?
Si c'est le cas il te faut une 3e table pour faire le lien article/client
Table clients
cli_id,
cli_nom
cli_prenom
...
...
...
Table articles
art_id
art_designation
art_prix
...
...
...
Table clients_has_articles
cli_id
art_id
Comme ça dans la table clients_has_articles tu auras les lignes suivantes par exemple :
cli_id | art_id
1 | 10
1 | 5
1 | 2
Le client "1" a les articles 10,5,2
Ensuite tu fais une requête du genre :
J'espère t'avoir mis sur la voie.
Kaimite
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
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 ?
donc ça fonctionne vu que les infos du POST sont affichées
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
Bonjour,
Voici un code rapide pour vérifier le fonctionnement de la soumission retardée.
<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
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
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 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
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 ?
<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
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.
<script>
document.getElementById("submitButton").addEventListener("click", function (e) {
e.preventDefault();
setTimeout(function(){ document.getElementById("myForm").submit() }, 5000);
});
</script>
Kaimite
Salut,
Là tu dois regarder du coté des fonctions récursives.
C'est une fonction qui va s'appeler elle même au besoin.
http://openclassrooms.com/courses/initi … tilisation
Kaimite
Salut,
Voici un code qui te permet d'obtenir le code HTML suivant :
<h1>Rubrique 2</h1>
<ul>
<li><a href="http://www.exemple.com">mon lien 3</a></li>
<li><a href="http://www.exemple.com">mon lien 4</a></li>
</ul>
Tu ne fais qu'on requête qui récupérer tous les liens et tu ordonne via 'rubrique' pour regrouper les liens.
$rubrique = null;
$premier_tour = true;
while ($row = $req_liens->fetch_assoc()) {
//--> Si la rubrique est différente de $rubrique on l'affiche
if ( $rubrique !== $row['rubrique'] ) {
//--> Si on effectue le premier tour pas besoin de fermer la liste précédente
if ($premier_tour == false) {
echo '<ul>';
}
echo '<h1>' . $row['rubrique'] . '</h1>';
echo '<ul class="liste_liens">';
//--> Maj de la rubrique en cours
$rubrique = $row['rubrique'];
$premier_tour = false;
}
//--> Affichage du lien dans la liste
echo '<li><a href="' . $row['lien'] . '"><img src="' . $row['image'] . '" alt="" /> ' . $row['libelle'] . '</a></li>';
}
//--> On ferme la dernière liste
echo '</ul>';
Pour aller un peu plus loin (mais ça ne change rien dans la logique du code ci-dessus), il est préférable de "sortir" les rubriques dans une autre table.
Le but est d'avoir 2 tables :
- une table "liens" avec id, url, libelle, image, rub_id
- une table "rubriques" avec id, libelle
Et au lien d'enregistrer le nom de la rubrique dans le lien tu fait une référence à la rubrique via son ID (ici c'est le champ rub_id de la table liens qui va correspondre au champ id de la table rubrique).
L'avantage c'est que si tu veux changer le nom d'une rubrique il suffit de la changer dans la table rubriques et il sera automatiquement mis à jour pour tous les liens qui y sont associés.
Ensuite pour les requêtes il suffit de faire une requête jointe (sur 2 tables) pour récupérer les infos dont tu as besoin.
Si tu veux plus d'infos n'hésite pas.
Kaimite
Pages : 1