Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/12/2011, 20h13   #1
Nouveau Membre du Club
 
Inscription : janvier 2011
Messages : 146
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 146
Points : 26
Points : 26
Par défaut problème passage variable de page en page

Bonsoir

J'ai un problème technique sur un site ficitf que je créer actuellement.

Il s'agit d'un site marchand fictif et j'ai besoin pour cela d'un espace client.

Je ne sais pas utiliser le module 'SESSION' similaire à 'POST'

Alors j'ai une page "connexion.php" pour se connecter au compte client voici le code :

Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<p align="center">Merci de donner votre mot de passe et votre pseudo pour vous identifier.</p>
 
<form action="moncompte.html" method="post">
 
<table align="center" valign="middle">
<tr>
 
<td>Pseudonyme</td>
<td><input type="text" name="pseudo"></td>
</tr>
 
<tr>
<td>Mot de passe</td>
<td><input type="text" name="mdp"></td>
 
</tr>
<tr>
<td><input type="submit" value="VALIDER"></td>
<td><input type="submit" value="ANNULER"></td>

J'arrive ensuite sur la page "moncompte.php" . Sur la page "moncompte.php" je pouvoir stoker dans plusieur variable les informations relative au client numero client , nom , prenom , age ... pour pouvoir les passer à d'autres pages

voici le code de "moncompte.php"

Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<? session_start();

if(!empty($_POST))
{
$mdp = $_POST['mdp'];
$_SESSION["mdp"] = $_POST["mdp"];
$pseudo=$_POST['pseudo'];
$_SESSION["pseudo"] = $_POST["pseudo"];
}
else
{
$mdp = $_SESSION["mdp"];
$pseudo = $_SESSION["pseudo"];
}

// ici j'ai ceci dans l'optique de recupérer les informations avec l'appel d'un requete pour recuperer le numeros client 

<html>

<?php

$mdp = $_POST['mdp'];
$pseudo=$_POST['pseudo'];

// récupération des données du formulaire de connexion
?>

<html>

[.......du blabla....]

$db = mysql_connect('localhost', 'root', '');
mysql_select_db('projet',$db);

$sql = "SELECT num_cli , nom, prenom, age, mail, tel, adresse, paiement FROM CLIENT WHERE mdp='".mysql_real_escape_string($mdp)."' AND pseudo='".mysql_real_escape_string($pseudo)."'";

//ici je lance la requête qui va me permettre d'afficher les infos du client

$req = mysql_query($sql) or die ('ERREUR '.mysql_error());

$data = mysql_fetch_array($req);

echo " <p align=\"center\" valign=\"middle\"> Bienvenue sur votre compte <br> </p>";

echo " <table align=\"center\" valign=\"middle\"> <tr> <td> Nom :</td> ";
echo " <td>" ;
echo  $data['nom'];
echo "</td> ";
echo " </tr> ";
echo " <tr>  ";
echo " <td> Prenom :</td> ";
echo " <td>" ; 
echo $data['prenom'];
echo "</td> ";
echo " </tr> ";
echo " <tr>  ";
echo " <td> Age :</td> "; 
echo " <td>" ;
echo $data['age'] ; 
echo "</td> ";
echo " </tr> ";
echo " <tr> ";
echo " <td> Adresse :</td> ";
echo " <td>" ;
echo $data['adresse']; 
echo "</td> ";
echo " </tr> ";
echo " <tr> ";
echo " <td> Telephone :</td> ";
echo " <td>" ;
echo $data['tel']; 
echo "</td> ";
echo " </tr> ";
echo " <tr> ";
echo " <td> Mail </td> ";
echo " <td>";
echo $data['mail'];
echo " </td> ";
echo " </tr> ";
echo " <tr> ";
echo " <td> Mod de paiement :</td> ";
echo " <td> " ; 
echo $data['paiement'] ;
echo " </td> ";
echo " </tr> </table> ";

echo "<div class=\"menu\">";
echo "<ul class=\"niveau1\">";
echo "<li>";

// ici je veux recuperer le numéros de client pour le donner à une page en dessous , ici le client peux commande un billet de train , ou d'avion . C'est aussi ici que je bloque comment passer le numéros de client à la page "miseaupanieravion.php" , sachant que ici on est pas dans un formulaire mais un page qui affiche des données d'une base ? 

echo "'<a href=\"miseaupanieravion.php? '".$data['num_cli']."' \">Billet avion</a> '";
echo "</li></ul></div>";
echo "<div class=\"menu\">";
echo "<ul class=\"niveau1\">";
echo "'<a href=\"miseaupaniertrain.php? '".$data['num_cli']."' \">Billet train</a> '";
echo "</li></ul></div>";

?>

Ensuite on va dire que le client decide de commander un billet d'avion il se rend donc sur la page "miseaupanieravion.php"


Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
<?php 

//ici je rappel les données qui se sont affiché sur "moncompte.php" avec le "SESSION " soit disant pour garder la session utilisé avec ses infos ??? la je péche pour la transmission 

$prenom=$_SESSION['prenom'];
$nom=$_SESSION['nom'];
$age=$_SESSION['age'];
$adresse=$_SESSION['adresse'];
$tel=$_SESSION['tel'];
$mail=$_SESSION['courriel'];
$paiement=$_SESSION['paiement'];
$mdp=$_SESSION['mdp'];
$pseudo=$_SESSION['pseudo'];
$num_cli=$_SESSION['num_cli'];

?>

<form action="sauvepanieravion.php" method="post">


<table>
<tr> <td>Date de commande : </td>
<td> <?php $date_c=strftime("%d/%m/%y"); 
echo strftime("%d/%m/%y") ?> </td>

</tr>

<tr><td> Vol : </td>
<td> <?php 

$db = mysql_connect('localhost', 'root', '');
mysql_select_db('projet',$db);
$vol = mysql_query("SELECT vol FROM TARIF_AVION;");

echo"<select name='vol'>";

while($data = mysql_fetch_array($vol))
{

echo"<option>".$data["vol"]."</option>\n" ; 

}

echo"</select>";
?>

</td></tr>
     
<tr><td> Compagnie : </td>
<td> <?php 

$db = mysql_connect('localhost', 'root', '');
mysql_select_db('projet',$db);
$comp = mysql_query("SELECT DISTINCT comp FROM TARIF_AVION;");

echo"<select name='comp'>";

while($data = mysql_fetch_array($comp))
{
echo"<option>".$data["comp"]."</option>\n" ;
}

echo"</select>";
?>
</td></tr>


<tr><td> Categorie : </td>
<td> <?php 

$db = mysql_connect('localhost', 'root', '');
mysql_select_db('projet',$db);
$cat = mysql_query("SELECT DISTINCT cat FROM TARIF_AVION;");

echo"<select name='cat'>";

while($data = mysql_fetch_array($cat))
{

echo"<option>".$data["cat"]."</option>\n" ;
}

echo"</select>";
?>

</td></tr>

<tr><td>Date allée :</td>
<td><input type="text" name="date_d"></td>

</tr>
<tr>

<tr><td>Date retour :</td>
<td><input type="text" name="date_f"></td>

</tr>

<tr>
<td>Quantite :</td>
<td><input type="text" name="quantite"></td>

<tr>
<td><input type="submit" value="ENVOYER"></td>
<td><input type="submit" value="ANNULER"></td>
</tr>

</tr>

</table>
</form>

Une fois cela fait j’envoie le tout à la base avec le numéros de client , la référence du vol , le numéros de commande est incrémenté automatiquement en la base , j'envoie aussi la quantité de billet commandé

Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php 

$num_cli=$_SESSION['num_cli']; // en passe le numéros client qui vient de la page "moncompte.php"  
$vol=$_SESSION['vol'];
$comp=$_SESSION['comp'];
$cat=$_SESSION['cat'];
$date_f=$_SESSION['date_f'];
$date_d=$_SESSION['date_d'];
$date_c=$_SESSION['date_c'];

$quantite=$_SESSION['quantite'];


// en revoie les infos saisi en le formulaire pour pouvoir les inclure en la base

$db = mysql_connect('localhost', 'root', '');
mysql_select_db('projet',$db);

$sql = "'SELECT * FROM TARIF_AVION WHERE vol='".mysql_real_escape_string($vol)."' AND comp='".mysql_real_escape_string($comp)."' AND cat='".mysql_real_escape_string($cat)."'";

//avec cette requete on va récupérer la référence du vol

$req =mysql_query($sql) or die("'Erreur SQL !'".$sql."''".mysql_error());

$data = mysql_fetch_array($req);

$montant=$quantite*$data['prix'];

// on calcul le montant avec la quantité commandé et le prix de base du billet

$sql2="INSERT INTO panier_avion VALUES('','$ref_a','$num_cli','$date_f','$date_d','$date_c','$quantite','$montant')";

// ici on insert le tout en la base , sauf le premier champ qui est un automatique

$req2 =mysql_query($sql2) or die('Erreur SQL !'.$sql2.' '.mysql_error());

echo 'Vos infos ont été enregistrées en la base de donées.';
mysql_close();

?>

J’espère avoir été claire au niveau de ma demande , car je ne m'y retrouve absolument pas avec l'outil " SESSION " . Je ne sais pas comment on l'utilise, ni ou on l'utilise

Merci d'avance qu'un âme charitable puisse m'aider
tanaka59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 06h19   #2
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 726
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 726
Points : 3 293
Points : 3 293
Salut

On ne sait pas quel est ton but de créer ce site fictif, mais s'il est là dans un but pédagogique comme apprendre à créer un site Web, et bien il y a pas de petits qui ne vont pas, à commencer par le HTML.

Ca fait au moins 10 ans (voire plus) qu'on utilise plus le HTML pour faire de la mise en forme, on utilise essentiellement le CSS.
La raison est que le Web tant à devenir de plus en plus sémantique (On parle de Web sémantique).

Grosso modo, chaque balise à une signification :
On y met un du contenu de type paragraphe dans une balise P si c'est réellement un paragraphe (et non un titre ou une légende).
On y met du contenu tabulaire dans un tableau si c'est réellement des données tabulaires (données comptables, statistiques, etc ...).
Etc, etc ...


En résumer, le code HTML que tu fais n'est pas pertinent car tu n'utilises pas les bonnes balises selon le type de contenu.
De plus tu rajoute de la mise en forme (comme les align="center", valign="middle")
Pour un formulaire par exemple ce serait comme ceci :
Code :
1
2
3
4
5
6
7
8
 
<form action="moncompte.php" method="post">
    <fieldset>
        <legend>Merci de donner votre mot de passe ... blablabla ...</legend>
        <label for="pseudo">Pseudonyme</label>
        <input id="pseudo" type="text" name="pseudo" value="pseudo" />
    </fieldset>
</form>
Pour obtenir l'aspect visuel désiré, il est préférable de créer une feuille de style CSS avec les instructions désirés (police, taille, couleur, marge, etc ...)


Bref ... pour ma part ton support (bouquin ou/et tuto site Web, etc ...) est obsolète, se qui fait que tu te "pollues" l'esprit avec des choses qui ne sont plus à faire et à retenir.
Fin de cette (grande) parenthèse.


Tout d'abord, tu ne dis rien sur le ou les problèmes / anomalies que tu rencontres.
Bref : qu'est ce qui se passe ? Ou qu'est-ce qu'il ne se passe pas ?

Je remarque qu'il manque la balise fermante du formulaire -> </form>
Aussi, tu parle d'une page qui a pour nom moncompte.php (page en Php), or, la page que tu indique dans l'attribut "action" du formulaire est : moncompte.html (Page html).
Ne faudrait il pas mettre : moncompte.php ?

Puis tantôt tu met ceci <?, puis tantôt <?php.
Je te conseille de coder toujours de la même manière, donc d'éviter les fantaisies.
Donc soit l'un, soit l'autre.

Puis as tu lu la doc concernant les SESSION ?
Par ailleurs, pour mieux comprendre le fonctionnement des sessions, fais plutôt des essais simples, basiques.
Il n'y a pas besoin de faire autant de code pour faire ces essais, tout juste 2 ou 3 pages (test1.php, test2.php), 2 ou 3 liens, et 2 ou 3 variables de sessions, et on observe le tout.
En tout cas le principe de base est assez simple.
Lis la doc Php à ce sujet et les exemples :
Les sessions
session_start()
session_set_cookie_params()



Mais encore, n'oublie pas que les sessions reposent sur les cookies (session coté serveur, cookie coté client), ça va de paire.
Regarde la doc, et à mon sens il est bon de définir le cookie Path et le cookie Domain, car c'est très souvent source de problèmes où d’incompréhensions.
Il y aussi ici un forum dédié aux sessions : Forum Session
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h07.


 
 
 
 
Partenaires

Hébergement Web