IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

soucis de stockage d'un id en auto incrément dans session


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 7
    Points : 5
    Points
    5
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    en haut de ta page tu mets juste
    session_start();


    et ensuite tu fais un truc du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Non cela ne fonctionne pas...

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    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

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Je vous mets le code en entier. Dites moi ce que vous en pensez s'il vous plaît.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  6. #6
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Essaye en échappant toutes tes variables...

    ce qui donnerait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ;-)

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    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à.

  8. #8
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    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.

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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'");

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/08/2010, 14h55
  2. Création d'un champ "auto-incrémenté" dans une vue
    Par damnn dans le forum Développement
    Réponses: 8
    Dernier message: 20/10/2009, 14h50
  3. Comment obtenir un champs auto incrémenté dans une table DBase IV ?
    Par souminet dans le forum Bases de données
    Réponses: 1
    Dernier message: 11/12/2007, 13h55
  4. Champs virtuel auto incrémenté dans une vue
    Par berceker united dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 19/06/2006, 14h33
  5. Réponses: 3
    Dernier message: 27/11/2005, 20h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo