Regroupemment par Chiffres et lettres

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Regroupemment par Chiffres et lettres

par caroube » 13 déc. 2008, 19:23

Il suffit juste d'un peu adapter ton algorithme.
Pour l'instant, tu stockes l'initiale et tu compares avec la dernière initiale stockée.
Il faut que tu introduises un 2e cas : celui où l'initiale est entre 0 et 9.
Mais au lieu de stocker l'initiale, stockes un code (par exemple 0-9) qui indique que l'initiale est un chiffre

Autre point, crées une variable initiale : ça t'évitera de la recalculer à chaque fois (et en plus ça te permettra de stocker la pseudo-initiale pour les chiffres)

par sadeq » 11 déc. 2008, 14:15

Au lieu d'utiliser $res['nom'][0] pour récupérer le premier caractère de la chaîne il vaut mieux utiliser la fonction substr($res['nom'], 0, 1) ce qui va fonctionner aussi avec les numériques.

Tu peux aussi différencier entre les numériques et les alphabétiques par un test if is_numeric()

Regroupemment par Chiffres et lettres

par fabien_14 » 10 déc. 2008, 19:34

Bonjour,

J'utilise une fonction qui me permet de regrouper les enregistrements par la première lettre des enregistrement

Exemple

A
Antoine
Alexis

B
Brice

C
Carol
Christian
Cecile
etc ....


Cependant j'ai aussi des enregistrement qui commence par des chiffres est t'il possible de faire un regroupement pour tous les enregistrements commençant par les chiffres de 0 a 9 ?

Voici la requête
<?php
$sql = "SELECT id,nom FROM test ORDER BY nom ASC";
$req = mysql_query($sql)or die(mysql_error());
$prems_lettre='1';

while ($res = mysql_fetch_assoc($req))
{
    if(strtolower($res['nom'][0])!= $prems_lettre)
    {
        echo '<span id="'.$res['nom'][0].'"><br />- ',strtoupper($res['nom'][0]),' -</span><br /><br />';
        $prems_lettre = strtolower($res['nom'][0]);
    }
    
    $nom = $res[nom];
    $id_annonceur = $res[id];
    echo "<li><a href=\"$nom\">$res[nom]</a></li><br />";


}
?>
</ul><div>
<?php
} 
Ce qui donnerai

[0 - 9]
12
78 <<< résultat de la modif que je n'arrive pas a faire
49

A
Antoine
Alexis

B
Brice

C
Carol
Christian
Cecile
etc ....




Merci de votre aide.