Page 1 sur 2

probleme pour le value d'une balise select-> option

Posté : 14 nov. 2012, 13:52
par pandore1807
Bonjour,

Je suis oqp de faire un site pour un notaire, j'ai donc créé plusieurs, une table pour les biens, une table qui reprend toute une liste de catégories (maison, appart, ferme,....),

lorsque je fais l'ajout via un formulaire je récupère les infos ajouter pour l'ajouter dans la table bien, et pour le select j'affiche la liste des catégories venant la table catégorie.

Maintenant j'ai un soucis, pour la partie update des biens, je voudrai avoir la liste des catégories affichées et pour la catégorie ajoutée dans la table bien qu'elle soit sélectionnée.


Ce code affiche la liste des catégories, je suppose qu'il faudrait faire un if isset quelque chose et une jointure de table mais je m'y connais pas trop

Code : Tout sélectionner

<td>Catégorie : <br /><select id="catego" name="catego"> <?php while ($row=mysql_fetch_array($categorie)){ echo "<option>$row[Categorie]</option>"; } ?> </select> </td>

Re: probleme pour le value d'une balise select-> option

Posté : 14 nov. 2012, 14:42
par Mazarini
Pour sélectionner une option, il faut ajouter au tag option l'attribut selected="selected" ou simplement selected selon la norme html que tu utilises.

Re: probleme pour le value d'une balise select-> option

Posté : 14 nov. 2012, 14:52
par pandore1807
oui je sais mais si je mets juste selected= selected, ca fait rien lol,

j'ai juste comme d'habitude l''affichage des catégories, et il est selectionner sur la dernière catégorie et non celle sélectionnée qui a été ajouté dans la base

Re: probleme pour le value d'une balise select-> option

Posté : 15 nov. 2012, 10:16
par Mazarini
<?php
while ($row=mysql_fetch_array($categorie)){
    if ($row['Categorie']==$selected_categorie) {  
      echo '<option selected>',$row['Categorie'],'</option>'; 
    }else{
      echo '<option>',$row['Categorie'],'</option>'; 
    }
} 
?>
Ca doit marcher si tu remplaces $selected_categorie par une variable qui contient la catégorie que tu veux sélectionner. Tu peux vérifier dans une doc html que c'est bien selected qu'il faut mettre.

Re: probleme pour le value d'une balise select-> option

Posté : 21 nov. 2012, 12:31
par pandore1807
Je suis désolé, j'essaie mais j'arrive etre un peu coincé, j'y arrive pas

Code : Tout sélectionner

$requete ="SELECT * FROM categorie"; $categorie=mysql_query($requete); if ($categorie == false) { } $requete5 ="select categorieID from bien"; $selected_categorie=mysql_query($requete5); $requete3 = "select * from bien where id='".$_GET['id']."' "; $resultat3=mysql_query($requete3); $bien = mysql_fetch_array($resultat3); ?> <tr> <td>Catégorie : <br /><select id="catego" name="catego"> <?php while ($row=mysql_fetch_array($categorie)){ if ($row['id']==$selected_categorie) { echo '<option select="selected">',$row['Categorie_cat'],'</option>'; }else{ echo '<option>',$row['Categorie_cat'],'</option>'; } }

Re: probleme pour le value d'une balise select-> option

Posté : 21 nov. 2012, 12:32
par pandore1807
pour cette partie j'ai deux tables

1. table des bien avec un camp Categorie et un champ categorieID
2. une table categorie avec id et la catégorie.

Re: probleme pour le value d'une balise select-> option

Posté : 21 nov. 2012, 13:03
par Mazarini
<?PHP
echo $selected_categorie ="',$selected_categorie,'"<br>";    // Pour voir si tu as bien ce que tu veux dans $selected_categorie
while ($row=mysql_fetch_array($categorie)){
   if ($row['id']==$selected_categorie) {  
        echo '<option select="selected">',$row['Categorie_cat'],'</option>'; 
    }else{
        echo '<option>',$row['Categorie_cat'],'</option>'; 
    }
}
?>
La première question : quest ce qu'il y a dans $selected_categorie (ajout d'un echo)
La seconde question es tu sur de ce qu'il y a dans $row['id'] et est ce que ca corespond bien à $selected_categorie

Re: probleme pour le value d'une balise select-> option

Posté : 21 nov. 2012, 13:26
par pandore1807
voilà il m'affiche l'id de la catégorie :

Code : Tout sélectionner

$selected_categorie ="Resource id #6"
cette id correspond à categorieID se trouvant dans l'autre table.

Re: probleme pour le value d'une balise select-> option

Posté : 21 nov. 2012, 13:39
par Saian
Tu ne peux pas comparer une chaine $row['id'] avec un résultat mysql_query.
Il faut que tu extrais le résultat de $selected_categorie.

EDIT pour expliciter un peu mieux mon propos, si tu avais vraiment l'id de la catégorie tu aurais $selected_categorie = 6 et non Resource id #6.
Tu devrais avoir quelque chose dans le genre :
$requete5 = 'SELECT categorieID FROM bien WHERE id = '.$_GET['id'];// avec le WHERE sinon c'est la catégorie de quel bien ?
$result5 = mysql_query($requete5);
$bien = mysql_fetch_object($result5);
$selected_categorie = $bien->categorieID;
De plus tu as déjà une requête qui sélectionne le bien donc pas la peine de faire une requête juste pour extraire categorieID, le categorieID du bien étant porté par le bien.
D'après ton code il te suffit de faire le test ainsi :
if ($row['id'] == $bien['categorieID']) { 

Re: probleme pour le value d'une balise select-> option

Posté : 22 nov. 2012, 00:28
par pandore1807
merci pour ton explication,

ca marche mais mon soucis c que je veux afficher toute la liste des catégories

tout en sélectionnant la catégorie dans laquelle ce trouve le bien.

Re: probleme pour le value d'une balise select-> option

Posté : 22 nov. 2012, 00:49
par Saian
C'est ce que j'essayais de t'expliquer. En l'écrivant ça sera plus simple !
<?php
$requete = "SELECT * FROM categorie";
$categories = mysql_query($requete);

$requete = "SELECT * FROM bien WHERE id = '".$_GET['id']."'";
$bien = mysql_fetch_object(mysql_query($requete));
?>
<tr>
  <td>Catégorie :
    <select id="catego" name="catego">
      <?php while ($categorie = mysql_fetch_object($categories)): ?>
      <option <?php echo $bien->categorieID == $categorie->id ? 'selected="selected"' : null; ?> value="<?php echo $categorie->id; ?>"><?php echo $categorie->Categorie_cat; ?></option>
      <?php endwhile; ?>

Re: probleme pour le value d'une balise select-> option

Posté : 22 nov. 2012, 01:05
par pandore1807
super merci beaucoup.

suis encore débutant lol désolé

Re: [RESOLU] probleme pour le value d'une balise select-> op

Posté : 23 nov. 2012, 11:46
par pandore1807
re lol ton code fonctionne bien mais j'arrive pas à le refaire pour un autre select de la meme page, il me met comme erreur :

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in

Code : Tout sélectionner

<select id="etavente" name="etavente"> <?php $requete11 = "SELECT * FROM etatvente"; $etats = mysql_query($requete11); $requete10 = "SELECT * FROM bien WHERE id = '".$_GET['id']."'"; $etatcatego = mysql_fetch_object(mysql_query($requete10)); while ($etats = mysql_fetch_object($etats)): ?> <option <?php echo $etatcatego->Etat_de_la_vente == $etats->etat ? 'selected="selected"' : null; ?> value="<?php echo $etats->etat; ?>"><?php echo $etats->etat; ?></option> <?php endwhile; ?> </select>

Re: [RESOLU] probleme pour le value d'une balise select-> op

Posté : 23 nov. 2012, 11:56
par Saian
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in
Et ça veut dire quoi ce message ?
Ça veut dire que mysql_query n'a pas retourné une ressource mysql valide. Je suppose donc que ça t'a retourné false, ce qui veut dire que tu as une erreur dans la requête.
Affiche la et teste la directement dans phpmyadmin si nécessaire.

Re: [RESOLU] probleme pour le value d'une balise select-> op

Posté : 23 nov. 2012, 12:03
par pandore1807
apparemment c cette requete :

Code : Tout sélectionner

$requete10 = "SELECT * FROM bien WHERE id = '".$_GET['id']."'"; $etatcatego = mysql_fetch_object(mysql_query($requete10));
pourtant c'est la même que celle-ci :

Code : Tout sélectionner

<select id="catego" name="catego"> <?php $requete6 = "SELECT * FROM categorie"; $categories2 = mysql_query($requete6); $requete7 = "SELECT * FROM bien WHERE id = '".$_GET['id']."'"; $biens = mysql_fetch_object(mysql_query($requete7)); while ($categorie2 = mysql_fetch_object($categories2)): ?> <option <?php echo $biens->Categorie == $categorie2->Categorie_cat ? 'selected="selected"' : null; ?> value="<?php echo $categorie2->Categorie_cat; ?>"><?php echo $categorie2->Categorie_cat; ?></option> <?php endwhile; ?> </select>