Probleme requete sql
Résolu
BanBan55
Messages postés
401
Statut
Membre
-
BanBan55 Messages postés 401 Statut Membre -
BanBan55 Messages postés 401 Statut Membre -
Bonjour,
Je suis face à un problème qui je pense doit venir de ma requête SQL. J'ai un formulaire d'ajout d'evenement avec un uplaod d'image.
l'upload fonctionne bien mais les informations vers ma table SQL ne s'ajoutent pas.
Voici la partie requete de ma page de traitement.
Avez vous une idée de mon problème ?
Cordialement, Alban
Je suis face à un problème qui je pense doit venir de ma requête SQL. J'ai un formulaire d'ajout d'evenement avec un uplaod d'image.
l'upload fonctionne bien mais les informations vers ma table SQL ne s'ajoutent pas.
Voici la partie requete de ma page de traitement.
// création de l'evenement dans la base de données $insert = $connection->prepare('INSERT INTO calendrier VALUES( NULL, :image_calendrier, :titre_calendrier, :contenu_calendrier, :date_debut_calendrier, :date_fin_calendrier, :contact_calendrier, :url_calendrier)'); try { // On envois la requète $success = $insert->execute(array( 'image_calendrier'=> $_FILES['affiche_event']['name'], 'titre_calendrier'=> $titre, 'contenu_calendrier'=> $contenu, 'date_debut_calendrier'=> $date_debut, 'date_fin_calendrier'=> $date_fin, 'contact_calendrier'=> $email, 'url_calendrier'=> $url )); if( $success ) { echo "Enregistrement réussi"; } } catch( Exception $e ) { echo 'Erreur de requète : ', $e->getMessage(); }
Avez vous une idée de mon problème ?
Cordialement, Alban
A voir également:
- Probleme requete sql
- Logiciel sql - Télécharger - Bases de données
- Sql lister les tables ✓ - Forum Programmation
- Sql (+) - Forum Programmation
- Jointure sql ✓ - Forum MySQL
- Erreur lors de l'envoi de la requête facebook - Forum Facebook
4 réponses
J'avoue que je ne vois pas.
Le message "Enregistrement réussi" s'affiche-t-il ?
S'il n'y a pas d'affichage d'erreur ni de succès, provoque volontairement une erreur (genre faute de frappe : $success = $insert->execute(array( 'image_cal'=> ) pour t'assurer que l'erreur est bien affichée.
Le message "Enregistrement réussi" s'affiche-t-il ?
S'il n'y a pas d'affichage d'erreur ni de succès, provoque volontairement une erreur (genre faute de frappe : $success = $insert->execute(array( 'image_cal'=> ) pour t'assurer que l'erreur est bien affichée.
Bonjour
Il n'y a a priori pas d'erreur dans ta requête, bien que je n'aime pas les INSERT faits sans nommer explicitement les champs.
As-tu un message d'erreur ?
Es-tu sûr du format de test données, je pense aux dates en particulier ? Si tu utilises MySQL, c'es aaaa-mm-jj pour un type DATE.
As-tu ajouté un
Et enfin, comment t'assures-tu que les données sont ajoutées ou non ?
Il n'y a a priori pas d'erreur dans ta requête, bien que je n'aime pas les INSERT faits sans nommer explicitement les champs.
As-tu un message d'erreur ?
Es-tu sûr du format de test données, je pense aux dates en particulier ? Si tu utilises MySQL, c'es aaaa-mm-jj pour un type DATE.
As-tu ajouté un
var_dump($insert);au début du try pour t'assurer que tu y passes bien, et que les données sont correctes ?
Et enfin, comment t'assures-tu que les données sont ajoutées ou non ?
aucun message d'erreur. Petite precision, mon code fonctionne tres bien en local mais pas en distant sur le serveur.
j'ai fait un essai avec var_dump, aucun probleme avec les données. date au bon format...
je me connecte à PHPmyAdmin pour voir si les données sont ajoutées à ma table mais il n'y a rien. Uniquement le fichier de l'upload qui fonctionne.
C'est bizarre.
J'ajoute que ma version de PHP avec MAMP est la 5.5.14
et la version php de mon hebergeur (celeonet) est la version 5.4
j'ai fait un essai avec var_dump, aucun probleme avec les données. date au bon format...
je me connecte à PHPmyAdmin pour voir si les données sont ajoutées à ma table mais il n'y a rien. Uniquement le fichier de l'upload qui fonctionne.
C'est bizarre.
J'ajoute que ma version de PHP avec MAMP est la 5.5.14
et la version php de mon hebergeur (celeonet) est la version 5.4
Qu'est-ce que ça veut dire "Uniquement le fichier de l'upload qui fonctionne." ?
Peux-tu mettre une copie du var_dump ($insert ); mis au début du try, et une copie de la structure de la base (capture d'écran de phpmyadmin déposée sur cjoint.com, ou fichier sql d'exportation de la structure) ?
[edit] La structure de la table calendrier suffira.
Peux-tu mettre une copie du var_dump ($insert ); mis au début du try, et une copie de la structure de la base (capture d'écran de phpmyadmin déposée sur cjoint.com, ou fichier sql d'exportation de la structure) ?
[edit] La structure de la table calendrier suffira.
voila le resultat du var_dump($insert)
voici la stucture de ma table SQL
https://www.cjoint.com/?3BqstHUgknE
object(PDOStatement)#3 (1) { ["queryString"]=> string(182) "INSERT INTO calendrier VALUES( NULL, :image_calendrier, :titre_calendrier, :contenu_calendrier, :date_debut_calendrier, :date_fin_calendrier, :contact_calendrier, :url_calendrier)" }
voici la stucture de ma table SQL
https://www.cjoint.com/?3BqstHUgknE
Bonjour,
Déjà.. je te conseille de recupérer les variables de type POST/GET/FILE... AVANT de les utiliser ..
Ensuite, fais des echo/print/var_dump des différentes variables pour voir si cela correspond à tes attentes...
Quelque chose du genre:
Cordialement,
Jordane
Déjà.. je te conseille de recupérer les variables de type POST/GET/FILE... AVANT de les utiliser ..
Ensuite, fais des echo/print/var_dump des différentes variables pour voir si cela correspond à tes attentes...
Quelque chose du genre:
// création de l'evenement dans la base de données $sql = "INSERT INTO calendrier VALUES( NULL, :image_calendrier, :titre_calendrier, :contenu_calendrier, :date_debut_calendrier, :date_fin_calendrier, :contact_calendrier, :url_calendrier)"; $filename = isset($_FILES['affiche_event']['name'])? $_FILES['affiche_event']['name']:''; $params =array( 'image_calendrier'=>$filename, 'titre_calendrier'=> $titre, 'contenu_calendrier'=> $contenu, 'date_debut_calendrier'=> $date_debut, 'date_fin_calendrier'=> $date_fin, 'contact_calendrier'=> $email, 'url_calendrier'=> $url ); try { // On envois la requète $insert->execute($params); $lastId = $insert->lastInsertId(); if($lastId){ echo "Enregistrement réussi <br> ID :".$lastId; }else{ echo "<pre>"; echo '-- REQUETE :<br> '.$sql; echo '-- PARAMS :<br>'; print_r($params ); echo "</pre>"; } } catch( Exception $e ){ echo 'Erreur de requète : ', $e->getMessage(); }
Cordialement,
Jordane
Bonjour Jordane
$lastId = $insert->lastInsertId();
if($lastId){
À quoi bon ce test ? S'il y a eu une erreur, elle a dû être capturée par le catch et de plus BanBan55 teste déjà le résultat du execute dans sa variable $success.
echo '-- REQUETE :<br> '.$sql;
$sql est une chaîne littérale sans aucune variable, qui n'a subi aucun traitement, il n'y a rien à apprendre de cet echo là.
$lastId = $insert->lastInsertId();
if($lastId){
À quoi bon ce test ? S'il y a eu une erreur, elle a dû être capturée par le catch et de plus BanBan55 teste déjà le résultat du execute dans sa variable $success.
echo '-- REQUETE :<br> '.$sql;
$sql est une chaîne littérale sans aucune variable, qui n'a subi aucun traitement, il n'y a rien à apprendre de cet echo là.
Pensez vous que le probleme peut venir de mon hébergeur( version php et mysql ) ?
Pourquoi ne réponds-tu pas à la question "Le message "Enregistrement réussi" s'affiche-t-il ?"
As-tu fait un print_r ($params) pour voir ce que tu es supposé enregistrer ?
As-tu fait l'essai de provoquer une erreur pour t'assurer que le try.. catch fonctionne bien ?.
Tu ne comprends pas l'intérêt de ce qu'on te demande ?
Si ça marche en local et pas en distant, ça peut être une histoire de vasse (majuscules/minuscules : ta table s'appelle-t-elle bien "calendrier" tout en minuscules ?
[Edit] après lecture de la doc et essais, PDO est silencieux par défaut sur les erreurs. Il faut ajouter juste après la connexion pour voir à coup sûr les erreurs sur les requêtes. Comme je l'ai intégré dans ma fonction de connexion il y a plusieurs années, j'avais complètement oublié ça.