Probleme d'insertion (fonction d'ajout)
Résolu/Fermé
SigProjet
Messages postés
21
Date d'inscription
mardi 2 mai 2017
Statut
Membre
Dernière intervention
17 mai 2017
-
2 mai 2017 à 10:04
SigProjet - 6 mai 2017 à 12:52
SigProjet - 6 mai 2017 à 12:52
A voir également:
- Probleme d'insertion (fonction d'ajout)
- Fonction si et - Guide
- Insertion liste déroulante excel - Guide
- Insertion signature word - Guide
- Insertion sommaire word - Guide
- Insertion filigrane word - Guide
3 réponses
Felice_
Messages postés
265
Date d'inscription
mardi 25 avril 2017
Statut
Membre
Dernière intervention
20 juillet 2017
11
2 mai 2017 à 10:10
2 mai 2017 à 10:10
Bonjour,
Fait une fois :
Puis la requête qui s'affiche dans le navigateur exécute là dans ton phpmyadmin et dis moi l'erreur retournée.
Fait une fois :
//écriture de la requête d'insertion $requete = "INSERT INTO joueur VALUES (NOT NULL,'".$id."','".$nom."','".$prenom."','".$adresse."','".$datenaiss."','".$classe."','".$cotisation."')"; exit($requete);
Puis la requête qui s'affiche dans le navigateur exécute là dans ton phpmyadmin et dis moi l'erreur retournée.
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 566
Modifié le 2 mai 2017 à 10:25
Modifié le 2 mai 2017 à 10:25
Salut,
Plusieurs choses à dire. La première, pour faciliter la lecture sur le forum, il serait souhaitable que tu utilises les balises de code pour afficher ton code. Dans ce cas présent ce n'est pas encore trop grave vu la taille du code que tu montres, mais c'est une bonne habitude à prendre ;)
Ensuite, le fait de récupérer tes variables directement dans ta variable globale $_POST n'est pas une bonne chose, c'est un risque de sécurité et une source d'erreur. Ca n'est pas vraiment le point le plus crucial pour faire fonctionner ton code, mais ce n'est pas parce que ton code fonctionne qu'il ne peut pas contenir d'erreurs. Encore une fois, c'est plus une bonne habitude à prendre pour la suite.
Tu utilises la fonction php mysql_query qui est dépréciée, et qui a disparu dans les versions récentes de PHP, il ne faut donc plus l'utiliser. Je te conseille de te référer régulièrement à la documentation officielle de PHP : https://www.php.net/manual/fr/function.mysql-query.php
Dans cette page, tu trouveras des informations très utiles, et il y a même une partie de la réponse, à savoir :
(je rappelle encore une fois, que la fonction mysql_query ne doit plus être utilisée, utilise plutôt mysqli_query, mais le code reste valable)
Ce qu'il faut retenir, c'est qu'une fonction renvoie souvent un résultat, et il faut tester ce résultat. Avec ce code, s'il y a un problème dans l'exécution de ta requête, la source de l'erreur sera indiquée.
Un réflexe à avoir, c'est de tester tes requêtes dans phpmyadmin. Juste après la création de ta chaine $requete, tu peux l'afficher, pour l'exécuter dans phpmyadmin, comme ceci par exemple :
(la fonction var_dump est très pratique pour le débuguer ton code)
Parfois, le simple fait d'afficher ta requête construite fera que l'erreur va te sauter aux yeux.
Plusieurs choses à dire. La première, pour faciliter la lecture sur le forum, il serait souhaitable que tu utilises les balises de code pour afficher ton code. Dans ce cas présent ce n'est pas encore trop grave vu la taille du code que tu montres, mais c'est une bonne habitude à prendre ;)
Ensuite, le fait de récupérer tes variables directement dans ta variable globale $_POST n'est pas une bonne chose, c'est un risque de sécurité et une source d'erreur. Ca n'est pas vraiment le point le plus crucial pour faire fonctionner ton code, mais ce n'est pas parce que ton code fonctionne qu'il ne peut pas contenir d'erreurs. Encore une fois, c'est plus une bonne habitude à prendre pour la suite.
Tu utilises la fonction php mysql_query qui est dépréciée, et qui a disparu dans les versions récentes de PHP, il ne faut donc plus l'utiliser. Je te conseille de te référer régulièrement à la documentation officielle de PHP : https://www.php.net/manual/fr/function.mysql-query.php
Dans cette page, tu trouveras des informations très utiles, et il y a même une partie de la réponse, à savoir :
$result = mysql_query('SELECT * WHERE 1=1'); if (!$result) { die('Requête invalide : ' . mysql_error()); }
(je rappelle encore une fois, que la fonction mysql_query ne doit plus être utilisée, utilise plutôt mysqli_query, mais le code reste valable)
Ce qu'il faut retenir, c'est qu'une fonction renvoie souvent un résultat, et il faut tester ce résultat. Avec ce code, s'il y a un problème dans l'exécution de ta requête, la source de l'erreur sera indiquée.
Un réflexe à avoir, c'est de tester tes requêtes dans phpmyadmin. Juste après la création de ta chaine $requete, tu peux l'afficher, pour l'exécuter dans phpmyadmin, comme ceci par exemple :
var_dump($requete);exit;
(la fonction var_dump est très pratique pour le débuguer ton code)
Parfois, le simple fait d'afficher ta requête construite fera que l'erreur va te sauter aux yeux.
SigProjet
Messages postés
21
Date d'inscription
mardi 2 mai 2017
Statut
Membre
Dernière intervention
17 mai 2017
2 mai 2017 à 10:57
2 mai 2017 à 10:57
Merci pour ta réponse =) . Cependant je suis dans l'obligation de traiter mon projet sous easyphp 5.3.0 donc malheureusement une partie de tes réponses ne peuvent pas s'appliquer dans mon cas .
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 566
2 mai 2017 à 11:00
2 mai 2017 à 11:00
ah bon ? Et en quoi ?
SigProjet
Messages postés
21
Date d'inscription
mardi 2 mai 2017
Statut
Membre
Dernière intervention
17 mai 2017
2 mai 2017 à 11:10
2 mai 2017 à 11:10
eh bien il n’y à que mysql_query qui fonctionne et pour ce qui est du test de la requête il y est notifié une erreur de syntaxe . Cependant j'ai du mal à voir cette erreur alors que j'ai pourtant vérifié plusieurs fois le codage .
Petite précision , je débute en programmation .
Petite précision , je débute en programmation .
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
>
SigProjet
Messages postés
21
Date d'inscription
mardi 2 mai 2017
Statut
Membre
Dernière intervention
17 mai 2017
2 mai 2017 à 11:30
2 mai 2017 à 11:30
Bonjour,
Ne peut pas marcher ...
La bonne requête serait :
Pour ce qui est de la requête d'insertion ...
le "NOT NULL" est faux !
A la limite :
Le mieux serait même d'indiquer les champs pour lesquels tu veux insérer les données ...
un truc du genre:
SELECT * WHERE 1=1'
Ne peut pas marcher ...
La bonne requête serait :
SELECT * FROM tatable WHERE 1=1'
Pour ce qui est de la requête d'insertion ...
$requete = "INSERT INTO joueur VALUES (NOT NULL,'".$id. "','".$nom. "','".$prenom. "','".$adresse. "','".$datenaiss. "','".$classe. "','".$cotisation. "')";
le "NOT NULL" est faux !
A la limite :
$requete = "INSERT INTO joueur VALUES (NULL,'$id','$nom','$prenom','$adresse','$datenaiss','$classe','$cotisation')";
Le mieux serait même d'indiquer les champs pour lesquels tu veux insérer les données ...
un truc du genre:
INSERT INTO tatable (champ1,champ2... ) VALUES ('valeur1', 'valeur2'...)
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
>
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
2 mai 2017 à 11:31
2 mai 2017 à 11:31
Au passage ...
Attention, l'extension mysql était obsolète en PHP 5.5.0, et a été supprimée en PHP 7.0.0.
https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
À la place, tu peux (<gras DOIS </gras> ) (même en 5.3 ) utiliser l'extension MySQLi ou l'extension PDO_MySQL
https://www.commentcamarche.net/faq/44117-connexion-a-une-base-avec-pdo-mysqli
Si tu choisis PDO, pense à activer la gestion des erreurs : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Attention, l'extension mysql était obsolète en PHP 5.5.0, et a été supprimée en PHP 7.0.0.
https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
À la place, tu peux (<gras DOIS </gras> ) (même en 5.3 ) utiliser l'extension MySQLi ou l'extension PDO_MySQL
https://www.commentcamarche.net/faq/44117-connexion-a-une-base-avec-pdo-mysqli
Si tu choisis PDO, pense à activer la gestion des erreurs : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
2 mai 2017 à 12:15
2 mai 2017 à 12:15
Peux tu tester ceci :
<?php //------------------------------------------------------------------ //activation affichage des erreurs //------------------------------------------------------------------ error_reporting(E_ALL); ini_set('display-errors','on'); // inclusion du fichier de connexion require_once("connexion.php"); //recuperation PROPRE des valeurs passées en POST $id = !empty($_POST['id']) ? $_POST['id'] : NULL; $nom = !empty($_POST['nom']) ? mysql_real_escape_string($_POST['nom']) : NULL; $prenom = !empty($_POST['prenom']) ? mysql_real_escape_string($_POST['prenom']) : NULL; $adresse = !empty($_POST['adresse']) ? mysql_real_escape_string($_POST['adresse']) : NULL; $datenaiss = !empty($_POST['datenaiss']) ? mysql_real_escape_string($_POST['datenaiss']) : NULL; $classe = !empty($_POST['classe']) ? mysql_real_escape_string($_POST['classe']) : NULL; $cotisation = !empty($_POST['cotisation']) ? mysql_real_escape_string($_POST['cotisation']) : NULL; //écriture de la requête d'insertion $requete = "INSERT INTO joueur VALUES ('$id','$nom','$prenom','$adresse','$datenaiss','$classe','$cotisation')"; //Execution de la requete d'insertion if(mysql_query($requete,$db) or die ("Erreur dans la requete <br>: $requete <br>".mysql_error())) { //Redirection vers listejoueur header("Location: listejoueur.php"); exit(); } ?>
SigProjet
Messages postés
21
Date d'inscription
mardi 2 mai 2017
Statut
Membre
Dernière intervention
17 mai 2017
2 mai 2017 à 17:53
2 mai 2017 à 17:53
Merci je te dirais le résultat demain
SigProjet
Messages postés
21
Date d'inscription
mardi 2 mai 2017
Statut
Membre
Dernière intervention
17 mai 2017
Modifié le 2 mai 2017 à 19:25
Modifié le 2 mai 2017 à 19:25
J'ai testé ton code cependant une erreur ce produit lors de l’exécution de la requête :
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Accès refusé pour l'utilisateur: 'roman'@'@localhost' (mot de passe: NON) in C:\Program Files (x86)\EasyPHP5.3.0\www\ajouter2joueur.php on line 13
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\Program Files (x86)\EasyPHP5.3.0\www\ajouter2joueur.php on line 13
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Accès refusé pour l'utilisateur: 'roman'@'@localhost' (mot de passe: NON) in C:\Program Files (x86)\EasyPHP5.3.0\www\ajouter2joueur.php on line 14
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\Program Files (x86)\EasyPHP5.3.0\www\ajouter2joueur.php on line 14
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Accès refusé pour l'utilisateur: 'roman'@'@localhost' (mot de passe: NON) in C:\Program Files (x86)\EasyPHP5.3.0\www\ajouter2joueur.php on line 15
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\Program Files (x86)\EasyPHP5.3.0\www\ajouter2joueur.php on line 15
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Accès refusé pour l'utilisateur: 'roman'@'@localhost' (mot de passe: NON) in C:\Program Files (x86)\EasyPHP5.3.0\www\ajouter2joueur.php on line 16
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\Program Files (x86)\EasyPHP5.3.0\www\ajouter2joueur.php on line 16
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Accès refusé pour l'utilisateur: 'roman'@'@localhost' (mot de passe: NON) in C:\Program Files (x86)\EasyPHP5.3.0\www\ajouter2joueur.php on line 17
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\Program Files (x86)\EasyPHP5.3.0\www\ajouter2joueur.php on line 17
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Accès refusé pour l'utilisateur: 'roman'@'@localhost' (mot de passe: NON) in C:\Program Files (x86)\EasyPHP5.3.0\www\ajouter2joueur.php on line 18
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\Program Files (x86)\EasyPHP5.3.0\www\ajouter2joueur.php on line 18
Warning: mysql_query() expects parameter 2 to be resource, object given in C:\Program Files (x86)\EasyPHP5.3.0\www\ajouter2joueur.php on line 25
Erreur dans la requete
: INSERT INTO joueur VALUES ('NULE','','','','','','')
Accès refusé pour l'utilisateur: 'roman'@'@localhost' (mot de passe: NON)
Je precise que j'ai testé cela chez moi et non au lieu de travail habituel . Cependant j'ai bien placé tout les fichiers ainsi que la base de donnée et la table ( que j'ai d'ailleurs tout les 2 importés sur phpmyadmin ) .
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Accès refusé pour l'utilisateur: 'roman'@'@localhost' (mot de passe: NON) in C:\Program Files (x86)\EasyPHP5.3.0\www\ajouter2joueur.php on line 13
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\Program Files (x86)\EasyPHP5.3.0\www\ajouter2joueur.php on line 13
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Accès refusé pour l'utilisateur: 'roman'@'@localhost' (mot de passe: NON) in C:\Program Files (x86)\EasyPHP5.3.0\www\ajouter2joueur.php on line 14
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\Program Files (x86)\EasyPHP5.3.0\www\ajouter2joueur.php on line 14
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Accès refusé pour l'utilisateur: 'roman'@'@localhost' (mot de passe: NON) in C:\Program Files (x86)\EasyPHP5.3.0\www\ajouter2joueur.php on line 15
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\Program Files (x86)\EasyPHP5.3.0\www\ajouter2joueur.php on line 15
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Accès refusé pour l'utilisateur: 'roman'@'@localhost' (mot de passe: NON) in C:\Program Files (x86)\EasyPHP5.3.0\www\ajouter2joueur.php on line 16
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\Program Files (x86)\EasyPHP5.3.0\www\ajouter2joueur.php on line 16
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Accès refusé pour l'utilisateur: 'roman'@'@localhost' (mot de passe: NON) in C:\Program Files (x86)\EasyPHP5.3.0\www\ajouter2joueur.php on line 17
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\Program Files (x86)\EasyPHP5.3.0\www\ajouter2joueur.php on line 17
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Accès refusé pour l'utilisateur: 'roman'@'@localhost' (mot de passe: NON) in C:\Program Files (x86)\EasyPHP5.3.0\www\ajouter2joueur.php on line 18
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\Program Files (x86)\EasyPHP5.3.0\www\ajouter2joueur.php on line 18
Warning: mysql_query() expects parameter 2 to be resource, object given in C:\Program Files (x86)\EasyPHP5.3.0\www\ajouter2joueur.php on line 25
Erreur dans la requete
: INSERT INTO joueur VALUES ('NULE','','','','','','')
Accès refusé pour l'utilisateur: 'roman'@'@localhost' (mot de passe: NON)
Je precise que j'ai testé cela chez moi et non au lieu de travail habituel . Cependant j'ai bien placé tout les fichiers ainsi que la base de donnée et la table ( que j'ai d'ailleurs tout les 2 importés sur phpmyadmin ) .
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
>
SigProjet
Messages postés
21
Date d'inscription
mardi 2 mai 2017
Statut
Membre
Dernière intervention
17 mai 2017
2 mai 2017 à 19:26
2 mai 2017 à 19:26
Peux tu nous montrer le contenu de ton fichier connexion.php ?
SigProjet
Messages postés
21
Date d'inscription
mardi 2 mai 2017
Statut
Membre
Dernière intervention
17 mai 2017
2 mai 2017 à 19:35
2 mai 2017 à 19:35
Bien sur , le voici :
<?php
$localhost = '127.0.0.1';
$user = 'root';
$password = '';
$database = 'footclub';
$db = new mysqli($localhost, $user, $password, $database);
if (mysqli_connect_errno()) {
printf("Échec de la connexion : %s\n", $mysqli->connect_error);
exit();
}
<?php
$localhost = '127.0.0.1';
$user = 'root';
$password = '';
$database = 'footclub';
$db = new mysqli($localhost, $user, $password, $database);
if (mysqli_connect_errno()) {
printf("Échec de la connexion : %s\n", $mysqli->connect_error);
exit();
}
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
Modifié le 2 mai 2017 à 19:41
Modifié le 2 mai 2017 à 19:41
1 - Pour poster du code sur le forum.. merci d'utiliser la coloration syntaxique (les balises de code).
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
MERCI D'Y PENSER A L'AVENIR !
2 - Ton fichier de connexion est en mysqli ... alors que ton code d'insertion est en mysql ???
Normal que ça ne marche pas !!!!
Donc tu changes tous les mysql_real_escape_string($unevariable)
par :
puis
A remplacer par :
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
MERCI D'Y PENSER A L'AVENIR !
2 - Ton fichier de connexion est en mysqli ... alors que ton code d'insertion est en mysql ???
Normal que ça ne marche pas !!!!
Donc tu changes tous les mysql_real_escape_string($unevariable)
par :
$db->real_escape_string($unevariable);
puis
if(mysql_query($requete,$db) or die ("Erreur dans la requete <br>: $requete <br>".mysql_error())) { //Redirection vers listejoueur header("Location: listejoueur.php"); exit(); }
A remplacer par :
if($db->query($requete) ){ //Redirection vers listejoueur header("Location: listejoueur.php"); exit(); }
2 mai 2017 à 10:48
Erreur
requête SQL:
$requete = "INSERT INTO joueur VALUES (NOT NULL,'".$id. "','".$nom. "','".$prenom. "','".$adresse. "','".$datenaiss. "','".$classe. "','".$cotisation. "')";
MySQL a répondu:Documentation
#1064 - Erreur de syntaxe près de '$requete = "INSERT INTO joueur VALUES (NOT NULL,'".$id."','".$nom."','".$prenom.' à la ligne 1
Je precise que je travaille sous easyphp 5.3.0
2 mai 2017 à 11:30
2 mai 2017 à 11:47