MySql: Créer une liste de plus de 100 items organisable

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : MySql: Créer une liste de plus de 100 items organisable

par TheKind » 06 juil. 2006, 00:08

Bon, j'ai trouvé une solution plus souple, parce que 100 entrées dans la base c'est rien, mais il faut le multiplier par le nombre d'utilisateurs...

J'ai donc opté pour une autre solution, la voilà:

Plutot que de rentrer chaque liste dans la base avec chaque id 1 par 1, je crée une chaîne au format suivant:
|id1|id2|id3|id4|[etc...]

Comme ça tout est dans l'ordre et ça fait moins d'entrées dans la base.

Et pour déplacer un item j'utilise ce script (encore en beta :P, aucune vérification):

Code : Tout sélectionner

<? // On cherche à déplacer le 21 ($idadeplacer) et le mettre en premier dans la liste ($placerenposition) // Données: $idadeplacer="21"; $placerenposition="1"; $liste="|15|26|75|01|56|79|25|125|163|485|596|25|78|63|25|21|"; echo $liste.'<br>'; if (strpos($liste,"|".$idadeplacer."|")) { // J'enlève l'ID en cours $liste=str_replace("|".$idadeplacer."|","|", $liste); // Je fais un explode pour retrouver quel id est à la position choisie $tableau=explode("|",$liste); // Je cherche la position de l'id qui occupe la place voulue $a=strpos($liste,"|".$tableau[$placerenposition]."|"); // J'extrait la chaîne se situant au avant mon nouvel id $debut=substr($liste, 0, $a); // J'insère mon nouvel id dans la chaîne $debut=$debut."|".$idadeplacer; // J'extrais la chaîne après mon nouvel id $fin=substr($liste, -strlen($liste)+$a); // Je scinde les 2 chaînes $result=$debut.$fin; // J'admire le résultat echo $result; } ?>
Et il est commenté pour améliorer la compréhension, que demande le peuple?
Je suis assez content de ceci, même si ke sais qu'il ne sera pas non plus hyper léger :/

par TheKind » 05 juil. 2006, 18:28

Oui je vais les espacer de 100 en 100 (c'est un gros chiffre je sais mais j'M bien, et j'essaierais de mettre une routine de temps en temps pour réorganiser tout cela. Merci pour l'idée.

par Henri » 05 juil. 2006, 18:22

Ca me rappelle le temps où on codait en Basic avec des lignes numérotées. On ne les numérotait pas de 1 en 1, mais de 5 en 5 ou de 10 en 10. Comme ça, cela ne posait pas de problème quand on insérait des lignes ou qu'on en déplaçait.

Et puis, de temps en temps, quand c'était trop le foutoir, on passait une routine qui faisait une renumérotation propre de 5 en 5 ou de 10 en 10.

Je n'ai pas de solution à ton problème, mais tu peux peut-être t'inspirer de ça en numérotant par exemple tes images de 10 en 10. Comme ça quand ton image en 20ième position passe à la 2ième position, tu la renumérotes en n°15 (milieu entre l'image en position 1 numérotée 10 et l'image en ex-position 2 numérotée 20). Et quand tu enregistres le tout, tu en profites pour toutes les renuméroter proprement.

En plus 100 enregistrements dans la base, ce n'est pas forcément très lourd.

MySql: Créer une liste de plus de 100 items organisable

par TheKind » 05 juil. 2006, 11:16

Bonjour, (je suis nouveau ici bonjour tout le monde,meme si le php ne m'est pas étranger)
je cherche à créer une liste d'image organisable par un script javascript côté client. Le but est de faciliter le classement. Par exemple, si mon image est en 20 ème position et que je la passe deuxième, je voudrait que la 2->3, la 3->4, la 4->5 jusqu'à 19->20. Seulement, créerune base avec id, img, placement où placement correspond à ce numéro implique un gros traitement côté serveur, d'autant plus que ces listes devraient faire plus de 100 images...

Quelqu'un peut m'aider à trouver une solution plus fiable et légère?