Problème avec le tri dans les colonnes - PHP - Programmation
Marsh Posté le 12-06-2006 à 00:24:29
Là, comme ça, on voit pas vraiment le rapport entre la première partie de ton message et la deuxième. Pas plus qu'on ne voit de question d'ailleurs, machin fonctionne pas correctement, j'ai envie de dire qu'on s'en doute, tu ne serais pas là dans le cas contraire.
Bref, tu peux préciser un peu ta question ?
Marsh Posté le 12-06-2006 à 00:25:49
Tu peut changer la requête suivante selon que ton champs est NULL ou vide lorsqu'il est non renseigné:
SELECT
IF(hobby_autre IS NULL OR LENGTH(hobby_autre)==0,
hobby, hobby_autre) AS hobby
FROM hobby;
PS: je suppose que tu utilise MySQL.
Marsh Posté le 12-06-2006 à 00:28:35
Ça c'est dangereux:
Code :
|
faille de sécurité, l'utilisateur peut changer à sa guise le paramètre <<sort>> et s'amuser avec ta BDD.
Marsh Posté le 12-06-2006 à 11:00:02
naceroth a écrit : Là, comme ça, on voit pas vraiment le rapport entre la première partie de ton message et la deuxième. Pas plus qu'on ne voit de question d'ailleurs, machin fonctionne pas correctement, j'ai envie de dire qu'on s'en doute, tu ne serais pas là dans le cas contraire. |
Pour répondre à naceroth :
1) Tout d'abord j'ai un formulaire à compléter (les données sont enregistrées dans une BDD MySQL) - pas de problème à ce niveau
2) J'ai une page qui permets de voir toutes les entrées et sur cette page, je souhaite pouvoir faire des tris par colonnes. Là, j'ai juste un problème pour trier la colonne hobby, puisqu'elle fait référence à 2 champs (hobby et hobby_autre). Par défaut les données sont triées par date. Mais j'aimerais donner la possibilité de trier les données par hobby en cliquant sur un lien, comme je l'ai déjà fait pour nom et pays.
Merci
Marsh Posté le 12-06-2006 à 11:45:44
Et ça, ne va pas?
SELECT
IF(hobby_autre IS NULL OR LENGTH(hobby_autre)==0,
hobby, hobby_autre) AS hobby2
FROM hobby
ORDER BY hobby2;
Marsh Posté le 12-06-2006 à 12:24:28
nargy a écrit : Et ça, ne va pas? |
Merci Nargy,
Mais non, cela ne marche pas... Il me dit qu'il n'y a aucune entrée dans la BDD, alors qu'il y en a.
Mais si ça se trouve, c'est moi qui n'ai pas mis correctement le code
Voici ce que j'ai mis :
Code :
|
Marsh Posté le 12-06-2006 à 14:43:13
Qu'est-ce que tes fonctions db_* ? c'est bien sur du mysql, hein?
Je ne voie pas tout à fait la structure de ta BDD.
Simplement, utilise les fonctions SQL suivantes:
IF( condition, valeur_vrai, valeur_faux)
champs IS NULL
LENGTH(champs)==0
...pour construire le champs hobby2 à partir de hobby et hobby_autre.
Marsh Posté le 12-06-2006 à 15:54:55
oui, j'ai bien une base mysql. Voici la structure de ma table :
Code :
|
Marsh Posté le 12-06-2006 à 18:22:36
Ok, erreur de syntaxe de ma part, un seul ``=``:
LENGTH(hobby_autre)=0
Code :
|
Exemple:
|
Marsh Posté le 13-06-2006 à 02:19:48
Merci !
Ca marche tip top dans MySQL , mais maintenant j'essaie de l'intégrer dans ma page PHP et je n'arrive pas à y faire fonctionner...
J'essaie encore...
Marsh Posté le 13-06-2006 à 06:44:03
olala faut tout te faire... remplace la ligne 3 du tout premier code par:
Code :
|
Jespère au moins que tu as compris comment ça marche.
Marsh Posté le 12-06-2006 à 00:14:40
Bonjour,
J'ai un formulaire avec 4 champs (Nom, Hobby, Pays, Date).
Pour "Hobby" il y a 2 possibilités à choix :
- hobby (liste déroulante)
- hobby_autre (champ texte permettant d'insérer un hobby, s'il n'est pas dans la liste déroulante
Mais on ne peut en choisir qu'un, soit dans la liste déroulante, soit en entrer un dans le champ texte.
Pour les afficher dans ma page de résultats, j'ai mis :
Je ne suis pas sûre que ce soit très correct, mais ça marche.
Par contre j'ai un problème, car j'aimerais pouvoir les trier par colonnes, mais comme la colonne "Hobby" fait référence à 2 champs différents (hobby + hobby_autre), mon tri ne fonctionne pas correctement.
Voici ce que j'ai mis pour l'instant :
Pour info, j'ai déjà la query suivante sur la page :