Liste déroulante option tout

Eléphant du PHP | 72 Messages

03 mars 2006, 12:41

Bonjour bonjour !

Je pense que ce problème a déjà était posé mais malgré mes recherches je n'ai pas trouvé. Donc si quelqu'un pouvait m'aider soit à retrouver un sujet similaire ou tout simplement voir mon problème.

J'explique :
J'ai une liste déroulante qui affiche toutes mes rubriques en fonction d'une table mais en plus de ces rubriques je voudrais afficher "toutes".

Merci d'avance !
y a un début à tout !

Mammouth du PHP | 768 Messages

03 mars 2006, 12:44

montre nous un bout de code stp :wink:
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Eléphant du PHP | 72 Messages

03 mars 2006, 12:48

Liste :

Code : Tout sélectionner

<select name="evenement2" id="evenement2"> <?php do { ?> <option value="<?php echo $row_rs2evenement['evenement']?>"><?php echo $row_rs2evenement['evenement']?></option> <?php } while ($row_rs2evenement = mysql_fetch_assoc($rs2evenement)); $rows = mysql_num_rows($rs2evenement); if($rows > 0) { mysql_data_seek($rs2evenement, 0); $row_rs2evenement = mysql_fetch_assoc($rs2evenement); } ?> </select>
Requête :

Code : Tout sélectionner

$query_rs2evenement = "SELECT distinct evenement FROM tb_evenements ORDER BY evenement ASC";
y a un début à tout !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 mars 2006, 12:58

Tu dois déjà avoir une réponse dans tes messages privés ;)

Tu ajoutes une option "<option value="">Tout afficher</option>" juste après ton <select ...> et avant ton code php, et tu gères en php le fait de ne pas ajouter de WHERE dans ta requête lorsque la valeur de evenement2 est vide :)

Eléphant du PHP | 72 Messages

03 mars 2006, 13:07

Ryle !

Euh ! Oui j'avais la tête ailleurs, désolée ! :oops:

Ben je regarde tout ça de plus près et je vous tiens au courant de l'évolution !!!

Merci !
y a un début à tout !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 mars 2006, 13:12

Y a pas de soucis.. moi même j'avais mis un moment avant de remarquer que j'avais un message ;)

Eléphant du PHP | 72 Messages

03 mars 2006, 13:41

The NULLE de retour !!!

Par rapport à ce que tu viens de m'expliquer, est-ce qu'il faut que je déclare à nouveau une variable, celle du nomselect car ça m'affiche ce message :

Notice: Undefined variable: evenement2 in c:\program files\easyphp1-8\www\site\evenementsdecouvertes.php on line 30

Notice: Undefined variable: evenement2 in c:\program files\easyphp1-8\www\site\evenementsdecouvertes.php on line 31
Erreur de syntaxe près de 'ASCWHERE evenement=' à la ligne 1

evenement2 étant le nom de ma liste.[/code]
y a un début à tout !

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

03 mars 2006, 14:25

Vous est-il possible de détailler le contenu du MP sur ce thread ?

Immaginez un instant le développeur qui vient de passer 1h2h à chercher la solution à son pb, qui tombe sur ce message qui correspond à son erreur et qui ne trouve pas la solution parce que vous l'avez échangée par MP ...
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 72 Messages

03 mars 2006, 15:18

Désolé le MP en question toujours en rapport avec le sujet :

Code : Tout sélectionner

<select name="monSelect"> <option value="">Afficher tout (Ne pas filtrer)</option> <option value="1">Filtrer sur élément 1</option> <option value="2">Filtrer sur élément 2</option> ... </select>
Comme ça, si la valeur de $monSelect est différente de vide, on ajoute des conditions de filtre (WHERE monChamp = $monSelect) et s'il est vide, on ne le précise pas, du coup tous les enregistrements sont ramenés :
$sql="SELECT * FROM maTable"; 
if($monSelect!="") 
  $sql.=" WHERE monChamp = $monSelect";  
y a un début à tout !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 mars 2006, 15:47

Oops, sorry ! le mp avait été envoyé avant la création du topic :) Il est effectivement un peu plus détaillé que mon résumé ;)

Pour ton problème, en principe non, tu ne devrais pas avoir besoin de redéclarer ta variable... En principe tu fonctionnes sur un select evenement2 et une requête qui doit avoir une condition du type
"SELECT * FROM tb_evenements WHERE evenement = '$evenement2' (ou quelque chose du genre :))

Ton select devrait donc ressembler à ceci :
<select name="evenement2" id="evenement2"> 
  <option value="">Tous les événements</option>
  <?php 
    while ($row_rs2evenement = mysql_fetch_assoc($rs2evenement)) {  
  ?> 
      <option><?php echo $row_rs2evenement['evenement']?></option> 
      // le value n'est pas utile s'il a la meme valeur que le libellé
  <?php 
    } // j'ai inversé le do-while en un while simple (s'il n'y a pas d'élément il ne rentre pas dedans)
    ...
?> 
</select>
Et ta requête de recherche avec le filtre :
$sql = "SELECT * FROM taTable ";
if(!isEmpty($evenement2)) // si un evenement est sélectionné (non vide)
  $sql.= " WHERE evenement = $evenement2 "; // on ne ramene que sur l'événement
$sql.= " ORDER BY ... "; // l'order by vient toujours à la fin

Eléphant du PHP | 72 Messages

03 mars 2006, 16:11

Merci Ryle, mais maintenant j'ai ce message d'erreur :
Fatal error: Call to undefined function: isempty() in c:\program files\easyphp1-8\www\gitesnormandie\evenementsdecouvertes.php on line 30
y a un début à tout !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 mars 2006, 16:17

oops, ma faute.. c'est empty(), pas isEmpty :)

Eléphant du PHP | 72 Messages

03 mars 2006, 16:43

Oui mais...

Du coup pour ma page résultat ça change tout, non ? :roll:
y a un début à tout !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 mars 2006, 16:50

En principe non, ça ne devrait rien te changer dans tes résultats, la requête va simplement ramener les résultats pour tout événement confondu, au lieu des résultats pour un seul événement (celui sélectionné)

Donc en dehors de la quantité de résultats retournés, il ne devrait pas y avoir d'autres impacts.. on ne modifie que la requête de recherche :)

Eléphant du PHP | 72 Messages

03 mars 2006, 16:57

Ben ça fonctionne toujours par événement mais si j'opte pour tous il ne trouve aucun enregistrement et m'affiche en haut de la page l'erreur suivante :
Notice: Undefined index: datefin in c:\program files\easyphp1-8\www\site\evenementsdecouvertesresultat.php on line 53

Line 53 :
$row_Recordset2['datefin']= preg_replace('/^(.{4})-(.{2})-(.{2})$/','$3.$2.$1',  $row_Recordset2['datefin']);
Ca se complique !
y a un début à tout !