8796 sujets

Développement web côté serveur, CMS

Salut,

Donc, voilà, j'ai un petit souçi depuis que j'ai transférer ma base de donnée.
Mes 'à' se sont transformé en '? '

Donc, j'essaie de tous les changer avec ça :




//On se connecte à la bdd

try
{
	$bdd = new PDO('mysql:host=****;dbname=*****', '*****', '****');
}
catch(Exception $e)
{
        die('Erreur : '.$e->getMessage());
}




$nb_modifs = $bdd->exec('UPDATE equipements SET caracteristiques = \'à\' WHERE caracteristiques LIKE = \'? \'');
echo $nb_modifs . ' entrées ont été modifiées !';






Le problème ça ne marche pas rien Smiley decu
Et je ne c'est pas où est l'erreur.

Si quelqu'un peux m'aider ça serait cool.

Merci d'avance.
Modifié par DjaSama (07 Sep 2010 - 13:06)
salut...

je répondrais NORMAL... non je plaisante mais quand même

quadn on cherche UN caractère dans un texte il faut l'entourer de % afin que mysql sache qu'il peut y avoir plein de choses avant et plein de choses après... et il n'y a pas de = après LIKE

SAUF QUE ..; mysql ne sait pas remplacer qu'un bout de chaine il remplacera l'intégralité de la chaine.

Il va donc te falloir passer par un bout de php

le process :



$leslignes = requete "select id, caracteristiques from equipements"

foreach($leslignes as $key => $val)
{
    $newcaract = str_replace("?","à",$val);
    requete "update equipements set caracteristiques= '".$newcaract."' where id= ".$id;
}




j'ai écris requete là ou tu dois construire la requète... avec ta class que je ne connais pas Smiley smile
Modifié par pchlj (07 Sep 2010 - 11:35)
Salut,

mysql_query("update matable set monchamp = replace(monchamp , '?', 'à')");
printf("Lignes effacées : %d\n", mysql_affected_rows());

Modifié par Heyoan (07 Sep 2010 - 12:02)
Merci beaucoup à vous 2, j'ai réussi, mais le problème c'est qu'il y une espace en trop, au lieu d'avoir :

de 5 à 72 heures

J'ai :

de 5 à 72 heures.

Comment faire pour supprimé l'espace juste après le à de sorte qu'il n'y est qu'un seul espace.

Merci d'avance
Ben il aurait fallu anticiper et utiliser replace(monchamp , '?  ', 'à')
et maintenant il faut faire replace(monchamp , 'à ', 'à ') (il y a deux espaces après le premier à qui n'apparaissent pas sur le forum). A noter que ça me donne l'impression que tu n'as pas compris le fonctionnement. Smiley rolleyes
Modérateur
Salut,

C'est bizarre de corriger le problème une fois qu'il est survenu plutôt que d'en trouver la source, non ? Smiley sweatdrop

... parce que d'après le premier post, j'aurais tendance à dire qu'il ne s'agissait ni plus ni moins que d'un problème d'encodage. A un niveau donné, l'un des outils ne fonctionnait pas dans le même encodage et c'est ce qui provoquait cette conversion de caractères. Du coup, j'aurais eu tendance à chercher dans ce sens puis à renouveler le transfert.
Bah en fait, j'ai supprimer ma table, j'ai transféré à nouveau avec le bon encodage et tous à bien marché Smiley smile

Merci quand même de vos reponses

Cordialement,