Signaler

Probleme d'insertion (fonction d'ajout) [Résolu]

Posez votre question SigProjet 21Messages postés mardi 2 mai 2017Date d'inscription 17 mai 2017 Dernière intervention - Dernière réponse le 6 mai 2017 à 12:52 par SigProjet
Bonjour tout le monde je travail actuellement sur un projet de création de site qui correspond a mon épreuve de BAC pour cette année , à savoir la gestion d'un club de foot . j'ai notamment réussi a créer et à importer la base de donnée. Pareil pour ma table nommée "joueur" . L'interface qui regroupe les fonctions comme "ajouter", "liste", "supprimer" ainsi que "modification" à également été créer . le fichier de connexion à la base de donnée est opérationnel lui aussi . Seulement voila , la fonction "ajouter" ne fonctionne pas . Je précise que j'ai créer deux fichiers ( ajouter1joueur , ajouter2joueur ) pour appliquer cette fonction. Je pense que la requête du second fichier ne fonctionne pas . Voici le codage du fichier en question :
<?
// inclusion du fichier de connexion
require_once("connexion.php");

//recuperation des valeurs passées en POST
$id = $_POST['id'];
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$adresse = $_POST['adresse'];
$datenaiss = $_POST['datenaiss'];
$classe = $_POST['classe'];
$cotisation = $_POST['cotisation'];

//écriture de la requête d'insertion
$requete = "INSERT INTO joueur VALUES (NOT NULL,'".$id."','".$nom."','".$prenom."','".$adresse."','".$datenaiss."','".$classe."','".$cotisation."')";

//Execution de la requete d'insertion
mysql_query($requete,$db);

//Redirection vers listejoueur
header("Location: listejoueur.php");
?>

Merci si possible de m'aider . Tout soutien est le bienvenu .
Afficher la suite 
Utile
+0
plus moins
Bonjour,

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.
SigProjet 21Messages postés mardi 2 mai 2017Date d'inscription 17 mai 2017 Dernière intervention - 2 mai 2017 à 10:48
Voila ce qui m'est affiché :

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
Répondre
Felice_ 249Messages postés mardi 25 avril 2017Date d'inscription 17 juin 2017 Dernière intervention - 2 mai 2017 à 11:30
SigProjet, vous m'avez mal compris, je vous proposais d’exécuter la requête afficher dans le navigateur par « exit » et non le code que vous avez écrit en php.
Répondre
SigProjet 21Messages postés mardi 2 mai 2017Date d'inscription 17 mai 2017 Dernière intervention - 2 mai 2017 à 11:47
Excusez-moi mais j'ai du mal a comprendre: exécutez la requête afficher dans le navigateur par "exit" . Pourriez vous développez d'avantage , je débute en programmation.
Répondre
Donnez votre avis
Utile
+0
plus moins
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 : http://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 21Messages postés mardi 2 mai 2017Date d'inscription 17 mai 2017 Dernière intervention - 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 .
Répondre
jordane45 17491Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 22 juin 2017 Dernière intervention - 2 mai 2017 à 11:30
Bonjour,

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'...)
Répondre
jordane45 17491Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 22 juin 2017 Dernière intervention - 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.
http://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
http://www.commentcamarche.net/faq/44117-connexion-a-une-base-avec-pdo-mysqli

Si tu choisis PDO, pense à activer la gestion des erreurs : http://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs
Répondre
ThEBiShOp 8463Messages postés jeudi 22 mars 2007Date d'inscription ContributeurStatut 9 juin 2017 Dernière intervention - 2 mai 2017 à 11:32
mysqli_query doit fonctionner, s'il y a une erreur, elle se trouve ailleurs.
Répondre
jordane45 17491Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 22 juin 2017 Dernière intervention - 2 mai 2017 à 11:33
...oui l'erreur se trouve dans la requête visiblement .....
Répondre
Donnez votre avis
Utile
+0
plus moins
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();
}
?>

ThEBiShOp 8463Messages postés jeudi 22 mars 2007Date d'inscription ContributeurStatut 9 juin 2017 Dernière intervention - 3 mai 2017 à 09:29
Et le fichier connexion.php contient... ? :)
Répondre
jordane45 17491Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 22 juin 2017 Dernière intervention - 3 mai 2017 à 09:44
Il l'a donné ici : http://www.commentcamarche.net/forum/affich-34564626-probleme-d-insertion-fonction-d-ajout#17
Répondre
SigProjet 21Messages postés mardi 2 mai 2017Date d'inscription 17 mai 2017 Dernière intervention - 3 mai 2017 à 10:02
J'ai remplacé les mysqli par mysql dans mon fichier de connexion cependant le message d'erreur est le même . Que faire ?
Est-ce qu'il y a quelque chose que j'ai mal compris ou mal fait ?
Répondre
jordane45 17491Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 22 juin 2017 Dernière intervention - 3 mai 2017 à 11:22

J'ai remplacé les mysqli par mysql

Argghhhh !!!! NON .faut pas....

et puis... quand tu dis "remplacer" .. c'est à dire ??? (j'ai un peu peur de voir ce que tu as fais........)
Sachant que si tu le changes là ... faudra changer TOUTES les autres instructions !!!!

Mais bon... partons du principe que tu RESTES en MYSQLI .....
Avec quel logiciel émules tu le serveur web ? (wamp ? Xampp ? easyPhp ? autre ?? )

As tu activé les extensions mysqli dans la config de ton serveur ?
Si non... fais le !

Et au cas où ... pourrais tu faire un phpinfo() et nous indiquer ce que ça t'affiche ? (dis nous tout ce que tu trouves en rapport avec mysqli ou mysql )
Répondre
SigProjet- 6 mai 2017 à 12:52
le probleme est resolu merci a tous . il y'avait un probleme dans le fichier connexion a cause d'un ?>
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !