par
calinette » 03 août 2006, 17:17
Bonjour,
Je travaille sur une application de répertoire et j'aimerais avoir un coup de main. Je vous explique mon problème.
J'ai conçu un système de page par lettre et je voudrais qu'en cliquant sur cette lettre on arrive à la page concernée (bon cette partie est déjà faite) mais je voudrais aussi que sur cette page figure les coordonnées de toutes les personnes dont justement le nom commence par cette lettre. Et ainsi de suite pour chacune des lettres de l'alphabet.
J'ai déjà écris un script qui donne le résultat que je veux mais comme vous pourrez le voir je dois tester chaque lettre et écrire la partie du script à chaque fois. Dans mon code actuel, je n'ai fait que les 2 premières lettres de l'alphabet car je pense qu'il doit y avoir moyen d'utiliser un sytème de boucle pour raccourcir mon code.
mon 1er code où je teste chaque lettre
<a href='repertoire.php?action=afficher&choix=lettre'> Par lettre </a> <br /
<?php
// connection au serveur MySQL
$connexion = mysql_connect("localhost" , "root" , "") or die ("Connection à MySQL impossible".mysql_error());
// connection à la base de données
$base = mysql_select_db("espace_perso" , $connexion) or die ("Accès à la base impossible" .mysql_error());
if (isset($_GET['action']) AND isset($_GET['choix']))
{
$action = $_GET['action'];
$choix = $_GET['choix'];
}
// Afficher en SELECTIONNANT UNE INITIALE
if ($action == 'afficher')
{
if ($choix == 'lettre')
{
// création d'un tableau à 1 dimension pour mettre l'alphabet
$lettres = array (1 => "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
for ($a = 1 ; $a <= 26 ; $a++)
{
// affichage dans une nouvelle page
echo "<a href='repertoire.php?action=afficher&choix=$lettres[$a]'> $lettres[$a]</a> ";
}
}
elseif ($choix == "A")
{
echo "<font size='7' font color='red'> $choix </font> <br> <br>";
$req_tout = "SELECT * FROM repertoire WHERE nom LIKE '$choix%'";
$result_tout = mysql_query($req_tout) or die ("Rechercher tout : impossible");
while ($tout = mysql_fetch_array($result_tout))
{
$nom = strtoupper($tout['nom']); // met directement les minucules en Majuscules
$prenom = strtoupper($tout['prenom']); // idem
$adresse = $tout['adresse'];
$ville = $tout['ville'];
$code_postal = $tout['code_postal'];
$tel_bureau = $tout['tel_bureau'];
$tel_fixe = $tout['tel_fixe'];
$categorie = $tout['categorie'];
$tel_port_1 = $tout['tel_port_1'];
$tel_port_2 = $tout['tel_port_2'];
$mail_1 = $tout['mail_1'];
$mail_2 = $tout['mail_2'];
$mail_3 = $tout['mail_3'];
echo "<font size=5> <b> $nom $prenom </b> </font> <br>
Adresse : <b>$adresse</b> Ville : <b>$ville</b> Code postal : <b>$code_postal</b> <br>
Catégorie : <b>$categorie</b> <br>
Téléphone fixe : <b>$tel_fixe</b> De bureau : <b>$tel_bureau</b> <br>
Téléphone portable : <b>$tel_port_1</b> <b>$tel_port_2</b> <br>
Email : <b>$mail_1</b> <b>$mail_2</b> <b>$mail_3</b> <br> <br>";
}
}
elseif ($choix == "B")
{
echo "<font size='7' font color='red'> $choix </font> <br> <br>";
$req_tout = "SELECT * FROM repertoire WHERE nom LIKE '$choix%'";
$result_tout = mysql_query($req_tout) or die ("Rechercher tout : impossible");
while ($tout = mysql_fetch_array($result_tout))
{
$nom = strtoupper($tout['nom']); // met directement les minucules en Majuscules
$prenom = strtoupper($tout['prenom']); // idem
$adresse = $tout['adresse'];
$ville = $tout['ville'];
$code_postal = $tout['code_postal'];
$tel_bureau = $tout['tel_bureau'];
$tel_fixe = $tout['tel_fixe'];
$categorie = $tout['categorie'];
$tel_port_1 = $tout['tel_port_1'];
$tel_port_2 = $tout['tel_port_2'];
$mail_1 = $tout['mail_1'];
$mail_2 = $tout['mail_2'];
$mail_3 = $tout['mail_3'];
echo "<font size=5> <b> $nom $prenom </b> </font> <br>
Adresse : <b>$adresse</b> Ville : <b>$ville</b> Code postal : <b>$code_postal</b> <br>
Catégorie : <b>$categorie</b> <br>
Téléphone fixe : <b>$tel_fixe</b> De bureau : <b>$tel_bureau</b> <br>
Téléphone portable : <b>$tel_port_1</b> <b>$tel_port_2</b> <br>
Email : <b>$mail_1</b> <b>$mail_2</b> <b>$mail_3</b> <br> <br>";
}
}
}// FIN afficher en SELECTIONNANT UNE LETTRE
?>
J'ai bien sûr fait déjà pal mal d'essais de mon côté mais je n'arrive pas à obtenir ce que je veux (j'ai essayé des while, for et foreach) , voici d'ailleurs un exemple de ce que j'ai testé. Le problème est que ça ne m'affiche pas les noms dans les pages correpondantes mais tous les noms sont listés les uns en dessous des autres sur la même page.
voici un essai avec une boucle foreach
// Afficher en SELECTIONNANT UNE INITIALE
elseif ($choix == 'lettre')
{
// création d'un tableau à 1 dimension pour mettre l'alphabet
$lettres = array (1 => "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
for ($a = 1 ; $a <= 26 ; $a++)
{
// affichage dans une nouvelle page
echo "<a href='repertoire.php?action=afficher&choix=$lettres[$a]'> $lettres[$a]</a> ";
}
}
else
{
$lettres = array (1 => "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
foreach ($lettres as $value)
{
echo "<font size='7' font color='red'> $value </font> <br> <br>";
$req_tout = "SELECT * FROM repertoire WHERE nom LIKE '$value%'";
$result_tout = mysql_query($req_tout) or die ("Rechercher tout : impossible");
while ($tout = mysql_fetch_array($result_tout))
{
$nom = strtoupper($tout['nom']); // met directement les minucules en Majuscules
$prenom = strtoupper($tout['prenom']); // idem
$adresse = $tout['adresse'];
$ville = $tout['ville'];
$code_postal = $tout['code_postal'];
$tel_bureau = $tout['tel_bureau'];
$tel_fixe = $tout['tel_fixe'];
$categorie = $tout['categorie'];
$tel_port_1 = $tout['tel_port_1'];
$tel_port_2 = $tout['tel_port_2'];
$mail_1 = $tout['mail_1'];
$mail_2 = $tout['mail_2'];
$mail_3 = $tout['mail_3'];
echo "<font size=5> <b> $nom $prenom </b> </font> <br>
Adresse : <b>$adresse</b> Ville : <b>$ville</b> Code postal : <b>$code_postal</b> <br>
Catégorie : <b>$categorie</b> <br>
Téléphone fixe : <b>$tel_fixe</b> De bureau : <b>$tel_bureau</b> <br>
Téléphone portable : <b>$tel_port_1</b> <b>$tel_port_2</b> <br>
Email : <b>$mail_1</b> <b>$mail_2</b> <b>$mail_3</b> <br> <br>";
}
}
}// FIN afficher en SELECTIONNANT UNE LETTRE
Si quelqu'un parmis vous pouvait m'aider ce serait bien car là je suis un peu perdue, je dois bien l'avouer.
A bientôt et merci à ceux qui se pencheront sur mon problème.
Calinette[/b]
Bonjour,
Je travaille sur une application de répertoire et j'aimerais avoir un coup de main. Je vous explique mon problème.
J'ai conçu un système de page par lettre et je voudrais qu'en cliquant sur cette lettre on arrive à la page concernée (bon cette partie est déjà faite) mais je voudrais aussi que sur cette page figure les coordonnées de toutes les personnes dont justement le nom commence par cette lettre. Et ainsi de suite pour chacune des lettres de l'alphabet.
J'ai déjà écris un script qui donne le résultat que je veux mais comme vous pourrez le voir je dois tester chaque lettre et écrire la partie du script à chaque fois. Dans mon code actuel, je n'ai fait que les 2 premières lettres de l'alphabet car je pense qu'il doit y avoir moyen d'utiliser un sytème de boucle pour raccourcir mon code.
[b] mon 1er code où je teste chaque lettre [/b]
[php]<a href='repertoire.php?action=afficher&choix=lettre'> Par lettre </a> <br /
<?php
// connection au serveur MySQL
$connexion = mysql_connect("localhost" , "root" , "") or die ("Connection à MySQL impossible".mysql_error());
// connection à la base de données
$base = mysql_select_db("espace_perso" , $connexion) or die ("Accès à la base impossible" .mysql_error());
if (isset($_GET['action']) AND isset($_GET['choix']))
{
$action = $_GET['action'];
$choix = $_GET['choix'];
}
// Afficher en SELECTIONNANT UNE INITIALE
if ($action == 'afficher')
{
if ($choix == 'lettre')
{
// création d'un tableau à 1 dimension pour mettre l'alphabet
$lettres = array (1 => "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
for ($a = 1 ; $a <= 26 ; $a++)
{
// affichage dans une nouvelle page
echo "<a href='repertoire.php?action=afficher&choix=$lettres[$a]'> $lettres[$a]</a> ";
}
}
elseif ($choix == "A")
{
echo "<font size='7' font color='red'> $choix </font> <br> <br>";
$req_tout = "SELECT * FROM repertoire WHERE nom LIKE '$choix%'";
$result_tout = mysql_query($req_tout) or die ("Rechercher tout : impossible");
while ($tout = mysql_fetch_array($result_tout))
{
$nom = strtoupper($tout['nom']); // met directement les minucules en Majuscules
$prenom = strtoupper($tout['prenom']); // idem
$adresse = $tout['adresse'];
$ville = $tout['ville'];
$code_postal = $tout['code_postal'];
$tel_bureau = $tout['tel_bureau'];
$tel_fixe = $tout['tel_fixe'];
$categorie = $tout['categorie'];
$tel_port_1 = $tout['tel_port_1'];
$tel_port_2 = $tout['tel_port_2'];
$mail_1 = $tout['mail_1'];
$mail_2 = $tout['mail_2'];
$mail_3 = $tout['mail_3'];
echo "<font size=5> <b> $nom $prenom </b> </font> <br>
Adresse : <b>$adresse</b> Ville : <b>$ville</b> Code postal : <b>$code_postal</b> <br>
Catégorie : <b>$categorie</b> <br>
Téléphone fixe : <b>$tel_fixe</b> De bureau : <b>$tel_bureau</b> <br>
Téléphone portable : <b>$tel_port_1</b> <b>$tel_port_2</b> <br>
Email : <b>$mail_1</b> <b>$mail_2</b> <b>$mail_3</b> <br> <br>";
}
}
elseif ($choix == "B")
{
echo "<font size='7' font color='red'> $choix </font> <br> <br>";
$req_tout = "SELECT * FROM repertoire WHERE nom LIKE '$choix%'";
$result_tout = mysql_query($req_tout) or die ("Rechercher tout : impossible");
while ($tout = mysql_fetch_array($result_tout))
{
$nom = strtoupper($tout['nom']); // met directement les minucules en Majuscules
$prenom = strtoupper($tout['prenom']); // idem
$adresse = $tout['adresse'];
$ville = $tout['ville'];
$code_postal = $tout['code_postal'];
$tel_bureau = $tout['tel_bureau'];
$tel_fixe = $tout['tel_fixe'];
$categorie = $tout['categorie'];
$tel_port_1 = $tout['tel_port_1'];
$tel_port_2 = $tout['tel_port_2'];
$mail_1 = $tout['mail_1'];
$mail_2 = $tout['mail_2'];
$mail_3 = $tout['mail_3'];
echo "<font size=5> <b> $nom $prenom </b> </font> <br>
Adresse : <b>$adresse</b> Ville : <b>$ville</b> Code postal : <b>$code_postal</b> <br>
Catégorie : <b>$categorie</b> <br>
Téléphone fixe : <b>$tel_fixe</b> De bureau : <b>$tel_bureau</b> <br>
Téléphone portable : <b>$tel_port_1</b> <b>$tel_port_2</b> <br>
Email : <b>$mail_1</b> <b>$mail_2</b> <b>$mail_3</b> <br> <br>";
}
}
}// FIN afficher en SELECTIONNANT UNE LETTRE
?>[/php]
J'ai bien sûr fait déjà pal mal d'essais de mon côté mais je n'arrive pas à obtenir ce que je veux (j'ai essayé des while, for et foreach) , voici d'ailleurs un exemple de ce que j'ai testé. Le problème est que ça ne m'affiche pas les noms dans les pages correpondantes mais tous les noms sont listés les uns en dessous des autres sur la même page.
[b] voici un essai avec une boucle foreach[/b]
[php] // Afficher en SELECTIONNANT UNE INITIALE
elseif ($choix == 'lettre')
{
// création d'un tableau à 1 dimension pour mettre l'alphabet
$lettres = array (1 => "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
for ($a = 1 ; $a <= 26 ; $a++)
{
// affichage dans une nouvelle page
echo "<a href='repertoire.php?action=afficher&choix=$lettres[$a]'> $lettres[$a]</a> ";
}
}
else
{
$lettres = array (1 => "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
foreach ($lettres as $value)
{
echo "<font size='7' font color='red'> $value </font> <br> <br>";
$req_tout = "SELECT * FROM repertoire WHERE nom LIKE '$value%'";
$result_tout = mysql_query($req_tout) or die ("Rechercher tout : impossible");
while ($tout = mysql_fetch_array($result_tout))
{
$nom = strtoupper($tout['nom']); // met directement les minucules en Majuscules
$prenom = strtoupper($tout['prenom']); // idem
$adresse = $tout['adresse'];
$ville = $tout['ville'];
$code_postal = $tout['code_postal'];
$tel_bureau = $tout['tel_bureau'];
$tel_fixe = $tout['tel_fixe'];
$categorie = $tout['categorie'];
$tel_port_1 = $tout['tel_port_1'];
$tel_port_2 = $tout['tel_port_2'];
$mail_1 = $tout['mail_1'];
$mail_2 = $tout['mail_2'];
$mail_3 = $tout['mail_3'];
echo "<font size=5> <b> $nom $prenom </b> </font> <br>
Adresse : <b>$adresse</b> Ville : <b>$ville</b> Code postal : <b>$code_postal</b> <br>
Catégorie : <b>$categorie</b> <br>
Téléphone fixe : <b>$tel_fixe</b> De bureau : <b>$tel_bureau</b> <br>
Téléphone portable : <b>$tel_port_1</b> <b>$tel_port_2</b> <br>
Email : <b>$mail_1</b> <b>$mail_2</b> <b>$mail_3</b> <br> <br>";
}
}
}// FIN afficher en SELECTIONNANT UNE LETTRE [/php]
Si quelqu'un parmis vous pouvait m'aider ce serait bien car là je suis un peu perdue, je dois bien l'avouer.
A bientôt et merci à ceux qui se pencheront sur mon problème.
Calinette[/b]