Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème lors de l'envoi du formulaire

16 janvier 2019 à 22:08:57

Bonjour,

J'ai un problème lors de l'envoi de mon formulaire je vous explique.

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) {
					
					$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 16 janvier 2019 à 22:10:56

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

Bonjour,

Doublon

Les doublons nuisent au bon fonctionnement du forum et sont donc interdits. Si vous vous êtes trompé de section, il suffit de signaler votre sujet au staff pour qu'il le déplace au bon endroit.

Je vous invite à continuer la discussion sur l'autre sujet : https://openclassrooms.com/forum/sujet/probleme-lors-de-lenvoi-du-formulaire

Je ferme ce sujet. Me contacter par MP si besoin.

  • Partager sur Facebook
  • Partager sur Twitter

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