Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème lors de l'envoi du formulaire

    15 janvier 2019 à 17:24:40

    Bonjour,

    Je poste ici ne sachant pas si cela est un problème PHP ou Javascript, j'en suis désoler si je me suis tromper de catégorie.

    Le but et d’enregistrer les informations dans un fichier a partir d'un formulaire en utilisant ajax. J'ai donc mon formulaire qui est comme ceci (Ne sera pas en entier pour l'exemple)

    Informations : Le formulaire est bien envoyé puisque les informations sont bien enregistrer dans le fichier

    <form id="config-form" action="/ajax/config-form.php" class="form-horizontal form-bordered" method="post">
    <input type="hidden" name="action" value="send" />
    
    <div class="contact-form-success alert alert-success d-none mt-4" id="contactSuccess">
    <strong>Succès!</strong> La configuration a été enregistrée.
    </div>
    
    <div class="contact-form-error alert alert-danger d-none mt-4" id="contactError">
    <strong>Erreur!</strong> Un problème est survenue lors de l'enregistrement de la configuration.
    <span class="mail-error-message text-1 d-block" id="mailErrorMessage"></span>
    </div>
    
    <input type="text" class="form-control" id="nom_entreprise" name="nom_entreprise" value="">
    
    <input type="text" class="form-control" id="slogan_entreprise" name="slogan_entreprise" value="">
    
    <input type="submit" value="Enregistrer" class="btn btn-primary btn-modern" data-loading-text="Chargement...">
    
    </form>


    Voici mon fichier javascript

    (function($) {
    	
    	$('#config-form').each(function(){
    		$(this).validate({
    			submitHandler: function(form) {
    
    				var $form = $(form),
    					$messageSuccess = $form.find('.contact-form-success'),
    					$messageError = $form.find('.contact-form-error'),
    					$submitButton = $(this.submitButton),
    					$errorMessage = $form.find('.mail-error-message'),
    					submitButtonText = $submitButton.val();
    
    				$submitButton.val( $submitButton.data('loading-text') ? $submitButton.data('loading-text') : 'Chargement...' ).attr('disabled', true);
    
    				// Fields Data
    				var formData = $form.serializeArray(),
    					data = {};
    
    				$(formData).each(function(index, obj){
    				    data[obj.name] = obj.value;
    				});
    
    				// Ajax Submit
    				$.ajax({
    					type: 'POST',
    					url: $form.attr('action'),
    					data: data
    				}).always(function(data, textStatus, jqXHR) {
    
    					console.log(data);
    					
    					$errorMessage.empty().hide();
    
    					if (data.response == 'success') {
    
    						$messageSuccess.removeClass('d-none');
    						$messageError.addClass('d-none');
    
    						// Reset Form
    						$form.find('.form-control')
    							.val('')
    							.blur()
    							.parent()
    							.removeClass('has-success')
    							.removeClass('has-danger')
    							.find('label.error')
    							.remove();
    
    						if (($messageSuccess.offset().top - 80) < $(window).scrollTop()) {
    							$('html, body').animate({
    								scrollTop: $messageSuccess.offset().top - 80
    							}, 300);
    						}
    
    						$form.find('.form-control').removeClass('error');
    
    						$submitButton.val( submitButtonText ).attr('disabled', false);
    						
    						return;
    
    					} else if (data.response == 'error' && typeof data.errorMessage !== 'undefined') {
    						$errorMessage.html(data.errorMessage).show();
    					} else {
    						$errorMessage.html(data.responseText).show();
    					}
    
    					$messageError.removeClass('d-none');
    					$messageSuccess.addClass('d-none');
    
    					if (($messageError.offset().top - 80) < $(window).scrollTop()) {
    						$('html, body').animate({
    							scrollTop: $messageError.offset().top - 80
    						}, 300);
    					}
    
    					$form.find('.has-success')
    						.removeClass('has-success');
    						
    					$submitButton.val( submitButtonText ).attr('disabled', false);
    
    				});
    			}
    		});
    	});
    	
    }).apply(this, [jQuery]);

    Et voici mon fichier PHP pour le traitement

    header('Content-type: application/json');
    
    foreach($_POST as $label => $value) 
    {
    //-- ......
    }
    
    $contenu = 'Ce que je veut enregistrer';
    
    if (isset($_POST["action"]) && $_POST["action"] == "send")
    {
    	$fileconfig = $_SERVER['DOCUMENT_ROOT'] . '/includes/config.php';
    	//-- Assurons nous que le fichier est accessible en écriture
    	if (is_writable($fileconfig)) 
    	{
    		//-- Assurons nous que le fichier existe
    		if (file_exists($fileconfig)) 
    		{
    			$fp = fopen($fileconfig, 'w');
    			fwrite($fp, $contenu);
    			fclose($fp);
    
    			$arrResult = array ('response'=>'success');
    		}
    		else
    		{
    			$arrResult = array ('response'=>'error','errorMessage'=>'Le fichier config n\'existe pas.');
    			echo json_encode($arrResult);
    		}
    	}
    	else
    	{
    		$arrResult = array ('response'=>'error','errorMessage'=>'Le fichier config n\'est pas accessible en écriture!');
    		echo json_encode($arrResult);
    	}
    }
    else
    {
    	$arrResult = array ('response'=>'error','errorMessage'=>'Une erreur est survenu lors de l\'envoi du formulaire.');
    	echo json_encode($arrResult);
    }

    Donc comme je disait ci-dessus le formulaire s'envoi bien, les informations sont bien enregistrer dans mon fichier config.php. Mais lorsque je clique sur mon bouton de mon formulaire j'ai mon message qui apparait "Un problème est survenue lors de l'enregistrement de la configuration." qu'on retrouve dans mon fichier html.

    J'ai essayer de mettre une alert(data.response) dans mon fichier javascript juste avant le if (data.response == 'success') { mais le alert me dit undefined, je ne comprend pas trop :(

    Comment savoir ou est le problème, merci pour vos futurs réponses, en ésperant avoir été le plus claire possible dans mon explication. ;)



    -
    Edité par staff 15 janvier 2019 à 21:57:37

    • Partager sur Facebook
    • Partager sur Twitter
      16 janvier 2019 à 21:24:11

      Bonsoir je me permet de relancer mon sujet après 24h, personne aurait une idée sur mon problème?

      Cordialement

      -
      Edité par staff 16 janvier 2019 à 21:24:27

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        16 janvier 2019 à 21:30:16

        Que renvoie ton code php comme erreur ?
        • Partager sur Facebook
        • Partager sur Twitter
          16 janvier 2019 à 21:48:28

          Il me renvoi aucune erreur :( je pense que c'est normal parce que le fichier config.php est bien modifié

          -
          Edité par staff 16 janvier 2019 à 21:51:29

          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            16 janvier 2019 à 21:52:33

            Essaye de renvoyer le formulaire en ayant désactivé JavaScript pour voir si cela fonctionne. Sinon, c'est peut-être une erreur dans ton JS (et du coup tu devras poster ton souci dans ce forum là)
            • Partager sur Facebook
            • Partager sur Twitter
              16 janvier 2019 à 22:07:14

              Quand je désactive Javascript page blanche sans erreurs donc je pense que c'est un problème avec mon fichier JS. Ce n'est donc pas un problème de PHP.

              -
              Edité par staff 17 janvier 2019 à 8:43:01

              • Partager sur Facebook
              • Partager sur Twitter
                17 janvier 2019 à 8:04:47

                Bonjour,

                non, on ne crée pas de nouveau sujet dans un autre forum, on demande le déplacement :) Ce sujet est donc désormais dans le forum JS.

                • Partager sur Facebook
                • Partager sur Twitter

                Pas d'aide concernant le code par MP, le forum est là pour ça :)

                  17 janvier 2019 à 8:37:50

                  Lamecarlate a écrit:

                  Bonjour,

                  non, on ne crée pas de nouveau sujet dans un autre forum, on demande le déplacement :) Ce sujet est donc désormais dans le forum JS.


                  Désoler merci pour le déplacement, j'ai donc un problème avec mon fichier JS si quelqu'un a une idée je suis preneur :)

                  -
                  Edité par staff 17 janvier 2019 à 8:50:46

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Problème lors de l'envoi du formulaire

                  × 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