Page 1 sur 1

Classement en ordre alphabétique...

Posté : 01 déc. 2005, 22:14
par Jade
Bonjours,

J'essaie de faire une page ou tout est classer en ordre alphabétique, mais je suis pas capable de faire associer chaque titre a sa lettre respectif, alors tout s'affiche a toute les lettres... J'ai bien pensé à faire une condition, mais je sais pas quoi mettre comme code alors je pars mal :?

Si vous pouviez me lancer sur la bonne voie j'aimerai bien :oops:

Merci d'avance :wink:

Posté : 01 déc. 2005, 22:36
par Cyrano
Pour qu'on puisse te mettre sur la voie, il faudrait qu'on ait plus d'éléments à se mettre sous la dent : un exemple de ce que tu as, un exemple de ce que tu veux obtenir sur cette base et ce que tu as déjà fait pour y arriver (extraits de code).

Posté : 01 déc. 2005, 23:53
par Jade
Oui j'y avait bien pensé qu'il vous en faudrais plus... dsl... alors pour aller au lettre j'ai mis...
<a href="?cat=a">A</a>....  .... <a href="?cat=z">Z</a>
Comme code pour afficher les text j'ai mis...
while ($donnees = mysql_fetch_array($reponse))
{

	if 
    {
    ?>
    
      <? echo $donnees['lettre']; ?>
	  
    <?
    }

}
Mais bon vue qu'il a pas de condition tout les text s'affiche à tout les lettres. Et j'aimerai bien que quand je clique sur A sa affiche juste les textes de la lettre a et ainsi de suite.

Dans ma base de donné, j'avais pensé faire 3 champs, lettre, titre et contenu. pour la champs "lettre" j'avais pensé que je pourrai mettre une lettre (ex: a) pour la classement par lettre, mais je sais pas trop comment je pourrais faire...

Voila j'espère vous avoir éclairer pour m'aider..

Merci d'avance

Posté : 02 déc. 2005, 00:01
par Cyrano
Mouais, je sortirai pas les lunettes fumées, c'est déjà pas clair, j'y verrais plus rien...

BOn, je vais essayer d'interpréter et tu diras si c'est ça:

Dans ta base, tu as stocké des titres (entre-autres) et tu voudrais que selon le lien cliqué dans la page, on affiche les titres correspondant, c'est ça ?

Posté : 02 déc. 2005, 04:20
par Jade
Dsl sa ta pas plus éclairer :oops:


Mais sinon tu as bien résumé ce que je cherche a faire...

Posté : 02 déc. 2005, 07:12
par Xenon_54
Si tu utilises des requêtes SQL pour récupérer les données, il suffit d'utiliser cette requête SQL:

Code : Tout sélectionner

SELECT * FROM nom_table WHERE titre LIKE 'A%'
Cette requête permet de récupérer tous les enregistrements de la table nom_table dont le champ titre commence par la lettre A.
Ceci n'est qu'un exemple et tu devras l'adapter à tes besoins.

;)

Posté : 02 déc. 2005, 10:04
par Jade
@Xenon_54: Merci... mais aussi ta ligne comporte juste pour une lettre... comme tu dis il faut que je l'adapte... tu aurais pas un site ou il parle de toute les requetes qu'on peux mettre et leur fonction ? Parce que LIKE j'avais jamais vue ça. Ça pourrai m'éviter de venir poser des questions sur ça :lol:

Posté : 02 déc. 2005, 10:13
par Cyrano
En fait, c'est relativement simple : LIKE 'A%' se décompose comme suit:
- LIKE = "Qui correspond à"
- A% = "Commençant par la lettre "A" et suivi de n'importe quel suite d'autres caractères"

Le "%" est un joker.

Donc pour la page de liens, tu peux pointer vers la page d'affichage en envoyant un paramètre dans l'url du genre tapage.php?alpha=A, paramètre que tu récupères dans ta page pour construire dynamiquement ta requête comme ceci:
<?php
$alpha = isset($_GET['alpha']) ? $_GET['alpha'] : "";
/* On crée le début de la requête */
$requete = "SELECT * FROM matable ";
/* Si un paramètre a été envoyé, on rajoute une clause WHERE */
if(!empty($alpha))
{
    $requete .= "WHERE nom_champ LIKE '". $alpha ."%' ";
}
/* On ferme la requête en ajoutant la clause de tri */
$requete .= "ORDER BY nom_champ";
/* Suite du code, exécution de la requête et récupération des données */

Posté : 16 déc. 2005, 15:58
par Jade
Salut, je reivens parce que après quelque test pour mon débrouiller, j'ai toujours pas réussi :(

J'ai essayer avec ton code Cyrano, mais je dois faire quelque chose de pas correct. Avec ton code, j'ai eu ça (environ avec toute les fois que j'ai essayer)
$alpha = isset($_GET['alpha']) ? $_GET['alpha'] : ""; 

$requete = "SELECT * FROM table ";

if(!empty($alpha))
{ 
$requete .= "WHERE nom LIKE '". $alpha ."%' "; 
}

$requete .= "ORDER BY nom";

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

while($donnees = mysql_fetch_array($requete)) 
	{
    echo '<b>'.$donnees['nom'].'</b>';
    }
et sur ma page j'ai cette erreur, la ligne 50 correspond au While..

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\documents and settings\mes documents\site\page.php on line 50

Merci d'avance

Posté : 16 déc. 2005, 16:05
par mere-teresa
Juste avant le while, tu oublies une étape: il faut poser la requête, avec mysql_query($requete)

Posté : 16 déc. 2005, 16:29
par DarkBlue
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\documents and settings\mes documents\site\page.php on line 50

Merci d'avance
Il faut aussi bien verifier que tu te sois connecté a ta base car ce message s affiche souvent quand ta connexion n est pas faites ou a echouée...

Posté : 16 déc. 2005, 16:47
par Jade
@DarkBlue: oui je suis bien connecter

@mere-teresa: mais c'est pas ce que je viens de faire avec l'étape dans le haut ? Parce que si je met une requete, ma requete du haut ne sers a rien :? a moin qu'il aille un détail (ou plusieur surement) qui m'échappe...

Edit: j'ai essayer juste avec un "mysql_query($requete)" marche pas non plus

Posté : 16 déc. 2005, 21:05
par Cyrano
C'est quoi la chaine au milieu du code ?
<?php
$alpha = isset($_GET['alpha']) ? $_GET['alpha'] : "";

$requete = "SELECT * FROM table ";

if(!empty($alpha))
{
    $requete .= "WHERE nom LIKE '". $alpha ."%' ";
}

$requete .= "ORDER BY nom";

/* C'est quoi cette chaine ??? */
// 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

/* D'abord on se connecte à MySQL */
$connexion = mysql_connect("localhost", "root", ""); // tu changeras les paramètres au besoin;

/* On sélection la base de données appropriée */
mysql_select_db("ta_base");

/* Maintenant on peut exécuter la requête */
$resultat = mysql_query($requete);

/* Et à présent on peut récupérer les résultats */
while($donnees = mysql_fetch_array($resultat))
{
    echo '<b>'.$donnees['nom'].'</b>';
}
?>
Suis les commentaires que j'ai ajouté, ils ont une certaine importance.

Posté : 16 déc. 2005, 22:09
par Jade
Merci Cyrano, je viens de comprendre mon erreur... la chaine qui a pas rapport (parce que j'ai enlever le code pour simplifier) mais je pensais que la requete était les ligne que tu m'avais donné, je comprend mieux.

J'ai mis ton code et rajouter les détails qui me manquait et tout marche... gros merci a toi Cyrano et aussi au autre qui m'on répondu :wink: