Petite condition Mysql/php [Résolu/Fermé]

Signaler
Messages postés
126
Date d'inscription
mardi 1 avril 2014
Statut
Membre
Dernière intervention
18 décembre 2014
-
Messages postés
840
Date d'inscription
vendredi 2 novembre 2012
Statut
Membre
Dernière intervention
20 décembre 2015
-
Bonjour, j'ai une page d'inventaire pour placer du matériel dans une salle. J'ai un bouton déroulant pour choisir le matériel et un bouton déroulant pour choisir les salles. Quand je clique sur ajouter l'ajout se fait dans ma table emplacement.

Boutons déroulants :

<?php 
 
include 'fonctions.connect.php';
$id_salle = "SELECT num_salle FROM Salle"; 
$id_mat = "SELECT id_mat FROM Materiel";  
$res = mysql_query($id_salle);  
$res2 = mysql_query($id_mat);
?>
               <br></br>
                 <div> 
                <form action="" method="post" id=test> 
           
                <select name="test1" id="test1"> 
                <option value='-1'>----Choisissez le numéro d'une salle -----</option> 
                <?php 
                while ($row = mysql_fetch_array($res))   
                { 
                $salle = $row['num_salle']; 
                echo "<option value='$salle'>$salle</option>"; 
                }  
                ?> 
                </select> 
                 <br></br>
                <select name="test2" id="test2"> 
                <option value='-1'>----Choisissez l'ID d'un matériel -----</option> 
                <?php 
                while ($row2 = mysql_fetch_array($res2))   
                { 
                $mat = $row2['id_mat']; 
                echo "<option value='$mat'>$mat</option>"; 
                }  
                ?> 
             
                </select>
	 	</div> 
        <br></br>


J'ai ensuite une date de placement à rentrer et mon code php pour l'ajout :

Date de placement : <input type="text" name="date" size=10 <br></br>
<br></br><div>

<!--------------- PHP ajout ----------->
 
 <div> <input type="submit", name="submit" Value="Ajouter"> 
     <?php

include 'fonctions.connect.php';


if (isset($_POST['test1'], $_POST['test2'], $_POST['date'])) 


{

$test1 =  $_POST['test1'];
$test2 =  $_POST['test2'];
$date = $_POST['date'];

$sql = "INSERT INTO emplacement (num_salle,id_mat,date) VALUES ('$test1','$test2','$date' )";

mysql_query($sql) ;

}

?>
             </form></div>
<br></br>
<br></br>


Ce que je voudrais c'est qu'un matériel ne puisse pas être mis dans deux salles différentes ou voir mieux que lorsque qu'il est dans ma table emplacement il ne soit plus en choix dans le select. Si quelqu'un pouvait me montrer le code php qu'il me manque :/ .
Merci d'avance

3 réponses

Messages postés
126
Date d'inscription
mardi 1 avril 2014
Statut
Membre
Dernière intervention
18 décembre 2014

J'ai essayé un petit code comme ceci en dessous de mon

if (isset($_POST['test1'], $_POST['test2'], $_POST['date'])) 



$test = "select * from emplacement where id_mat = '$test2'"
	if ($test == 1){

 echo'Insersion pas possible'

} else {

$sql = "INSERT INTO emplacement (num_salle,id_mat,date) VALUES ('$test1','$test2','$date' )";

mysql_query($sql) ;
}


mais erreur.
Messages postés
840
Date d'inscription
vendredi 2 novembre 2012
Statut
Membre
Dernière intervention
20 décembre 2015
117
Bonjour,
Dans ton IF, tu ne peut pas tester ta valeurs $test comme cela, tu n'a même pas exécuté ta requête. Fait-le et teste ensuite via un mysql_num_rows.

Pour ton Select qui n'affiche pas ceux déjà enregistré c'est possible, il te suffit de rajouter une clausse not in (select ...) où tu récupère la liste des id dans le deuxième select.

Les deux sont complémentaires, il faut mieux faire les deux qu'un seul.
Messages postés
126
Date d'inscription
mardi 1 avril 2014
Statut
Membre
Dernière intervention
18 décembre 2014

Comment jefait pour la clause not in ? jpeux rajouter un truc comme ça ? :

SELECT * FROM materiel WHERE id_mat NOT IN (SELECT DISTINCT id_mat FROM emplacement WHERE 1) 


mais je devrais le mettre ou ?
Messages postés
840
Date d'inscription
vendredi 2 novembre 2012
Statut
Membre
Dernière intervention
20 décembre 2015
117
C'est exactement ça, sauf le WHERE 1 qui ne sert à rien et qui peut donc être enlever.
Tu mets donc cette requête pour le remplissage de ton select, ça empêchera d'afficher ceux déjà enregistré dans une salle.