Problème ajout données dans la base avec liste déroulante liée [Résolu]

Signaler
Messages postés
84
Date d'inscription
vendredi 31 octobre 2008
Statut
Membre
Dernière intervention
15 juin 2010
-
nautilus99
Messages postés
662
Date d'inscription
vendredi 26 septembre 2008
Statut
Membre
Dernière intervention
18 septembre 2009
-
Voici mon problème, j'ai une petite base de données avec 3 tables, une avec des batiments avec comme champs code_bat et nom_bat une autre table salles avec code_salle, lib_salle et en clé étrangère code_bat et une dernière table portes avec code_porte, lib_porte et en clé étrangère code_salle.

mon but est de faire ajouter une porte dans la base de données. pour cela je fais choisir un batiment a l'utilisateur grâce à une liste déroulante puis en fonction de son choix une autre liste déroulante apparait avec les salles du batiments sélectionnées puis ensuite je fais saisir à l'utilisateur le code de la nouvelle porte et son libéllé et il n'a plus qu'a cliqué sur le bouton envoyer qui envoi le code_porte le lib_porte et le code_salle dans la table portes.

Mais mon problème c'est qu'une fois envoyé et que je vais voir si tout est bien rentré dans le champ code_salle de la table porte je me retouve avec <html><?php
if(isset($_POST['ok'])&& isset($_POST['salle'])&& $_POST['salle']!="")
{
$batiment_selectionnee=$_POST['batiment'];
$salle_selectionnee=$_POST['salle'];
}
???>Trouver une salle
<?php
$rech_batiment=mysql_query("select code_bat, nom_bat from batiments order by code_bat")or die (mysql_error());

//création de 2 tableaux
$code_batiment=array();
$batiment=array();

//onactive un compteur pour les batiments
$nb_batiment=0;
if($rech_batiment!=false)
{
while($ligne=mysql_fetch_assoc($rech_batiment))
{
//onremplit les 2 tableaux avec le code et le nom des batiments retournés par la requête
array_push($code_batiment,$ligne['code_bat']);
array_push($batiment, $ligne['nom_bat']);

//incrémentation du compteur
$nb_batiment++;
}
}
???><!--Début du formulaire--><form method="post" id="chgsalle" action="index.php"><!--première liste déroulante contenant le nom des batiments-->
Sélectionner un batiment :
<select name="batiment" id="batiment" onchange="document.forms['chgsalle'].submit();"><option value="-1">--Choississez un batiment --</option><?php
for($i=0;$i<$nb_batiment;$i++)
{
???><option value="<?php echo($code_batiment[$i]);?>"><?php echo((isset($idr)&& $idr==$code_batiment[$i])?" selected="selected"" :null); ???>><?php echo($batiment[$i]);???></option><?php
}
???></select><!-- fin de la liste déroulante--><?php
//on commence par vérifier si on a envoyé un numéro de batiment et le cas échéant s'il est différent de -1
if(isset($idr)&& $idr!=-1)
{
//création de la requête pour avoir les salles de ce batiment
$rech_salle=mysql_query("select code_salle,lib_salle from salles where code_bat=".$idr." order by code_bat")or die (mysql_error());

//compteur pour les salles
$nb_salle=0;

//création de deux tableaux pour les code et les libéllé des salles
$code_salle=array();
$numero_salle=array();

//on va remplir le tableau du libéllé
while($ligne_l=mysql_fetch_assoc($rech_salle))
{
array_push($numero_salle,$ligne_l['lib_salle']);

//incrémentation du compteur
$nb_salle++;
}

//maintenant construction de la liste déroulante
???>

Sélectionner une salle :
<select name="salle" id="salle"><?php
for($j=0;$j<$nb_salle;$j++)
{
???><option value="<?php echo($code_salle[$j]); ?>"><?php echo((isset($salle_selectionnee))? "selected="selected"":null);???>><?php echo ($numero_salle[$j]);???></option><?php
}
???></select><!--fin de la deuxième liste déroulante--><?php
}
???><!--bouton submit du formulaire-->Code Porte * :

<!--On veut une saisi numérique de 2 caractères ou moins-->" />, Libéllé porte * : <!--On veut une saisi alpha-numérique de 100 caractères ou moins-->

" />
<?php
// on teste l'existence de nos variables. On teste également si elles ne sont pas vides
if(isset($_POST['code']) && isset($_POST['lib']) && isset($_POST['salle']) && !empty($_POST['code']) && !empty($_POST['lib']) && !empty($_POST['salle'])){
// on recherche si ce code est déjà utilisé par un autre site de la commune
$requete = 'SELECT count(*) FROM portes WHERE code_porte="'.mysql_escape_string($_POST['code']).'"';
$resultat = mysql_query($requete) or die('Erreur SQL !
'.$requete.'
'.mysql_error());
$donnees = mysql_fetch_array($resultat);

if ($donnees[0] == 0) {
$sql = 'INSERT INTO portes VALUES("'.mysql_escape_string($_POST['code']).
'", "'.mysql_escape_string($_POST['lib']).
'", "'.mysql_escape_string($_POST['salle']).
'")';

mysql_query($sql) or die('Erreur SQL !'.$sql.'
'.mysql_error());


}else{
echo $erreur = "";
}
}
?>



</form></html>

1 réponse

Messages postés
662
Date d'inscription
vendredi 26 septembre 2008
Statut
Membre
Dernière intervention
18 septembre 2009

Bonjour,

Et en affichant  par un echo la requête SQL en question et en la testant en direct via le terminal mysql ou phpmyadmin, quel est le message retourné ?

En général, une requête qui ne s'exécute pas, il y a une raison et le die dans un script ne sert à rien, puisqu ece n'est pas un échec de connexion au sens propre...