Select multiple dans un insert

Fermé
Imelda24 - 23 janv. 2017 à 17:40
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 26 janv. 2017 à 14:52
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 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 718
23 janv. 2017 à 20:12
Bonjour,

Tu dois pouvoir faire un truc du genre :

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




0
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 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 718
23 janv. 2017 à 21:51
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 23405 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 décembre 2024 Ambassadeur 1 557
23 janv. 2017 à 22:29
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
mais comment faire pour mettre l'id de chacun a sa place respective
0
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 718
24 janv. 2017 à 08:08
0

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

Posez votre question
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 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 718
24 janv. 2017 à 16:52
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 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 718 > jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024
Modifié par jordane45 le 24/01/2017 à 16:56
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 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024
24 janv. 2017 à 17:08
d'accord
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
Modifié par Reivax962 le 26/01/2017 à 14:53
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