Donnés dans la base de donnéé php
Résolu/Fermé
Esther_3379
Messages postés
21
Date d'inscription
lundi 11 mai 2020
Statut
Membre
Dernière intervention
24 mai 2020
-
Modifié le 18 mai 2020 à 19:33
Esther_3379 Messages postés 21 Date d'inscription lundi 11 mai 2020 Statut Membre Dernière intervention 24 mai 2020 - 24 mai 2020 à 19:27
Esther_3379 Messages postés 21 Date d'inscription lundi 11 mai 2020 Statut Membre Dernière intervention 24 mai 2020 - 24 mai 2020 à 19:27
A voir également:
- Donnés dans la base de donnéé php
- Formules excel de base - Guide
- Alert php ✓ - Forum PHP
- Easy php - Télécharger - Divers Web & Internet
- Retour a la ligne php ✓ - Forum PHP
- Supprimer une base de données phpmyadmin ✓ - Forum Logiciels
8 réponses
jordane45
Messages postés
38145
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2024
4 650
18 mai 2020 à 21:24
18 mai 2020 à 21:24
Bonjour,
Commence par appliquer ceci : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Et ça : https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Et, afin de pouvoir voir l'erreur, il faut que tu désactives les redirections. (sinon tu ne verras pas les messages d'erreurs... )
Commence par appliquer ceci : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Et ça : https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Et, afin de pouvoir voir l'erreur, il faut que tu désactives les redirections. (sinon tu ne verras pas les messages d'erreurs... )
Esther_3379
Messages postés
21
Date d'inscription
lundi 11 mai 2020
Statut
Membre
Dernière intervention
24 mai 2020
19 mai 2020 à 12:27
19 mai 2020 à 12:27
merci pour votre aide.
jordane45
Messages postés
38145
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2024
4 650
19 mai 2020 à 20:24
19 mai 2020 à 20:24
j'ai eu a faire des corrections sur le code parce qu'on m'affichait des erreurs
J'ai écrit le code de tête.. sans le tester. Donc c'est possible en effet qu'il y ai des erreurs
Par contre, il serait pas mal de nous montrer ce que tu as modifié...
Car, tu devrais avoir un message qui s'affiche...
Et puis, pour être sûr, pourrais tu nous montrer la structure de ta bdd ?
Esther_3379
Messages postés
21
Date d'inscription
lundi 11 mai 2020
Statut
Membre
Dernière intervention
24 mai 2020
20 mai 2020 à 12:14
20 mai 2020 à 12:14
bonjour a tous. OK je vous envoie donc le fichier modifié et la structure de ma table
Esther_3379
Messages postés
21
Date d'inscription
lundi 11 mai 2020
Statut
Membre
Dernière intervention
24 mai 2020
20 mai 2020 à 13:30
20 mai 2020 à 13:30
-- phpMyAdmin SQL Dump -- version 4.9.2 -- https://www.phpmyadmin.net/ -- -- Hôte : 127.0.0.1:3306 -- Généré le : mer. 20 mai 2020 à 10:40 -- Version du serveur : 10.4.10-MariaDB -- Version de PHP : 7.3.12 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET AUTOCOMMIT = 0; START TRANSACTION; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */; -- -- Base de données : `mabase` -- -- -------------------------------------------------------- -- -- Structure de la table `clients` -- DROP TABLE IF EXISTS `clients`; CREATE TABLE IF NOT EXISTS `clients` ( `id` int(11) NOT NULL AUTO_INCREMENT, `Pseudo` varchar(255) CHARACTER SET utf8 NOT NULL, `Email` varchar(255) CHARACTER SET utf8 NOT NULL, `Motdepasse` varchar(255) CHARACTER SET utf8 NOT NULL, `avatar` varchar(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=26 DEFAULT CHARSET=latin1; -- -- Déchargement des données de la table `clients` -- INSERT INTO `clients` (`id`, `Pseudo`, `Email`, `Motdepasse`, `avatar`) VALUES (1, 'Datto', 'estelle', 'estelledatto.03@gmail.com', '0'), (9, 'Dolou', 'shiva', '', '0'), (3, 'gagou', 'antoine', 'gagouantoine@gmail.com', '0'), (4, 'Datto', 'antoine', 'gagouantoine@gmail.com', '0'), (5, 'Datto', 'antoine', 'estelledatto.03@gmail.com', '0'), (6, 'malone', 'miriém', 'desouza@gmail.com', '0'), (7, 'allelouya', 'amen', 'amen@gmail.com', '0'), (8, 'Fryte', 'etyu', 'fre@gmail.com', '0'), (10, 'vako', 'shiva', '', '0'), (11, 'digbeuta', 'bonsoir', 'sdf@gmail.com', '0'), (13, 'red', 'abib', 'aku@gmail.com', '0'), (14, 'cft', 'cfao', 'cfa@gmail.com', '0'), (15, 'hu', 'ju', 'gh@gmail.com', '0'), (16, 'elie', 'aman', 'aman@gmail.com', '0'), (18, 'maya', 'louise', 'may@gmail.com', '0'), (20, 'junior', 'kausronlab@gmail.com', 'f3a3e91ead339309af864f4fe0a884db456d42ba', '0'), (21, 'djao', 'djao@gmail.com', '7110eda4d09e062aa5e4a390b0a572ac0d2c0220', '0'), (22, 'aime', 'aim@gmail.com', '37db39666e5ba650dd188e0a58d8af89f48f61cf', '0'), (23, 'fala', 'fala@gmail.com', '88e6101730f4cf454196252e1e1e2e77fd30da4c', '0'), (24, 'queenB', 'emrickyann@gmail.com', 'f0fd596f396d8fc32d5e4fe4c73c61fa2ac55c70', '0'), (25, 'oumar', 'sy@hotmail.com', '8af56de68279cb6f5ed022f31af18b9fcdcc2e92', '0'); COMMIT; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Esther_3379
Messages postés
21
Date d'inscription
lundi 11 mai 2020
Statut
Membre
Dernière intervention
24 mai 2020
Modifié le 20 mai 2020 à 13:37
Modifié le 20 mai 2020 à 13:37
Voici ce que j'ai modifié dans le fichier Clients.class.php. J'ai modifié tout les return $res en return $this car cela m'affichais des erreurs..
<?php class Clients{ private $bdd; function __construct($bdd = null){ if(!empty($bdd)){ $this->bdd = $bdd; }else{ $this->bdd = getPDO(); } } public function getClientByEmail($email){ $sql = "SELECT Email FROM clients WHERE Email = ? "; $datas = array($email); try{ $prep = $this->bdd->prepare($sql); $prep->execute($datas); $res = $prep->fetchAll(); return $this; }catch(Exception $e){ echo "Erreur SQL : " . $e->getMessage(); } } public function getClientByPseudo($pseudo){ $sql = "SELECT Pseudo FROM clients WHERE Pseudo = ? "; $datas = array($pseudo); try{ $prep = $this->bdd->prepare($sql); $prep->execute($datas); $res = $prep->fetchAll(); return $this; }catch(Exception $e){ echo "Erreur SQL : " . $e->getMessage(); } } public function addClient($pseudo,$email,$mdp){ $sql = "INSERT INTO clients(Pseudo, Email, Motdepasse) VALUES(?, ?, ?)"; /* $mdp = password_hash($mdp); */ $mdp = password_hash($mdp,PASSWORD_DEFAULT); // A changer par la ligne au dessus si version php compatible ! $datas = array($pseudo,$email,$mdp); try{ $prep = $this->bdd->prepare($sql); $prep->execute($datas); // Retourne le numero auto-incrément de la table pour l'enregistrement créé return $this; }catch(Exception $e){ echo "Erreur SQL : " . $e->getMessage(); } } // Fin de la class Clients } ?>
jordane45
Messages postés
38145
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2024
4 650
20 mai 2020 à 14:23
20 mai 2020 à 14:23
J'ai modifié tout les return $res en return $this
N'importe quoi !!
Si ça te retourne une erreur... indique nous laquelle pour qu'on essaye de la corriger .. au lieu de retourner n'importe quoi qui ne donnera pas l'effet escompté !
Esther_3379
Messages postés
21
Date d'inscription
lundi 11 mai 2020
Statut
Membre
Dernière intervention
24 mai 2020
>
jordane45
Messages postés
38145
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2024
20 mai 2020 à 14:37
20 mai 2020 à 14:37
excusez moi
Esther_3379
Messages postés
21
Date d'inscription
lundi 11 mai 2020
Statut
Membre
Dernière intervention
24 mai 2020
20 mai 2020 à 13:43
20 mai 2020 à 13:43
et enfin le fichier inscript.php
<?php // fichier inscript.php error_reporting(E_ALL); ini_set('display_errors',TRUE); ini_set('display_startup_errors', TRUE); require_once 'connection.php'; $con = getPDO(); require_once "Clients.class.php"; //on instancie la class Clients $oClient = new Clients($con); if(isset($_POST['forminscription'])) { $pseudo = !empty($_POST['pseudo']) ? trim($_POST['pseudo']) : NULL; $email = !empty($_POST['email']) ? trim($_POST['email']) : NULL; $mdp = !empty($_POST['password']) ? trim($_POST['password']) : NULL; $mdp2 = !empty($_POST['password2']) ? $_POST['password2'] : NULL; if((!empty($pseudo)) && (!empty($email)) && (!empty($mdp)) && (!empty($mdp2))) { if(strlen($pseudo)<=20) { if($mdp == $mdp2){ $clientMail = $oClient->getClientByEmail($email); if(empty($clientMail)){ $clientPseudo = $oClient->getClientByPseudo($pseudo); if(empty($clientPseudo)){ $addC = $oClient->addClient($pseudo,$email,$mdp); $succesMessage ='votre compte a bien été créé!!!!'; //header('location:login.php'); // Désactivé le temps des tests exit; }else{ $errorMessage = 'ce pseudo est déjà utilisé...'; } }else{ $errorMessage = 'cet email existe déja...'; } }else{ $errorMessage = 'les mots de passe ne correspondent pas...'; } }else{ $errorMessage = 'ce pseudo est trop long...'; } }else{ $errorMessage = 'veuillez remplir tous les champs...'; } } ?> <!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title>Input form</title> <link rel="stylesheet" href="style.css"> </head> <body> <form action="" method="post"> <div class="box"> <h2>Formulaire Inscription</h2> <div class="inputBox"> <input type="text" name="pseudo" required=""> <label >pseudo</label> </div> <div class="inputBox"> <input type="text" name="email" required=""> <label>email</label> </div> <div class="inputBox"> <input type="password" name="password" required=""> <label>Motdepasse</label> </div> <div class="inputBox"> <input type="password" name="password2" required=""> <label>ConfirmMotdepasse</label> </div> <input type="submit" name="forminscription" value="Je m'inscris"> </form> <?php if(isset($erreur)) { echo $erreur; } ?> </div> </body> </html>
Esther_3379
Messages postés
21
Date d'inscription
lundi 11 mai 2020
Statut
Membre
Dernière intervention
24 mai 2020
20 mai 2020 à 13:50
20 mai 2020 à 13:50
mais sans vous mentir je ne comprends pas bien l'action qui est mené par le code dans le fichier inscript de la ligne 16 a 31. Quand j'interprete avec ma petite connaissance ça ne passe pas bien dans mon esprit. Pouvez vous m'expliquer svp ces lignes que j'ai citées plus haut. Merci
Cordialement
Cordialement
jordane45
Messages postés
38145
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2024
4 650
20 mai 2020 à 14:44
20 mai 2020 à 14:44
Au passage.... si tu regardes ta fonction de connexion à la bdd ... ne vois tu pas une erreur ???!
Tu fais le "return $con" AVANT d'avoir activé l'affichage des erreurs PDO !
Donc en changeant comme ceci
Tu verras que le code que je t'ai donné fonctionne.
Sauf qu'il t'affiche une erreur :
Et oui.. tu n'as pas défini de valeur par défaut à ton champ "avatar" dans ta bdd...
Donc soit tu en définis un ...
Soi tu ajoutes l'avatar en parametre pour la création du client...
Tu fais le "return $con" AVANT d'avoir activé l'affichage des erreurs PDO !
Donc en changeant comme ceci
function getPDO(){ try{ $con = new PDO('mysql:dbname=mabase; host=127.0.0.1', 'root', ''); $con->exec("SET CHARACTER SET UTF8"); // Activation des erreurs PDO $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $con->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); return $con; }catch(PDOException $e){ var_dump($e); echo 'connection failed: ' or die('Erreur : ' . $e->getMessage()); } }
Tu verras que le code que je t'ai donné fonctionne.
Sauf qu'il t'affiche une erreur :
Erreur SQL : SQLSTATE[HY000]: General error: 1364 Field 'avatar' doesn't have a default value
Et oui.. tu n'as pas défini de valeur par défaut à ton champ "avatar" dans ta bdd...
Donc soit tu en définis un ...
Soi tu ajoutes l'avatar en parametre pour la création du client...
jordane45
Messages postés
38145
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2024
4 650
Modifié le 20 mai 2020 à 14:47
Modifié le 20 mai 2020 à 14:47
Tu peux aussi modifier la class Client par celle la:
Qui, ne retournera plus de souci avec le $res ( qui etait celui du addClient ... )
<?php // Fichier Clients.class.php class Clients{ private $bdd; function __construct($bdd = null){ if(!empty($bdd)){ $this->bdd = $bdd; }else{ $this->bdd = getPDO(); } } public function getClientByMail($email){ $sql = "SELECT Email FROM clients WHERE Email = ? "; $datas = array($email); try{ $prep = $this->bdd->prepare($sql); $prep->execute($datas); $res = $prep->fetchAll(); return $res; }catch(Exception $e){ echo "Erreur SQL : " . $e->getMessage(); } } public function getClientByPseudo($pseudo){ $sql = "SELECT Pseudo FROM clients WHERE Pseudo = ? "; $datas = array($pseudo); try{ $prep = $this->bdd->prepare($sql); $prep->execute($datas); $res = $prep->fetchAll(); return $res; }catch(Exception $e){ echo "Erreur SQL : " . $e->getMessage(); } } public function addClient($pseudo,$email,$mdp){ $sql = "INSERT INTO clients(Pseudo, Email, Motdepasse,avatar) VALUES(?,?,?,?)"; /** // Si php > 5.6 $mdp = password_hash($mdp); */ //$mdp = sha1($mdp); // A changer par la ligne au dessus si version php compatible ! $mdp = password_hash($mdp,PASSWORD_DEFAULT); $datas = array($pseudo,$email,$mdp,""); try{ $prep = $this->bdd->prepare($sql); $res = $prep->execute($datas); $newId = $this->bdd->lastInsertId(); // Retourne le numero auto-incrément de la table pour l'enregistrement créé return array('new_id'=>$newId); }catch(Exception $e){ echo "Erreur SQL : " . $e->getMessage(); } } // Fin de la class Clients }
Qui, ne retournera plus de souci avec le $res ( qui etait celui du addClient ... )
Esther_3379
Messages postés
21
Date d'inscription
lundi 11 mai 2020
Statut
Membre
Dernière intervention
24 mai 2020
20 mai 2020 à 14:49
20 mai 2020 à 14:49
D'accord. excusez moi encore
jordane45
Messages postés
38145
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2024
4 650
>
jordane45
Messages postés
38145
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2024
Modifié le 20 mai 2020 à 15:00
Modifié le 20 mai 2020 à 15:00
Au passage, pour l'authentification des clients sur ton site, tu pourras utiliser ( en l'ajoutant dans la class clients) la fonction
et dans ton code pour ton formulaire de login, y faire appel
/** * Fonction permettant de vérifier si l'utilisateur existe en fonction de son login et password */ public function authentification($pseudo,$mdp){ $user = $this->getClientByPseudo($pseudo); //verifie qu'il n'y a bien qu'un seul user avec ce pseudo.. if(!empty($user) && count($user)==1){ $mdpBdd = $user[0]['Motdepasse']; if (password_verify($mdp, $mdpBdd)){ return $user; }else{ return false; } } }
et dans ton code pour ton formulaire de login, y faire appel
$user = $oClient-> authentification($pseudo,$mdp); if($user ){ //ici ce que tu veux faire si le client est bien identifié.. // par exemple print_r($user); }
Esther_3379
Messages postés
21
Date d'inscription
lundi 11 mai 2020
Statut
Membre
Dernière intervention
24 mai 2020
20 mai 2020 à 15:24
20 mai 2020 à 15:24
Voici ce qu'on m'affiche
Fatal error: Uncaught Error: Call to undefined method Clients::getClientByEmail() in C:\wamp64\www\phpmon\ESTHER\formu1\inscript.php on line 27
jordane45
Messages postés
38145
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2024
4 650
>
Esther_3379
Messages postés
21
Date d'inscription
lundi 11 mai 2020
Statut
Membre
Dernière intervention
24 mai 2020
20 mai 2020 à 15:43
20 mai 2020 à 15:43
Regarde la class.
La fonction se nomme getClientByMail
J'ai sûrement modifié sans le faire exprès
La fonction se nomme getClientByMail
J'ai sûrement modifié sans le faire exprès
Esther_3379
Messages postés
21
Date d'inscription
lundi 11 mai 2020
Statut
Membre
Dernière intervention
24 mai 2020
24 mai 2020 à 19:26
24 mai 2020 à 19:26
bonsoir a tous et merci pour votre aide, mes données vont dans ma bdd et j'arrive a m'inscrire et me connecter correctement.
19 mai 2020 à 12:28
19 mai 2020 à 12:49
19 mai 2020 à 14:09
19 mai 2020 à 14:25
19 mai 2020 à 14:25
Change le second en password2