Neiflheim Posté 8 Avril 2009 Partager Posté 8 Avril 2009 Bonjour à tous Bon voila après 2 semaines de reflexions et de recherches intenses je me retourne vers vous ! Contexte : un site ou seront mis en ligne des cours sur l'environnement, mais avant de créer la structure j'essaye de penser à tout et je bloque sur un aspect important. J'utilise php/mysql, et les cours seront mis dans une base mysql afin de pouvoir mieux la gérer. Imaginons quelques champs simples à renseigner : chapitre (1, 2, 3...), sous chapitre (1,1 1,2 1,3), contenu, bibliographie. Si un membre rajoute un chapitre 1 puis chapitre 2 jusque la tout vas bien, on peux réaliser un tri par ordre croissant avec les champs chapitre et sous chapitre. Et la le probleme arrive, si on veux intercaler un chapitre entre 2 chapitre existants, on est obligé de tour rencoder pour le décalage... Avait vous une idée pour permettre ce genre de programmation? code, structure, ... Merci d'avance pour vos conseils Lien vers le commentaire Partager sur d’autres sites More sharing options...
jcaron Posté 8 Avril 2009 Partager Posté 8 Avril 2009 Le plus propre est probablement de renuméroter les suivants. Ca peut se faire en une seule ligne de SQL, donc ce n'est pas spécialement difficile. Sinon tu peux utiliser une stratégie relativement simple, mais qui a ses limites: au départ tu numérotes par multiples de 10000 (par exemple). Si jamais tu dois insérer quelque chose, alors tu utilises des multiples de 1000, et ainsi de suite. Ou alors par dichotomie, tu prends la moyenne des valeurs avant et après - ce qui est généralement plus simple, et atteindra a priori ses limites plus tard. Mais quoi qu'il arrive à un moment donné tu sera coincé. Une autre option (mais probablement plus difficile à implémenter au niveau SQL pour faire les opérations habituelles genre tri, pagination, ceci dit je n'ai jamais essayé), est de ne pas stocker un ordre absolu, mais uniquement un ordre relatif, i.e. tel chapitre est "après" un autre et "avant" un troisième. Jacques. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Neiflheim Posté 9 Avril 2009 Auteur Partager Posté 9 Avril 2009 Merci de ta réponse jcaron La deuxieme méthode que tu a cité j'y avais pensé, mais c'est un peu brutal et par la suite ca sera le bordel Tu me propose la renumérotation des suivants, cette méthode m'interesse. As tu une vague idée de la structure de la requete mysql a créer? Car je pense qu'il faudra faire une boucle pour incrémenter? Lien vers le commentaire Partager sur d’autres sites More sharing options...
jcaron Posté 9 Avril 2009 Partager Posté 9 Avril 2009 update table set chapitre=chapitre+1 where chapitre>=chapitre_insere Non? Jacques. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Neiflheim Posté 9 Avril 2009 Auteur Partager Posté 9 Avril 2009 Si C'est niquel je vais partir sur cette piste là ! merci encore pour ton aide Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant