update d'un champs dans toute la base

WRInaute discret
Bonjour à tous,

un petit problème sur un script fait maison :

Alors voila, j'ai une base de donnée déjà remplit et pour une affaire de facilité je voudrai mettre le contenu d'un champs de toute la base en majuscule et nettoyage des accents, parenthèse guillemets etc etc .

j'ai fais un script et au lieu de changer le contenu de chaque champs un par un , il me change le contenu de tous les champs avec le contenu du premier champs.

ce qui fait que le contenu du champs de toute la base est le même.

exemple :

voici ce que je voudrai que ça fasse :

id1
champs = à l'école ==>transfromé en champs = A L ECOLE

id2
champs = général (major ) ==>transfromé en champs = GENERAL MAJOR

id3
champs = mon "<ah bon>" ==> transfromé en champs = MON AH BON

mais avec le script ci_dessous je me retrouve avec :

id1
champs = à l'école ==>transfromé en champs = A L ECOLE

id2
champs = général (major ) ==>transfromé en champs = A L ECOLE

id3
champs = mon "<ah bon>" ==> transfromé en champs = A L ECOLE



mon code :

Code:
<?php 
require ("config.php"); 
@ $db = mysql_pconnect ("$dbhost","$dbuser","$dbpasswd")or die ("erreur de connexion"); 
mysql_select_db("$dbname",$db)or die ("erreur de connexion base"); 
$query="SELECT champs FROM table where champs !=''"; 
$result=mysql_query($query) or die(); 
$num_results = mysql_num_rows($result); 
for ($i=0;$i<$num_results;$i++) 
{ 
$row=mysql_fetch_array($result);    

$find = array('  ', 
      '&quot;', 
      '&', 
      '\r\n', 
      '\n', 
      '/', 
      '\\', 
      '+', 
      '<', 
      '(', 
      ')', 
      '"', 
      '>', 
      'é', 
      'è', 
      'ë', 
      'ê', 
      'É', 
      'È', 
      'Ë', 
      'Ê', 
      'í', 
      'ì', 
      'î', 
      'ï', 
      'Í', 
      'Ì', 
      'Î', 
      'Ï', 
      'ó', 
      'ò', 
      'ô', 
      'Ó', 
      'Ò', 
      'Ô', 
      'á', 
      'à', 
      'â', 
      'Á', 
      'À', 
      'Â', 
      'ú', 
      'ù', 
      'û', 
      'Ú', 
      'Ù', 
      'Û', 
      'ß', 
      'ç', 
      'ü', 
      'Ü', 
      'ä', 
      'Ä', 
      'ö', 
      'Ö', 
      '\'', 
      '--', 
      '-', 
      'Ç', 
      '_', 
      ','); 


  $remplace = array(' ', 
      ' ', 
      ' ', 
      ' ', 
      ' ', 
      ' ', 
      ' ', 
      ' ', 
      ' ', 
      ' ', 
      ' ', 
      ' ', 
      ' ', 
      'E', 
      'E', 
      'E', 
      'E', 
      'E', 
      'E', 
      'E', 
      'E', 
      'I', 
      'I', 
      'I', 
      'I', 
      'I', 
      'I', 
      'I', 
      'I', 
      'O', 
      'O', 
      'O', 
      'O', 
      'O', 
      'O', 
      'A', 
      'A', 
      'A', 
      'A', 
      'A', 
      'A', 
      'U', 
      'U', 
      'U', 
      'U', 
      'U', 
      'U', 
      'SS', 
      'C', 
      'U', 
      'U', 
      'A', 
      'A', 
      'O', 
      'O', 
      ' ', 
      ' ', 
      ' ', 
      'C', 
      ' ', 
      ' '); 

$findes = array('  '); 
$remplacees = array(' '); 
      $sil=$row["champs"]; 
      $sil = strtoupper($sil); 
      $sil=str_replace($find,$remplace,$sil); 
      $sil=str_replace($findes,$remplacees,$sil); 
             
$querys = "update table set champs ='$sil'" 

} 
 mysql_close($db); 
?>


merci de votre aide je suis ko .
 
WRInaute passionné
Code:
$find = array('  ',...);
$remplace = array(' ',...);

while ($row=mysql_fetch_array($result))
{
$sil=str_replace($find,$remplace,strtoupper($row["champs"]));             
mysql_query ("update table set champs ='".$sil."' where champs='".$row["champs"]."'");
}
 
WRInaute discret
merci jeroen,

pour reprendre mon code d'après toi, il faudrait que je fasse ça :

Code:
<?php
require ("config.php");
@ $db = mysql_pconnect ("$dbhost","$dbuser","$dbpasswd")or die ("erreur de connexion");
mysql_select_db("$dbname",$db)or die ("erreur de connexion base"); 
$query="SELECT champs FROM table where champs !=''";
$result=mysql_query($query) or die();
$num_results = mysql_num_rows($result);
while ($row=mysql_fetch_array($result)) 
{
$find = array('  ',
		'&quot;',
		'&',
		'\r\n',
		'\n',
		'/',
		'\\',
		'+',
		'<',
		'(',
		')',
		'"',
		'>',
		'é',
		'è',
		'ë',
		'ê',
		'É',
		'È',
		'Ë',
		'Ê',
		'í',
		'ì',
		'î',
		'ï',
		'Í',
		'Ì',
		'Î',
		'Ï',
		'ó',
		'ò',
		'ô',
		'Ó',
		'Ò',
		'Ô',
		'á',
		'à',
		'â',
		'Á',
		'À',
		'Â',
		'ú',
		'ù',
		'û',
		'Ú',
		'Ù',
		'Û',
		'ß',
		'ç',
		'ü',
		'Ü',
		'ä',
		'Ä',
		'ö',
		'Ö',
		'\'',
		'--',
		'-',
		'Ç',
		'_',
		',');


  $remplace = array(' ',
		' ',
		' ',
		' ',
		' ',
		' ',
		' ',
		' ',
		' ',
		' ',
		' ',
		' ',
		' ',
		'E',
		'E',
		'E',
		'E',
		'E',
		'E',
		'E',
		'E',
		'I',
		'I',
		'I',
		'I',
		'I',
		'I',
		'I',
		'I',
		'O',
		'O',
		'O',
		'O',
		'O',
		'O',
		'A',
		'A',
		'A',
		'A',
		'A',
		'A',
		'U',
		'U',
		'U',
		'U',
		'U',
		'U',
		'SS',
		'C',
		'U',
		'U',
		'A',
		'A',
		'O',
		'O',
		' ',
		' ',
		' ',
		'C',
		' ',
		' ');

$findes = array('  ');
$remplacees = array(' ');
		$sils=$row["champs"];
		$sil = strtoupper($sils);
		$sil=str_replace($find,$remplace,$sil);
		$sil=str_replace($findes,$remplacees,$sil);
				
$querys = "update table set champs='$sil' where user_sil='$sils'"

}
 mysql_close($db);
?>
 
WRInaute passionné
le champs est un ordonné, pour un update en intersection, il faut aussi renseigner l'abysse

rog
 
WRInaute discret
c'est bon j'ai reglé le probleme en integrant le while dans le for comme le suggerait jeroen .

merci ça m'a beucoup aidé :wink: .
 
Discussions similaires
Haut