Problème de mon script php avec les fonctions.

Résolu/Fermé
cretinator Messages postés 67 Date d'inscription samedi 26 janvier 2013 Statut Membre Dernière intervention 6 décembre 2014 - 9 févr. 2013 à 14:39
cretinator Messages postés 67 Date d'inscription samedi 26 janvier 2013 Statut Membre Dernière intervention 6 décembre 2014 - 11 févr. 2013 à 22:15
Bonjour,

Après avoir lu et relu divers tutos (site du zero etc...).

J'ai créer deux pages php la (1ère: traitement.php) et la (2ème: validation.php)

Je voudrai en-faite que le client remplisse le formulaire en html, quand il pressera le bouton (envoyer), la page traitement.php qui affiche les données rentrées (et qui marche nickel). Une fois que le client est d'accord avec les données, il clique sur le bouton ok pour valider, alors la page validation.php est appelée, elle doit envoyer les données reçues:

Le problème, c'est que j'ai essayé bcp de solutions mais ça bloque toujours!

Quand j'ai testé la démarche suivante:
[ formulaire.html --> validation.php avec seulement le script envois dans ma base sql ca marche nickel]

Mais quand j'ai fais cette démarche avec le même script et mêmes $variables:
[formulaire.html --> traitement.php (qui affiche les données rentrées en echos, ensuite validation avec le bouton ok, la page marche aussi) -->validation.php le script envois bien quelque chose dans ma base mais les champs sont vides!!!]

Ou est le problème???

Est pour le(s) script(s) pour la fonction mail je n'arrive pas à paramétré en localhost avec wampserver, pour que je puisse recevoir les mails (message d'erreur :réponse du serveur SMTP: 550 5.7.3 Action demandée abandonnée; utilisateur non authentifié.)

En faite je voudrais réunir dans la page validation.php les scripts suivant:

[ -> 1/ envois dans la base de données
[ -> 2/ un mail de confirmation envoyer au client
[ -> 3/ un mail de leur commande sur ma boite email
[ -> 4/ l'appel d'une page html de remerciement après (que je ne connais pas la formule..)

Peut on mettre tous ça dans le même script?
Parce que les formules pour rédiger mon script c'est un peut du chinois pour moi.

Je ne demande pas qu'on me le fasse! Mais un petit peu d'aide sur les démarches et surtout des explications pour avancé ne serai pas de refus ;-)

A voir également:

7 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
11 févr. 2013 à 09:21
si j'ai bien compris, je dois la placée dans ma page "formulaire.html" au dessus de la balise <html>?
( est ce que cette fonction fonctionne vu que la page est en html?)
Ou de mettre dans celle de "traitement.php"?

NON il faut que la page soit en .php
le formulaire étant la première page, pas besoin de démarrer la session donc tu peux le laisser en formulaire.html
par contre mets dans traitement.php
<?php session_start(); ?>
....
//attention $_POST en majuscules !!!
//on charge les variables de SESSION
$_SESSION['nom']=htmlentities($_POST['nom']);
$_SESSION['prenom']=htmlentities($_POST['prenom']);
//etc...



et dans la page ou tu en as besoin pour enregistrer
<?php session_start(); ?>
....
//connexion au serveur et à la BDD puis
mysql_connect(...) etc...
//on va les lire
$nom=mysql_real_escape_string($_SESSION['nom']);
$prenom=mysql_real_escape_string($_SESSION['prenom']);

//pour detrire la session effacer toutes les variables $_SESSION
session_destroy();
2
Utilisateur anonyme
11 févr. 2013 à 13:26
Bonjour,
c'est exactement ça!
0
cretinator Messages postés 67 Date d'inscription samedi 26 janvier 2013 Statut Membre Dernière intervention 6 décembre 2014 1
11 févr. 2013 à 16:06
Merci mais dans:

< //on charge les variables de SESSION
$_SESSION['nom']=htmlentities($_POST['nom']);>

Je dois les inscrires directement dans le tableau. ou a la suite de la formule $_session start??

Parce que j'ai essayé les deux variantes mais il m'affiche toujours l'erreur,
" Undefined variable: _SESSION"
0
cretinator Messages postés 67 Date d'inscription samedi 26 janvier 2013 Statut Membre Dernière intervention 6 décembre 2014 1
11 févr. 2013 à 16:15
Voilà mes codes pour voir le souci!

Le code de la page Votrecommande.php:
<?php session_start();?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//FR" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Votrecommande</title>
</head>
<body bgcolor="#CCFFFF" align="center" valign="middle">
<p align="center" class="Style1">Ces données sont correctes? :</p>
<table width="70%" height="350" align="center" valign="middle" border="1"><form method="POST" type="text/plain" action="validation.php">
<tr>
	<th width="20%" height="20" align="center" valign="middle" bordercolor="#0066FF" bgcolor="#CC99FF" scope="col"><font color="#0033FF">Votre Nom est:<br/></font>
	<?php echo $_SESSION1['Nom'] = htmlentities($_POST['Nom']);?></th>
	<th width="20%" height="20" align="center" valign="middle" bordercolor="#0066FF" bgcolor="#CC99FF" scope="col"><font color="#0033FF">Votre Prénom est:<br/></font>
	<?php echo $_SESSION2['Prenom'] = htmlentities($_POST['Prenom']);?></th>
	<th width="20%" height="20" align="center" valign="middle" bordercolor="#0066FF" bgcolor="#CC99FF" scope="col"><font color="#0033FF">Votre Téléphone est:<br/></font>
	<?php echo $_SESSION3['Telephone'] = htmlentities($_POST['Telephone']);?></th>
  </tr>
<tr>	
	<th width="20%" height="20" align="center" valign="middle" bordercolor="#0066FF" bgcolor="#CC99FF" scope="col"><font color="#0033FF">Votre Adresse est:<br/></font>
	<?php echo $_SESSION4['Adresse'] = htmlentities($_POST['Adresse']);?></th>
	<th width="20%" height="20" align="center" valign="middle" bordercolor="#0066FF" bgcolor="#CC99FF" scope="col"><font color="#0033FF">Votre Ville est:<br/></font>
	<?php echo $_SESSION5['Ville'] = htmlentities($_POST['Ville']);?></th>
	<th width="20%" height="20" align="center" valign="middle" bordercolor="#0066FF" bgcolor="#CC99FF" scope="col"><font color="#0033FF">Votre Adresse Email est:<br/></font>
	<?php echo $_SESSION6['Email'] = htmlentities($_POST['Email']);?></th>
  </tr>
	<th height="150%" bgcolor="FFFFFF" colspan="3" valign="top" scope="row"><br/>Votre Commande :<br/><br/><br/>
	<?php echo $_SESSION7['Votretext'] = nl2br(htmlentities($_POST['Votretext']));?></th>
<tr align="center" valign="middle">
    <th height="20" bgcolor="#000000"><a href="../administration/Commande.html"><font color="#FF9900">Retour</a></font></th>
    <th height="20" bordercolor="#000000" bgcolor="#CC99FF"></th>
    <th height="20" bgcolor="#000000" ><font color="#FF9900">Validez les données <input type="submit" name="valider" value="OK"/></font></th></form></tr></table>
<tr align="center" valign="middle">
	<th height="20" bgcolor="#000000">
	<p align="center" class="Style2"> Vous allez recevoir un mail de confirmation de votre commande et une réponse dans les plus brefs délais.</p>
</body>
</html>


et ensuite le code de la page validation:
<?php session_start();

include('mydb.php');

$email= mysql_real_escape_string ($_SESSION6['Email']);
$nom = mysql_real_escape_string ($_SESSION1['Nom']);
$prenom = mysql_real_escape_string ($_SESSION2['Prenom']);
$adresse = mysql_real_escape_string ($_SESSION4['Adresse']);
$ville = mysql_real_escape_string ($_SESSION5['Ville']);
$telephone = mysql_real_escape_string ($_SESSION3['Telephone']);
$message = mysql_real_escape_string ($_SESSION7['Votretext']);
$date = date("y-m-d");
connectMaBase();
$sql = 'INSERT INTO donneesclients VALUES
("","'.$email.'","'.$nom.'","'.$prenom.'","'.$adresse.'","'.$ville.'","'.$telephone.'","'.$message.'","'.$date.'")';
mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
mysql_close();
?>
<?php $_SESSION_destroy();?>
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
11 févr. 2013 à 17:53
tu n'aas pas compris le principe des SESSIONS

il ne faut pas mettre $_SESSION1['..'.] $_SESSION2['..'.]

mais toujours $_SESSION['.....']

et <?php $_SESSION_destroy();?> est une commande donc pas de $ et en minuscules

<?php session_destroy();?>
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
11 févr. 2013 à 18:22
et en plus:
Le code de la page Votrecommande.php:

<?php session_start();
	$_SESSION['Nom'] = htmlentities($_POST['Nom']);
	$_SESSION['Prenom'] = htmlentities($_POST['Prenom']);
	//etc..
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//FR" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Votrecommande</title>
</head>
<body bgcolor="#CCFFFF" align="center" valign="middle">
<p align="center" class="Style1">Ces données sont correctes? :</p>
<table width="70%" height="350" align="center" valign="middle" border="1"><form method="POST" type="text/plain" action="validation.php">
<tr>
	<th width="20%" height="20" align="center" valign="middle" bordercolor="#0066FF" bgcolor="#CC99FF" scope="col"><font color="#0033FF">Votre Nom est:<br/></font>
	<?php echo $_SESSION['Nom']?></th>
	<th width="20%" height="20" align="center" valign="middle" bordercolor="#0066FF" bgcolor="#CC99FF" scope="col"><font color="#0033FF">Votre Prénom est:<br/></font>
	<?php echo $_SESSION['Prenom']?></th>
ETC....
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
10 févr. 2013 à 15:21
Salut,
traitement.php (qui affiche les données rentrées en echos, ensuite validation avec le bouton ok, la page marche aussi) -->validation.php le script envois bien quelque chose dans ma base mais les champs sont vides!!!]
ta page traitement.php affiche elle ces infos dans des input de formulaire ?
si oui leur name correspondent ils avec ceux attendus par le script validation.php ?
0
cretinator Messages postés 67 Date d'inscription samedi 26 janvier 2013 Statut Membre Dernière intervention 6 décembre 2014 1
10 févr. 2013 à 17:26
Bonjour Alain_42

non elles ne sont affichées dans des inputs mais dans un tableau.

Exemple:

<th width="20%" height="20" align="center" valign="middle" bordercolor="#0066FF" bgcolor="#CC99FF" scope="col"><font color="#0033FF">Votre Nom est:<br/></font>
	<?php $nom = htmlentities($_POST['Nom']); echo"$nom"?></th>


en incluant une balise <form>

et dans la page validation j'utilise la variable:

$nom = mysql_real_escape_string ($_POST['$nom']);
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
10 févr. 2013 à 17:52
dans un tableau les valeurs ne sont pas postées vers la page suivante

duplique ces valeurs dans des <input type="hidden"
0

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

Posez votre question
cretinator Messages postés 67 Date d'inscription samedi 26 janvier 2013 Statut Membre Dernière intervention 6 décembre 2014 1
10 févr. 2013 à 18:09
Merci Alain_42 je vais essayer ça!

je vous redis le compte rendu...
0
cretinator Messages postés 67 Date d'inscription samedi 26 janvier 2013 Statut Membre Dernière intervention 6 décembre 2014 1
11 févr. 2013 à 01:23
Merci Alain_42
0
Utilisateur anonyme
10 févr. 2013 à 20:22
Bonsoir,
a savoir qu'il faut protéger les champs hidden car ils peuvent être modifier.

Une autre solution consiste à utilisé les variable de session.

Peut-être qu'avec le script de base cela serait plus facile.


0
cretinator Messages postés 67 Date d'inscription samedi 26 janvier 2013 Statut Membre Dernière intervention 6 décembre 2014 1
11 févr. 2013 à 01:20
Bonsoir ALAN305

J'ai déjà vu cette solution( lu plusieurs forums sur le sujet et testé chez moi) mais comme je suis novice en la matière je galère un peut.

Cette formule là -->
<?php session_start(); ?>

si j'ai bien compris, je dois la placée dans ma page "formulaire.html" au dessus de la balise <html>?
( est ce que cette fonction fonctionne vu que la page est en html?)
Ou de mettre dans celle de "traitement.php"?

Et les démarches que je doit entreprendre ensuite c'est la que je coince,
je doit attribuée les variables "$_post " à la session?
Ou je dois faire une autre manipulation?

Parce que dans la page "traitement.php" j'ai créer un tableau avec les données affichées dans des cellules avec la fonction "echo". J'ai essayé la fonction "session" mais je n'ai pas réussi à faire fonctionner.

Une fois fini tous ça je sais que je doit utilisé cette fonction:
<?php session_destroy(); ?>
? Mais elle se place où?
0