SQL requete UPDATE
DAG
-
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 :
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 ?
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:
- SQL requete UPDATE
- Windows update bloqué - Guide
- Winget update - Guide
- Asus live update - Télécharger - Utilitaires
- Windows update windows 10 - Guide
- Wsus offline update - Télécharger - Systèmes d'exploitation
5 réponses
ç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 ?
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 ?
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
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...
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...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Pour le php voila l'insert :
Et voila l'update :
Je mets chaque fichier Excel dans une table, et ensuite je regroupe les table en une seule.
$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.