modification d'une chaine dans mysql

Eléphant du PHP | 248 Messages

09 déc. 2007, 13:47

Bonjour,
dans ma base de donnée j'ai ces entrés:

Code : Tout sélectionner

nom root dossier - dossier/dos2 dossier dossier/dos2/dos3 dossier dossier/dos2/dos3/dos4 dossier
lorsque je modifie dossier/dos2 exemple dossier/dos22, je veut que les dossier en dessous sois modifié comme suit dossier/dos22/dos3, dossier/dos22/dos3/dos4


J'ai mis ce code:
$sql="SELECT nom FROM dossier WHERE root='dossier'";
$result=mysql_query($sql);


while($row=mysql_fetch_array($result)){
list($nom_base)=$row;

$nnom_base=str_replace("dossier/dos2","dossier/dos22",$nom_base);

$sqla="UPDATE dossier SET `nom`='$nnom_base' WHERE root='dossier'";
$resulta=mysql_query($sqla);

}

Mais comme résultat cela me donne:
dossier/dos22
dossier/dos22/dos3
dossier/dos22/dos3 au lieu de dossier/dos22/dos3/dos4


par contre si je fais un echo "$nnom_base" le résultat est parfait

Je n'arrive pas à trouver quel étape que j'ai oublié.

Merci d'avance

ViPHP
ViPHP | 5924 Messages

09 déc. 2007, 14:25

Poste nous ton shéma de table ainsi qu'un petit échantillon de données…

Eléphanteau du PHP | 40 Messages

09 déc. 2007, 17:05

le probleme vien du fait que ton update est mal fait:

Code : Tout sélectionner

UPDATE dossier SET `nom`='$nnom_base' WHERE root='dossier'
ve comme c'est ecrit ton resultat devrais etre:

Code : Tout sélectionner

nom root dossier - dossier/dos22/dos3/dos4 dossier dossier/dos22/dos3/dos4 dossier dossier/dos22/dos3/dos4 dossier sauf si ta clé est sur le `nom`
je sais pas d'ou provient ton resultat bizard (une boucle en moin ou resource)??? mais je te conseil de precisé ton update:

Code : Tout sélectionner

UPDATE dossier SET `nom`='$nnom_base' WHERE root='dossier' AND nom='$nom_base'
PS: list($nom_base) = $row; /*peut s'ecrire */ $nom_base = $row[0];
en construction http://plus2site.fr

Eléphant du PHP | 248 Messages

10 déc. 2007, 11:49

Bonjour merci pour vos réponses mais en effet c'était un problème de mon UPDATE, j'ai du le précisé.