8791 sujets

Développement web côté serveur, CMS

Bonjour à toutes et tous Smiley smile

Premièrement je vous souhaite à toutes et tous de joyeuses fêtes !

Voilà mon petit souci. J'ai un formulaire de contact dans lequel j'ai un select. mais je n'arrive pas à retourner la valeur dans ma base et donc mon mail de contact qui va avec Smiley decu

un peu d'help serait le bienvenue.

Pour info voici mon code HTML (je précise qu'il es contenu dans un echo""; donc mon code php du coup)

<select type=\"text\" name=\"reqtype\" id=\"reqtype\">
	<option value=\"".$form['reqtype']='0'."\">Votre demande concerne...</option>
	<option value=\"".$form['reqtype']='renseignements'."\">Renseignements</option>
	<option value=\"".$form['reqtype']='devis'."\">Devis (gratuit)</option>
	<option value=\"".$form['reqtype']='bilan'."\">Bilan (offert)</option>
	<option value=\"".$form['reqtype']='depannage'."\">Dépannage</option>			</select>


mon traitement :

	//Type de demande
if(isset($_POST["reqtype"]))	{
	if($_POST["reqtype"]=='0') {
		$traitement=false;
		$form['erreur']['reqtype']="Merci de renseigner votre type de demande";
	}	
}}


la syntaxe de l'envoie de la requête est bonne et vérifiée, car je reçois bien les autres infos qui s'implémentent bien dans la base.

Pour info, le formulaire est visible à ici

Merci beaucoup Smiley smile
Modifié par Pooley (27 Dec 2012 - 11:57)
Bonsoir,

Est-ce normal les simple = dans le formulaire ? Sur le site les valeurs sont 0, 1, 2 et 4 et non 0, renseignement, etc.

Que donne un print_r($_POST) et print_r($form) ?
Modifié par jo_link_noir (22 Dec 2012 - 19:47)
oui j'ai modifié les valeurs pour qu'elles tombent directement nommées dans la base de données. (ça m'évite de passer par une table avec les concordances chiffre=nom).
j'ai essayé de mettre un message d'erreur avec en message la valeur de mon :


	//Type de demande
if(isset($_POST["reqtype"]))	{
	if($_POST["reqtype"]!='0') {
		$traitement=false;
		$form['erreur']['reqtype']="".$_POST["reqtype"]." Merci de renseigner votre type de demande";
	}	
}}



cette syntaxe modifiée me donne la valeur : "devis blablabla" lorsque je valide le formulaire donc j'ai bien ma sélection présente dans ma variable $_POST["reqtype"] (= devis ici)

print_r($_POST) me donne bien : [ reqtype ] => devis
print_r($form) me donne rien : [ reqtype ] => [ comment ] =>
Modifié par Pooley (22 Dec 2012 - 20:48)
Tu peux mette le code php complet ?
Je vient de le voir mais un select ne possède pas d'attribut type.
Modifié par jo_link_noir (22 Dec 2012 - 21:39)
Voici mon code html de mon contact.inc.php (qui est mon include qui va dans mon contact.php) :


[b]<div class='select placeholder'>
	<select type=\"text\" name=\"reqtype\" id=\"reqtype\">
		<option value=\"".$form['reqtype']='0'."\" disabled>Votre demande concerne</option>
		<option value=\"".$form['reqtype']='renseignements'."\">Renseignements</option>
		<option value=\"".$form['reqtype']='devis'."\">Devis (gratuit)</option>
		<option value=\"".$form['reqtype']='bilan'."\">Bilan (offert)</option>
		<option value=\"".$form['reqtype']='depannage'."\">Dépannage</option>
	</select>
</div>[/b]


Pour ce qui est du traitement des données saisies :



		//Type de demande
	if(isset($_POST["reqtype"]))	{
		if($_POST["reqtype"]=='0') {
			$traitement=false;
			$form['erreur']['reqtype']=" Merci de renseigner votre type de demande";
		}	
	}}
	
	


Toutes mes règles sont testées et logiquement fonctionnelles... exceptée celle du reqtype (type de demande)

Voilà j'espère que ça va t'aider à m'aider Smiley confused
Modifié par Pooley (27 Dec 2012 - 11:55)
Salut,

Tu n'enregistres pas la valeur de reqtype dans le $form

		if($_POST["reqtype"]=='0') {
			$traitement=false;
			$form['erreur']['reqtype']=" Merci de renseigner votre type de demande";
		} [b]else {
			$form['reqtype'] = $_POST["reqtype"];
		}[/b]


Sinon divers remarques :
- Pour les mail il existe filter_var/filter_input
filter_input(INPUT_POST, 'mail', FILTER_VALIDATE_EMAIL);

- Plein de fois il y a un code comme
		$form['comment']=trim($_POST["comment"]);
		$form['comment']=stripslashes($_POST["comment"]);
		$form['comment']=htmlentities($_POST["comment"]);
		$form['comment']=html_entity_decode($_POST["comment"]);

Seul la dernière ligne à de l'effet et c'est vraiment pas la bonne
		$form['comment']=stripslashes(trim($_POST["comment"]));

Mais si tu as besoin d'utiliser stripslashes regarde les magic quotes car visiblement ils sont activés.
Super ça fonctionne Smiley smile effectivement j'ai fauté sur l'enregistrement du reqtype dan sle $form Smiley cligne

par curiosité et dans l'idée d'améliorer mon code :

- filter_var/filter_input m'apporte quoi de plus comparé à la méthode mise en place actuellement (en fait je valide la valeur saisie avec une regex de type :

	function verif_mail($adresse){ 
		$syntaxe='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#'; 
			if(preg_match($syntaxe,$adresse)){ 
				return true; 
			}else{
				return false;
			}
	}


- je n'ai pas très bien saisie l'info à modifier ici ? il faut que je remplace mes traitements successifs par un chapelet de traitements ?
ce qui pourrait expliqué que dans ma base, au lieu d'avoir "Orléans" j'ai "Orléans"... ?

edit :
Un petit mysql_query("SET NAMES UTF8"); et tout est ok Smiley smile Après je pense qu'il doit y avoir de l'optimisation à faire lol mais bon ça fonctionne grâce à ta précieuse recommandation !

Merci en tout cas pour ton aide Jo Smiley smile
Modifié par Pooley (23 Dec 2012 - 19:15)