mysql, incrémenter une sous-chaine au mieux ?
3 messages • Page 1 sur 1
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
mysql, incrémenter une sous-chaine au mieux ?
bonsoir,
je sollicite votre sagacité pour m'indiquer s'il existe une façon très simple et optimisée d'incrémenter une sous-chaine. Je m'explique avec un exemple ça sera bien plus facile !!
Donc soit, une rubrique d'une table qui contient des chaines de ce type :
01-01-01
01-01-02
01-02-01
01-02-02
01-02-03
01-03-
02-01-01
02-01-02
02-02-
02-03-01
02-03-02
(en gros ça représente une sorte de plan : grand I/A/1. Donc dans le grand I on a un A et un B, le A contient 01 et 02 et le B 01,02,03... OK ?)
je souhaiterais pouvoir "insérer" dans ce plan une sous-rubrique et donc décaller les suivantes ! Ainsi insérer derrière 01-02-01 une rubrique... donc :
01-02-02 -> 01-02-03
01-02-03 -> 01-02-04
et les autres ne bougent pas...
En gros ça revient à dire que pour tous les enregistrements dont le numéro de niveau est supérieur à un numéro donné, il faut incrémenter de 1 ! (vous me suivez toujours ??
)
Sachant qu'ici c'est le dernier numéro qui est incrémenté, mais ça pourrait être : j'insère une sous-rubrique derrière 01-01 donc
01-02-* --> 01-03-*
01-03-* --> 01-04-*
VOilà !! J'avoue qu'à part en m'embarquant dans des boucles php qui ne me paraissent pas du meilleur goût, j'ai un peu de mal à apréhender ce problème !
Si on pouvait dire sous forme d'une requête mysql :
pour tous les enregistrement supérieurs répondant à ce format "01-[0-9]{2}.*" on incrémente la sous-chaine 2 (ou 3 ou 4), j'avoue que ça m'arrangerait ! mais là je suis largué !!
Merci d'avance pour votre aide !
je sollicite votre sagacité pour m'indiquer s'il existe une façon très simple et optimisée d'incrémenter une sous-chaine. Je m'explique avec un exemple ça sera bien plus facile !!
Donc soit, une rubrique d'une table qui contient des chaines de ce type :
01-01-01
01-01-02
01-02-01
01-02-02
01-02-03
01-03-
02-01-01
02-01-02
02-02-
02-03-01
02-03-02
(en gros ça représente une sorte de plan : grand I/A/1. Donc dans le grand I on a un A et un B, le A contient 01 et 02 et le B 01,02,03... OK ?)
je souhaiterais pouvoir "insérer" dans ce plan une sous-rubrique et donc décaller les suivantes ! Ainsi insérer derrière 01-02-01 une rubrique... donc :
01-02-02 -> 01-02-03
01-02-03 -> 01-02-04
et les autres ne bougent pas...
En gros ça revient à dire que pour tous les enregistrements dont le numéro de niveau est supérieur à un numéro donné, il faut incrémenter de 1 ! (vous me suivez toujours ??
Sachant qu'ici c'est le dernier numéro qui est incrémenté, mais ça pourrait être : j'insère une sous-rubrique derrière 01-01 donc
01-02-* --> 01-03-*
01-03-* --> 01-04-*
VOilà !! J'avoue qu'à part en m'embarquant dans des boucles php qui ne me paraissent pas du meilleur goût, j'ai un peu de mal à apréhender ce problème !
pour tous les enregistrement supérieurs répondant à ce format "01-[0-9]{2}.*" on incrémente la sous-chaine 2 (ou 3 ou 4), j'avoue que ça m'arrangerait ! mais là je suis largué !!
Merci d'avance pour votre aide !
bon j'ai pas du me faire trop comprendre j'ai l'impression
!
bon à force de chercher je commence à trouver un petit quelques chose qui fait presque ce que je veux :
bon bien sûr faut adapter via des variables les valeurs chiffrées de la requête mais ça devrait le faire... Mais je pers le format sur 2 chiffres de ma sous-chaine ainsi...
c à dire que 01-02-01 devient par exemple 01-3-01
Je vais sûrement faire une deuxième requête filtre sur les sous-chaines à 1 chiffre pour leur remettre le 0 devant... Si y'a une soluce en une requête je suis preneur !
bon à force de chercher je commence à trouver un petit quelques chose qui fait presque ce que je veux :
- Code: Tout sélectionner
UPDATE rubriques
SET num=CONCAT(SUBSTRING(num FROM 1 FOR 3),SUBSTRING(num FROM 4 FOR 2)+1,SUBSTRING(num FROM 6))
WHERE num REGEXP '^01\-'
AND SUBSTRING(num FROM 4 FOR 2) > 01
bon bien sûr faut adapter via des variables les valeurs chiffrées de la requête mais ça devrait le faire... Mais je pers le format sur 2 chiffres de ma sous-chaine ainsi...
c à dire que 01-02-01 devient par exemple 01-3-01
Je vais sûrement faire une deuxième requête filtre sur les sous-chaines à 1 chiffre pour leur remettre le 0 devant... Si y'a une soluce en une requête je suis preneur !
3 messages • Page 1 sur 1
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- AdSense Tracking : statistiques détaillées sur les clics AdSense
- Gestion des langues et des sessions en PHP / MySQL
- Passage à l'heure d'été/hiver sur un forum phpBB
- GoogleStats : analyse temps réel des visites de Google sur votre site
- Sortie officielle de GoogleStats v2.0 !
- Le WRInaute du moment
- Interview Wikio : transcript du chat WebRankInfo
- Googlebot, le robot d'indexation de Google
- Exporter des donnees xml dans mysql auto incrementer
- [php] enlever une partie de chaine d'une chaine complete
- [PHP-MySQL] : argument is not a valid MySQL ressource
- decoupage de chaine en 2
- réaction en chaine ...
- Rewriting supprimer chaine
- modifier une chaine
- manipulation d'une chaîne
- Nettoyer une chaine de caractère
- traitement d'une chaine en PHP
- transformer nombre en chaine
- detection de chaine de caractère
- Extraire chaine et comparer
- Chaîne de télévision consacrée à internet ?
- fractionner une chaine de caractères
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités


le forum