SQL requete UPDATE

DAG -  
 DAG -
Bonjour,

J'ai posté déjà sur le sujet et ma requête à déjà marcher.
Le problème est que là elle ne fait plus rien dans ma base :
UPDATE ouvrant_droit SET 
actif_OD = "1"
WHERE
nom_OD = "test";


La valeur "test" est bien présente dans la colonne nom_OD.
Il existe bien une table "ouvrant_droit" avec une colonne "actif_OD".
La colonne "actif_OD" est vide pour l'utilisateur "test".

J'utilise phhmyadmin pour tester la requête et celui ci me dit que tous se passe bien. Le truc c'est qu'il ne m'ajoute rien dans ma base :
Nombre d'enregistrements affectés : 0

Quelqu'un aurai-t-il une idée du pourquoi de la chose ?
A voir également:

5 réponses

wirus
 
initialise la colomne par defaut a 0 puis relance la requete
0
DAG
 
ça ne marche pas...
J'ai vider ma table, et j'ai rentré des valeurs "à la main" afin de faire des tests. Et la ça marche !
Les valeurs que j'ai dans ma base sont des valeurs entrés via un programme PHP.
J'ai remarqué que des champs comme "nom" que je croyais qu'ils avaient la valeur "titi", avaient en fait la valeur "titi ".

J'ai donc essayer avec "titi ". Mais pareil : il ne veut rien insérer. Par contre si je fonctionne avec l'ID (autogénérer) ça marche !!

J'y comprend rien ! Y aurai-t-il des cratères cachés ?
0
wirus
 
bon j'ai rien compris, tu voulais dire que ta base de données de remplie seule de valeurs que tu connais pas? et aussi qu'il ya des champs qui ne se remplissent meme pas manuellement?? c ca? stp envoi les bout de code php de l'insert et l'update
0
DAG
 
En fait, j'ai plusieurs fichiers Excel (au format CSV) que je dois lire et mettre dans une base MySQL.
Dans un des fichiers, il y a des données du genre "nom" "prenom" "adresse" et autres.
Je récupère ces données et je les met dans la base MySQL.

Ensuite je lis un autre fichier Excel.
Il contient les mêmes infos que dans le premier fichier (cad : "nom" + "prenom"...) mais aussi d'autres info comme "actif", "non actif"et autres....

J'aimerai venir compléter les infos qui sont déjà dans la base grâce aux données du 1ier ficher, en y insérant le second fichier.

Donc comme j'ai des infos qui sont communes (nom + prenom + date naissance), je veux juste faire un update des données.

Le probleme c'est que les infos que j'ai déjà rentré dans la base sont un peu ... bizarres... Comme je disais avant, lorsque je regarde (via phpmyadmin) les infos qui se trouvent dans la colonne "nom", je retrouve par exemple "toto".
Et lorsque que je veux faire un update des champs avec "WHERE(nom = "toto")" , il ne m'insère rien. Par contre si je le fait avec "WHERE(ID = "1")" (ID est un champs auto généré et auto incrémenté par le SGBD), là ça marche !

J'en déduit qu'il ne trouve pas de nom "toto" dans la colonne "nom".

Je voulais savoir si par hasard MySQL ne mettrait pas de caractère spéciaux invisibles (genre \n ou \t) qui ferais qu'il ne trouve pas le nom ?
J'ai essayer en mettant des espaces avant et/ou après : ça ne marche pas.

J'ai réglé le problème en mettant un like "%toto%" mais bon.... J'aurai voulu savoir ou était le problème.

Voila ! J'espère avoir été plus claire...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
DAG
 
Pour le php voila l'insert :

$statementOne = "SELECT 
				CIVILITE, NOM, PRENOM, DATEDENAISSANCE, DATEENTREESOCIETE, ADRESSEPERSO, CPPERSO, VILLEPERSO, MAILPERSO, MAILPRO, TRANCHEDEQF 
				FROM 
				tabletampon_od_file;";
$req = mysql_query($statementOne) or die('<br>Erreur base de donnée !<br>'.$statementOne.'<br>'.mysql_error());	
	
while ($data = mysql_fetch_array($req))
{
	echo 
	$statementTwo = "
	INSERT INTO OUVRANT_DROIT
	(
		civilite_OD, nom_OD, prenom_OD, date_naissance_OD, date_entree_societe_OD, adresse_perso_OD, code_postal_OD, ville_perso_OD, mail_perso_OD, mail_prof_OD, tranche_QF
	) 
	VALUES
	(
		\"$data[CIVILITE]\",\"$data[NOM]\",\"$data[PRENOM]\",\"$data[DATEDENAISSANCE]\",\"$data[DATEENTREESOCIETE]\",\"$data[ADRESSEPERSO]\",\"$data[CPPERSO]\",\"$data[VILLEPERSO]\",\"$data[MAILPERSO]\",\"$data[MAILPRO]\",\"$data[TRANCHEDEQF]\"
	);";
	echo $statementTwo."<br><br>";
	//$req2 = mysql_query($statementTwo) or die('<br>Erreur base de donnée !<br>'.$statementTwo.'<br>'.mysql_error());
}


Et voila l'update :

$statementThree = "SELECT 
				* 
				FROM 
				tabletampon_rh_file 
				ORDER BY NOMUSUEL;";
$req5 = mysql_query($statementThree) or die('<br>Erreur base de donnée !<br>'.$statementThree.'<br>'.mysql_error());	


$statementFour = "SELECT 
					* 
					FROM 
					OUVRANT_DROIT 
					ORDER BY nom_OD;";
$req6 = mysql_query($statementFour) or die('<br>Erreur base de donnée !<br>'.$statementFour.'<br>'.mysql_error());	

					
while ($data2 = mysql_fetch_array($req6))
{
	while ($data = mysql_fetch_array($req5))
	{
		if(($data[NOMUSUEL] && $data[PRENOMUSUEL] && $data[DATENAISSANCE]) == ($data2[nom_OD] && $data2[prenom_OD] && $data2[date_naissance_OD]))
		{
			$statementFive = "UPDATE OUVRANT_DROIT SET
								unite_affaire_OD = \"$data[UNITEDAFFAIRE]\", 
								libelle_unite_affaire_OD = \"$data[LIBELLEUNITEDAFFAIRE]\", 
								entite_gestion_OD = \"$data[ENTITEDEGESTIONEDG]\", 
								libelle_entite_gestion_OD = \"$data[LIBELLEENTITEDEGESTIONEDG]\", 
								contrat_travail_OD = \"$data[NATURECONTRATTRAVAILGROUPE]\", 
								motif_inactivite_OD = \"$data[MOTIFINACTIVITE]\", 
								actif_OD = \"$data[ACTIF]\", 
								alternance_OD = \"$data[ALTERN]\", 
								non_actif_OD = \"$data[NONACTIF]\"
							WHERE
							(
								nom_OD LIKE \"%$data[NOMUSUEL]%\" AND prenom_OD = \"%$data[PRENOMUSUEL]%\" AND date_naissance_OD = \"%$data[DATENAISSANCE]%\" 
							);";
			echo $statementFive."<br><br>";
			$req7 = mysql_query($statementFive) or die('<br>Erreur base de donnée !<br>'.$statementFive.'<br>'.mysql_error());	
		}


Je mets chaque fichier Excel dans une table, et ensuite je regroupe les table en une seule.
0