[RESOLU] Utilisation mysql_insert_id

Eléphant du PHP | 167 Messages

07 mai 2013, 09:23

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

Mammouth du PHP | 619 Messages

07 mai 2013, 09:33

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

Eléphant du PHP | 167 Messages

07 mai 2013, 09:36

Merci d'avoir répondu.

Mais comment l'utiliser alors dans mon cas ?

Mammouth du PHP | 619 Messages

07 mai 2013, 09:38

comme indique dans mon premier message :)

si ca marche pas poste ton formulaire

Eléphant du PHP | 167 Messages

07 mai 2013, 09:44

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'

Mammouth du PHP | 619 Messages

07 mai 2013, 09:48

Bonjour,

poste ton formulaire que je vois un peu les champs

Eléphant du PHP | 167 Messages

07 mai 2013, 09:57

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>
     

Mammouth du PHP | 619 Messages

07 mai 2013, 10:05

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>
          

Eléphant du PHP | 167 Messages

07 mai 2013, 10:11

J'ai ceci qui s'affiche Unknown column '' in 'field list'

Mammouth du PHP | 619 Messages

07 mai 2013, 10:14

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>
          

Eléphant du PHP | 167 Messages

07 mai 2013, 10:18

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'

Mammouth du PHP | 619 Messages

07 mai 2013, 10:22

ok donc c'est quand tu clique sur valider que tu as l'erreur ?
Modifié en dernier par ghost5922 le 07 mai 2013, 10:26, modifié 2 fois.

Eléphant du PHP | 167 Messages

07 mai 2013, 10:26

Oui et j'ai ça Unknown column '1' in 'field list'

Mammouth du PHP | 619 Messages

07 mai 2013, 10:28

ok tu peu poste la structure de ta table stp

Eléphant du PHP | 167 Messages

07 mai 2013, 10:34

Ç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');";
Modifié en dernier par NUAGE le 07 mai 2013, 10:37, modifié 2 fois.