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

Messages postés
84
Date d'inscription
vendredi 31 octobre 2008
Statut
Membre
Dernière intervention
15 juin 2010
- - Dernière réponse : nautilus99
Messages postés
662
Date d'inscription
vendredi 26 septembre 2008
Statut
Membre
Dernière intervention
18 septembre 2009
- 4 juin 2009 à 09:42
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>
Afficher la suite 

1 réponse

Meilleure réponse
Messages postés
662
Date d'inscription
vendredi 26 septembre 2008
Statut
Membre
Dernière intervention
18 septembre 2009
3
Merci
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...

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 191 internautes nous ont dit merci ce mois-ci

Commenter la réponse de nautilus99