> Tous les forums > Forum des Webmasters
 affichage table par odre alphabétiqueSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
t671
  Posté le 16/01/2012 @ 10:03 
Aller en bas de la page 
Astucien

Bonjour,

J'affiche tous les noms de ma table par ordre alphabétique.

L'affichage se fait sur une seule ligne avec tous les noms (ALBERT ANTOINE BABA BERNARD BOBO CHARLES DENIS DIDIER DODO.......)

$select = 'SELECT nom FROM individus WHERE famille LIKE "%XXXX%" GROUP BY nom ORDER BY nom ASC';

$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );

$lettre_test = -1;

while ($row = mysql_fetch_array($result))

{

for($i=A;$i<=Z;$i++)

{

$lettre_nom = substr($row['nom'],0,1);

if ($lettre_nom == $i)

{ echo ''.$row['nom'].' '; }

}

Comment faire pour qu'au changement de la lettre initiale, la liste s'affiche à la ligne suivante ?

Merci.

Publicité
t671
 Posté le 16/01/2012 à 10:59 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
Anonyme a écrit :

Salut

C'est à toi de gérer le passage à la ligne suivante en écrivant un
,

style echo "
";

Anonyme

Anonyme


Ben oui ! Mais je ne trouve pas où le mettre, ni la condition à écrire ........

Je l'ai fait dans tous les sens, sans résultat !!!!

y.bli
 Posté le 16/01/2012 à 12:45 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Maître astucien

Bonjour,

{ echo $row['nom'].'<br /> '; }

tu passes à la ligne à chaque changement de nom

@+



Modifié par y.bli le 16/01/2012 12:52
t671
 Posté le 17/01/2012 à 12:25 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien


Voilà ce que je cherche à faire, un tableau sous cette forme :

A ARTHUR - ARISTIDE

B BENOIT - BERTRAND - BERNARD

C CHARLES

F

G GUNEGONDE - GERARD - GOGO - GUGUS - GIGI

.............

Les lettres de l'alphabet avec les noms issus de la bd, commençant par cette lettre.

Et voilà où j'en suis :

$select = 'SELECT nom FROM individus GROUP BY nom ORDER BY nom ASC';

$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );

$lettre_nom = substr($row['nom'],0,1);

if ($lettre_nom == A); { echo A; }

for($i=A;$i<=Z;$i++)

{

while ($row = mysql_fetch_array($result))

{

$lettre_nom = substr($row['nom'],0,1);

if ($lettre_nom == $i) { echo ''.$row['nom'].' '; }

else {

$i=$i++;

echo '<font color="black">';

echo $i++;

echo '</font>';

echo '<br>';

echo $i;

echo '&nbsp;&nbsp;';

}

} }

Mais là, plusieurs choses :

1) L'alphabet s'arrête à W, alors que j'ai un nom commençant par Z ???

2) J'ai du faire dû bricolage pour afficher la première lettre de l'alphabet (A) avec if ($lettre_nom == A); { echo A; } . Sinon, le A ne s'affichait pas, mais les noms s'affichaient.

3) J'ai encore dû faire du bricolage en écrivant echo '<font color="black">'; echo $i++; echo '</font>'; Si je supprime echo $i++, je n'ai que les noms commençant par A qui s'affiche, et c'est tout !?

Y a t'il possibiliter de résoudre ces 3 points proprement ?

Merci

y.bli
 Posté le 18/01/2012 à 16:18 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Maître astucien

Bonjour,

Essaie :

for ($i = 'A'; $i != 'AA'; $i++)
{
$query = 'SELECT nom FROM individus WHERE nom LIKE "'.$i.'%" ORDER BY nom';
$result = mysql_query($query) or die(mysql_error());
echo '<br /><b>'.$i.'</b><br )>';
while ($row = mysql_fetch_array($result))
{
echo $row['nom'].' - ';
}
}

@+

t671
 Posté le 18/01/2012 à 17:46 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
y.bli a écrit :

Bonjour,

Essaie :

for ($i = 'A'; $i != 'AA'; $i++)
{
$query = 'SELECT nom FROM individus WHERE nom LIKE "'.$i.'%" ORDER BY nom';
$result = mysql_query($query) or die(mysql_error());
echo '
'.$i.'
';
while ($row = mysql_fetch_array($result))
{
echo $row['nom'].' - ';
}
}

@+


Merci beaucoup y.bli !

J'avais trouvé un truc, mais moins bien que le tien, qui lui est génial !!!!!

Bravo et encore merci !!!!

y.bli
 Posté le 18/01/2012 à 18:42 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Maître astucien
t671 a écrit :

J'avais trouvé un truc, mais moins bien que le tien, qui lui est génial !!!!!

Pense à ajouter le code de la couleur que tu avais prévu et aussi, si tu ne veux pas tous les noms, à ajouter GROUP BY nom dans la requête

@+

t671
 Posté le 18/01/2012 à 19:21 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
y.bli a écrit :
t671 a écrit :

J'avais trouvé un truc, mais moins bien que le tien, qui lui est génial !!!!!

Pense à ajouter le code de la couleur que tu avais prévu et aussi, si tu ne veux pas tous les noms, à ajouter GROUP BY nom dans la requête

@+


J'ai déjà rajouté le GROUP BY nom dans la requête

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
149,99 €Disque dur externe USB 3.0 Seagate 8 To à 149,99 €
Valable jusqu'au 13 Juin

Darty propose actuellement le disque dur Seagate Expansion Desktop Drive 8 To à 149,99 € livré gratuitement alors qu'on le trouve ailleurs à partir de 180 €. Le disque est non soudé et vous pourrez le récupérer pour l'utiliser dans un ordinateur, un NAS, etc. Connexion USB 3.0.


> Voir l'offre
199,99 €Ecran ultra large LG 29 pouces 29WL500-B à 199,99 €
Valable jusqu'au 13 Juin

Boulanger propose actuellement l'écran 29 pouces LG 29WL500-B à 199,99 € livré gratuitement alors qu'on le trouve à partir de 229 € ailleurs. Cet écran ultra large est au format 21/9, possède une dalle IPS et offre une résolution de 2560 x 1080 pixels. Avec lui, vous pourrez bénéficier d'une plus grande immersion dans les jeux et les films. Cet écran est compatible FreeSync.


> Voir l'offre
299,99 €Ecran Lenovo 27 pouces G27Q-20 (WQHD, IPS, 165 Hz, FreeSync) à 299,99 €
Valable jusqu'au 13 Juin

Fnac propose actuellement l'écran 27 pouces Lenovo G27Q-20 à 299,99 € alors qu'on le trouve ailleurs à plus de 399 €. Cet écran dispose d'une dalle QHD (2560x1440) à bords fins, avec un temps de réponse de 1 ms et un rafraichissement de 165 Hz. Il possède des entrées DP et HDMI. Il est compatible Freesync et GSync. Il est réglable en hauteur et en inclinaison et est garanti 3 ans.


> Voir l'offre

Sujets relatifs
affichage bases join table mysql
affichage des enreg d'une table sur 2 colonnes
Affichage 4:3 sur toutes résolutions
Pas d'affichage de la zone de saisie avec IE11
affichage du jour en anglais
listage et affichage
affichage dans navigateur IE 8
affichage d'un lien
Question technique BlueGriffon (affichage
Probleme d'affichage d'onglet dans Google
Plus de sujets relatifs à affichage table par odre alphabétique
 > Tous les forums > Forum Forum des Webmasters