modification d'une chaine dans mysql

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 : modification d'une chaine dans mysql

par moileraz » 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é.

par gadgino » 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];

par Sékiltoyai » 09 déc. 2007, 14:25

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

modification d'une chaine dans mysql

par moileraz » 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