Un formulaire php - 2 actions et 1 submit

Fermé
Aaymeric Messages postés 78 Date d'inscription jeudi 29 septembre 2011 Statut Membre Dernière intervention 7 octobre 2018 - 23 févr. 2015 à 16:45
jordane45 Messages postés 38364 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 décembre 2024 - 23 févr. 2015 à 22:42
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:

<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:

3 réponses

jordane45 Messages postés 38364 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 décembre 2024 4 720
23 févr. 2015 à 17:37
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.



0
Aaymeric Messages postés 78 Date d'inscription jeudi 29 septembre 2011 Statut Membre Dernière intervention 7 octobre 2018
23 févr. 2015 à 22:06
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
<?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>
0
jordane45 Messages postés 38364 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 décembre 2024 4 720
Modifié par jordane45 le 23/02/2015 à 22:42
Je ne comprend pas ton souci....
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
0