Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
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 28/03/2008, 13h53   #1
Invité de passage
 
Inscription : octobre 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 7
Points : 2
Points : 2
Par défaut soucis de stockage d'un id en auto incrément dans session

Bonjour à vous,

Mon soucis est le suivant. J'ai une base de donnée avec quatre tables que je souhaite remplir en une seule fois. Il y a donc le code suivant :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$req1 = mysql_query ("INSERT INTO `domaines` (`ndd`,`pop`,`smtp`,`nbre_mails`) VALUES ('$_POST[nd]','$_POST[pop]','$_POST[smtp]',
'$_POST[nbre_mails]')");
 
$recup_id_ndd = mysql_insert_id ();
 
$req2 = mysql_query ("INSERT INTO `clients` (`nom`,`prenom`,`adresse`,`cp`,`ville`,`tel`,`portable`,`id_ndd`,`id_mail_princ`) VALUES 
('$_POST[nc]','$_POST[pc]','$_POST[adresse]','$_POST[cp]','$_POST[ville]','$_POST[tel]','$_POST[portable]','$recup_id_ndd','$recup_id_mail')
");
 
$recup_id_clt = mysql_insert_id (); 
 
$req3 = mysql_query ("INSERT INTO `mail`  (`mail`,`mail_mdp`,`date`,`mail_princ`,`id_client`) VALUES ('$_POST[mail_princ]','$_POST[mp]',
'$_POST[time]','1','$recup_id_clt')");
 
$recup_id_mail = mysql_insert_id ();
Le soucis c'est que la récupération de l'id_mail doit se faire également dans la table clients et l'id_mail_principal doit se faire dans la table domaines. J'ai donc pensé passer par le stockage dans trois sessions.
Code :
1
2
3
4
5
6
7
<?php
session_start();
 
	$_session['id_ndd'] = $recup_id_ndd;
	$_session['id_mail'] = $recup_id_mail;
	$_session['id_client'] = $recup_id_client;
?>
Que j'ai placé tout en haut de ma page .php, mais quand je veux visualisé ce que contient ces sessions il n'y a rien dedans.

Pouvez vous m'aider s'il vous plaît
Egaïram est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2008, 14h00   #2
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
en haut de ta page tu mets juste
session_start();


et ensuite tu fais un truc du style
Code :
1
2
3
4
5
 
$req1 = mysql_query ("INSERT INTO `domaines` (`ndd`,`pop`,`smtp`,`nbre_mails`) VALUES ('$_POST[nd]','$_POST[pop]','$_POST[smtp]',
'$_POST[nbre_mails]')");
 
$_SESSION['id_ndd'] = mysql_insert_id ();
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2008, 15h19   #3
Invité de passage
 
Inscription : octobre 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 7
Points : 2
Points : 2
Non cela ne fonctionne pas...
Egaïram est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2008, 16h38   #4
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
Citation:
Envoyé par Egaïram Voir le message
Non cela ne fonctionne pas...
tu peux preciser.... il y a une erreur? rien ne s'affiche?

tu peux faire un print_r($_SESSION) pour voir ce que tu as en session
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2008, 16h44   #5
Invité de passage
 
Inscription : octobre 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 7
Points : 2
Points : 2
Je vous mets le code en entier. Dites moi ce que vous en pensez s'il vous plaît.

Code :
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
113
114
115
116
117
118
<?php
session_start();
?>
<?php
	include ('inc/php/doctype.php');
	include ('inc/php/connexion.php');
	$_POST['time'] = date("j M Y H:i:s ");
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<?php
	include ('inc/php/head.php');
?>
	<body>
		<div class="admin">
			<h1>Administration générale</h1>
			<br />
			<br />
			<form id="form1" action="insert_ndd.php" method="post" enctype="application/x-www-form-urlencoded">
			  <fieldset>
				<legend>Formulaire d'ajout d'un nom de domaine</legend>
				<br />
					<label for="nd">Nom de domaine :</label>
					<input type="text" name="nd" id="nd" size="40" />
				<br />
					<label for="pop">Adresse POP :</label>
					<input type="text" name="pop" id="pop" size="40" class="calage"/>
				<br />
					<label for="smtp">Adresse SMTP :</label>
					<input type="text" name="smtp" id="smtp" size="40" class="calage1" />
				<br />
					<label for="nbre_mails">Nombre de mails :</label>
					<input type="text" name="nbre_mails" id="nbre_mails" size="40" />
				<br />
					<label for="mail_princ">Mail principal :</label>
					<input type="text" name="mail_princ" id="mail_princ" size="40" class="calage" />
				<br />
					<label for="mp">Mot de passe :</label>
					<input type="text" name="mp" id="mp" size="40" class="calage" />
				<br />
				<br />
					<label for="text"><strong>Concernant le client :</strong></label>
					<input type="hidden" id="text" name="text" />
				<br />
					<label for="nc">Nom client :</label>
					<input type="text" name="nc" id="nc" size="40" class="calage4" />
				<br />
					<label for="pc">Prénom client :</label>
					<input type="text" name="pc" id="pc" size="40" />
				<br />
					<label for="adresse">Adresse :</label>
					<input type="text" name="adresse" id="adresse" size="40" class="calage13" />
				<br />
					<label for="cp">Code Postal :</label>
					<input type="text" name="cp" id="cp" size="40" class="calage1" />
				<br />
					<label for="ville">Ville :</label>
					<input type="text" name="ville" id="ville" size="40" class="calage14" />
				<br />
					<label for="tel">Téléphone :</label>
					<input type="text" name="tel" id="tel" size="40" class="calage" />
				<br />
					<label for="portable">Portable :</label>
					<input type="text" name="portable" id="portable" size="40" class="calage15" />
				<br />
 
					<label for="bouton" class="calage">&nbsp;</label>
					<input type="submit" name="bouton" id="bouton" value="Insérer" class="submit" />
				</fieldset>
			</form>
		<?php
			if (
				!empty ($_POST['nd'])
				&& !empty ($_POST['pop'])
				&& !empty ($_POST['smtp'])
				&& !empty ($_POST['nbre_mails']) && is_numeric($_POST ['nbre_mails'])
				&& !empty ($_POST['mail_princ'])
				&& !empty ($_POST['mp'])
				&& isset($_POST['bouton']))
			{
 
				/* $req = mysql_query ("INSERT INTO `general` (`id_ndd`,`id_mail`,`id_client`,`id_ref`) VALUES ('$recup_id_ndd','$recup_id_mail','$recup_id_clt','$recup_id_ref')"); */
 
				$req1 = mysql_query ("INSERT INTO `domaines` (`ndd`,`pop`,`smtp`,`nbre_mails`,`id_mail_princ`) VALUES ('$_POST[nd]','$_POST[pop]','$_POST[smtp]','$_POST[nbre_mails]','$_SESSION['id_mail']')");
 
				$_SESSION['id_ndd'] = mysql_insert_id ();
 
				$req2 = mysql_query ("INSERT INTO `clients` (`nom`,`prenom`,`adresse`,`cp`,`ville`,`tel`,`portable`,`id_ndd`) VALUES ('$_POST[nc]','$_POST[pc]','$_POST[adresse]','$_POST[cp]','$_POST[ville]','$_POST[tel]','$_POST[portable]','$_SESSION[id_ndd]'");
 
				$_SESSION['id_mail'] = mysql_insert_id (); 
 
				$req3 = mysql_query ("INSERT INTO `mail`  (`mail`,`mail_mdp`,`date`,`mail_princ`,`id_client`,id_mail`) VALUES ('$_POST[mail_princ]','$_POST[mp]','$_POST[time]','1','$_SESSION[id_client]','$_SESSION['id_mail']')");
 
				$_SESSION['id_client'] = mysql_insert_id ();
//affichage pour voir si données bien enregistrées
				echo '<br /> req1 : ' .$req1. '<br /> req2 : ' .$req2. '<br /> req3 : ' .$req3. '<br />';
				if($req1 == 1 && $req2 == 1 && $req3 == 1){
					$mess='Le nom de domaine <strong>' .$_POST ['nd']. '</strong> a bien été enregistré.';
				}
				else{
					$mess='L\'enregistrement du nom de domaine <strong>' .$_POST['nd']. '</strong> a echoué.';
				}
//récap de et affichage des données pour clients
				$mess .= "\n".'<br />' ."\n";
				$mess .= 'nom de domaine : <strong>' .$_POST['nd']. '</strong><br />' ."\n";
				$mess .= 'adresse pop : <strong>' .$_POST['pop']. '</strong><br />' ."\n";
				$mess .= 'adresse smtp : <strong>' .$_POST['smtp']. '</strong><br />' ."\n";
				$mess .= 'nombre d\'emails : <strong>' .$_POST['nbre_mails']. '</strong><br />' ."\n";
				$mess .= 'adresse principale : <strong>' .$_POST['mail_princ']. '</strong><br />' ."\n";
				$mess .= 'mot de passe : <strong>' .$_POST['mp']. '</strong><br />' ."\n";
				$mess .= 'date création : <strong>' .$_POST['time']. '</strong><br />' ."\n";
				echo $mess.'<br />';
			}
		?>
		<a href="insert_ndd.php" >Ajouter un nouveau nom de domaine.</a><br />
		<a href="index.php" >Retour accueil administration.</a>
		</div>
	</body>
</html>
En fait ce qui se passe c'est que dans ma bdd il y a que le nom de domaine qui se rempli et encore pas en entier car l'id_mail_princ ne se rempli pas
Egaïram est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2008, 09h45   #6
Membre Expert
 
Avatar de darkstar123456
 
Inscription : mars 2008
Messages : 1 180
Détails du profil
Informations personnelles :
Âge : 28
Localisation : Belgique

Informations forums :
Inscription : mars 2008
Messages : 1 180
Points : 1 357
Points : 1 357
Envoyer un message via Skype™ à darkstar123456
Essaye en échappant toutes tes variables...

ce qui donnerait :

Code :
1
2
 
mysql_query ("INSERT INTO `domaines` (`ndd`,`pop`,`smtp`,`nbre_mails`,`id_mail_princ`) VALUES ('".$_POST["nd"]."','".$_POST["pop"]."','".$_POST["smtp"]."','".$_POST["nbre_mails"]."','".$_SESSION["id_mail"]."')");
En corrigeant ton code je me suis apperçu que le problème vient bien de là, car en effet le nom même de la variable (id_mail) était échappé par des ' alors que la variable en elle-même ($_SESSION["id_mail"]) ne l'était pas ;-)
darkstar123456 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2008, 01h48   #7
Invité de passage
 
Inscription : octobre 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 7
Points : 2
Points : 2
Désolé mais la variable id_mail n'est pas échappée par des ' mais par des ` ce qui correspond à des quote mysql et non à des quotes php, donc le soucis ne peut (je pense) pas venir de là.
Egaïram est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2008, 01h52   #8
Membre Expert
 
Avatar de darkstar123456
 
Inscription : mars 2008
Messages : 1 180
Détails du profil
Informations personnelles :
Âge : 28
Localisation : Belgique

Informations forums :
Inscription : mars 2008
Messages : 1 180
Points : 1 357
Points : 1 357
Envoyer un message via Skype™ à darkstar123456
id_mail n'est pas une variable, c'est un champ. Merci de lire, dans son entièreté, ce qu'on écrit et d'essayer avant de dire que ça marche pas.
darkstar123456 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2008, 13h44   #9
Invité de passage
 
Inscription : octobre 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 7
Points : 2
Points : 2
J'ai trouvé la solution. Il suffisait d'utiliser un UPDATE pour que ça se passe bien ^^.
Merci de vos réponses.

Je vous donne la soluce au cas où certain(e)s auraient le même soucis.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
$req1 = mysql_query ("INSERT INTO `domaines` (`ndd`,`pop`,`smtp`,`nbre_mails`) VALUES ('$_POST[nd]','$_POST[pop]','$_POST[smtp]','$_POST[nbre_mails]')");
		$ndd = mysql_insert_id ();
 
				$req2 = mysql_query ("INSERT INTO `clients` (`nom`,`prenom`,`adresse`,`cp`,`ville`,`tel`,`portable`,`id_ndd`) VALUES ('$_POST[nc]','$_POST[pc]','$_POST[adresse]','$_POST[cp]','$_POST[ville]','$_POST[tel]','$_POST[portable]','$ndd')");
		$clt = mysql_insert_id (); 
 
				$req3 = mysql_query ("INSERT INTO `mail`  (`mail`,`mail_mdp`,`date`,`mail_princ`,`id_ndd`) VALUES ('$_POST[mail_princ]','$_POST[mp]','$_POST[time]','1','$ndd')");
		$mail = mysql_insert_id ();
 
				$req4 = mysql_query ("UPDATE `domaines` SET `id_mail_princ`='$mail' WHERE `id`='$ndd'");
 
				$req5 = mysql_query ("UPDATE `clients` SET `id_mail`='$mail' WHERE `id`='$clt'");
Egaïram 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 23h02.


 
 
 
 
Partenaires

Hébergement Web