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

PHP & Base de données Discussion :

Erreur dernier id à récupérer (PHP procédural) [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Autre
    Inscrit en
    Octobre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Octobre 2014
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Erreur dernier id à récupérer (PHP procédural)
    Bonsoir,

    Je crée actuellement mon portfolio et j'y ajoute une insertion d'experience professionnelle (sur mon CV) et j'ai un petit problème, m'enfin une erreur que voilà :
    ( ! ) Notice: Undefined variable: id in C:\wamp\www\Portfolio\ajoutExp.php on line 21
    Call Stack
    # Time Memory Function Location
    1 0.0104 154992 {main}( ) ..\ajoutExp.php:0

    ( ! ) Notice: Undefined variable: id in C:\wamp\www\Portfolio\ajoutExp.php on line 24
    Call Stack
    # Time Memory Function Location
    1 0.0104 154992 {main}( ) ..\ajoutExp.php:0
    Et j'ai vérifié et je pense pas avoir fait d'erreur sur mon code que voilà :

    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
    <?php
    include('connectBDD.php');
    $dateDebut=mysql_real_escape_string($_POST['dateDebut']);
    $dateFin=mysql_real_escape_string($_POST['dateFin']);
    $entreprise=mysql_real_escape_string($_POST['entreprise']);
    $ville=mysql_real_escape_string($_POST['ville']);
    $contrat=mysql_real_escape_string($_POST['contrat']);
    $metier=mysql_real_escape_string($_POST['metier']);
    $requete = 'INSERT INTO exppro (libExp, entreExp, villEntExp, typeContrat, dateDebut, dateFin) VALUES ("'.$metier.'","'.$entreprise.'","'.$ville.'","'.$contrat.'","'.$dateDebut.'","'.$dateFin.'")';
    $result = mysqli_query($lien, $requete)
      or die("Error: ".mysqli_error($lien));
    mysql_insert_id();
    $requete= "SELECT MAX(numExp) AS 'numExp' FROM exppro";
    $result = mysqli_query($lien, $requete) or die("Error: ".mysqli_error($lien));
    $ligne = mysqli_fetch_array($result);					
    while ($ligne = mysqli_fetch_assoc($result)) {
    	if( isset( $ligne["numExp"])){
    		$id=$ligne["numExp"];}}
    echo $id;
    $tache1=mysql_real_escape_string($_POST['tache1']);
    $requete = 'INSERT INTO descriexppro (libDescri, numExpPro) VALUES ("'.$tache1.'",'.$id.')';
    $result = mysqli_query($lien, $requete)
      or die("Error: ".mysqli_error($lien));
    mysql_insert_id();
    $tache2=mysql_real_escape_string($_POST['tache2']);
    $requete = 'INSERT INTO descriexppro (libDescri, numExpPro) VALUES ("'.$tache2.'",'.$id.')';
    $result = mysqli_query($lien, $requete)
      or die("Error: ".mysqli_error($lien));
    mysql_insert_id();
    $tache3=mysql_real_escape_string($_POST['tache3']);
    $requete = 'INSERT INTO descriexppro (libDescri, numExpPro) VALUES ("'.$tache3.'",'.$id.')';
    $result = mysqli_query($lien, $requete)
      or die("Error: ".mysqli_error($lien));
    mysql_insert_id();
    header('Location: cv.php');
    ?>
    Si vous pourriez m'éclaircir ma lanterne car je débute un peu en php

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 381
    Points : 10 410
    Points
    10 410
    Par défaut
    Pourquoi veux-tu récupérer le dernier id ? Si c'est juste pour faire une insertion il suffit de le mettre en auto increment dans ta bdd et de ne pas le mentionner dans ta requête.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Autre
    Inscrit en
    Octobre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Octobre 2014
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    j'ai déjà mis en auto increment dans la BDD (d'où le mysql_insert_id) mais ça me fait ces erreurs...

    et la table descriexppro a le numExpPro en clé étrangère qui correspond à la clé primaire de la table expro

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $id = mysql_insert_id();
    et c'est tout.
    Tout ton bazar de max() va a la poubelle.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Autre
    Inscrit en
    Octobre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Octobre 2014
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    j'ai plus les erreurs, mais maintenant, ça me fait cette erreur :
    Error: Cannot add or update a child row: a foreign key constraint fails (`portfolio`.`descriexppro`, CONSTRAINT `descriexppro_ibfk_1` FOREIGN KEY (`numExpPro`) REFERENCES `exppro` (`numExp`) ON DELETE CASCADE ON UPDATE CASCADE)

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Est-ce que l'inscription dans exppro fonctionne ?
    Tu peux nous montrer le code corrigé ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Autre
    Inscrit en
    Octobre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Octobre 2014
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    oui, cela fonctionne sans problème, ça ajoute bien dans la BDD et ajoute bien l'ID en AI, mais d'après ce qu'il y a de marqué, le $id prend la valeur 0 (j'ai demandé à l’écrire pour voir sa valeur, voir ligne 16) et ça bloque là dessus...

    et mon code est :

    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
    <?php
    include('connectBDD.php');
    $dateDebut=mysql_real_escape_string($_POST['dateDebut']);
    $dateFin=mysql_real_escape_string($_POST['dateFin']);
    $entreprise=mysql_real_escape_string($_POST['entreprise']);
    $ville=mysql_real_escape_string($_POST['ville']);
    $contrat=mysql_real_escape_string($_POST['contrat']);
    $metier=mysql_real_escape_string($_POST['metier']);
    $requete = 'INSERT INTO exppro (libExp, entreExp, villEntExp, typeContrat, dateDebut, dateFin) VALUES ("'.$metier.'","'.$entreprise.'","'.$ville.'","'.$contrat.'","'.$dateDebut.'","'.$dateFin.'")';
    $result = mysqli_query($lien, $requete)
      or die("Error: ".mysqli_error($lien));
    $id = mysql_insert_id();
    echo $id;
    $tache1=mysql_real_escape_string($_POST['tache1']);
    $requete = 'INSERT INTO descriexppro (libDescri, numExpPro) VALUES ("'.$tache1.'",'.$id.')';
    $result = mysqli_query($lien, $requete)
      or die("Error: ".mysqli_error($lien));
    mysql_insert_id();
    $tache2=mysql_real_escape_string($_POST['tache2']);
    $requete = 'INSERT INTO descriexppro (libDescri, numExpPro) VALUES ("'.$tache2.'",'.$id.')';
    $result = mysqli_query($lien, $requete)
      or die("Error: ".mysqli_error($lien));
    mysql_insert_id();
    $tache3=mysql_real_escape_string($_POST['tache3']);
    $requete = 'INSERT INTO descriexppro (libDescri, numExpPro) VALUES ("'.$tache3.'",'.$id.')';
    $result = mysqli_query($lien, $requete)
      or die("Error: ".mysqli_error($lien));
    mysql_insert_id();
    header('Location: cv.php');
    ?>

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu as un mélange de mysql et de mysqli.
    Tu as de plus plein de mysql_insert_id() qui se balladent dans ton code.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Autre
    Inscrit en
    Octobre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Octobre 2014
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    ah problème résolu : c'était le mélange entre mysql et mysqli que wamp n'avait pas apprécié...

    et c'est normal que j'ai plein de mysql_insert_id(), j'en ait besoin d'un par valeur validées dans le formulaire

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Non ce n'est pas normal.
    Tes lignes mysql_insert_id() ne servent à rien et ne font rien.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. [PHP-JS] erreur dans le script php
    Par islem dans le forum Langage
    Réponses: 1
    Dernier message: 04/09/2006, 17h06
  2. erreur de requete sous php mais pas sous mysql
    Par kenny49 dans le forum Requêtes
    Réponses: 21
    Dernier message: 28/06/2006, 16h36
  3. Erreur dans un programme php pour une connexion à une bdd
    Par gaetan.tranvouez dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 12/06/2006, 21h06
  4. [SQL-Server] erreur sur mssql_connect avec php 5.1.4
    Par Yjo dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 04/06/2006, 16h11
  5. Erreur dans mon code PHP
    Par jack_1981 dans le forum Langage
    Réponses: 6
    Dernier message: 12/05/2006, 10h01

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