Tri sur un select
Fermé
t671
Messages postés
1429
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
27 septembre 2024
-
Modifié par t671 le 29/08/2013 à 10:53
t671 - 1 sept. 2013 à 11:11
t671 - 1 sept. 2013 à 11:11
A voir également:
- Tri sur un select
- Tri excel - Guide
- Logiciel de tri de photos - Guide
- Triez la liste comme sur cette illustration (attention, on ne voit que le début …). quel est le mot formé par les 6 dernières lettres de la colonne code ? - Forum Excel
- Il est trié sur la plateforme de départ ✓ - Forum Consommation & Internet
- Please select boot device - Forum Matériel & Système
11 réponses
djflexlive
Messages postés
557
Date d'inscription
mercredi 26 mars 2008
Statut
Membre
Dernière intervention
23 avril 2015
95
31 août 2013 à 05:13
31 août 2013 à 05:13
Peux tu mettre un exemple un peu plus détaillé?
Ce que tu as en entrée, ce que tu attends en sortie?
Ce que tu as en entrée, ce que tu attends en sortie?
J'ai un champs "prenom". Il peut contenir 1,2,3,4, ...... prénoms séparés par un espace (FRANCOIS MICHEL MAURICE).
Mon SELECT ci-dessus fait le tri, mais que sur le premier prénom. Par exemple, je peux très bien avoir "FRANCOIS MICHEL MAURICE" avant "FRANCOIS AUGUSTE".
En fait, j'ai l'impression que le tri s'arrête après le premier prénom, et ne continue pas après l'espace ................
Comment faire pour continuer le tri sur les caractères après l'espace ?
Mon SELECT ci-dessus fait le tri, mais que sur le premier prénom. Par exemple, je peux très bien avoir "FRANCOIS MICHEL MAURICE" avant "FRANCOIS AUGUSTE".
En fait, j'ai l'impression que le tri s'arrête après le premier prénom, et ne continue pas après l'espace ................
Comment faire pour continuer le tri sur les caractères après l'espace ?
djflexlive
Messages postés
557
Date d'inscription
mercredi 26 mars 2008
Statut
Membre
Dernière intervention
23 avril 2015
95
31 août 2013 à 16:41
31 août 2013 à 16:41
Tu as quoi apres ta $query ? Vu que ta query n'a pas de LIMIT , cela devrait continuer en effet.
Voilà :
$query = 'SELECT ................ $result = mysql_query($query) or die(mysql_error()); while ($row = mysql_fetch_array($result)) { ......................
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
djflexlive
Messages postés
557
Date d'inscription
mercredi 26 mars 2008
Statut
Membre
Dernière intervention
23 avril 2015
95
31 août 2013 à 17:51
31 août 2013 à 17:51
Juste en faisant:
'SELECT id,famille,nom,prenom,sexe,date_naissance,date_dc FROM individus WHERE famille LIKE "%XXXX%"';
Ca donne quoi comme résultats?
'SELECT id,famille,nom,prenom,sexe,date_naissance,date_dc FROM individus WHERE famille LIKE "%XXXX%"';
Ca donne quoi comme résultats?
A l'affichage, le tri reste sur le nom, mais les prénoms s'affichent dans le désordre pour le même nom !
heliconius
Messages postés
539
Date d'inscription
mardi 1 juillet 2008
Statut
Membre
Dernière intervention
23 juin 2023
139
31 août 2013 à 18:46
31 août 2013 à 18:46
Bonjour,
J'ai une base généalogique avec des enregistrements comprenant des champs noms (un seul nom pour un même enregistrement) et prénoms (prénoms multiples possibles, séparés par des espaces pour un même enregistrement) et je n'ai pas ce type de problème en utilisant ta requête après avoir adapté les noms de champ. Mais je ne comprends pas bien la différence que tu fais dans les champs 'famille' et 'nom' et ce que tu y inscris dans ces champs là ?
Peux-tu montrer le contenu de deux ou trois enregistrements, juste pour voir (et peut-être trouver où ça coince ?
J'ai une base généalogique avec des enregistrements comprenant des champs noms (un seul nom pour un même enregistrement) et prénoms (prénoms multiples possibles, séparés par des espaces pour un même enregistrement) et je n'ai pas ce type de problème en utilisant ta requête après avoir adapté les noms de champ. Mais je ne comprends pas bien la différence que tu fais dans les champs 'famille' et 'nom' et ce que tu y inscris dans ces champs là ?
Peux-tu montrer le contenu de deux ou trois enregistrements, juste pour voir (et peut-être trouver où ça coince ?
djflexlive
Messages postés
557
Date d'inscription
mercredi 26 mars 2008
Statut
Membre
Dernière intervention
23 avril 2015
95
31 août 2013 à 19:15
31 août 2013 à 19:15
t671 en effet donne nous plus d'élements, on peut pas deviner ce que tu as sous les yeux...
Voici un exemple de mes tests:
CREATE TABLE 'test' (
'id' INT(10) NOT NULL AUTO_INCREMENT,
'prenom' VARCHAR(1000) NOT NULL,
'famille' VARCHAR(1000) NOT NULL,
PRIMARY KEY ('id')
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
INSERT INTO 'test' ('id', 'prenom', 'famille') VALUES (1, 'FRANCOIS AUGUSTE', 'PIGNON');
INSERT INTO 'test' ('id', 'prenom', 'famille') VALUES (2, 'FRANCOIS ZEN', 'PIGNON');
INSERT INTO 'test' ('id', 'prenom', 'famille') VALUES (3, 'FRANCOIS ISIDORE ROMEO', 'PIGNON');
INSERT INTO 'test' ('id', 'prenom', 'famille') VALUES (4, 'FRANCOIS MICKAEL', 'PIGNON');
SELECT * FROM test WHERE famille LIKE "%PIGNON%"
SELECT * FROM test WHERE famille LIKE "%PIGNON%" ORDER BY prenom
On a bien les resultats dans ma deuxieme query qui retourne par ordre alphabetique le champs entier.
Voici un exemple de mes tests:
CREATE TABLE 'test' (
'id' INT(10) NOT NULL AUTO_INCREMENT,
'prenom' VARCHAR(1000) NOT NULL,
'famille' VARCHAR(1000) NOT NULL,
PRIMARY KEY ('id')
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
INSERT INTO 'test' ('id', 'prenom', 'famille') VALUES (1, 'FRANCOIS AUGUSTE', 'PIGNON');
INSERT INTO 'test' ('id', 'prenom', 'famille') VALUES (2, 'FRANCOIS ZEN', 'PIGNON');
INSERT INTO 'test' ('id', 'prenom', 'famille') VALUES (3, 'FRANCOIS ISIDORE ROMEO', 'PIGNON');
INSERT INTO 'test' ('id', 'prenom', 'famille') VALUES (4, 'FRANCOIS MICKAEL', 'PIGNON');
SELECT * FROM test WHERE famille LIKE "%PIGNON%"
SELECT * FROM test WHERE famille LIKE "%PIGNON%" ORDER BY prenom
On a bien les resultats dans ma deuxieme query qui retourne par ordre alphabetique le champs entier.
Sur mon site, j'ai un onglet "branche paternelle", un onglet "branche maternelle' et la branche paternelle de mon épose.
Le champs "famille" permet de distinguer de quelle branche est issue l'individu.
Et dans une famille, il y a plusieurs types de noms !
En plus, quand je modifie les champs d'1 individu par menu interposé, le script de mise à jour m'ajoute des espaces entre les prénoms. C'est peut-être là d'où vient l'arreur .....
Ainsi, les prénoms peuvent être saisi en minuscule ou majuscule, ils seront enregistré avec la première lettre en majuscule, et ceci pour tous les prénoms .......
A chaque modification, des espaces sont ajoutés entre les prénoms pour le nom !
Il faudrait que je teste si le prénom a été modifié ou pas, je fais la partie "formatage des prénomsé".
Le champs "famille" permet de distinguer de quelle branche est issue l'individu.
Et dans une famille, il y a plusieurs types de noms !
En plus, quand je modifie les champs d'1 individu par menu interposé, le script de mise à jour m'ajoute des espaces entre les prénoms. C'est peut-être là d'où vient l'arreur .....
$prenom = $_POST["prenom"]; //**** Récupération et formatage des prénoms ******* $prenom = strtolower($prenom); //met tout en minuscule $a = explode(' ',$prenom); //$a comprend tous les prénoms séparés par un espace $pre = array(); //$pre est un tableau comprenant tous les prénoms foreach($a as $b){ $c = explode('-', $b); $f = ' '; foreach($c as $e => $d){ if($e>0){ $f .= '-'; } $f .= UcFirst($d); } $pre[] = $f; } $prenoms = ''; foreach($pre as $p){ $prenoms .= ' '.$p; } $prenoms = substr($prenoms, 2); //supprime l'espace en début de chaîne //**** fin formatage des prénoms *****
Ainsi, les prénoms peuvent être saisi en minuscule ou majuscule, ils seront enregistré avec la première lettre en majuscule, et ceci pour tous les prénoms .......
A chaque modification, des espaces sont ajoutés entre les prénoms pour le nom !
Il faudrait que je teste si le prénom a été modifié ou pas, je fais la partie "formatage des prénomsé".
djflexlive
Messages postés
557
Date d'inscription
mercredi 26 mars 2008
Statut
Membre
Dernière intervention
23 avril 2015
95
31 août 2013 à 20:07
31 août 2013 à 20:07
Je laisse tomber...
heliconius
Messages postés
539
Date d'inscription
mardi 1 juillet 2008
Statut
Membre
Dernière intervention
23 juin 2023
139
1 sept. 2013 à 00:15
1 sept. 2013 à 00:15
Si tu cherches quelque chose dans le genre de http://www.fauque.fr/demogen/
tu peux récupérer les scripts en https://www.phpclasses.org/package/7009-PHP-Manage-genealogy-trees-for-a-family.html
tu peux récupérer les scripts en https://www.phpclasses.org/package/7009-PHP-Manage-genealogy-trees-for-a-family.html
J'ai trouvé ! En utilisant la fonction $prenoms = ucwords($prenom); à la place du pavé noté ci-dessus, j'arrive presqu'à mes fin.
C'est à dire que je mets toutes les premières lettres desprénoms en majuscule sans toucher au espace ezntre les prénoms (ce qui me causait le problème initial).
Par contre, si j'ai un nom composé (marie-françoise), comment mettre françoise avec une majuscule ?
C'est à dire que je mets toutes les premières lettres desprénoms en majuscule sans toucher au espace ezntre les prénoms (ce qui me causait le problème initial).
Par contre, si j'ai un nom composé (marie-françoise), comment mettre françoise avec une majuscule ?