[RESOLU] Sélectionner un champ contenant une partie d'une variable

Eléphanteau du PHP | 41 Messages

23 janv. 2017, 17:02

Bonjour,

J'ai un petit problème qui est sans doute simple à résoudre, mais je bloque...

J'ai une table "membres" qui possède une colonne "conges" contenant une liste d'initiales (par exemple : "MLG MP AC").
J'ai un formulaire permettant de filtrer certaines initiales via un champ texte (par exemple, on tape "AC IL").

Je souhaiterais ensuite sélectionner l'id des champs où la colonne "conges" contient les initiales correspondantes (dans ce cas, l'id du champ où "conges" contient "MLG MP AC"). Je ne peux pas passer par LIKE puisqu'il ne cherchera que "%AC IL%" et pas juste "AC".

Merci pour votre aide, j'espère avoir été clair !

Mammouth du PHP | 1967 Messages

23 janv. 2017, 17:37

Tout dépend si tu veux un ET ou un OU

mais le principe est le même, tu découpe la valeur de recherche par l'expace et tu fait une clause LIKE par entité. pour un cllassement par pertinence (dans le cas OU) il faudra un peu ruser et si il y a beaucoup de terme, la requète sera longue en temps et ressources
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 41 Messages

23 janv. 2017, 17:53

En fait, la requête par défaut est "SELECT initiales from membres Order by initiales Asc" pour afficher une colonne pour chaque initiales.
Je souhaiterais que le filtre (un champ texte ou l'on écrit une liste d'initiales à filtrer) permette d'afficher uniquement les champs dont les initiales sont contenues dans le filtre.

Par exemple :
id / initiales
1 / MLG
2 / AP
3 / MC
4 / AC

De base, j'ai quatre colonnes : MLG / AP / MC / AC
Si le filtre contient "AP MC", je souhaiterais juste afficher : AP / MC

Mammouth du PHP | 1967 Messages

23 janv. 2017, 17:59

montre nous ton code, ce sera peut être plus simple de comprendre ce que tu cherche à faire
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 41 Messages

23 janv. 2017, 18:15

J'ai une table "membres" comprenant une colonne "initiales" :

Image

J'ai un tableau comprenant en lignes les dates du mois, et en colonnes les initiales des différents membres :

Code : Tout sélectionner

<tr> <th>Date</th> <? $req = mysql_query("SELECT initiales from membres Order by initiales Asc") or die ("Erreur requête"); $res = mysql_num_rows($req); $a=0; while($res!=$a) { $initiales = mysql_result($req,$a,"initiales"); ?> <th><? echo $initiales; ?></th> <?php $a++; } ?> </tr>
Image

On peut voir au-dessus du tableau un champ permettant de renseigner les initiales des membres à filtrer.
J'aimerais que lorsqu'existe $_POST['filtre'] on affiche uniquement les colonnes correspondantes.

J'espère avoir été plus clair. Merci :wink:

Mammouth du PHP | 1967 Messages

24 janv. 2017, 09:16

avec explode, tu peux transformer la chaine de recherche en tableau en filtrant sur l'espace.

ensuite une condition dans ton tableau avec in_array devrait suffire.
Compte le nombre de colonne ajouté afin d'ajouter le bon nombre de case à chaque ligne
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 41 Messages

24 janv. 2017, 15:52

Merci, problème résolu !