[PHP] Update de certains champs

Statut
N'est pas ouverte pour d'autres réponses.

xlr8

Over the rainbow 🌈
Yop, je viens d'intégrer des fichiers csv dans ma db et certains champs n'ont aucune valeur.

Et je n'arrive pas trouver comment faire pour faire un update de ma db qui changerait les champs qui sont égaux à '' en NULL.

Si qqun veut bien m'aider :) Car je change à la main chaque champs :[]
 

Jereck

Α & Ω
Staff
UPDATE 'table' SET 'champ' = NULL WHERE 'champ' = "";


Et tu fais une requète par champ (colonne) possible, je suppose qu'il n'y en a pas tant que ça ...
 
1er
OP
xlr8

xlr8

Over the rainbow 🌈
Si j'ai 76 champs et 300 entrées pour la table, c'est pour çà, que je ne voulais pas avoir à reprendre le nom de chaque champs...

Y a pas de solution pour dire de le faire dans tous les champs ?
 

Bartdude

Touriste
Peut-être lors de l'import plutôt alors ?
 
1er
OP
xlr8

xlr8

Over the rainbow 🌈
Ca sera moins long de modifier es valeurs ^^ Y a 36 000 csv, c'était vraiment le bordel de tout faire correspondre... Je suis en train de voir pour procéder à partir d'un DESCRIBE et d'un UPDATE
 
1er
OP
xlr8

xlr8

Over the rainbow 🌈
oups rien dit ^^
 

Ahava

Revenant
Tu importe ton fichier, tu fais le traitement dessus... Tu fais donc une boucle sur tes données, sur chaque ligne non ? Là tu change la requete, mettre null si le champ est vide...
 
1er
OP
xlr8

xlr8

Over the rainbow 🌈
Voilà ça marche, je mettais pas ma requête au bon endroit ^^

Code:
 	mysql_select_db($database_visiblePage, $visiblePage); 
 	$TBName = "fpme_vPage2";
	
	$query_miseajour = "SELECT * FROM ".$TBName;
	$miseajour = mysql_query($query_miseajour, $visiblePage) or die(mysql_error());
	$row_miseajour = mysql_fetch_assoc($miseajour);
	$totalRows_miseajour = mysql_num_rows($miseajour);

	do {
	
		$query_tableStructureDescribe = "DESCRIBE ".$TBName;
		$tableStructureDescribe = mysql_query($query_tableStructureDescribe, $visiblePage) or die(mysql_error());
		$row_tableStructureDescribe = mysql_fetch_assoc($tableStructureDescribe);
		$totalRows_tableStructureDescribe = mysql_num_rows($tableStructureDescribe);
		do {
			$nomField = $row_tableStructureDescribe['Field'];
			if($row_miseajour[$nomField]== ""&& $nomField !=""){
				$updatemaj = "UPDATE ".$TBName." SET `".$nomField."`=NULL WHERE `id`='".$row_miseajour["id"]."'";
				mysql_select_db($database_visiblePage, $visiblePage);
				$updatemajquery = mysql_query($updatemaj, $visiblePage) or die(mysql_error());
				
				echo $updatemaj."<br>";
				
				//echo "UPDATE".$row_miseajour["id"]." ".$nomField;
			}
		} while ($row_tableStructureDescribe = mysql_fetch_assoc($tableStructureDescribe));
	} while ($row_miseajour = mysql_fetch_assoc($miseajour));
 

zoheir

cvm.mangaleet()
Et pourquoi ne pas assigner les champs en "default null" ?

Ou j'ai rien compris -_-'
 

Jereck

Α & Ω
Staff
zoheir a dit:
Et pourquoi ne pas assigner les champs en "default null" ?

Ou j'ai rien compris -_-'
Parce que le CSV comporte une valeur pour chaque champ.

Un chaine vide est une valeur, contrairement à NULL qui est une absence de valeur.
 

Ahava

Revenant
Jereck a dit:
Parce que le CSV comporte une valeur pour chaque champ.

Un chaine vide est une valeur, contrairement à NULL qui est une absence de valeur.
Raconte ça à Oracle tiens :-D
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut