[SQL] Requête "mouvante"
Résolu
Darshu
Messages postés
303
Date d'inscription
Statut
Membre
Dernière intervention
-
Darshu Messages postés 303 Date d'inscription Statut Membre Dernière intervention -
Darshu Messages postés 303 Date d'inscription Statut Membre Dernière intervention -
Bonjour, voila mon problème : je code un tableau, avec la possibilité pour n'importe qui de le modifier. Pour faire simple, la table se présente comme suit :
- champ index (clé primaire), auto incrément
- champ num (saisi par l'utilisateur, permet d'afficher les données dans l'ordre qu'il choisit)
- champ catégorie (texte simple)
- champ texte, qui comporte des ; comme séparateur de ligne
- champ n1 qui compte le nombre de lignes
- champ n2 qui donne pour chaque catégorie le nombre de lignes
Maintenant en un peu plus clair : dans une catégorie, on lui affecte le numéro qu'on veut, et dans le champ texte qui suit il y a autant de lignes que l'on veut, chacune étant séparée par un point virgule. Le champ num permet juste, si on rajoute à la fin de la table un nouvel enregistrement, et qu'on veut que cette catégorie soit affichée en deuxième position, de spécifier le numéro d'affichage.
J'ai tout le code pour séparer les différentes lignes d'une même catégorie, grâce à preg_match_all. Ce que je voudrais faire maintenant, c'est, à partir de la requête
sélectionner la ième ligne de résultat. Bien sur, il y aurait la solution d'incrémenter une variable dans une boucle while($row = mysql_fetch_row($query)) et de faire if ($compteur == $i) mais c'est pas terrible ...
L'idée est que le tableau peut, à la fin, être n'importe comment dans la base de données (point de vue ordre) mais tout en garantissant toujours un affichage correct. Je sais pas si c'est très clair mais bon, si quelqu'un a une idée un peut plus élégante que celle proposée au dessus ... Merci !
- champ index (clé primaire), auto incrément
- champ num (saisi par l'utilisateur, permet d'afficher les données dans l'ordre qu'il choisit)
- champ catégorie (texte simple)
- champ texte, qui comporte des ; comme séparateur de ligne
- champ n1 qui compte le nombre de lignes
- champ n2 qui donne pour chaque catégorie le nombre de lignes
Maintenant en un peu plus clair : dans une catégorie, on lui affecte le numéro qu'on veut, et dans le champ texte qui suit il y a autant de lignes que l'on veut, chacune étant séparée par un point virgule. Le champ num permet juste, si on rajoute à la fin de la table un nouvel enregistrement, et qu'on veut que cette catégorie soit affichée en deuxième position, de spécifier le numéro d'affichage.
J'ai tout le code pour séparer les différentes lignes d'une même catégorie, grâce à preg_match_all. Ce que je voudrais faire maintenant, c'est, à partir de la requête
SELECT * FROM `table` ORDER BY `num` ASC
sélectionner la ième ligne de résultat. Bien sur, il y aurait la solution d'incrémenter une variable dans une boucle while($row = mysql_fetch_row($query)) et de faire if ($compteur == $i) mais c'est pas terrible ...
L'idée est que le tableau peut, à la fin, être n'importe comment dans la base de données (point de vue ordre) mais tout en garantissant toujours un affichage correct. Je sais pas si c'est très clair mais bon, si quelqu'un a une idée un peut plus élégante que celle proposée au dessus ... Merci !
A voir également:
- [SQL] Requête "mouvante"
- Logiciel sql - Télécharger - Bases de données
- Sql lister les tables ✓ - Forum Programmation
- Requête bloquée par le pare-feu applicatif claranet webfence ✓ - Forum Réseaux sociaux
- Jointure sql ✓ - Forum MySQL
- Erreur lors de l'envoi de la requête facebook - Forum Facebook