winter08
Messages postés23Date d'inscriptionsamedi 25 octobre 2008StatutMembreDernière intervention31 mai 2010
-
Modifié par winter08 le 31/05/2010 à 17:01
Bonjour,
je développe une application ayant pour but de lister les logins présents dans une table dans une fenêtre. A la fin, il y aura a peu près 300 entrées et une liste à puces serait donc inutile. Je me suis donc tourné vers un index alphabétique qui est mieux pour référencer ce genre de choses.
J'ai commencé un code où j'affiche l'index en haut avec une ancre sur les lettres qui ont un login commençant par cette lettre. Le problème est que quelque soit l'ancre sur laquelle je clique, il me liste l'intégralité des logins actuellement dans la table concernée.
Voici mon code,
$req = Connexion :: requete(
"SELECT DISTINCT (UPPER(LEFT(login,1))) AS letter
FROM ma_table");
$lettre = array();
//On met toutes les lettres à false
for ($i = ord('A'); $i <= ord('Z'); $i++)
{
$lettre[chr($i)] = false;
}
// On tri les logins de la table et on met a vrai les lettres ayant un login commençant par cette lettre
while (($ligne = mysql_fetch_assoc($req)) !== false)
{
$lettre[trim($ligne['letter'])] = true;
}
$index = array();
// On met une ancre sur les lettre avec des logins
foreach ($lettre as $init => $exist)
{
if ($exist)
{
$index[] = <<<HTML
<a href=#{$init}>{$init}</a>
HTML;
}
else
{
$index[] = $init;
}
}
echo '<p>' . implode (' - ', $index) . '</p>';
$requete= Connexion :: requete(
"SELECT *
FROM ma_table
ORDER BY login");
$lettre = null;
while (($resultat = mysql_fetch_assoc($requete)) !== false)
{
$nom = ($resultat['login']);
if ($lettre != strtoupper($nom[0]))
{
if (!is_null( $lettre ))