Requête erronée : PHP me renvoie un "false", syntaxe ?
MyGoi
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour à vous !
C'est mon tout premier message sur CCM alors j'espère que vous ne m'en voudrez pas si, par inadvertance, j'ai manqué à quelques codes du Forum :)
Je développe actuellement une application de facturation pour mon projet de fin d'année. Je m'occupe notamment de la partie de création de facture. Ainsi, j'ai donc crée un formulaire en PHP qui envoie les données requises pour créer une facture dans la table "facture" de la base de données.
Je travaille donc sur WAMP 3.0.0.
Les informations sur les champs de la table "facture" sont les suivants : (cf screenshot que j'ai joint)

et ma requête d'insertion la suivante:
(Tous les champs de ma requête qui seront précédés d'un $ sont des variables que j'ai stocké en préalable en PHP, pour ceux qui ne savent pas, et sont intégralement vérifiées tant au niveau du type qu'au niveau de la longueur)
Je suis un novice en ce qui concerne SQL. En effet, je pense qu'il doit y avoir une erreur de syntaxe quelque part la dedans mais je n'ai aucune idée d'où elle se trouve.
En espérant n'avoir rien oublié, bien expliqué mon problème et vous remerciant d'avance pour votre aide !
Anthony aka. MyGoi, jeune passionné d'informatique et passionné d'informatique depuis tout jeune.
Si l'habit ne fait pas le moine, c'est parce que tu t'es trompé sur la couleur de ta toge.
EDIT : Ajout des balises de code.
C'est mon tout premier message sur CCM alors j'espère que vous ne m'en voudrez pas si, par inadvertance, j'ai manqué à quelques codes du Forum :)
Je développe actuellement une application de facturation pour mon projet de fin d'année. Je m'occupe notamment de la partie de création de facture. Ainsi, j'ai donc crée un formulaire en PHP qui envoie les données requises pour créer une facture dans la table "facture" de la base de données.
Je travaille donc sur WAMP 3.0.0.
Les informations sur les champs de la table "facture" sont les suivants : (cf screenshot que j'ai joint)

et ma requête d'insertion la suivante:
(Tous les champs de ma requête qui seront précédés d'un $ sont des variables que j'ai stocké en préalable en PHP, pour ceux qui ne savent pas, et sont intégralement vérifiées tant au niveau du type qu'au niveau de la longueur)
"INSERT INTO facture VALUES ( '', $Em_id, $Cl_id, '$Em_nom', '', '$Cl_nom', '', $Fac_date_Em, 'Facture', $Fac_dateEch, 'gaga', 12/06/1993, 'Attente', 4, 'C', $Fac_totalHT, 'gfdfg', '$Fac_numAv', '$Fac_numBon', 6 , 'ga', 'traate', 0, $Fac_tauxTVA, $Fac_totalTTC, '$Cl_nom')";
Je suis un novice en ce qui concerne SQL. En effet, je pense qu'il doit y avoir une erreur de syntaxe quelque part la dedans mais je n'ai aucune idée d'où elle se trouve.
En espérant n'avoir rien oublié, bien expliqué mon problème et vous remerciant d'avance pour votre aide !
Anthony aka. MyGoi, jeune passionné d'informatique et passionné d'informatique depuis tout jeune.
Si l'habit ne fait pas le moine, c'est parce que tu t'es trompé sur la couleur de ta toge.
EDIT : Ajout des balises de code.
A voir également:
- #1366 - incorrect integer value:
- Erreur lors de l'envoi de la requête facebook - Forum Facebook
- Erreur dimension erronée ti 83 - Forum calculatrices
- Erreur de requete facebook - Forum Facebook
- L'opérateur ou l'administrateur a refusé la requête ✓ - Forum Windows
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de tennis mais pas de tennis de table ✓ - Forum Java
4 réponses
Bonjour,
Fais donc un ECHO de ta requête pour voir ce qu'il t'affiche .... et si les valeurs ainsi affichées te paraissent correctes... testes la requête DIRECTEMENT dans ta BDD (via phpmyadmin).
Si ta requête contient une erreur...ça te l'affichera !
Si tu ne trouves pas l'erreur.....
Postes nous le résultat de l'ECHO ... et penses aussi à nous donner le code PHP qui te permet de lancer cette requête.
Fais donc un ECHO de ta requête pour voir ce qu'il t'affiche .... et si les valeurs ainsi affichées te paraissent correctes... testes la requête DIRECTEMENT dans ta BDD (via phpmyadmin).
Si ta requête contient une erreur...ça te l'affichera !
Si tu ne trouves pas l'erreur.....
Postes nous le résultat de l'ECHO ... et penses aussi à nous donner le code PHP qui te permet de lancer cette requête.
Bonjour
Tu peux déjà corriger le format de la date : 12/06/1993
La date doit être entre apostrophes ou doubles quotes comme un texte, le séparateur est le tiret et l'ordre est année-mois-jour. Tu aurais dû mettre : '1993-06-12'.
Ceci en complément des bons conseils de Jordane.
[edit] : Le format des dates s'applique à tous les champs date, y compris ceux pour lesquels tu fournis des variables comme $Fac_date_Em ou $Fac_dateEch.
Tu peux déjà corriger le format de la date : 12/06/1993
La date doit être entre apostrophes ou doubles quotes comme un texte, le séparateur est le tiret et l'ordre est année-mois-jour. Tu aurais dû mettre : '1993-06-12'.
Ceci en complément des bons conseils de Jordane.
[edit] : Le format des dates s'applique à tous les champs date, y compris ceux pour lesquels tu fournis des variables comme $Fac_date_Em ou $Fac_dateEch.
Bonjour,
Merci pour vos réponses rapides. Sur tes conseils, Jordane, j'ai fait le echo de la requête et ça tombe juste visiblement : les variables entrées dans la bdd semblent (pour la plupart car je n'ai que vérifié que très grossièrement celles-ci) être celles que j'ai dans le formulaire. Toujours sur tes conseils, j'ai essayé et corrigé via PHPMyAdmin et il en ressort que j'ai dû corriger la syntaxe sur quasiment toute la requête. J'ai aussi suivi les conseils de le père en mettant la bonne syntaxe autour des dates.
Bref, syntaxe corrigée (apostrophes autour des variables, chose qui me parait assez étrange car ça transformerait le contenu de la variable en simple chaine de caractère ?), l'erreur suivante apparait: "#1366 - Incorrect integer value: '' for column 'idFacture' at row 1".
J'ai alors une question qui se soulève: comment remplir cette colonne "idFacture" sachant qu'elle est auto-incrémentée ? (cf le screenshot de mon premier post)
Merci
Merci pour vos réponses rapides. Sur tes conseils, Jordane, j'ai fait le echo de la requête et ça tombe juste visiblement : les variables entrées dans la bdd semblent (pour la plupart car je n'ai que vérifié que très grossièrement celles-ci) être celles que j'ai dans le formulaire. Toujours sur tes conseils, j'ai essayé et corrigé via PHPMyAdmin et il en ressort que j'ai dû corriger la syntaxe sur quasiment toute la requête. J'ai aussi suivi les conseils de le père en mettant la bonne syntaxe autour des dates.
Bref, syntaxe corrigée (apostrophes autour des variables, chose qui me parait assez étrange car ça transformerait le contenu de la variable en simple chaine de caractère ?), l'erreur suivante apparait: "#1366 - Incorrect integer value: '' for column 'idFacture' at row 1".
J'ai alors une question qui se soulève: comment remplir cette colonne "idFacture" sachant qu'elle est auto-incrémentée ? (cf le screenshot de mon premier post)
Merci
Voici mon code PHP:
Si vous avez besoin de quelconque information, n'hésitez pas. Je consulte très régulièrement le sujet.
Merci d'avance, MyGoi.
<?php include('connect.php');
function VerifierAdresseMail($adresse)
{
$Syntaxe='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#';
if(preg_match($Syntaxe,$adresse))
return true;
else
return false;
}
//remplacement de la virgule par un point
function virgule($nombre)
{
$nombre = preg_replace('#(.+),(.+)#','$1.$2',$nombre);
return $nombre;
}
//recuperation des valeurs des champs
//Societe emettrice $EM_champ
if (!empty($_POST["nomEm"]) AND !empty($_POST["adresseMail"]) AND !empty($_POST["telEmetteur"]) AND !empty($_POST["adresse"])
AND !empty($_POST["siretEmettrice"]) AND !empty($_POST["tauxTva"]) AND !empty($_POST["numTVAIntra"]) AND !empty($_POST["numRC"]) AND !empty($_POST["IBAN"])
AND !empty($_POST["BIC"]) AND !empty($_POST["RIB"]) AND !empty($_POST["nomSocFac"]) AND !empty($_POST["adresseFacturation"]) AND !empty($_POST["telFact"]) AND !empty($_POST["dateEch"])
AND ((!empty($_POST["TJM"]) AND !empty($_POST["nbJPrest"])AND !empty($_POST["forfaitOuRegie"]=="Regie" ))
OR (!empty($_POST["pourcent"]) AND $_POST["forfaitOuRegie"]=="Forfait"))){
//controle des champs
$numContrat = $_POST["idContrat"];
//Societe Emettrice
$Em_id = $_POST["idEntiteEm"];
$Em_nom = $_POST["nomEm"]; // à utiliser liste deroulante ?
$mailTemp = $_POST["adresseMail"];
$Em_Mail = $_POST["adresseMail"];
$Em_telephone = $_POST["telEmetteur"];
$Em_Adresse1 = $_POST["adresse"];
$Em_Adresse2 = $_POST["adresse2"]; //facultatif
$Em_Siret = $_POST["siretEmettrice"];
$Em_TVAIntra = $_POST["numTVAIntra"];
$Em_NRC = $_POST["numRC"];
$Em_IBAN = $_POST["IBAN"];
$Em_RIB = $_POST["RIB"];
$Em_BIC = $_POST["BIC"];
//Societe facturée $F_champ
$Cl_id = $_POST["idEntiteCl"];
$Cl_nom = $_POST["nomSocFac"]; // à utiliser liste deroulante
$Cl_adresseFacturation = $_POST["adresseFacturation"];
$Cl_adresseFacturation2 = $_POST["adresseFacturation2"]; //facultatif
$Cl_adresseSociete = $_POST["adresseSocFacturee"]; //facultatif
$Cl_adresseSociete2 = $_POST["adresseSocFacturee2"]; //facultatif
$Cl_telephone = $_POST["telFact"];
//Information facture
$Fac_numBon = $_POST["numBon"]; //facultatif
$Fac_numAv = $_POST["numAv"]; //facultatif
$Fac_nbJ = $_POST["nbJPrest"];
$Fac_date_Em = date("d-m-Y");
$Fac_TJM = $_POST["TJM"];
$Fac_dateEch = $_POST["dateEch"];
$Fac_dateReg = $_POST["dateReglement"];
//$Fac_echJ = date_diff($Fac_dateEch,$Fac_date_Em);
$Fac_tauxTVA = $_POST["tauxTva"];
//pour le debogage
echo $Em_id . ("\n");
echo $Em_nom. ("\n");
echo $mailTemp.("\n");
echo $Em_telephone.("\n");
echo $Em_Adresse1.("\n");
echo $Em_Siret. ("\n");
echo $Em_TVAIntra . ("\n");
echo $Em_NRC.("\n");
echo $Em_NRC . ("\n");
echo $Em_IBAN .("\n") ;
echo $Em_RIB . ("\n");
echo $Em_BIC . ("\n");
echo $Cl_id .("\n");
echo $Cl_nom. ("\n");
echo $Cl_adresseFacturation . ("\n");
echo $Cl_adresseFacturation2 . ("\n");
echo $Cl_adresseSociete . ("\n");
echo $Cl_telephone. ("\n");
echo $Fac_numBon . ("\n");
echo $Fac_numAv . ("\n");
echo $Fac_nbJ . ("\n");
echo $Fac_date_Em .("\n") ;
echo $Fac_TJM . ("\n");
echo $Fac_dateEch .("\n") ;
echo $Fac_dateReg .("\n") ;
echo $Fac_tauxTVA .("\n") ;
if ($_POST["forfaitOuRegie"] == 'Forfait'){
$sql = "INSERT INTO facture VALUES ('',
$Em_id,
$Cl_id,
'$Em_nom',
'',
'$Cl_nom',
'',
$Fac_date_Em,
'Facture',
$Fac_dateEch,
'gaga',
'12-06-1993',
'Attente',
4,
'C',
$Fac_totalHT,
'gfdfg',
'$Fac_numAv',
'$Fac_numBon',
6 ,
'ga',
'traate',
0,
$Fac_tauxTVA,
$Fac_totalTTC,
'$Cl_nom')";
echo $sql;
$requete = mysqli_query($connection,$sql);
}
else {
$Fac_totalTTC = $Fac_TJM * $Fac_nbJ * (1 + $Fac_tauxTVA); //ignorez
$Fac_totalHT = 12; // Ignorez
$sql = "INSERT INTO facture VALUES ( NULL,
$Em_id,
$Cl_id,
'$Em_nom',
'',
'$Cl_nom',
'',
$Fac_date_Em,
'Facture',
$Fac_dateEch,
'gaga',
'12-06-1993',
'Attente',
4,
'C',
$Fac_totalHT,
'nnv',
$Fac_numAv,
$Fac_numBon,
$Fac_nbJ,
'gaga',
'gaga' ,
$Fac_TJM,
$Fac_tauxTVA,
$Fac_totalTTC,
'$Cl_nom')";
echo $sql;
$requete = mysqli_query($connection,$sql);
}
//affichage des résultats, pour savoir si l'insertion a marchée:
if($requete){
echo("L'insertion a été correctement effectuée pour la facturation<br>") ;
}
else
{
echo("L'insertion à échoué<br>") ;
}
}
include('creer.php');
?>
Si vous avez besoin de quelconque information, n'hésitez pas. Je consulte très régulièrement le sujet.
Merci d'avance, MyGoi.