Select multiple dans un insert

Imelda24 -  
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Mon probleme est celui-ci :

dans ma base g une table materiel qui contient 3 type de materiel et une autre table mainte qui a un champs matériel et une cle étrangere id_materiel de la table matériel, quand j'insere dans la table mainte si dans le champs matériel g ordi j'aimerais que dans le champs id_materiel de la table mainte qu'il mettre l'id qui correspond a l'ordi dans la table materiel dans le champs id_materiel . et ainsi de suite je c comment faire pour un type mais pas pour les 3 je pense que je dois mettre une boucle mais j'arrive pas a le resoudre. svp g besoin de votre aide.
<?php 
                    $sql = "SELECT * FROM Materiels";
    		        $query = sqlsrv_query($conn, $sql); 
    		     ?>
    		        <td>
    		           <label><font size="2">Materiel</font></label> 
    		        </td>
    		        <td>
	    		        <select name="Materiels_id" size="1">
	    		            <option value="0"> </option>
	    		           	<?php
	    		               while ($donnees = sqlsrv_fetch_array($query)){ 
	    		         	?>

	    		         	<option value="<?php echo $donnees ['id_materiels']; ?>"><?php echo $donnees ['Types_materiels']; ?></option>

	    		         	<?php
	    		                }//end while
	    		           	?>


et pour le l'insertion

$sql= "INSERT INTO Mainte( Dep, Materiel,  Materiels_id) VALUES (?, ?,(select id_materiels FROM Materiels WHERE Types_Materiels='Ordinateurs'))";

6 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

Tu dois pouvoir faire un truc du genre :

INSERT INTO Mainte 
 SELECT ?,?,id_materiels 
 FROM Materiels 
 WHERE Types_Materiels='Ordinateurs'))




0
Imelda24
 
je comprends pas trop bien .

y'a 3 type de materiel 1-ordi , 2-imp,3-scr
dans la table mainte si le champs materiel contient ordi je dois prendre l'id de l'ordi ds la table materiel pour le mettre dans le champs id_materiel dans Mainte, mais c = a imp je prends l'id imp sinon scr. malheureusement y'a pas de boucle if voila mon plus grand prob.
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Montre nous un dump de tes tables et dis nous ce que tu souhaites obtenir exactement (en te basant sur des donnees concretes de ton dump)
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonsoir, je pense que tu peux faire ainsi:
$sql= "INSERT INTO Mainte ( Dep, Materiel,  Materiels_id)
 SELECT ?,?,id_materiels 
 FROM Materiels 
 WHERE Types_Materiels=?";

Tu ne nous montres pas le code avant et après l'insertion. Les trois "?" sont à remplacer, le premier par la valeur que tu veux pour Dep, le deuxième et le troisième, deux fois par la valeur que tu veux pour Materiel.
Si j'étais toi, je ne mettrais pas le champ Materiel dans la table Mainte, parce qu'il est déjà présent dans la table Materiels, et que Materiels_id suffit pour lier les deux tables.
0
Imelda24
 
mais comment faire pour mettre l'id de chacun a sa place respective
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Imelda24
 
bonjour,

je laisse l'insertion pour un instant. mais g un autre probleme ca concerne la connection ceci est mon code:

 <?php

    require("connect.php");
        if(isset($_POST['username'])AND isset($_POST['Motd_passe'])){


        $username=htmlspecialchars($_POST['username']);
        $Motd_passe=htmlspecialchars($_POST['Motd_passe']);
       

       
        $requete="SELECT * FROM administrateur";
        $query=sqlsrv_query($conn,$requete);
        while($donnees=sqlsrv_fetch_array($query))
        { 
          if($donnees['username']==$username && $donnees['Motd_passe']==$Motd_passe)
          {  
            session_start();
            $_SESSION['id']=$donnees['id'];
            $_SESSION['admin']=$username;
         
           header("Location:../Base/ordinateur/production/index_o.php");
           
          }
        }
       sqlsrv_close($query);
       

}

?>
   

<!DOCTYPE html>
<html lang="en">
  <head>

<body>

                      
          <div class="right_col" role="main" >
            <form method="POST" action="">

          
			<fieldset>
           <div style="margin:20%";>
              <table >
              <tr>
              <td>Login: </td>
              <td>  <input type="text" name="username" required>
              </td>
              </tr>

              <tr>
              <td> Mot de Passe: </td>
              <td><input type="password" name="Motd_passe" required></td>
              </tr>

              <tr><td>
              <button type="submit"               Value="Connection">Connection</button>
            </div>    
            

            </td></tr>
            	
             </table>
             </fieldset>
          

            </form>
         </div>

  </body>
</html>



quand je rentre l'username et le pass je reste toujours dans la meme page la redirection n'est pas faite. toute aide est la bienvenue.

Cordialement,

Imelda
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,
Merci d'ouvrir une discussion spécifique pour cette nouvelle question .....

Cela permet de mieux s'y retrouver dans le forum .... et de ne pas se mélanger avec ta question initiale.
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
De plus ... cette nouvelle question concerne du code PHP et non une REQUETE de mysql server....
Il te faut donc la poster dans le forum PHP
0
Imelda24 > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
d'accord
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Bonjour,

Pardon mais j'ai l'impression d'avoir raté quelque chose au vu des réponses...
Ton id_materiels que tu veux insérer, il ne faut surtout pas le requêter lors de l'insertion ! Il t'est donné par le <select> dans lequel l'utilisateur a choisi son type de materiel...
<select name="Materiels_id" size="1">
    <option value="0"> </option>
<?php
    while ($donnees = sqlsrv_fetch_array($query)){ 
?>
    <option value="<?php echo $donnees ['id_materiels']; ?>"><?php echo $donnees ['Types_materiels']; ?></option>


Du coup ta requête d'insertion devient tout simplement
$sql= "INSERT INTO Mainte( Dep, Materiel,  Materiels_id) VALUES (?, ?, ?)";

Où le troisième "?" sera, comme le Dep et le Materiel, issu du formulaire $_POST['Materiels_id'];

Xavier
0