Partage
  • Partager sur Facebook
  • Partager sur Twitter

Envoi formulaire sans recharger la page

Sujet résolu
    4 décembre 2011 à 17:35:42

    bonjour !

    voila mon formulaire :
    <form method="post"  id="formcom" action="traitement_com.php">
    	<input type="hidden" name="id_sujet" value="<?php echo $donnees['id'] ?>" />
    	<input type="text" name="pseudo" placeholder="Pseudo" required/></br>
    	<textarea name="com" id="com" rows="10" cols="40" required ></textarea><br/>
    	<input type="submit" value="Envoyer" class="button"/>
    	
    </form>
    


    voila mon fichier traitement_com.php :
    <?php
    		
    			try
    			{
    				/* La connexion se place ailleurs, dans un fichier commun à toutes les pages
    				 * $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    				 * $bdd = new PDO('mysql:host=...;dbname=...', '...', '...', $pdo_options);
    				 */
    				$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    				$bdd = new PDO('mysql:host=localhost;dbname=sujet', 'root', '', $pdo_options);
    				$req = $bdd->prepare('INSERT INTO commentaire (pseudo, com, categorie, id_sujet) VALUES (:pseudo, :com, \'musique\', :id_sujet)');
    				$req->bindValue(':pseudo', $_POST['pseudo'], PDO::PARAM_STR);
    				$req->bindValue(':com', $_POST['com'], PDO::PARAM_STR);
    				$req->bindValue(':id_sujet', $_POST['id_sujet'], PDO::PARAM_STR);
    				$req->execute();
    				
    				echo 'Le commentaire a bien été ajouté';
    			}
    				
    				catch(Exception $e)
    				
    			{
    				die('Erreur : '.$e->getMessage());
    			}
    		?>
    


    En cliquant sur le bouton envoyer, j'aimerai bien que mon commentaire soit envoyé au fichier traitement_com.php et que je reaffiche la div qui a class="zc". (sachant que dans cette div j'ai ma zone de commentaire d'où zc :p)

    merci
    pcq j'ai cherché partout sur internet et ça ne veut pas me le faire, soit ca recharge toute la page soit il ne se passe rien.
    • Partager sur Facebook
    • Partager sur Twitter
      4 décembre 2011 à 19:30:28

      Tu as du mal chercher =)
      Ajax my friend!
      • Partager sur Facebook
      • Partager sur Twitter
      $2b||!$2b
        4 décembre 2011 à 20:00:41

        je sais que c'est en ajax mais meme apres avoir essayer plusieurs script ca ne marche pas
        • Partager sur Facebook
        • Partager sur Twitter
          4 décembre 2011 à 23:49:27

          Fait moi voir un peu ce que tu avais fait =)
          • Partager sur Facebook
          • Partager sur Twitter
          $2b||!$2b
            5 décembre 2011 à 1:06:01

            voila l'ajax :
            <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
            <script type="text/javascript">
             $(function() {
                $(".button").click(function() {
            		var pseudo = $("input#pseudo").val();
            		var categorie = $("input#categorie").val();
            		var id_sujet = $("input#id_sujet").val();
            		var com = $("textarea#com").val();
            		var dataString = 'pseudo='+ pseudo + '&categorie=' + categorie + '&id_sujet=' + id_sujet + '&com=' + com;
            		alert (dataString);return false;
            		$.ajax({
            			type: "POST",
            			url: "traitement_com.php",
            			data: dataString,
            			success: function() {}
            			});
            			
              });
              return false;
              });
            
            </script>
            


            et mon formulaire :
            <form method="post"  id="formcom" action="">
            	<input type="hidden" id="id_sujet" name="id_sujet" value="<?php echo $donnees['id'] ?>" />
            	<input type="hidden" id="categorie" name="categorie" value="<?php echo $table_hasard ?>" />
            	<input type="text" id="pseudo" name="pseudo" placeholder="Pseudo" required/></br>
            	<textarea name="com" id="com" rows="10" cols="40" required ></textarea><br/>
            	<input type="submit" id="submit_btn" value="Envoyer" class="button" name="submit"/>
            	
            </form>
            


            mais ca ne marche pas :(

            je précise, sans ajax ca fonctionne donc ce que je voudrais ce serait d'envoyer le formulaire sans recharger toute la page pour pas perdre certaines données dans la page
            • Partager sur Facebook
            • Partager sur Twitter
              5 décembre 2011 à 7:55:32

              Alors je ne suis pas trop caler en jQuery mais si je me rappel bien tu n'as pas traité le SUCESS et le ERROR. Tu pourrais faire un alert sur le ERROR pour voir ce qu'il affiche ou sur le SUCCESS aussi d'ailleurs.
              • Partager sur Facebook
              • Partager sur Twitter
              $2b||!$2b
                5 décembre 2011 à 13:23:39

                normalement au clic sur envoyer j'aurai du avoir une alerte avec mes variables mais rien ne s'affiche et ça recharge la page :/

                il n'y aurait pas une erreur au début par hasard ?
                • Partager sur Facebook
                • Partager sur Twitter
                  5 décembre 2011 à 14:28:40

                  Essaye avec ceci:
                  $("#formcom").submit(function() {
                                  var pseudo = $("input[name=pseudo]").val();
                  		var categorie = $("input[name=categorie]").val();
                  		var id_sujet = $("input[name=id_sujet]").val();
                  		var com = $("textarea[name=com]").val();
                  		var dataString = 'pseudo='+ pseudo + '&categorie=' + categorie + '&id_sujet=' + id_sujet + '&com=' + com;
                  
                                  $.ajax({
                  		   type: "POST",
                   		   data: dataString,
                   		   url: $(this).attr("action"),
                   		   success: function(retour){
                                         // Contenue en cas de réussite
                   		   }
                   	        });
                                  return false;
                   });
                  


                  Et le html comme ceci:
                  <form method="post"  id="formcom" action="traitement_com.php">
                  	<input type="hidden" id="id_sujet" name="id_sujet" value="<?php echo $donnees['id'] ?>" />
                  	<input type="hidden" id="categorie" name="categorie" value="<?php echo $table_hasard ?>" />
                  	<input type="text" id="pseudo" name="pseudo" placeholder="Pseudo" required/></br>
                  	<textarea name="com" id="com" rows="10" cols="40" required ></textarea><br/>
                  	<input type="submit" id="submit_btn" value="Envoyer" class="button" name="submit"/>
                  	
                  </form>
                  


                  Je suis pas sur de moi mais essaye toujours.
                  Ensuite tu devrais tester la reception des variables dans ton fichier php avec des isset() et empty().
                  • Partager sur Facebook
                  • Partager sur Twitter
                  $2b||!$2b
                    5 décembre 2011 à 20:10:49

                    ça ne marche pas :( enfin ça marche pcq action="traitement_com.php" et dans ce cas là le code js ne fait rien.

                    il me semble avoir vu ne rien mettre sur action (voire même ne pas le mettre du tout) pour que le formulaire soit géré par JS et non PHP.

                    bon je continue de chercher et n'hésitez pas à envoyer du code ajax même si ça n'utilise pas jquery (il vaut mieux même ne pas le faire en jquery ça n'a pas l'air de vouloir fonctionner avec moi :p)

                    merci en tout cas ;)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      5 décembre 2011 à 20:55:01

                      Ah bah dans ce cas la c'est différent =)

                      Alors ton code ajax donne ceci:
                      function getXMLHttpRequest() {
                      	var xhr = null;
                      	
                      	if (window.XMLHttpRequest || window.ActiveXObject) {
                      		if (window.ActiveXObject) {
                      			try {
                      				xhr = new ActiveXObject("Msxml2.XMLHTTP");
                      			} catch(e) {
                      				xhr = new ActiveXObject("Microsoft.XMLHTTP");
                      			}
                      		} else {
                      						xhr = new XMLHttpRequest(); 
                      					}
                      	} else {
                      		alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
                      		return null;
                      	}
                      	
                      	return xhr;
                      }
                      			
                      function AJAX(url){
                      	xhr_object = getXMLHttpRequest();
                      	
                      	xhr_object.open("GET", url, false);
                      	xhr_object.send(null);
                      	if(xhr_object.readyState == 4){
                      		return xhr_object.responseText;
                      	}else return(false);
                      }
                      
                      			
                      function submitForm(){
                      	var form = document.forms["testforms"];
                      	var id_sujet = form.id_sujet.value;
                      	var categorie = form.categorie.value;
                      	var pseudo = form.pseudo.value;
                      	var com = form.com.value;
                      				
                      	var url = "traitement.php?id_sujet="+id_sujet+"&categorie="+categorie+"&pseudo="+pseudo+"&com="+com;
                      				
                      	alert(AJAX(url));
                      }
                      


                      Et le html:
                      <form action="" name="testforms" method="GET">
                      	<input type="hidden" id="id_sujet" name="id_sujet" value="2" />
                      	<input type="hidden" id="categorie" name="categorie" value="une_categorie" />
                      	<input type="text" id="pseudo" name="pseudo" placeholder="Pseudo" /></br>
                      	<textarea name="com" id="com" rows="10" cols="40"></textarea><br/>
                      	<input type="button" value="Envoyer" onclick="submitForm()" name="submit"/>
                      </form>
                      
                      • Partager sur Facebook
                      • Partager sur Twitter
                      $2b||!$2b
                        5 décembre 2011 à 21:10:02

                        donne quoi ? :p (il n'y rien d'afficher)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          5 décembre 2011 à 21:22:27

                          Dsl j'ai édité =)

                          Parcontre j'ai enlever les echo php dans ton formulaires pour tester faudra juste que tu les remettes
                          • Partager sur Facebook
                          • Partager sur Twitter
                          $2b||!$2b
                            5 décembre 2011 à 21:24:00

                            merci je test ca ! et j'te dit quoi !

                            edit : bien ca m'affiche un pop up et ca ne marche pas :( où est l'erreur ?
                            • Partager sur Facebook
                            • Partager sur Twitter
                              5 décembre 2011 à 21:31:26

                              ok ^^

                              fait voir le code comment tu l'as mis et un petit screenshot du résultat please =)
                              • Partager sur Facebook
                              • Partager sur Twitter
                              $2b||!$2b
                                5 décembre 2011 à 21:40:02

                                le formulaire :
                                <form action="" name="testforms" method="GET">
                                	<input type="hidden" id="id_sujet" name="id_sujet" value="<?php echo $donnees['id'] ?>" />
                                	<input type="hidden" id="categorie" name="categorie" value="<?php echo $table_hasard ?>" />
                                	<input type="text" id="pseudo" name="pseudo" placeholder="Pseudo" /></br>
                                	<textarea name="com" id="com" rows="10" cols="40"></textarea><br/>
                                	<input type="button" value="Envoyer" onclick="submitForm()" name="submit"/>
                                </form>
                                


                                et le script où j'ai modifié traitement.php par traitement_com.php :
                                function getXMLHttpRequest() {
                                	var xhr = null;
                                	
                                	if (window.XMLHttpRequest || window.ActiveXObject) {
                                		if (window.ActiveXObject) {
                                			try {
                                				xhr = new ActiveXObject("Msxml2.XMLHTTP");
                                			} catch(e) {
                                				xhr = new ActiveXObject("Microsoft.XMLHTTP");
                                			}
                                		} else {
                                						xhr = new XMLHttpRequest(); 
                                					}
                                	} else {
                                		alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
                                		return null;
                                	}
                                	
                                	return xhr;
                                }
                                			
                                function AJAX(url){
                                	xhr_object = getXMLHttpRequest();
                                	
                                	xhr_object.open("GET", url, false);
                                	xhr_object.send(null);
                                	if(xhr_object.readyState == 4){
                                		return xhr_object.responseText;
                                	}else return(false);
                                }
                                
                                			
                                function submitForm(){
                                	var form = document.forms["testforms"];
                                	var id_sujet = form.id_sujet.value;
                                	var categorie = form.categorie.value;
                                	var pseudo = form.pseudo.value;
                                	var com = form.com.value;
                                				
                                	var url = "traitement_com.php?id_sujet="+id_sujet+"&categorie="+categorie+"&pseudo="+pseudo+"&com="+com;
                                				
                                	alert(AJAX(url));
                                }
                                


                                Image utilisateur

                                edit : faut -il que je passe mes $_POST en $_GET dans mon fichier traitement_com.php ?

                                edit 2 : c bien ca qu'il fallait faire mais maintenant j'aimerai qu'au liau de m'afficher ma page traitement_com.php dans une alert, je la voudrais a la place de ma div id="zc" stp
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  5 décembre 2011 à 21:45:54

                                  Ralala c'est pas lisible comme ca:
                                  Place un div avec l'id printResult tout en bas de ta page internet et a la place du alert(AJAX(url)); tu met:
                                  document.getElementById('printResult').innerHTML = AJAX(url);
                                  


                                  Normalement ca devrais t'écrire tout plus clairement.

                                  Et refait moi un screen shot.
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  $2b||!$2b
                                    5 décembre 2011 à 21:49:36

                                    edit 2 : c bien ca qu'il fallait faire mais maintenant j'aimerai qu'au liau de m'afficher ma page traitement_com.php dans une alert, je la voudrais a la place de ma div id="zc" stp

                                    enfait ca m'affiche ma page php "traitement_com.php" dans une alert , je prends ton dernier code pour le mettre a la place de ma div id="zc" ?
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      5 décembre 2011 à 21:51:47

                                      Non non! Si tu as deja un div de pret avec un id tu remplace juste l'id dans la ligne de code que je viens de te donner, autrement dit:
                                      document.getElementById('zc').innerHTML = AJAX(url);
                                      


                                      Et oublie pas de vérifier l'existence de tes variables dans ton fichier php parceque si jamais on envoie un commentaire sans mettre de pseudo, ta requete va quand meme fonctionner. Sa serais con d'avoir un commentaire sans pseudo ou meme un comentaire vide (sans pseudo et sans comentaire)
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      $2b||!$2b
                                        5 décembre 2011 à 21:56:20

                                        ok mais maintenant je clic sur envoyer et la on croirait que rien ne se passe et on rappuie sur envoyer alors que les donnes ont ete envoyées.

                                        donc ca donne des resultat en double ou triple si on a cliqué 2 ou 3 fois !

                                        comment on fait pour ca remplace par ma page php ?
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          5 décembre 2011 à 21:59:36

                                          T'aurai pas ta page en ligne? Même sur un ftp pourris mais au moins que je puisse voir ce que tu veux dire.

                                          Ps: Met moi tout tes codes COMPLET que je regarde un peu.
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                          $2b||!$2b
                                            5 décembre 2011 à 22:02:45

                                            excuse moi ! erreur de ma part ! c'etait une class et pas id donc je l'ai rajouté ! c bon ça marche bien ^^
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              5 décembre 2011 à 22:03:58

                                              Ahh bon! Parce que j'avais tout tester et ça fonctionné xD

                                              Bon bah met ton sujet en résolu alors =)
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                              $2b||!$2b
                                                5 décembre 2011 à 22:08:30

                                                nan un dernier truc stp :p

                                                ca m'affiche ma page php et comment retourné sur une autre page php qui s'appelle tlc.php ?
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  5 décembre 2011 à 22:15:31

                                                  Sa affiche quelle page php? Et a quel moment tu veux aller sur tlc.php?
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                  $2b||!$2b
                                                    5 décembre 2011 à 22:17:58

                                                    nan c bon j'ai fais un include et juste avant ca j'ai redefini 2 variables a partir de mes GET et ca affiche bien !

                                                    merci encore ! fermeture du sujet ! :p
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      5 décembre 2011 à 22:18:52

                                                      Mdr! Ok bah de rien =)
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                      $2b||!$2b
                                                        18 juillet 2013 à 23:47:47

                                                        Ça serait super de voir la version final du code en ce qui concerne l'envois d'un formulaire sans recharger la page. :o
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                        La logique attend de se faire comprendre. Vous comprenez?
                                                          27 août 2016 à 14:35:47

                                                          salut , bah merci pour ce bout de code qui m'a énormément aidé mais ya un truc qui me déçoit ; c'est que j'ai un msg d'erreur : FATAL ERROR cannot use try without catch or finally alors que mon code est correcte(je pense) si j'enleve le block try catch tt passe bien mais le résultat s'affiche et disparait si vitement donc je dois trouver une solution , pouvez vous m'aider SVP !

                                                          voilà mon code

                                                          <?php

                                                          try{

                                                          $bdd = new PDO('mysql:host=localhost;dbname=mutualisation;charset=utf8', 'dorra', 'jXV98TQmK4wfDJbC');

                                                          $req = $bdd->prepare('INSERT INTO evaluation(id, note, commentaire, id_fournisseur) VALUES

                                                          (:id, :note, :commentaire, :id_f)');

                                                          $req->bindValue(':id', NULL, PDO::PARAM_STR);

                                                          $req->bindValue(':note', $_GET['note'], PDO::PARAM_STR);

                                                          $req->bindValue(':commentaire', $_GET['commentaire'], PDO::PARAM_STR);

                                                          $req->bindValue(':id_f', $_GET['id_f'], PDO::PARAM_STR);

                                                          $req->execute();

                                                          echo 'Le commentaire a bien été ajouté'; 

                                                          }   catch(Exception $e){

                                                          die('Erreur : '.$e->getMessage());

                                                          }

                                                          ?>

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            16 juillet 2019 à 10:56:00

                                                            bonjour,

                                                            je veut travailler toujours sur la meme page, et j'ai plusieur boutons submit : nouveau, supprimer, enregistrer, modifier et à chaque fois que je click sur un bouton la page se recharge, et je veut quand je click sur un bouton juste le code de ce bouton qui s'execute sans recharger la page.

                                                            quelqu’un peut m'aider ?

                                                            merci d'avance.

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter

                                                            Envoi formulaire sans recharger la page

                                                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                            • Editeur
                                                            • Markdown