Un formulaire php - 2 actions et 1 submit
Aaymeric
Messages postés
78
Date d'inscription
Statut
Membre
Dernière intervention
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Partie 1
J'ai une page nouvmessage.php qui contient un formulaire avec 3 champs (destinataire, titre et message). Dans cette page j'ai un script jquery (message.js) qui vérifie si les champs titre et message sont complétés et bloque ou non l'envoie à la page de vérification (verifmessage.php). Toute cette partie fonctionne parfaitement donc jusque la pas de problème.
Partie 2
En suivant un tuto, j'ai créer un dossier à part (et non lié au reste) avec un script (func.js) qui vérifie via une page php (post.php) si dans le champ destinataire si l'utilisateur rentré existe ou non dans la base de donné et renvoie un message dynamiquement en fonction de la disponibilité. Tout ceci fonctionne également.
Mon problème, c'est que j'ai du mal à lier les 2 ensembles. Les deux fichiers qui contiennent les formulaires renvoient en post les infos mais j'ai l'impression que si je rassemble les 2 fichiers de vérification (verifmessage.php et post.php) et bien les valeurs renvoyées aux script jquery sont mal interprétés. Dites moi s'il y a moyen de mieux faire mais je souhaite faire 2 actions vers verifmessage.php et post.php afin de ne pas rassembler les 2.
Conclusion:
Comment je peux faire pour que dans mon code php, lorsque je valide mon formulaire, les données sont envoyés à post.php et les autres à verifmessage.php ? Je souhaite donc créer deux action pour un bouton submit
Je veux bien afficher le code des 6 pages mais ca fera beaucoup.
Je souhaite faire quelque chose du style:
Bien que je sais qu'on ne peut pas mais c'est à titre d'exemple.
Partie 1
J'ai une page nouvmessage.php qui contient un formulaire avec 3 champs (destinataire, titre et message). Dans cette page j'ai un script jquery (message.js) qui vérifie si les champs titre et message sont complétés et bloque ou non l'envoie à la page de vérification (verifmessage.php). Toute cette partie fonctionne parfaitement donc jusque la pas de problème.
Partie 2
En suivant un tuto, j'ai créer un dossier à part (et non lié au reste) avec un script (func.js) qui vérifie via une page php (post.php) si dans le champ destinataire si l'utilisateur rentré existe ou non dans la base de donné et renvoie un message dynamiquement en fonction de la disponibilité. Tout ceci fonctionne également.
Mon problème, c'est que j'ai du mal à lier les 2 ensembles. Les deux fichiers qui contiennent les formulaires renvoient en post les infos mais j'ai l'impression que si je rassemble les 2 fichiers de vérification (verifmessage.php et post.php) et bien les valeurs renvoyées aux script jquery sont mal interprétés. Dites moi s'il y a moyen de mieux faire mais je souhaite faire 2 actions vers verifmessage.php et post.php afin de ne pas rassembler les 2.
Conclusion:
Comment je peux faire pour que dans mon code php, lorsque je valide mon formulaire, les données sont envoyés à post.php et les autres à verifmessage.php ? Je souhaite donc créer deux action pour un bouton submit
Je veux bien afficher le code des 6 pages mais ca fera beaucoup.
Je souhaite faire quelque chose du style:
<form action="post.php" method="post" name="formulaire">
<form action="verifmessage.php" method="post" name="formulaire">
Mes input ...
Bien que je sais qu'on ne peut pas mais c'est à titre d'exemple.
A voir également:
- Php form action
- Action - Guide
- Télécharger film d'action gratuitement et rapidement - Télécharger - TV & Vidéo
- Concurrent action - Guide
- Vous devez disposer d'une autorisation pour effectuer cette action - Guide
- Action fans - Accueil - Guide arnaque
3 réponses
Bonjour,
Sachant que de toutes façons tu ne peux pas envoyer (en POST) vers plusieurs fichiers... il faudra réunir les deux fichiers (verifmessage.php et post.php) en un seul.
Il faudrait aussi que tu nous indiques à quoi servent ces deux fichiers... il existe peut être un autre moyen de le faire (en utilisant de l' AJAX via javascript par exemple)....
Mais....Sans voir ton code.. impossible de t'en dire plus.
Sachant que de toutes façons tu ne peux pas envoyer (en POST) vers plusieurs fichiers... il faudra réunir les deux fichiers (verifmessage.php et post.php) en un seul.
Il faudrait aussi que tu nous indiques à quoi servent ces deux fichiers... il existe peut être un autre moyen de le faire (en utilisant de l' AJAX via javascript par exemple)....
Mais....Sans voir ton code.. impossible de t'en dire plus.
Post.php vérifie si le membre existe dans la base de donné et verifmessage est l'action du formulaire pour traiter les valeurs entrée par l'utilisateur et les rajoutent dans la bdd. Associé à ce formualaire il y a un fichier jquery (message.js) qui vérifie si les entrées sont complétées. Je vous mes les codes de verifmessage.php et de message.js ensuite de post.php et de func.js (qui check si le membre existe ou non dans la bdd)
verifmessage.php
message.js
post.php
func.js
Et le formulaire de base est un simple formulaire. Je vais quand meme le mettre au cas ou avec les lignes principales:
verifmessage.php
<?php include '../connection.php'; session_start(); $titre=htmlspecialchars($_POST['titre']); $message=nl2br(htmlspecialchars($_POST['message'])); $destinataire=htmlspecialchars($_POST['destinataire']); setlocale (LC_ALL, 'fr_FR.utf-8','fra'); $dateinsc = strftime('%A %d %B %Y à %H:%M'); $id = $_SESSION['id']; $reponse = $bdd->prepare('INSERT INTO message (emetteur, destinataire, titre, message, timestamp) VALUES (:emetteur, :destinataire, :titre, :message, :timestamp)'); $reponse->execute(array( ':emetteur' => $id, ':destinataire' => $destinataire, ':titre' => $titre, ':message' => $message, ':timestamp' => $dateinsc)); $reponse->closeCursor(); header ('refresh: 0,message.php'); ?>
message.js
$(document).ready(function(){ var result = true; $('form').submit(function(){ if($('#titre').val()==""){ $('#titre').css({border:'1px solid red', boxShadow:'0px 0px 10px red'}); $('#titre').next('.error').fadeIn('low').text('Champ obligatoire.'); result = false; } if($('#mess').val()==""){ $('#mess').css({border:'1px solid red', boxShadow:'0px 0px 10px red'}); $('#mess').next('.error').fadeIn('low').text('Champ obligatoire.'); result = false; } return result; }); $('#titre').keyup(function(){ if($('#titre').val().length<1){ $('#titre').css({border:'1px solid red', boxShadow:'0px 0px 10px red'}); $('#titre').next('.error').fadeIn('low').text('Le titre doit être complété !'); result = false; } else { $('#titre').css({border:'1px solid green', boxShadow:'0px 0px 10px green'}); $('#titre').next('.error').fadeOut(); result = true; } return result; }); $('#mess').keyup(function(){ if($('#mess').val().length<1){ $('#mess').css({border:'1px solid red', boxShadow:'0px 0px 10px red'}); $('#mess').next('.error').fadeIn('low').text('Votre message est vide !'); result = false; } else { $('#mess').css({border:'1px solid green', boxShadow:'0px 0px 10px green'}); $('#mess').next('.error').fadeOut(); result = true; } return result; }); $('#destinataire').keyup(function(){ var destinataire = $('#destinataire').val(); if(destinataire != ""){ $.post('verifmessage.php',{destinataire:destinataire},function(data){ $('.feedback').text('data'); }); } else { $('.feedback').text('Veuillez inscrire un membre'); } }); });
post.php
<?php include '../connection.php'; //Partie pour le jquery $username = $_POST['username']; $query = $bdd->prepare('SELECT COUNT(*) as nb FROM membres WHERE pseudo = ?'); if ($query == false) { echo 'Erreur prepare'; print_r($bdd->errorInfo()); die(); } $res = $query->execute(array($username)); if ($res == false) { echo 'Erreur execute'; print_r($query->errorInfo()); die(); } $row = $query->fetch(); if ($row['nb'] > 0) { echo 'Ce user est déjà utilisé'; } else { echo 'Ce user est dispo'; } //Fin ?>
func.js
$(document).ready(function(){ $('#username').keyup(function(){ var username = $('#username').val(); if(username != ""){ $.post('post.php',{username:username},function(data){ $('.feedback').text(data); }); } else { $('.feedback').text('Veuillez inscrire un membre'); } }); });
Et le formulaire de base est un simple formulaire. Je vais quand meme le mettre au cas ou avec les lignes principales:
<form id="contact" action="verifmessage.php" method="post" name="formulaire"> <table> <tr> <td><label for="destinataire">Destinataire</label>: </td> <?php if(isset($_GET['emetteur'])){ $emetteur = htmlentities($_GET['emetteur']); echo '<td><input type="text" name="destinataire" id="username" value="'.$emetteur.'"/><span class="feedback"></span></td>'; } else { echo '<td><input type="text" name="destinataire" id="username" value="" /><span class="error"></span></td>'; } ?> </tr> <tr> <td><label for="titre">Titre:</label></td> <td><input type="text" id="titre" name="titre" size="60px"></input><span class="error"></span><td> <tr> <td><label for="message">Message:</label></td> <td><textarea id="mess" name="message" rows="6" cols="60"></textarea><span class="error"></span><td> </tr> </table> <input type="submit" value="Envoyer" id="submit"/> </form>
Je ne comprend pas ton souci....
Le fichier Post.php ... est utilisé via Javascript en AJAX dans ton fichier func.js
Tu n'as donc aucunement besoin de l'appeller au SUBMIT de ta form....
Par contre... si ton souci est qu'il ne fonctionne pas .... c'est peut être par ce que tu ne l'as pas importé dans la page contenant le formulaire......
A la limite... juste pour quelques lignes de code js.. tu peux éviter de les mettre dans un fichier à part et placer le directement dans ta page....
NB: Tu as bien sur inclus Jquery et ton script message.js dans ta page.
Nb² : Si ça ne fonctionne toujours pas.... commence par installer le plugin FireBug ( pour FireFox).
Lances le .... affiche ta page .... remplie les données ... et regarde dans la console ce que ça t'affiche....
Si tu ne sais pas comment t'en servir .. Apprend le contenu de ce lien :
http://openclassrooms.com/courses/firebug-une-merveille-de-plus-pour-firefox
Et éventuellement celle là également :
https://eric-pommereau.developpez.com/tutoriels/outil-web/firebug/
Cordialement,
Jordane
Le fichier Post.php ... est utilisé via Javascript en AJAX dans ton fichier func.js
$(document).ready(function(){ $('#username').keyup(function(){ var username = $('#username').val(); if(username != ""){ $.post('post.php',{username:username},function(data){ $('.feedback').text(data); }); } else { $('.feedback').text('Veuillez inscrire un membre'); } }); });
Tu n'as donc aucunement besoin de l'appeller au SUBMIT de ta form....
Par contre... si ton souci est qu'il ne fonctionne pas .... c'est peut être par ce que tu ne l'as pas importé dans la page contenant le formulaire......
A la limite... juste pour quelques lignes de code js.. tu peux éviter de les mettre dans un fichier à part et placer le directement dans ta page....
<form id="contact" action="verifmessage.php" method="post" name="formulaire"> <table> <tr> <td><label for="destinataire">Destinataire</label>: </td> <td> <?php $emetteur = isset($_GET['emetteur'])?htmlentities($_GET['emetteur']):''; echo '<input type="text" name="destinataire" id="username" value="'.$emetteur.'"/>'; $classSpan = ($emetteur)?"feedback":"error"; echo '<span class="'.$classSpan.'"></span>'; ?> <script type="text/javascript"> $(document).ready(function(){ $('#username').keyup(function(){ var username = $('#username').val(); if(username != ""){ $.post('post.php',{username:username},function(data){ $('.feedback').text(data); }); } else { $('.feedback').text('Veuillez inscrire un membre'); } }); }); </script> </td> </tr> <tr> <td><label for="titre">Titre:</label></td> <td><input type="text" id="titre" name="titre" size="60px"> <span class="error"></span> </td> <tr> <td><label for="message">Message:</label></td> <td><textarea id="mess" name="message" rows="6" cols="60"></textarea> <span class="error"></span><td> </tr> </table> <input type="submit" value="Envoyer" id="submit"/> </form>
NB: Tu as bien sur inclus Jquery et ton script message.js dans ta page.
Nb² : Si ça ne fonctionne toujours pas.... commence par installer le plugin FireBug ( pour FireFox).
Lances le .... affiche ta page .... remplie les données ... et regarde dans la console ce que ça t'affiche....
Si tu ne sais pas comment t'en servir .. Apprend le contenu de ce lien :
http://openclassrooms.com/courses/firebug-une-merveille-de-plus-pour-firefox
Et éventuellement celle là également :
https://eric-pommereau.developpez.com/tutoriels/outil-web/firebug/
Cordialement,
Jordane