Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/10/2006, 11h31   #1
Membre régulier
 
Avatar de carelha
 
Inscription : mars 2006
Messages : 168
Détails du profil
Informations personnelles :
Localisation : France, Yvelines (Île de France)

Informations forums :
Inscription : mars 2006
Messages : 168
Points : 74
Points : 74
Par défaut order by et plusieurs colonnes

bonjour,

j'ai une requête où le visiteur peut chercher un mot dans 5 colonnes. Ces colonnes sont de forme VARCHAR et peuvent être remplies, ou NULL, ou vides.
je souhaite que les résultats affichés présentent d'abord les lignes où le mot cherché est présent dans une des 5 colonnes, puis les lignes où le mot n'apparait dans aucune des colonnes.

je ne sais pas du tout comment construire mon ORDER BY (si c'est bien ca qu'il faut utiliser), est-ce que quelqu'un pourrait m'aider ?

merci beaucoup
__________________
En essayant continuellement on finit par réussir. Donc : plus ca rate, plus on a des chances que ca marche. Shadocks.

un seul header par page, et pour les autres redirections : echo "<script language='javascript'>window.location.href='XXX.php'</script>";
carelha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2006, 11h34   #2
Membre émérite

 
Avatar de FCYPBA
 
Inscription : novembre 2004
Messages : 735
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2004
Messages : 735
Points : 924
Points : 924
Bonjour,

Peut-on avoir un peu plus d'infos sur la requete car il y a quelque chose de pas clair dans la description que tu en fait.

Tu parles d'un choix de recherche sur une des colones ( logiquement une clause where), mais tu veux trier le résultat avec les des lignes ou le mot n'apparait pas. Logiquement ces lignes ne seront pas présentes

Pierre
__________________
Pierre
1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
3. Un code rapide c'est bien, un code maintenable c'est mieux
...

Why was the font tag an orphan ? Because it didn't have a font-family.
FCYPBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2006, 11h44   #3
Membre régulier
 
Avatar de carelha
 
Inscription : mars 2006
Messages : 168
Détails du profil
Informations personnelles :
Localisation : France, Yvelines (Île de France)

Informations forums :
Inscription : mars 2006
Messages : 168
Points : 74
Points : 74
merci de ton aide

en fait il y a un autre champ qui entre en compte :
Code :
1
2
3
4
5
6
7
 
 $sql = 'SELECT count(*) AS nb_res FROM guide, aide_st where guide.structure=aide_st.s_clef'; 
 
if(isset($_SESSION['dmois'])&&($_SESSION['dmois'])!="#")
{
$sql .= ' AND (rythme!="se renseigner auprès de la structure" OR (mois1="'.$_SESSION['dmois'].'" AND annee1="'.$_SESSION['dannee'].'")  OR (mois2="'.$_SESSION['dmois'].'" AND annee2="'.$_SESSION['dannee'].'") OR (mois3="'.$_SESSION['dmois'].'" AND annee3="'.$_SESSION['dannee'].'")  OR (mois4="'.$_SESSION['dmois'].'" AND annee4="'.$_SESSION['dannee'].'")  OR (mois5="'.$_SESSION['dmois'].'" AND annee5="'.$_SESSION['dannee'].'"))'; 
}
($_SESSION['dannee'] a été définie avant)

c'est pour un agenda d'événements : soit il y a bien des dates précises liées à un événement (5 dates possibles par événement) soit il est possible d'indiquer dans la colonne "rythme" une fréquence (tous les 2ème mardi du mois" par ex).
Si quelqu'un cherche ce qui se passe en décembre, je voudrais que ma les résultats présentent en prirorité les lignes pour lesquelles mois1 ou mois2 ou mois3 ou mois4 ou mois5 = 12 (décembre) puis les lignes pour lesquelles dans "rythme" il y a un commentaire du type "chaque mardi"

J'espère que c'est pas trop embrouillé
__________________
En essayant continuellement on finit par réussir. Donc : plus ca rate, plus on a des chances que ca marche. Shadocks.

un seul header par page, et pour les autres redirections : echo "<script language='javascript'>window.location.href='XXX.php'</script>";
carelha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2006, 11h51   #4
Membre émérite

 
Avatar de FCYPBA
 
Inscription : novembre 2004
Messages : 735
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2004
Messages : 735
Points : 924
Points : 924
Donc les evenements qui sont périodique, n'ont pas de données dans les colones moi ou annee,

je ferais un truc comme ca ,

Code SQL :
1
2
 
... ORDER BY IF(mois1=NULL,1,0),IF(mois2=NULL,1,0),IF(mois3=NULL,1,0),IF(mois4=NULL,1,0),IF(mois5=NULL,1,0)
__________________
Pierre
1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
3. Un code rapide c'est bien, un code maintenable c'est mieux
...

Why was the font tag an orphan ? Because it didn't have a font-family.
FCYPBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2006, 11h58   #5
Membre régulier
 
Avatar de carelha
 
Inscription : mars 2006
Messages : 168
Détails du profil
Informations personnelles :
Localisation : France, Yvelines (Île de France)

Informations forums :
Inscription : mars 2006
Messages : 168
Points : 74
Points : 74
c'est bien ca, si rythme est rempli, il n'y a pas de date précise, donc mois 1,2,3,4,5 sont vides.

Par contre, je ne comprends pas la syntaxe de ta proposition et comment elle s'intégre dans la requête
__________________
En essayant continuellement on finit par réussir. Donc : plus ca rate, plus on a des chances que ca marche. Shadocks.

un seul header par page, et pour les autres redirections : echo "<script language='javascript'>window.location.href='XXX.php'</script>";
carelha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2006, 12h03   #6
Membre émérite

 
Avatar de FCYPBA
 
Inscription : novembre 2004
Messages : 735
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2004
Messages : 735
Points : 924
Points : 924
Dans le order, rien ne t'empèche de faire tes tests pour ordonner suivant le résultat ce ceux-ci. Avec le IF on regarde si le champ est null alors on revnoie 0, sinon 1.
__________________
Pierre
1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
3. Un code rapide c'est bien, un code maintenable c'est mieux
...

Why was the font tag an orphan ? Because it didn't have a font-family.
FCYPBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2006, 12h07   #7
Membre régulier
 
Avatar de carelha
 
Inscription : mars 2006
Messages : 168
Détails du profil
Informations personnelles :
Localisation : France, Yvelines (Île de France)

Informations forums :
Inscription : mars 2006
Messages : 168
Points : 74
Points : 74
ok je comprends, mais j'ai pas plutôt intérêt à faire le if avec la variable qui devrait être contenue plutôt qu'avec NULL ?

ORDER BY IF(mois1="'.$_SESSION['dmois'].'",1,0) ?
__________________
En essayant continuellement on finit par réussir. Donc : plus ca rate, plus on a des chances que ca marche. Shadocks.

un seul header par page, et pour les autres redirections : echo "<script language='javascript'>window.location.href='XXX.php'</script>";
carelha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2006, 12h12   #8
Membre émérite

 
Avatar de FCYPBA
 
Inscription : novembre 2004
Messages : 735
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2004
Messages : 735
Points : 924
Points : 924
Pas besoin, pusique les tu n'as que les moid qui t'interrese, tu veux juste savoir si c'est periode ou pas.

Tiens , il me vient une idée du coup. Si un mois est renseigné, alors rythme vaut NULL,

donc le order est plus court

Code SQL :
1
2
 
ORDER BY IF(rythme IS NULL,0,1)

A tester, bien entendu
__________________
Pierre
1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
3. Un code rapide c'est bien, un code maintenable c'est mieux
...

Why was the font tag an orphan ? Because it didn't have a font-family.
FCYPBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2006, 12h36   #9
Membre régulier
 
Avatar de carelha
 
Inscription : mars 2006
Messages : 168
Détails du profil
Informations personnelles :
Localisation : France, Yvelines (Île de France)

Informations forums :
Inscription : mars 2006
Messages : 168
Points : 74
Points : 74
merci, j'y vois plus clair, en fait c'est peut être un ORDER BY rythme en mettant en premier les lignes où rythme est vide, ce qui sous entend qu'il y a une date qui colle
__________________
En essayant continuellement on finit par réussir. Donc : plus ca rate, plus on a des chances que ca marche. Shadocks.

un seul header par page, et pour les autres redirections : echo "<script language='javascript'>window.location.href='XXX.php'</script>";
carelha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2006, 12h42   #10
Membre régulier
 
Avatar de carelha
 
Inscription : mars 2006
Messages : 168
Détails du profil
Informations personnelles :
Localisation : France, Yvelines (Île de France)

Informations forums :
Inscription : mars 2006
Messages : 168
Points : 74
Points : 74
bon, merci, en faisant la différence selon la colonne rythme ca marche.
un peu l'impression de m'être cassé la tête pour rien "pourquoi faire simple quand on peut faire compliqué".

Merci beaucoup pour ton aide
__________________
En essayant continuellement on finit par réussir. Donc : plus ca rate, plus on a des chances que ca marche. Shadocks.

un seul header par page, et pour les autres redirections : echo "<script language='javascript'>window.location.href='XXX.php'</script>";
carelha est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h42.


 
 
 
 
Partenaires

Hébergement Web