Page 1 sur 2

Utilisation mysql_insert_id

Posté : 07 mai 2013, 09:23
par NUAGE
Bonjour à tous,

J'ai un petit problème et j'ai besoin de votre aide

J'ai deux tables, Etablissement et Etudiant

Etablissement(idEtablissement, nomEtablissement, adresse, cp, ville);
Etudiant(idEtudiant, nomEtudiant, prenomEtudiant, email, idEtablissement);


Quand je veux insérer un étudiant, j'ai les champs nom, prenom et etablissement sous forme de liste déroulante issu de la table etablissement.

Met quand j'insère un étudiant, l'idEtudiant est incrémenter mais celui de idEtablissement est à zéro en sachant que c'est un établissement pris de la liste déroulante.
 include("connect.php");
$nomEtudiant=isset($_POST['nomEtudiant'])?$_POST['nomEtudiant']:"";
$prenomEtudiant=isset($_POST['prenomEtudiant'])?$_POST['prenomEtudiant']:"";
$email=isset($_POST['email'])?$_POST['email']:"";
$idEtablissement=mysql_insert_id();
 
$sql= "INSERT INTO `Etudiant` (`idEtudiant`, `nomEtudiant`, `prenomEtudiant`, `email`, `idEtablissement`) VALUES (' ', '$nomEtudiant', '$prenomEtudiant', '$email', `$idEtablissement`);";
  $requete = mysql_query($sql) or die( mysql_error() ) ;


if($requete)
  {
    echo("L'insertion a été correctement effectuée") ;
  }
  else
  {
    echo("L'insertion a échouée") ;
  } 

?>
Merci de m'aider svp

Re: Utilisation mysql_insert_id

Posté : 07 mai 2013, 09:33
par ghost5922
Bonjour,

tu dois faire erreur avec la fonction mysql_insert_id(); elle permet de récupérer l'id qui vient d’être insérai en gros tu fais un insert et dernier tu as besoin de récupérer l'id de cette ligne alors tu utilise mysql_insert_id();

http://php.net/manual/fr/function.mysql-insert-id.php

toi tu veux juste recuperer la valeur du champ etablissement du coup au lieu de
$idEtablissement=mysql_insert_id();
c'est plutot
$idEtablissement=$_POST['etablissement'];
si tu pouvais poste ton formulaire

Re: Utilisation mysql_insert_id

Posté : 07 mai 2013, 09:36
par NUAGE
Merci d'avoir répondu.

Mais comment l'utiliser alors dans mon cas ?

Re: Utilisation mysql_insert_id

Posté : 07 mai 2013, 09:38
par ghost5922
comme indique dans mon premier message :)

si ca marche pas poste ton formulaire

Re: Utilisation mysql_insert_id

Posté : 07 mai 2013, 09:44
par NUAGE
Je ne l'avais pas vu désolé :oops:

Sinon j'ai testé mais ça me met Notice: Undefined index: etablissement avec Unknown column '' in 'field list'

Re: Utilisation mysql_insert_id

Posté : 07 mai 2013, 09:48
par ghost5922
Bonjour,

poste ton formulaire que je vois un peu les champs

Re: Utilisation mysql_insert_id

Posté : 07 mai 2013, 09:57
par NUAGE
Le voici :
<form name="ajout" action="insertionetudiant2.php" method="POST">
            <table>
            
            <tr>            
            <td><label for="nomEtudiant"><strong>Nom de l'étudiant :</strong></label></td>
            <td><input type="text" name="nomEtudiant" required title="Entrez ici le nom de l'étudiant"/></td>
            </tr>         


            <tr>
            <td><label for="prenomEtudiant"><strong>Prénom de l'étudiant :</strong></label></td>
            <td><input type="text" name="prenomEtudiant"  required title="Entrez ici le prénom de l'étudiant"> </td>
            </tr>
            
 

            <tr>
            <td><label for="email"><strong>E-mail :</strong></label></td>
            <td><input type="email" name="email"  required title="Entrez ici l'e-mail de l'étudiant"> </td>
            </tr>
            
         

       <tr>
            <td><label for="Etablissement"><strong>Etablissement:</strong></label></td>
            <td><form><select  type="submit" name="nom">
       <?php

require("connect.php");
$dsn="mysql:dbname=".BASE.";host=".SERVER;
    try{
      $connexion=new PDO($dsn,USER,PASSWD);
    }
    catch(PDOException $e){
      printf("Échec de la connexion : %s\n", $e->getMessage());
      exit();
    }
             $requete="select nomEtablissement, idEtablissementfrom Etablissement";
             if(!$connexion->query($requete)) echo "Pb d'accès à la table";
else{
        ?>

                <?php
        foreach ($connexion->query($requete) as $row){

           echo "<option value=".$row['idEtablissement'].">".$row['nomEtablissement']."</option>";
           
}
}      
?>     
         </select>
      <a href="insertionetablissement1.php">Ajouter un établissement</a>
  </form></td></tr>
        
</table>
          <table>
            <br/><br/>
            <input type="submit" name="register" value="Ajouter"/>
            <input type="reset" name="Annuler" value="Annuler"/> 
            </table>
     

Re: Utilisation mysql_insert_id

Posté : 07 mai 2013, 10:05
par ghost5922
Bonjour,

test ceci
<?php
 include("connect.php");
$nomEtudiant=isset($_POST['nomEtudiant'])?$_POST['nomEtudiant']:"";
$prenomEtudiant=isset($_POST['prenomEtudiant'])?$_POST['prenomEtudiant']:"";
$email=isset($_POST['email'])?$_POST['email']:"";
$idEtablissement=isset($_POST['idEtablissement'])?$_POST['idEtablissement']:"";
 
$sql= "INSERT INTO `Etudiant` (`nomEtudiant`, `prenomEtudiant`, `email`, `idEtablissement`) VALUES ('$nomEtudiant', '$prenomEtudiant', '$email', `$idEtablissement`);";
  $requete = mysql_query($sql) or die( mysql_error() ) ;


if($requete)
  {
    echo("L'insertion a été correctement effectuée") ;
  }
  else
  {
    echo("L'insertion a échouée") ;
  } 

?> 
<form name="ajout" action="insertionetudiant2.php" method="POST">
            <table>
            
            <tr>            
            <td><label for="nomEtudiant"><strong>Nom de l'étudiant :</strong></label></td>
            <td><input type="text" name="nomEtudiant" required title="Entrez ici le nom de l'étudiant"/></td>
            </tr>         


            <tr>
            <td><label for="prenomEtudiant"><strong>Prénom de l'étudiant :</strong></label></td>
            <td><input type="text" name="prenomEtudiant"  required title="Entrez ici le prénom de l'étudiant"> </td>
            </tr>
            
 

            <tr>
            <td><label for="email"><strong>E-mail :</strong></label></td>
            <td><input type="email" name="email"  required title="Entrez ici l'e-mail de l'étudiant"> </td>
            </tr>
            
         

       <tr>
            <td><label for="Etablissement"><strong>Etablissement:</strong></label></td>
            <td><select name="idEtablissement">
  <?php

require("connect.php");
$dsn="mysql:dbname=".BASE.";host=".SERVER;
   try{
     $connexion=new PDO($dsn,USER,PASSWD);
   }
   catch(PDOException $e){
     printf("Échec de la connexion : %s\n", $e->getMessage());
      exit();
    }
             $requete="select nomEtablissement, idEtablissementfrom Etablissement";
             if(!$connexion->query($requete)) echo "Pb d'accès à la table";
else{
        ?>

                <?php
       foreach ($connexion->query($requete) as $row){

           echo "<option value=".$row['idEtablissement'].">".$row['nomEtablissement']."</option>";
           
}
}      
?>

        
         </select>
      <a href="insertionetablissement1.php">Ajouter un établissement</a>
  </td></tr>
        
</table>
          <table>
            <br/><br/>
            <input type="submit" name="register" value="Ajouter"/>
            <input type="reset" name="Annuler" value="Annuler"/> 
            </form>
            </table>
          

Re: Utilisation mysql_insert_id

Posté : 07 mai 2013, 10:11
par NUAGE
J'ai ceci qui s'affiche Unknown column '' in 'field list'

Re: Utilisation mysql_insert_id

Posté : 07 mai 2013, 10:14
par ghost5922
c'est a l'afficage ou insert ?
<form name="ajout" action="insertionetudiant2.php" method="POST">
            <table>
            
            <tr>            
            <td><label for="nomEtudiant"><strong>Nom de l'étudiant :</strong></label></td>
            <td><input type="text" name="nomEtudiant" required title="Entrez ici le nom de l'étudiant"/></td>
            </tr>         


            <tr>
            <td><label for="prenomEtudiant"><strong>Prénom de l'étudiant :</strong></label></td>
            <td><input type="text" name="prenomEtudiant"  required title="Entrez ici le prénom de l'étudiant"> </td>
            </tr>
            
 

            <tr>
            <td><label for="email"><strong>E-mail :</strong></label></td>
            <td><input type="email" name="email"  required title="Entrez ici l'e-mail de l'étudiant"> </td>
            </tr>
            
         

       <tr>
            <td><label for="Etablissement"><strong>Etablissement:</strong></label></td>
            <td><select name="idEtablissement">
  <?php

require("connect.php");
$dsn="mysql:dbname=".BASE.";host=".SERVER;
   try{
     $connexion=new PDO($dsn,USER,PASSWD);
   }
   catch(PDOException $e){
     printf("Échec de la connexion : %s\n", $e->getMessage());
      exit();
    }
             $requete="select nomEtablissement, idEtablissement from Etablissement";
             if(!$connexion->query($requete)) echo "Pb d'accès à la table";
else{
        ?>

                <?php
       foreach ($connexion->query($requete) as $row){

           echo "<option value=".$row['idEtablissement'].">".$row['nomEtablissement']."</option>";
           
}
}      
?>

        
         </select>
      <a href="insertionetablissement1.php">Ajouter un établissement</a>
  </td></tr>
        
</table>
          <table>
            <br/><br/>
            <input type="submit" name="register" value="Ajouter"/>
            <input type="reset" name="Annuler" value="Annuler"/> 
            </form>
            </table>
          

Re: Utilisation mysql_insert_id

Posté : 07 mai 2013, 10:18
par NUAGE
J'ai même modifié for="Etablissement" par
 <tr>
            <td><label for="idEtablissement"><strong>Etablissement:</strong></label></td>
            <td><select name="idEtablissement">
Une fois que je teste mon formulaire en remplissant les champs, ça m'affiche Unknown column '' in 'field list'

Re: Utilisation mysql_insert_id

Posté : 07 mai 2013, 10:22
par ghost5922
ok donc c'est quand tu clique sur valider que tu as l'erreur ?

Re: Utilisation mysql_insert_id

Posté : 07 mai 2013, 10:26
par NUAGE
Oui et j'ai ça Unknown column '1' in 'field list'

Re: Utilisation mysql_insert_id

Posté : 07 mai 2013, 10:28
par ghost5922
ok tu peu poste la structure de ta table stp

Re: Utilisation mysql_insert_id

Posté : 07 mai 2013, 10:34
par NUAGE
Ça marche ! Merci beaucoup, c'était tout simplement un problème de ' ', j'avais mis des `` autour de idEtablissement dans la requête... #-o
$sql= "INSERT INTO `Etudiant` (`nomEtudiant`, `prenomEtudiant`, `email`, `idEtablissement`) VALUES ('$nomEtudiant', '$prenomEtudiant', '$email', `$idEtablissement`);";
Solution :
$sql= "INSERT INTO `Etudiant` (`nomEtudiant`, `prenomEtudiant`, `email`, `idEtablissement`) VALUES ('$nomEtudiant', '$prenomEtudiant', '$email', '$idEtablissement');";