Impossible d'ordonner une liste par n°

Résolu/Fermé
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 - 1 janv. 2017 à 15:33
yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 - 2 janv. 2017 à 15:15
Bonjour,
J'ai créé un site pour ma collection de billets de banque (http://monnaiepapier.free.fr).
J'ai ajouté un champ dans la table "chrono" de type TINYINT, UNSIGNED ZEROFIL pour avoir les zéros devant les chiffres (les chiffres correspondant aux n° Pick).
Pour le moment ça n'est qu'un test pour Afghanistan, Albanie et Allemagne (voir le lien ci-dessous).
http://monnaiepapier.free.fr/Planche.php?pays=Afghanistan
Pourtant malgré divers essais, ça ne fonctionne pas, les Picks sont toujours dans le désordre.
Pourquoi ? Qu'ai-je oublié ou mal fait ?
Merci d'avance pour vos éclaircissements.




Le bonheur est la seule chose que l'on peut donner sans l'avoir.

5 réponses

jordane45 Messages postés 38301 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 22 novembre 2024 4 704
1 janv. 2017 à 15:55
Bonjour,

Sans voir ton code ... impossible de te répondre (et surtout la requête qui te sert à récupérer le contenu de ta table .... )

0
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517
1 janv. 2017 à 16:24
C'est vrai:
La requête:
// On selectionne seulement la ligne qui correspond au pays 

$select = "SELECT * FROM billets WHERE pays='$pays' ORDER BY chrono ASC";
$result = mysql_query($select,$cnx) or die ('Erreur : '.mysql_error() ."<br> Requete : ".$sql);
$nb_result = mysql_num_rows($result);
if($nb_result==0){
echo "<br> ERREUR ! Aucun article n'a été trouvée pour ce pays !";
}else{
// on n'affiche ici que les lignes qui se répètent tant qu'il y a des billets pour ce pays via la boucle pour tableau "while"
echo"<table ID='planche'>";
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$visuel_recto = $row['visuel_recto'];
$valeur = $row['valeur'];
$chrono = $row['chrono'];
$pick = $row['pick'];
$format = $row['format'];
$recto = $row['recto'];
$visuel_verso = $row['visuel_verso'];
$verso= $row['verso'];
echo "<tr>";
echo "<td class='billet'><img src="" alt='$valeur' title='$valeur'></img><p class='billet'>$valeur  |  P $pick<br>$recto</p></td>";
echo "<td class='billet'><img src="" alt='$valeur' title='$valeur'></img><p class='billet'>$format<br>$verso</p></td>";
echo "</tr>";
}
echo"</table>";


Structure de la table:
http://monnaiepapier.free.fr/Structure%20Table%20Billets.gif
0
jordane45 Messages postés 38301 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 22 novembre 2024 4 704
1 janv. 2017 à 19:06
et pourrais tu nous montrer quelques données présentes dans ta table ?
En particulier les champs chrono et pick qu'on puisse voir ce que ça contient exactement ?

Au passage .. tu utilises l'ancienne extensions mysql considérée comme obsolète !
Je t'invite à lire ceci : https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
0
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517 > jordane45 Messages postés 38301 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 22 novembre 2024
1 janv. 2017 à 22:54
Bonsoir jordane45 et meilleurs vœux pour 2017 !

Première ligne de la table (seulement le pays, le classement (à cause du pick qui ne fonctionne pas) + le n° pick (qui peut contenir des caractères comme par exemple 124a ou 31af):

Colonne Type Valeur
pays varchar(255) Afghanistan
chrono tinyint(5) unsigned zerofill 00064
pick varchar(10) 64
Bien sur il y a d'autres champs (taille du billet, visuel recto et visuel verso, description recto + verso etc...).

PS: je ne comprend pas ton histoire de ancienne extension, à quel endroit.
Merci.
0
yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 Ambassadeur 1 551
1 janv. 2017 à 23:46
Les résultats sont-ils triés par "chrono"?
Pourquoi es-tu étonné qu'ils ne soient pas triés par "pick"?
0
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517
2 janv. 2017 à 12:30
Salut yg_be,
L'affichage ascendant par Pick est plus logique (du plus ancien au plus récent; petit n° Pick = plus ancien billet).
Les billets les plus récents sont toujours affichés à la fin dans les sites de ce genre.
Les résultats ne sont pas affichés par chrono; chrono est le nom du champ tout simplement.



Le bonheur est la seule chose que l'on peut donner sans l'avoir.
0
yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 1 551
Modifié par yg_be le 2/01/2017 à 13:59
bonjour,
Tu écris que cela ne fonctionne pas, parce que les picks sont dans le désordre.
Par ailleurs, bien que tu souhaites que les picks soient dans l'ordre, tu fais le tri sur base du champ chrono, et donc j'essaie de comprendre ce que tu veux faire et ce qui ne fonctionne pas.
En nous montrant uniquement la première ligne de la table, tu ne nous permets pas de voir que le tri ne fonctionne pas comme tu l'attends.
0
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517 > yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024
2 janv. 2017 à 14:51
Merci yg_be mais ça y est j'ai trouvé. La réponse est dessous.
Par contre j'ai toujours pas compris l'histoire de mysql.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517
2 janv. 2017 à 13:51
Bonjour les gars !
J'ai trouvé !!!!
En fait, les billets acquis à différentes périodes ne pouvaient pas se trouver sur les premières entrées de la table.
J'ai donc fait une recherche pour Afghanistan ce qui m'a listé tous les billets d'Afghanistan. Et pour les derniers acquis, le chrono avaient la valeur par défaut 00000.
J'ai donc renseigné tous les "chrono" pour ce pays et maintenant l'affichage est correct.
En tous cas merci pour votre aide.
Je n'ai toujours pas compris l'histoire de "l'ancienne extensions mysql".
Bonne année pour tous !

Le bonheur est la seule chose que l'on peut donner sans l'avoir.
0
yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 1 551
2 janv. 2017 à 15:15
Les verbes php mysql_query et les autres verbes de ce genre sont en fin de vie, ce serait bien, à l'occasion, de passer à d'autres verbes.
0