TUTOS.EU

Mettre à jour des champs d'une table en SQL via PHP

Parcourir les valeurs d'un champ d'une base de données MySql et les mettre à jour en PHP

Basiquement une requête SQL de mise à jour d'une valeur cela donne ceci :

UPDATE `NomBaseDeDonnees`.`NomTable` set `NomChamp01` = 'MaNouvelleValeur' where `NomTable`.`NomChampClePrimaire` = 'identifiant unique' LIMIT 1;
Lien vers le fichier : cliquez ici Copier le code

Et voici un exemple complet en PHP de mise à jour.
On a une première requête 'Select' pour sélectionner les lignes à traiter.
De là on crée les requêtes de mises à jour et on les stocke dans un tableau $ListeRequetes

Enfin on exécute toutes les requêtes de mise à jour qui sont dans le tableau $ListeRequetes

<!DOCTYPE html>
<HTML lang="fr">
	<HEAD>
		<meta charset="utf-8" />

		<LINK rel="stylesheet" type="text/css" href="../style.css">

		<title>Titre du site</title>
		<meta name="Description" content="Description du site"/>
		<meta name="author" content="Bob l'éponge" />
		<meta name="Keywords" content="a, b, c"/>
		
	</HEAD>

	<BODY>

	<?php

		//Tiré de http://www.siteduzero.com/informatique/tutoriels/les-magic-quotes-ou-guillemets-magiques/desactiver-les-magic-quotes
		//Cette option pour virer les magic quotes est importante lorsque l'on poste récupère des valeurs de champs Input et textarea faute de quoi par exemple C'est deviendra C\'est
		function stripslashes_r($var) // Fonction qui supprime l'effet des magic quotes
		{
			if(is_array($var)) // Si la variable passée en argument est un array, on appelle la fonction stripslashes_r dessus
			{
				return array_map('stripslashes_r', $var);
			}
			else // Sinon, un simple stripslashes suffit
			{
				return stripslashes($var);
			}
		}

		if(get_magic_quotes_gpc()) // Si les magic quotes sont activés, on les désactive avec notre super fonction ! ;)
		{
			$_GET = stripslashes_r($_GET);
			$_POST = stripslashes_r($_POST);
			$_COOKIE = stripslashes_r($_COOKIE);
		}


		//Définition des constantes
		define("SQLServerName","NomServeurMySQL");
		define("sqldbname","NomBaseDeDonnees");
		define("sqllogin","LoginSQL");
		define("sqlpass","MotDePasseSQL");

		
		$MaConnection = mysql_connect(constant('SQLServerName'),constant('sqllogin'),constant('sqlpass')); //Création de la connexion à la base de données
		if ($MaConnection) {
			mysql_select_db(constant('sqldbname'), $MaConnection); //Sélection de la base
			mysql_query("SET NAMES UTF8"); //On utilise le codage UTF8

			//Requete de sélection pour récupérer les lignes à traiter. Par exemple ici on prend des lignes ou un champ est vide (Null)
			$sqlrequest = "SELECT `".constant('sqldbname')."`.`NomTable`.`NomChampAvecValeurUnique`, `NomChampQuiPeutEtreVide` FROM `NomTable` WHERE `NomChampQuiPeutEtreVide` Is NULL;";

			echo "Requete pour sélectionner les lignes à mettre à jour : ".$sqlrequest."</br>\n";
			$Resultat = mysql_query($sqlrequest, $MaConnection);
			if (!$Resultat) {die('Erreur sur la requête : ' . mysql_error());}
			else{ // Si la requête est bien passée

				$num_rows = mysql_num_rows($Resultat); //Récupération du nombre de lignes en réponse
				echo "Nombre de lignes à traiter : $num_rows</br>\n";
				if ($num_rows > 0){
				
					$i=0;
					while ($MaLigne=mysql_fetch_array($Resultat, MYSQL_ASSOC)){ //Passage en revue de tous les résultats
						$ValeurChampUniquePourClePrimaire = $MaLigne['NomChampAvecValeurUnique'];

						$ValeurAMEttre = "Mise via update"; //Valeur à indiquer
						//echo "MaVariable : $ValeurAMEttre</br>\n";
						
						//mysql_real_escape_string($ValeurChampUniquePourClePrimaire, $MaConnection);
						$ValeurChampUniquePourClePrimaire = addslashes($ValeurChampUniquePourClePrimaire); //Permet de ne pas bugger si la chaine contient des caractères à la con comme des guillemets et autres
						
						//Mise au point de la requête de mise à jour
						$sqlrequestupdate = "UPDATE `".constant('sqldbname')."`.`NomTable` set `NomChampQuiPeutEtreVide` = '$ValeurAMEttre' where `NomTable`.`NomChampAvecValeurUnique` = '$ValeurChampUniquePourClePrimaire' LIMIT 1;";
						echo "sqlrequestupdate : $sqlrequestupdate</br>\n";
						$ListeRequetes[$i]=$sqlrequestupdate; // on stocke la requête dans un tableau
						$i++;

					}
				}

				//On joue toutes les requêtes de maj pour les types
				$CompteurFile=0;
				while ( $CompteurFile < count($ListeRequetes))
				{
					$sqlrequestupdate = $ListeRequetes[$CompteurFile];
					echo "$sqlrequestupdate<br />\n";
					$Resultat = mysql_query($sqlrequestupdate, $MaConnection);
					echo "Resultat : $Resultat<br />\n";
					$CompteurFile++;
				}	

			}
			mysql_close($MaConnection);
		}
		else{
			die('Connexion impossible : ' . mysql_error());
		}

	?>

	</BODY>
</HTML>
Lien vers le fichier : cliquez ici Copier le code

2