Requête erronée : PHP me renvoie un "false", syntaxe ?
Fermé
MyGoi
Messages postés
4
Date d'inscription
lundi 25 avril 2016
Statut
Membre
Dernière intervention
26 avril 2016
-
Modifié par jordane45 le 25/04/2016 à 20:45
Utilisateur anonyme - 3 mai 2016 à 00:59
Utilisateur anonyme - 3 mai 2016 à 00:59
A voir également:
- #1366 - incorrect integer value:
- Il y a eu un problème avec cette requête. nous travaillons à sa résolution aussi vite que nous le pouvons. - Forum Facebook
- Erreur dimension erronée ti 83 ✓ - Forum calculatrices
- Requête sql pix - Forum Python
- 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
- Nos systèmes ont détecté un trafic exceptionnel sur votre réseau informatique. veuillez renvoyer votre requête ultérieurement. ✓ - Forum Virus
4 réponses
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
25 avril 2016 à 20:46
25 avril 2016 à 20:46
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.
Utilisateur anonyme
Modifié par le père. le 25/04/2016 à 23:20
Modifié par le père. le 25/04/2016 à 23:20
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.
MyGoi
Messages postés
4
Date d'inscription
lundi 25 avril 2016
Statut
Membre
Dernière intervention
26 avril 2016
26 avril 2016 à 02:46
26 avril 2016 à 02:46
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
MyGoi
Messages postés
4
Date d'inscription
lundi 25 avril 2016
Statut
Membre
Dernière intervention
26 avril 2016
26 avril 2016 à 06:55
26 avril 2016 à 06:55
Une petite recherche sur internet m'a permis de trouver un NULL à insérer là où je devais mettre idFacture.
Cependant, mon problème persiste: je vous envoie mon code PHP dès maintenant dans un message général.
Cependant, mon problème persiste: je vous envoie mon code PHP dès maintenant dans un message général.
MyGoi
Messages postés
4
Date d'inscription
lundi 25 avril 2016
Statut
Membre
Dernière intervention
26 avril 2016
26 avril 2016 à 06:58
26 avril 2016 à 06:58
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.
Utilisateur anonyme
3 mai 2016 à 00:59
3 mai 2016 à 00:59
1 - Jordane t'a demandé le résultat du echo de la requête. Où est-il ?
2 - Je t'ai fait une remarque sur le format des champs date (TOUS les champs date) qui doit être aaaa-mm-jj et non pas jj-mm-aaaa. Tu ne sembles pas en avoir tenu compte.
2 - Je t'ai fait une remarque sur le format des champs date (TOUS les champs date) qui doit être aaaa-mm-jj et non pas jj-mm-aaaa. Tu ne sembles pas en avoir tenu compte.