Problème au niveau de ma requête SQL( INSERT)
- Accueil
- Forum
- Programmation
- PHP
- Problème au niveau de ma requête SQL( INSERT)
JxSDev Le 19 avril 2016 à 13:33 (Édité le 25 janvier 2019 à 17:50)
J'ai un tout petit problème que j'ai pas pu résoudre car je n'ai aucune idée d’où ça vient
Explications :
J'ai créé un formulaire de demande de prix que l'administrateur le recevra dans son email , et j'ai mis une requête pour stocker toutes les données saisies après l'envoi de la demande.
l'email s'envoi avec le contenu et tout va à merveille ! SAUF QUE ! les données ne sont pas stockées dans la table après l'envoi donc il doit y avoir un problème au niveau de ma requête que j'ai du mal à identifier >______<' !
donc voila je vous prie de m'aider sur ce coup là..
la requête :
App::getDatabase();
App::getAuth()->restrict();
if(!empty($_POST) && !empty($_POST['qtePdt']) && !empty($_POST['namePdt']) && !empty($_POST['refPdt'])
&& !empty($_POST['suggestedPrice']) && !empty($_POST['message']) && isset($_POST['fileUpload'])){
$db = App::getDatabase();
App::getAuth()->estimate($db, $_POST['qtePdt'],$_POST['namePdt'],$_POST['refPdt'], $_POST['suggestedPrice'], $_POST['message'], $_POST['fileUpload']);}
le formulaire :
<form action="post_contact.php" method="post" class="contact-form-box" enctype="multipart/form-data">
<?php $form = new Form(isset($_SESSION['inputs']) ? $_SESSION['inputs'] : []); ?>
<div class="row">
<div class="col-md-6">
<?= $form->text('qtePdt','Quantité');?>
<?= $form->text('namePdt','Produit');?>
<?= $form->text('refPdt','Référence');?>
<?= $form->text('suggestedPrice','Prix proposé');?>
<div class="form-group">
<label for="fileUpload">Fichier</label>
<input type="file" name="fileUpload" class="form-control" id="fileUpload">
</div>
</div>
<div class="col-md-6">
<?= $form->textarea('message','Votre message');?> </div>
<div align="center"> <?= $form->submit('Demander un devis'); ?></div>
</div>
</form>
et ma function query :
public function estimate($db, $qtePdt, $namePdt, $refPdt, $suggestedPrice, $message, $fileUpload){
$db->query("INSERT INTO estimate SET qtePdt = ?, namePdt = ?, refPdt = ?, suggestedPrice = ?, message = ?, fileUpload = ?",[
$qtePdt,
$namePdt,
$refPdt,
$suggestedPrice,
$message,
$fileUpload
]);
}
Ai-je fais une grosse erreur ?
Merci d'avance~
Dwardower Le 19 avril 2016 à 14:38 (Édité le 1 janvier 1970 à 01:00)
public function estimate($db, $qtePdt, $namePdt, $refPdt, $suggestedPrice, $message, $fileUpload){
$requete = $db->prepare("INSERT INTO estimate (qtePdt, namePdt, refPdt, suggestedPrice, message, fileUpload) VALUES(?,?,?,?,?,?)");
$requete->execute(array($qtePdt, $namePdt, $refPdt, $suggestedPrice, $message, $fileUpload));
}
Un bon vieux pdo bien classique suffit largement 😉 JxSDev Le 19 avril 2016 à 15:29 (Édité le 1 janvier 1970 à 01:00)
Dwardower Le 19 avril 2016 à 15:34 (Édité le 19 avril 2016 à 15:36)
Essai ça :App::getAuth()->estimate($db, $_POST['qtePdt'],$_POST['namePdt'],$_POST['refPdt'], $_POST['suggestedPrice'], $_POST['message'], $_POST['fileUpload']);
App::getAuth()->estimate($db, $_POST['qtePdt'],$_POST['namePdt'],$_POST['refPdt'], $_POST['suggestedPrice'], $_POST['message'], $_FILES['fileUpload']);}
J'imagine que ton formulaire doit être un fichier donc le $_POST sera null et empechera l'écriture des données 😉
C'est pour cela que le $_FILES lui renverra le nom du fichier
JxSDev Le 19 avril 2016 à 15:38 (Édité le 19 avril 2016 à 15:39)
Dwardower Le 19 avril 2016 à 15:39 (Édité le 1 janvier 1970 à 01:00)
JxSDev Le 19 avril 2016 à 15:46 (Édité le 19 avril 2016 à 15:48)
sauf que le problème n'est pas toujours résolu ! au fait, si ça pourra nous aider a trouver l'erreur , mon fichier devis.php inclut un autre fichier que j'ai appelé post_contact.php qui contient quelques instructions de contrôle nécessaires pour l'envoi de la demande
<?php
require 'inc/bootstrap.php';
require '_inc.php';
$errors = [];
if(!array_key_exists('qtePdt', $_POST) || $_POST['qtePdt'] == ''){
$errors['inputQte'] = "Vous n'avez pas renseigné la quantité demandée";
}
if(!array_key_exists('namePdt', $_POST) || $_POST['namePdt'] == ''){
$errors['inputPdt'] = "Vous n'avez pas renseigné le nom du produit";
}
if(!array_key_exists('refPdt', $_POST) || $_POST['refPdt'] == ''){
$errors['refPdt'] = "Vous n'avez pas renseigné la référence du produit.";
}
if(!array_key_exists('message', $_POST) || $_POST['message'] == ''){
$errors['message'] = "Vous n'avez pas renseigné votre message. ";
}
// définition de l'espace destiné à recevoir les fichiers
$repository = $_SERVER["DOCUMENT_ROOT"];
$extensionsAutorisees = array(".jpeg", ".jpg", ".pdf", ".txt");
// si un fichier a bien été transféré
if (is_uploaded_file($_FILES["fileUpload"]["tmp_name"])) {
// recupération de l'extension du fichier
$nomfichier = $_FILES["fileUpload"]["name"];
$extension = substr($nomfichier, strrpos($nomfichier, "."));
// Contrôle de l'extension du fichier
if (!(in_array($extension, $extensionsAutorisees))) {
$errors['message'] = "Votre fichier n'a pas l'extension attendue.";
}
}
if(!empty($errors)){
$_SESSION['errors'] = $errors;
$_SESSION['inputs'] = $_POST;
App::redirect('devis.php');
}else{
$_SESSI0N['success'] = 1;
$recipients = array(
"aycj@gmail.com" ,
"aycs@gmail.com",
"contact@toupackgroup.com"
);
foreach($recipients as $recipient) {
$headers = 'FROM: site@local.dev';
$message = $_POST['message'];
$to = $recipient;
mail($to,'Demande de devis',$message, $headers);}
Session::getInstance()->setFlash('success', "Votre demande a bien été envoyée. Notre équipe vous répondra dans les plus brefs délais.");
App::redirect('devis.php');
}
je ne sais pas mais , je me suis dis que peut-être je dois mettre la requete dans ce fichier >< désolé je e sens un peu perdue là ^^' Dwardower Le 19 avril 2016 à 15:55 (Édité le 1 janvier 1970 à 01:00)
ini_set('display_errors','on');
JxSDev Le 19 avril 2016 à 16:08 (Édité le 1 janvier 1970 à 01:00)
<?php
ini_set('display_errors','on');
require 'inc/bootstrap.php';
App::getDatabase();
App::getAuth()->restrict();
ET après ?
(j'ai fais un test mais aucune erreur ne s affiche ^^')
Dwardower Le 19 avril 2016 à 16:51 (Édité le 1 janvier 1970 à 01:00)
JxSDev Le 19 avril 2016 à 17:13 (Édité le 1 janvier 1970 à 01:00)
Dwardower Le 19 avril 2016 à 17:23 (Édité le 19 avril 2016 à 17:23)
La fonction n'est pas demandée et par conséquence, ne s'exécute pas
JxSDev Le 19 avril 2016 à 17:28 (Édité le 1 janvier 1970 à 01:00)
Dwardower Le 19 avril 2016 à 17:41 (Édité le 1 janvier 1970 à 01:00)
App::getAuth()->
JxSDev Le 19 avril 2016 à 21:20 (Édité le 1 janvier 1970 à 01:00)
JxSDev Le 19 avril 2016 à 22:05 (Édité le 1 janvier 1970 à 01:00)
<?php
ini_set('display_errors','on');
require 'inc/bootstrap.php';
App::getAuth()->restrict();
if(!empty($_POST)){
$errors = array();
$db = App::getDatabase();
$validator = new Validator($_POST);
$validator->isThere('qtePdt', "Vous n'avez pas renseigné la quantité demandée");
$validator->isThere('namePdt', "Vous n'avez pas renseigné le nom du produit");
$validator->isThere('refPdt', "Vous n'avez pas renseigné la référence du produit");
$validator->isThere('suggestedPrice', "Vous n'avez pas mis votre prix");
$validator->isThere('message', "Vous n'avez pas renseigné votre message");
if($validator->isValid()){
App::getAuth()->estimate($db, $_POST['qtePdt'],$_POST['namePdt'],$_POST['refPdt'], $_POST['suggestedPrice'], $_POST['message'], $_FILES['fileUpload']);
$_SESSI0N['success'] = 1;
$recipients = array(
"aycjihen@gmail.com" ,
"aycskander@gmail.com",
"contact@toupackgroup.com"
);
foreach($recipients as $recipient) {
$headers = 'FROM: site@local.dev';
$message = $_POST['message'];
$to = $recipient;
mail($to,'Demande de devis',$message, $headers);}
Session::getInstance()->setFlash('success', "Votre demande a ete bien envoyee");
App::redirect('devis.php');
}else {
$errors = $validator->getErrors();
}
}
require 'inc/header2.php'; ?>
<?php
if(!empty($errors)): ?>
<div class="alert alert-danger">
<p> Vous n'avez pas rempli le formulaire correctement</p>
<ul>
<?php foreach($errors as $error): ?>
<li><?= $error; ?></li>
<?php endforeach; ?>
</ul>
</div>
<?php endif; ?>
<head>
</head>
<body>
<h3 align="center"> Demander un devis </h3>
<p align="center"> <strong> Il vous suffit de remplir le formulaire ci-dessous pour recevoir gratuitement votre devis en 24/48h.</strong></p><br>
<div class="container" align="">
<?php
if(array_key_exists('errors', $_SESSION)): ?>
<div class="alert alert-danger">
<?= implode('<br>', $_SESSION['errors']); ?>
</div>
<?php endif; ?> <!-- comme ça l'erreur ne s'affiche qu'une seule fois-->
<form action="" method="post" class="contact-form-box" enctype="multipart/form-data">
<?php $form = new Form(isset($_SESSION['inputs']) ? $_SESSION['inputs'] : []); ?>
<div class="row">
<div class="col-md-6">
<?= $form->text('qtePdt','Quantité');?>
<?= $form->text('namePdt','Produit');?>
<?= $form->text('refPdt','Référence');?>
<?= $form->text('suggestedPrice','Prix proposé');?>
<div class="form-group">
<label for="fileUpload">Fichier</label>
<input type="file" name="fileUpload" class="form-control" id="fileUpload">
</div>
</div>
<div class="col-md-6">
<?= $form->textarea('message','Votre message');?> </div>
<div align="center"> <?= $form->submit('Demander un devis'); ?></div>
</div>
</form>
</div>
<?php
unset($_SESSION['errors']);
unset($_SESSION['success']);
unset($_SESSION['inputs']);
?>
<?php require 'inc/footer.php'; ?>
c'est mieux non ?^^
Dwardower Le 20 avril 2016 à 09:21 (Édité le 1 janvier 1970 à 01:00)