[php]probleme de variable ou de fonction "if&

Résolu/Fermé
ornythos - 6 mars 2009 à 22:31
 CréNomDunChien - 8 mars 2009 à 18:03
Bonjour,
Je suis entrain de faire un script ou je par d'un formulaire pour récupérer des informations. En fait il y a une partie du formulaire qui est conditionnel et dépend de la réponse à une question dans le formulaire initial.
Avec les informations recueillies je veux les faire vérifier par le visiteur, et une fois que tout est ok les stocker dans une base de données mais aussi les envoyer par mail. ma page avec le formulaire initial s'affiche correctement et parait fonctionner noralement, mais la page de traitement du formulaire ne s'affiche pas, même pas un message d'erreur....rien du tout et je n'arrive pas à trouver d'où vient le problème. Donc je vous soumet mon script pour demander de l'aide.

page initiale :.................................................................................................................................

<?php
$date=$_GET['date'];
$nom=$_GET['nom'];
$prenom=$_GET['prenom'];
$mobile=$_GET['mobile'];
$adresse=$_GET['adresse'];
$codepostale=$_GET['codepsotale'];
$ville=$_GET['ville'];
$yourmail=$_GET['yourmail'];
$nbprevente=$_GET['nbprevente'];


?>
<div id="contenu" class="texte">
<p> <?php if($_GET['problem']=oui)
{echo "Suite à un problème technique, merci de réitérer votre demande. Nous nous excusons de ce désagrément.";}?>
</p>

<form method="POST" action="../dvd/traitement.php/">
<p>
<label>Date : <input type="text" name='date' value="jj/mm/aaaa" size="9" maxlength="10"/>*</label>
</p>
<p>
<label>Votre nom : <input type="text" name='nom'value="<?php$nom?>"/>*</label>
<label>Votre prénom : <input type="text" name='prenom' size="20"/>*</label>
</p>
<p>
<label>Adresse : <input type="text" name='adresse' value="<?php$prenom?>" size="40"/>*</label>
</p>
<p>
<label>Code postale : <input type="text" name='codepostale' value="<?php$codepostale?>" size="3" maxlength="5"/>*</label>
</p>
<p>
<label>Ville : <input type="text" name='ville' value="<?php$ville?>" size="30"/>*</label>
</p>
<p>
<label>Votre numéro de mobile : <input type="text" name='mobile' value="<?php$mobile?>" size="12" maxlength="14"/>(06-00-00-00-00)</label>
</p>
<p>
<label>Votre adresse mail : <input type="text" name="yourmail" value="<?php$yourmail?>" size="30"/>*</label>
</p>

<p>
<label>Nombre de pré-ventes souhaitées : <input type="text" name='nbprevente' value="<?php$nbprevente?>"size="7"/>

</label>
</p>
<p>
<label>Avez-vous un compte paypal :
<select type="text" name="paypal">
<option value="1">oui</option>
<option value="2">non</option>
</select>
</label>
</p>
<p>
<input type="submit" value="Commander"/> <input type="reset"/>
</p>
</form>
<p> Ces informations ne seront pas communiquées, elles serviront uniquement pour que nous vous tenions informés de l'évolution de votre commande et lors de votre arrivée le jour de la soirée.
</p>
</div>

............................................................................................................................................

page de traitement1 :..............................................................................................................

<?php


//infos rentrées par le visiteur
$date=$_POST['date'];
$nom=$_POST['nom'];
$prenom=$_POST['prenom'];
$mobile=$_POST['mobile'];
$adresse=$_POST['adresse'];
$codepostale=$_POST['codepostale'];
$ville=$_POST['ville'];
$yourmail=$_POST['yourmail'];
$nbprevente=$_POST['nbprevente'];
$paypal=$_POST['paypal'];






//si compte paypal on demande l'adresse e-mail si non le mail est envoyé pour signaler l'achat
if($paypal==1)
{echo " <form method="POST" action="../essai/traitement2.php?date=$date&nom=$nom&adresse=$adresse&codepostale=$codepostale&ville=$ville&nbprevente=$nbprevente&mobile=$mobile&yourmail=$yourmail&paypal=$paypal&mailpaypal=$mailpaypal"/>
<p>
<label>Veuillez indiquer votre adresse e-mail d'utilisateur Paypal : <input type="text" name="mailpaypal" size="30"/>*</label>
</p>
<p>
<input type="submit" value="ŕtape suivante"/><input type="reset"/>
</p>
<p> Elle nous servira juste à vérifier votre réservation lors de votre arrivée à la soirée
</form>";}
elseif($paypal==2)
{
echo" <p> Veuillez vérifier votre commande. Merci</p>
<p>
Nom : ".$nom." Prénom : ".$prenom."</br>
Adresse : ".$adresse." ".$codepostale." ".$ville."</br>
E-mail principal : ".$yourmail." </br>
mobile : ".$mobile." </br>
Nombre de prévente(s) : ".$nbprevente"
</p>
<p>
<form method="POST" action="../essai/paiement.php?date=$date&nom=$nom&adresse=$adresse&codepostale=$codepostale&ville=$ville&nbprevente=$nbprevente&mobile=$mobile&yourmail=$yourmail&paypal=$paypal&mailpaypal=$mailpaypal"/>
<p>
<input type="radio" name="verif" value="oui" id="ok" /> <label for="ok">OK</label><br />
</p>

<p>
<input type="submit" value="Aller au paiement"/> <a id="modifcommande" href="../essai/index.php?date=$date&nom=$nom&adresse=$adresse&codepostale=$codepostale&ville=$ville&nbprevente=$nbprevente&mobile=$mobile&yourmail=$yourmail&paypal=$paypal&mailpaypal=$mailpaypal/"> contact</a>
</p>
</form>
</p>";
}


?>

</div>

...................................................................................................................................................

page de traitement2:....................................................................................................................

<?php


//infos rentrées par le visiteur
$date=$_GET['date'];
$nom=$_GET['nom'];
$prenom=$_GET['prenom'];
$mobile=$_GET['mobile'];
$adresse=$_GET['adresse'];
$yourmail=$_GET['yourmail'];
$nbprevente=$_GET['nbprevente'];
$paypal=$_POST['paypal'];
$from="From :'.$yourmail";
// on affiche le infos pour que le visiteur puisse vérifier si tout est ok
echo" <p> Veuillez vérifier votre commande. Merci</p>
<p>
Nom : ".$nom." Prénom : ".$prenom."</br>
Adresse : ".$adresse." ".$codepostale." ".$ville."</br>
E-mail principal : ".$yourmail." </br>
E-mail paypal : ".$mailpaypal."</br>
mobile : ".$mobile." </br>
Nombre de prévente(s) : ".$nbprevente"
</p>
<p>
<form method="POST" action="../essai/paiement.php?date=$date&nom=$nom&adresse=$adresse&codepostale=$codepostale&ville=$ville&nbprevente=$nbprevente&mobile=$mobile&yourmail=$yourmail&paypal=$paypal&mailpaypal=$mailpaypal"/>
<p>
<input type="radio" name="verif" value="oui" id="ok" /> <label for="ok">OK</label><br />
</p>

<p>
<input type="submit" value="Aller au paiement"/> <a id="modifcommande" href="../essai/index.php?date=$date&nom=$nom&adresse=$adresse&codepostale=$codepostale&ville=$ville&nbprevente=$nbprevente&mobile=$mobile&yourmail=$yourmail&paypal=$paypal&mailpaypal=$mailpaypal/"> contact</a>
</p>
</form>
</p>";
?>

.............................................................................................................................

page de paiement et d'envoi :....................................................................................

<?php
$date=$_GET['date'];
$nom=$_GET['nom'];
$prenom=$_GET['prenom'];
$mobile=$_GET['mobile'];
$adresse=$_GET['adresse'];
$codepostale=$_GET['codepsotale'];
$ville=$_GET['ville'];
$yourmail=$_GET['yourmail'];
$mailpaypal=$_GET['mailpaypal'];
$nbprevente=$_GET['nbprevente'];
//paramettrage du message envoyé
$from="From :'.$yourmail";
$destinataire="galland.antoine@free.fr";
$objet="Pré-vente 12 avril 2009";
$texte='Commande effectuée le '.$date.' :
Nombre de pré-vente(s) achetée(s) : '.$nbprevente.'

Nom : '.$nom.' Prenom : '.$prenom.'
'.$adresse.'
'.$codepostale.' '.$ville.'
Mobile : '.$mobile.'

E-mail principal: '.$yourmail.'

Pour les utilisateurs de Paypal :

E-mail paypal : '.$mailpaypal;


if($verif=="ok")
{//ecriture dans la base de donnees
mysql_connect("sql.site.net", "login", "password");
mysql_select_db("rayon");

// On ajoute une entrée avec mysql_query
mysql_query("INSERT INTO preventes VALUES('', '$nom', '$prenom', '$nbprevente', '$adresse', '$codepostale', '$ville','$mobile','$yourmail','$paypal', '$date')");

mysql_close();
mail($destinataire,$objet,$texte,$from))
echo "!!bouton paypal!! N'oublier pas d'indiquer le nombre de préventes voulu sur la page de paiement. Une fois votre paiement reçu nous vous enverons par e-mail un récapitulatif de votre commande. Si vous ne l'avez pas reçu sous 48h, veuillez nous le signaler : <a id="contact" href="../contact/"> contact</a> </br>
Merci et rendez-vous le samedi 12 pour votre plus grand palisir !!!";
}
else {
header('Location: ../essai/index.php?date=$date&nom=$nom&adresse=$adresse&codepostale=$codepostale&ville=$ville&nbprevente=$nbprevente&mobile=$mobile&yourmail=$yourmail&paypal=$paypal&mailpaypal=$mailpaypal&problem=oui');
}
?>
...................................................................................................................................

c'est la première fois que je me lance dans un script aussi complexe alors pt'être une mannière plus simple de faire mais c'est qui était le plus clair pour moi... j'espère que cela le sera assez pour que vous puissiez m'aidez.

Merci d'avance...
A voir également:

5 réponses

Slt,

Déjà à froid :

Traitement 1 : le </div> ne ferme rien - pas de <div> en tête de ton code.

Vérifie bien ton code - on voit des affectation qui remplacent des tests d'égalité (if($_GET['problem']=oui) par exemple).

a+,
0
ok alors pour la div il y en a bien une en tête de mon code, mais elle a du m'échapper au copier-coller.

pour les affectation et les test d'égalité , t'as remarque est un peu flou pour moi mais je vais essayer de voir.

j'ai déjà vérifier mon code plusieurs fois mais je n'ai pas encore résolu le problème...il y a un truc qui doit m'échapper.

En tout cas merci pour ton aide "à froid". ça fait pas mal de code a parcourir.....d'ailleur comme je l'ai déjà si il y a une méthode plus simple je suis preneur...
0
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
7 mars 2009 à 17:11
slt,
pense deja à utiliser les balises code pour nous afficher ton script ce sera plus facile pour nous ...
sur ta page qui est censée s'afficher met au tout debut un print_r($_post) pour voir deja si tu recupere bien toutes tes valeurs.
ensuite si tu a une page blanche verifie les " et les ; 99 fois sur 100 si 'en a pas oublié ou mis en trop, 99 fois sur 100 c'est de la que viens le bug.
Car il me semble qu'il manque pas mal de ; à la fin de tes lignes en php (d'ou l'interet d'utiliser les balises codes.. ;-) )
0
oui exact pour les balises codes désolé je les ai zappées. pour les ' et ; j'en ai déjà rajouter à certain endroit ou il manquait mais soit j'en oublie encore ou il y en a en trop qui m'échappent... Bon si non vu les premiers commentaires il n'y a pas l'air d'avoir de grosse abérations dans mon code alors ??

Merci pour le coup de main
0
Bonjour

Je n'ai pas trop cherché à comprendre ton code, mais j'y vois unproblème. Passer une longue liste de paramètres par l'URL me semble une très mauvaise méthode, il vaut mieux utiliser les sessions. Surtout que tu n'encodes pas tes variables avec urlencode, tu auras de gros problèmes dès qu'il y aura des caractères spéciaux dans un des champs
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Re,

Remarque 1 :

page initiale :

<?php if($_GET['problem']=oui)
{echo "Suite à un problème technique, merci de réitérer votre demande. Nous nous excusons de ce désagrément.";}?>
</p>

Ok mais il faudrait ensuite mettre un ELSE adéquat pour différencier cette section avec le reste - dans le cas contraire, le reste est du code est interprété et ne tient pas absolument pas compte de cette interception d'exception.

Remarque 2 :

if($_GET['problem']=oui) est une affectation et non un test d'égalité -> le test d'égalité est un == et pas un = !!.

Remarque 3 :

Si ta page n'affiche rien en Traitement 1, c'est que logiquement $paypal ne vérifie aucune de tes conditions et qu'il y a surement un problème dans tes passages de paramètres en POST.


Si c'était "a froid" hier soir c'est que malheureusement ton code est assez mal structuré.
Je vais copier ton code et essayer de le corriger sur ma bécane.

a+.
0
Ouaip,

Je suis en train de recopier ton code et voilà le problème sur traitement 2 :

if $paypal == '1' --> avec les guillemets ce sera mieux - idem pour if $paypal == '2'

N'oublie pas que PHP traite les variables comme des chaines de caractères.

A+.
0
titoo > titoo
7 mars 2009 à 18:35
Pffff...bah c'est po gagné - comment t'a pu interprété un code pareil...
0
ornythos > titoo
7 mars 2009 à 18:51
bon alors page par je page on y verra peut être plus clair. Les sessions je me suis penché dessus mais je n'ai pas encore tout compris. Sur le principe c'est à peu près clair mais par exemple je ne vois pas comment créer les variables dans une sessions à partir du formulaire.

Pour la page initial j'ai fait quelques modif qui je pensait aurait du résoudre quelques problème, pour le double égale c'était de l'inatention quand j'ai remis le code pour le poster, après avoir essayer une manip.

en fait la page initial sert en cas de problème, le visiteur sera renvoyer dessus pour corriger sa demande c'est pour quoi, pour lui éviter de retaper toutes les infos mais d'avoir seulement à vérifier les infos qu'il à rentré, je veux récupérer ses infos et les "pré-afficher" dans le formulaire.

donc voci ce que j'ai changer sur la première, mais je ne sais pas si cela rend les choses plus claires...

<?php
if(isset($_GET['nom'])AND isset($_GET['prenom'])AND isset($_GET['adresse'])AND isset($_GET['codepostale'])AND isset($_GET['ville'])AND isset($_GET['mobile'])AND isset($_GET['yourmail'])AND isset($_GET['nbprevente'])AND isset($_GET['paypal']))
	{	$nom=$_GET['nom'];
		$prenom=$_GET['prenom'];
		$adresse=$_GET['adresse'];
		$codepostale=$_GET['codepostale'];
		$ville=$_GET['ville'];
		$mobile=$_GET['mobile'];
		$yourmail=$_GET['yourmail'];
		$nbprevente=$_GET['nbprevente'];
		$paypal=$_GET['paypal']; }
{ $nom=$_GET['nom'];
		$prenom="votre prenom";
		$adresse="votre adresse";
		$codepostale="votre code postale";
		$ville="la ville o&ugrave; vous habitez";
		$mobile="votre num&eacute;ro de mobile";
		$yourmail="votre e-mail";
		$nbprevente="le nombre de pr&eacute;vente  voulu";
		$paypal="0"; }
	 ?>
	<div id="contenu" class="texte">
	<p> <?php if(isset($_GET['problem']))
	{echo "Suite &agrave; un probl&egrave;me technique, merci de r&eacute;it&eacute;rer votre demande. Nous nous excusons de ce d&eacute;sagr&eacute;ment.";}?>
	</p>
		
		<form method="POST" action="../dvd/traitement.php/">
		<p>
			<label>Date : <input type="text" name='date' value="jj/mm/aaaa" size="9" maxlength="10"/>*</label>
		</p>
		<p>
			<label>Votre nom : <input type="text" name='nom'value="<?php$nom?>"/>*</label>
			<label>Votre pr&eacute;nom : <input type="text" name='prenom' value="<?php$prenom?>"/>* size="20"/>*</label>
		</p>
		<p>
			<label>Adresse : <input type="text" name='adresse' value="<?php$adresse?>" size="40"/>*</label>
		</p>
		<p>
			<label>Code postale : <input type="text" name='codepostale' value="<?php$codepostale?>" size="3" maxlength="5"/>*</label>
		</p>
		<p>
			<label>Ville : <input type="text" name='ville' value="<?php$ville?>" size="30"/>*</label>
		</p>
		<p>
			<label>Votre num&eacute;ro de mobile : <input type="text" name='mobile' value="<?php$mobile?>" size="12" maxlength="14"/>(06-00-00-00-00)</label>
		</p>
		<p>
			<label>Votre adresse mail : <input type="text" name='yourmail' value="<?php$yourmail?>" size="30"/>*</label>
		</p>
		
		<p>
			<label>Nombre de pr&eacute;-ventes souhait&eacute;es : <input type="text" name='nbprevente' value="<?php$nbprevente?>"size="7"/>
				
			</label>
		</p>
		<p>
			<label>Avez-vous un compte paypal :
				<select type="text" name='paypal'> 
					<option value="1">oui</option>
					<option value="2">non</option>
				</select>
			</label>
		</p>
		<p>
			<input type="submit" value="Commander"/> <input type="reset"/>
		</p>
		</form>
		<p> Ces informations ne seront pas communiqu&eacute;es, elles serviront uniquement pour que nous vous tenions inform&eacute;s de l'&eacute;volution de votre commande et lors de votre arriv&eacute;e le jour de la soir&eacute;e.
		</p>
	</div>
0
ornythos > ornythos
7 mars 2009 à 19:35
pour stocker les variable du formulaire dans une session est ce que c'st juste de faire comme ça :
$_SESSION['prenom']=$_POST['prenom'];
sachant que je le metterais dans la page traitement1.php

se serait pour eviter le url à ralonge. je suis un peu paumé à vrai dire voir beaucoup....
0
titoo > ornythos
7 mars 2009 à 19:59
Re,

J'étais en train de manger pour ma part.

Variable SESSION :

L'intérêt : c'est une zone mémoire où tu ranges tes variables.

Quand tu te transfères sur une page autre page PHP, pas besoin donc de gérer le transfert de cette zone et tu récupères quand tu veux tes variables .. ou tu en ajoutes d'autres bien sur.

Un exemple :

Page 1 : (début des traitements)

session_start(); --> Important --> Ouverture SESSION
$_SESSION["prenom"] = $prenom; --> Tu stockes ici toutes tes variables en SESSION
$_SESSION["nom"] = $nom;
etc....

Puis tu te transfères sur la Page 2 :

session_start(); --> Important
$prenom = $_SESSION["prenom"]; --> Tu récupères tes variables stockées
$nom = $_SESSION["nom"];
etc ..

Enfin, à la fin de tes traitements, tu va en Page 3 :

session_start(); --> ouverture SESSION
$_SESSION = array(); --> Initialisation de la zone mémoire
session_destroy(); --> fermeture définitive SESSION

A tu compris le principe ???...
0