Questionnaire avec php : rien ne s'ajoute à ma base
Fermé
Asmaeab
Messages postés
6
Date d'inscription
vendredi 2 juin 2017
Statut
Membre
Dernière intervention
21 juin 2017
-
21 juin 2017 à 17:46
jordane45 Messages postés 38269 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 novembre 2024 - 21 juin 2017 à 18:36
jordane45 Messages postés 38269 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 novembre 2024 - 21 juin 2017 à 18:36
A voir également:
- Questionnaire avec php : rien ne s'ajoute à ma base
- Easy php - Télécharger - Divers Web & Internet
- Comment répondre à un questionnaire envoyé par mail - Forum Word
- Le monde perdu sous la mer questionnaire de lecture - Forum Loisirs / Divertissements
- Le veston ensorcelé questionnaire corrigé pdf ✓ - Forum MacOS
- Bouton php - Forum PHP
3 réponses
Asmaeab
Messages postés
6
Date d'inscription
vendredi 2 juin 2017
Statut
Membre
Dernière intervention
21 juin 2017
21 juin 2017 à 18:14
21 juin 2017 à 18:14
ça marche maintenant, un problème dans la requete
jordane45
Messages postés
38269
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 novembre 2024
4 694
21 juin 2017 à 18:15
21 juin 2017 à 18:15
Bonjour,
1 - En général ... on place son code php AVANT le code HTML (donc avant la balise <html ..
2 - Tu as un fichier : connexion.php ... je suppose donc qu'il contient déjà les infos de connexion à la bdd ... alors pourquoi avoir réécrit le code de connexion dans ton code avant le INSERT ??
3 - On récupère PROPREMENT les variables AVANT de les utiliser.
Pour cela on va utiliser l'écriture ternaire et se servir de la fonction ISSET ou de la fonction !EMPTY
4 - Pour la connexion... au lieu de faire un
5 - Il faut, si ce n'est pas déjà fait dans ton fichier connexion.php ... activer les erreurs PDO :
comme ici : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
6 - Il faut mettre les requêtes dans des blocs TRY/CATCH (voir lien du point 6 )
7 - Vu que tu fais du PDO... fais le bien et utilise donc les requêtes préparées !
1 - En général ... on place son code php AVANT le code HTML (donc avant la balise <html ..
2 - Tu as un fichier : connexion.php ... je suppose donc qu'il contient déjà les infos de connexion à la bdd ... alors pourquoi avoir réécrit le code de connexion dans ton code avant le INSERT ??
3 - On récupère PROPREMENT les variables AVANT de les utiliser.
Pour cela on va utiliser l'écriture ternaire et se servir de la fonction ISSET ou de la fonction !EMPTY
4 - Pour la connexion... au lieu de faire un
include ("connexion.php");je te conseille de faire un
require_once "connexion.php";
5 - Il faut, si ce n'est pas déjà fait dans ton fichier connexion.php ... activer les erreurs PDO :
comme ici : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
6 - Il faut mettre les requêtes dans des blocs TRY/CATCH (voir lien du point 6 )
7 - Vu que tu fais du PDO... fais le bien et utilise donc les requêtes préparées !
jordane45
Messages postés
38269
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 novembre 2024
4 694
Modifié le 21 juin 2017 à 18:38
Modifié le 21 juin 2017 à 18:38
Voici les corrections effectuées...
NB : Tu remarqueras que j'ai fais une "fonction" pour le calcul vu que tu utilisais toujours les mêmes critères...
Ton fichier de connexion à la bdd
Le reste de ton code :
edit: petite correction ... on ne met JAMAIS de caractères accentués dans le nom d'une variable !!! on écrit : $resultat et non pas $résultat !
Cordialement,
Jordane
NB : Tu remarqueras que j'ai fais une "fonction" pour le calcul vu que tu utilisais toujours les mêmes critères...
Ton fichier de connexion à la bdd
<?php try{ $bdd = new PDO ('mysql:host=localhost;dbname=espace_membre;charset=utf8', 'root', ''); // Activation des erreurs PDO $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } ?>
Le reste de ton code :
<?php //-------------------------------------// // Affichage des erreurs PHP //-------------------------------------// error_reporting(E_ALL); ini_set('display-errors','on'); //-------------------------------------// //connexion à la bdd //-------------------------------------// require_once "connexion.php"; //-------------------------------------// // fonction pour le calcul des notes : //-------------------------------------// function getNote($choicexx){ if($choicexx == 1 || $choicexx==5) { $c = 0; }elseif($choicexx==2) { $c=0.3; }elseif($choicexx == 3) { $c = 0.7; }elseif($choicexx == 4) { $c = 1; } return $c; } //-------------------------------------// //récupération PROPRE des variables //-------------------------------------// $choice1 = !empty($_POST['choice1']) ? intval($_POST['choice1']) : NULL; $choice2 = !empty($_POST['choice2']) ? intval($_POST['choice2']) : NULL; $choice3 = !empty($_POST['choice3']) ? intval($_POST['choice3']) : NULL; $choice4 = !empty($_POST['choice4']) ? intval($_POST['choice4']) : NULL; $choice5 = !empty($_POST['choice5']) ? intval($_POST['choice5']) : NULL; $choice6 = !empty($_POST['choice6']) ? intval($_POST['choice6']) : NULL; $choice7 = !empty($_POST['choice7']) ? intval($_POST['choice7']) : NULL; $mailconnect = !empty($_POST['mail']) ? trim($_POST['mail']) : NULL; if( $choice1 && $choice2 && $choice3 && $choice4 && $choice5 && $choice6 && $choice7 && $mail ){ $c1=getNote($choice1); $c2=getNote($choice2); $c3=getNote($choice3); $c4=getNote($choice4); $c5=getNote($choice5); $c6=getNote($choice6); $c7=getNote($choice7); $résultat=0; $resultat=(($c1*3+$c2*3+$c3*3+$c4*3+$c5*3+$c6*3+$c7*3)/21)*100; $processus="Processus : Définition de l'architecture SI"; $message_resultat= "Votre résultat de conformité suite à l'audit fait le ".date('Y-m-d H:i:s'). " est de :". $resultat ."%" ; //-------------------------------------// // Traitement du formulaire -> requete INSERT //-------------------------------------// //préparation de la requête et des variables //normalement on spécifie les champs dans lesquels ont fait l'insertion.. comme ceci : //$sql = "INSERT INTO matable (champ1,champ2) VALUES (:valeur1,:autrevaleur)"; $sql = 'INSERT INTO reponses VALUES(:resultat,:processus,:mailconnect)'; $datas = array(':resultat'=>$resultat,':processus'=>$processus,'mailconnect'=>$mailconnect); //Execution de la requete try{ $requete = $bdd -> prepare($sql) ; $requete->execute($datas) ; }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } }//fin du if ?> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> <head> <title>QCM</title> <meta charset="utf-8" /> <link rel="icon" href="./photos/anim2.gif" type="image/gif"> <style type="text/css"> body {background-color: #A8BBE6;}a {color: blue;}a:hover {color: #AB6100;}a:link {color: brown;} </style> </head> <body> <?php echo $processus; echo $message_resultat; ?> </body> </html>
edit: petite correction ... on ne met JAMAIS de caractères accentués dans le nom d'une variable !!! on écrit : $resultat et non pas $résultat !
Cordialement,
Jordane