Fusionner deux champs d'une base de données
Par Samuel MARTIN le jeudi, 16 août 2007, 23:45 - Programmation - Lien permanent
L'exemple suivant est un aide-mémoire pour moi seul, mais certains débutants pourront peut être y trouver leurs comptes ... Pour diverses raisons pratiques il est parfois nécessaire de fusionner deux champs d'une base de données vers un seul contenant l'ensemble des données. Le court programme suivant donne la solution. Il suffit de scanner chaque ligne de la table "artiste" et pour chaque ligne/entrée de mettre à jour grâce à "update". Sans le programme, il faudrait utiliser PhpMyadmin et modifier ligne par ligne à la main.
<?php
// déclaration de quelques variables
$host = "ladresseduserveur";
$user = "votrelogin";
$pass = "votremotdepasse";
$bdd = "lenomdelabasededonnees";
// connection avec MySQL
mysql_connect($host, $user, $pass) or die("Impossible de se connecter à la base
de données");
mysql_select_db($bdd) or die("Impossible de se connecter à la base de
données");
$sql = "SELECT * FROM artiste";
$res = mysql_query($sql);
// parcours des résultats de la requête
while ($val = mysql_fetch_assoc($res)){
$nom = trim($val["nomArt"]);
$prenom = trim($val["prenomArt"]);
$id = $val["id_artiste"];
$requete = "UPDATE artiste set identite=\"".$prenom. " ".$nom."\" WHERE
id_artiste=".$id.";";
echo $requete."
<br/>";
//execution de la mise à jour
mysql_query($requete);
}
?>
Note : Avant d'exécuter ce programme penser à mettre à jour
la base pour disposer du champs "identite" par exemple. ALTER TABLE
artiste ADD identite VARCHAR(50)
Questions / suggestions ? n'hésitez pas à déposez dans les commentaires vos remarques.
Commentaires
salut, je tombe sur ton site via Copaing!
Une suggestion: ou bien un simple
SELECT CONCAT(prenom, ' ', nom) peut aussi faire l'affaire, et comme ça tu ne repete pas l'information dans ta base!
Steven > Effectivement, CONCAT pourrait faire l'affaire, seul hic il faudrait pouvoir faire certaines opérations sur le nouveau champ concaténé, aussi nous avons ta solution, mais j'ai bien peur de devoir passer via une requête imbriquée et pâtir d'un temps d'exécution plus long.
Plus simple,
UPDATE artiste set identite= CONCAT(prenomArt, ' ', nomArt)