Bonsoir , je souhaite afficher le contenu d'une erreur en PHP dans une portion de code HTML mais je me suis cogner a plusieurs reprises XD pourriez-vous m'aidez??
// partie HTML
<body>
<?php
if(!isset($erreur)){
$contenu = "";
}
else{
echo $contenu;
}
?>
// infos de connexion partie php
<?php
if(!empty($login) && !empty($pass) && isset($login) && isset($pass)){
$sql = $bdd->query('SELECT COUNT(*) FROM acces WHERE Pseudo="'.$login.'"AND Mot_de_passe="'.$pass.'"');
$donnee = $sql->fetch();
if($donnee[0]==1){
session_start();
$_SESSION['name']= $login;
header('location:Plateforme_Etudiants.php');
exit();
}
elseif($donnee[0] == 0){
$erreur= '<div class="error">Nom d\'utilisateur ou mot de passe incorrect</div>';
$contenu = $erreur;
exit();
}
else{
$erreur= "Plusieurs membres...";
$contenu = $erreur;
exit();
}
}
else{
$erreur = "Erreur de Saisie";
$contenu = $erreur;
exit();
}
?>
</body>
Alors déjà pour que ça fonctionne, il faut importer la partie PHP dans le fichier html avant la commande d'affichage
Ensuite niveau syntaxe y'a plusieur chose à changer :p
Et aussi la comande "exit()" sert a couper le script, tout ce qui se passe après le premier exit() ne sera pas lancé :X
Ensuite il faudrait utiliser des fonction sinon tu sera bloqué dans un casse tête pour reorganiser tes if elseif
Le top du top ça aurait été de faire des classes, mais on va rester en procédural pour rester simple ^^
HTML:
<?php require('tonfichierphp.php') ?>
<body>
<?= $erreur ?> // Affiche $erreur
</body>
PHP:
// D'abord on liste les erreurs possibles
$erreur = "";
$erreurs = {
incorrect: '<div class="error">Nom d\'utilisateur ou mot de passe incorrect</div>';
plusieursMembres: "Plusieurs membres...";
erreurSaisie: "Erreur de Saisie";
}
// On met en place une function qui va checker que la saisie est bonne
function saisieOk()
{
return !empty($login) && !empty($pass) && isset($login) && isset($pass)
}
// On fait une fonction qui servira a récupérer les données
function getDonnee()
{
$sql = $bdd->query('SELECT COUNT(*) FROM acces WHERE Pseudo="'.$login.'"AND Mot_de_passe="'.$pass.'"');
return $sql->fetch();
}
// Une fonction pour se connecter
function login()
{
session_start();
$_SESSION['name']= $login;
header('location:Plateforme_Etudiants.php');
}
// le script commence ici, et on va utiliser les fonction qu'on a préparé plus haut
if (saisieOk()) {
$donnee = getDonnee();
switch ($donnee) {
//Si le résultat de la donnée est 1, on lance le script qui est dans la fonction login
case 1:
login();
break;
// Si le resultat est 0, on définit $erreur en récupérant la valeur préparée plus haut
case 0:
$erreur = $erreurs->incorrect;
break;
// Si la réponse n'est ni 1 ni 0, on définit l'erreur
default:
$erreur = $erreurs->plusieursMembres;
}
} else {
// Si la saisie est incorrecte, on définit l'erreur
$erreur = $erreurs->erreurSaisie;
}
Ca devrait fonctionner :)
$erreurs = {
incorrect: '<div class="error">Nom d\'utilisateur ou mot de passe incorrect</div>';
plusieursMembres: "Plusieurs membres...";
erreurSaisie: "Erreur de Saisie";
}
tu vois a ce niveau on me signale une erreur je l'ai fait aujourd'hui car j'ai commencer a etudier le Javascript au niveau des "{" de $erreurs = {
Ah oui en js vanilla le json n'est pas supporté :x je suis habitué aux classes ^^'
Alors remplace le json d'erreurs par un tableau ["incorect" => blabla...]
et erreurs['incorrect']
ça devrait etre bon ^^
regarde ce que j'ai fait :
$erreurs[
"incorrect: 'Nom d\'utilisateur ou mot de passe incorrect'",
"plusieursMembres: 'Plusieurs membres...'",
"erreurSaisie: 'Erreur de Saisie'",
];
$erreurs= [
"incorrect" => 'Nom d\'utilisateur ou mot de passe incorrect',
"plusieursMembres" => 'Plusieurs membres...',
"erreurSaisie" => 'Erreur de Saisie'
];
maintenant il y'a d'autres erreurs en bas XD
la bdd n'est pas definie
// On met en place une function qui va checker que la saisie est bonne
function saisieOk()
{
return !empty($login) && !empty($pass) && isset($login) && isset($pass);
}
// On fait une fonction qui servira a récupérer les données
function getDonnee()
{
$sql = $bdd->query('SELECT COUNT(*) FROM acces WHERE Pseudo="'.$login.'"AND Mot_de_passe="'.$pass.'"');
return $sql->fetch();
}
// Une fonction pour se connecter
function login()
{
session_start();
$_SESSION['name']= $login;
header('location:Plateforme_Etudiants.php');
}
// le script commence ici, et on va utiliser les fonction qu'on a préparé plus haut
if (saisieOk()) {
$donnee = getDonnee();
switch ($donnee) {
//Si le résultat de la donnée est 1, on lance le script qui est dans la fonction login
case 1:
login();
break;
// Si le resultat est 0, on définit $erreur en récupérant la valeur préparée plus haut
case 0:
$erreur = $erreurs["incorrect"];
break;
// Si la réponse n'est ni 1 ni 0, on définit l'erreur
default:
$erreur = $erreurs["plusieursMembres"];
}
} else {
// Si la saisie est incorrecte, on définit l'erreur
$erreur = $erreurs["erreurSaisie"];
}
?>
voici ton code ou est ce que je devrais mettre la declaration :
"if(isset($_POST['name']) && isset($_POST['password'])){
$login = $_POST['name'];
$pass = $_POST['password'];
}
try
{
$bdd = new PDO('mysql:host=localhost;dbname=monappli;port=3308;charset=utf8','root','');
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (Exception $e)
{
die('Erreur : '. $e->getMessage("Echec de connexion a la bd"));
}"
Mmmmh dans la fonction getdonnee :D
function getDonnee()
{
try
{
$bdd = new PDO('mysql:host=localhost;dbname=monappli;port=3308;charset=utf8','root','');
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (Exception $e) {
die('Erreur : '. $e->getMessage("Echec de connexion a la bd"));
}
$sql = $bdd->query('SELECT COUNT(*) FROM acces WHERE Pseudo="'.$login.'"AND Mot_de_passe="'.$pass.'"');
return $sql->fetch();
}
(Se sera tellement plus simple à organiser quand tu vas commencer à apprendre la POO tu verra quand tu y seras x))
Bon j'ai essayé de deviner l'erreur ça ne devait pas etre ça :/
tu peux envoyer ton erreur??
en fait voici tout le code PHP :
<?php
// D'abord on liste les erreurs possibles
$erreur = "";
$erreurs= [
"incorrect" => 'Nom d\'utilisateur ou mot de passe incorrect',
"plusieursMembres" => 'Plusieurs membres...',
"erreurSaisie" => 'Erreur de Saisie'
];
// On met en place une function qui va checker que la saisie est bonne
function saisieOk()
{
return !empty($login) && !empty($pass) && isset($login) && isset($pass);
}
// On fait une fonction qui servira a récupérer les données
function getDonnee()
{
if(isset($_POST['name']) && isset($_POST['password'])){
$login = $_POST['name'];
$pass = $_POST['password'];
}
try
{
$bdd = new PDO('mysql:host=localhost;dbname=monappli;port=3308;charset=utf8','root','');
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (Exception $e)
{
die('Erreur : '. $e->getMessage("Echec de connexion a la bd"));
}
$sql = $bdd->query('SELECT COUNT(*) FROM acces WHERE Pseudo="'.$login.'"AND Mot_de_passe="'.$pass.'"');
return $sql->fetch();
}
// Une fonction pour se connecter
function login()
{
if(isset($_POST['name']) && isset($_POST['password'])){
$login = $_POST['name'];
$pass = $_POST['password'];
}
session_start();
$_SESSION['name']= $login;
header('location:Plateforme_Etudiants.php');
}
// le script commence ici, et on va utiliser les fonction qu'on a préparé plus haut
if (saisieOk()) {
$donnee = getDonnee();
switch ($donnee) {
//Si le résultat de la donnée est 1, on lance le script qui est dans la fonction login
case 1:
login();
break;
// Si le resultat est 0, on définit $erreur en récupérant la valeur préparée plus haut
case 0:
$erreur = $erreurs["incorrect"];
break;
// Si la réponse n'est ni 1 ni 0, on définit l'erreur
default:
$erreur = $erreurs["plusieursMembres"];
}
} else {
// Si la saisie est incorrecte, on définit l'erreur
$erreur = $erreurs["erreurSaisie"];
}
?>
a l'execution ca renvoie toujours cecei peut importe que ce soit une erreur ou pas "$erreur = $erreurs["erreurSaisie"];"
et meme quand les donnees sont correctes le login ne marche pas :(
Ah okay! Ton saisieOk
renvoie false
parce que $login
et pass
ne sont pas définits dans la fonction qui vérifie :o
Essayes avec ça:
<?php
// D'abord on liste les erreurs possibles
$erreur = "";
$erreurs= [
"incorrect" => 'Nom d\'utilisateur ou mot de passe incorrect',
"plusieursMembres" => 'Plusieurs membres...',
"erreurSaisie" => 'Erreur de Saisie'
];
// On définit tout de suite tes variables
$login = $_POST['name'] ?? null;
$pass = $_POST['password'] ?? null;
// On met en place une function qui va checker que la saisie est bonne
// Comme ça ici $login et $pass ne seront plus null
function saisieOk($login, $pass)
{
return !empty($login) && !empty($pass) && isset($login) && isset($pass);
}
// On fait une fonction qui servira a récupérer les données
function getDonnee($login, $pass)
{
try {
$bdd = new PDO('mysql:host=localhost;dbname=monappli;port=3306;charset=utf8','root','');
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (Exception $e) {
die('Erreur : '. $e->getMessage("Echec de connexion a la bd"));
}
$sql = $bdd->query('SELECT COUNT(*) FROM acces WHERE Pseudo="'.$login.'"AND Mot_de_passe="'.$pass.'"');
return $sql->fetch();
}
// Une fonction pour se connecter
function login($login)
{
session_start();
$_SESSION['name']= $login;
header('location:Plateforme_Etudiants.php');
}
// le script commence ici, et on va utiliser les fonction qu'on a préparé plus haut
// Et du coup ce if arretera de renvoyer tout le temps false
if (saisieOk($login, $pass)) {
$donnee = getDonnee($login, $pass);
switch ($donnee) {
//Si le résultat de la donnée est 1, on lance le script qui est dans la fonction login
case 1:
login($login);
break;
// Si le resultat est 0, on définit $erreur en récupérant la valeur préparée plus haut
case 0:
$erreur = $erreurs["incorrect"];
break;
// Si la réponse n'est ni 1 ni 0, on définit l'erreur
default:
$erreur = $erreurs["plusieursMembres"];
}
} else {
// Si la saisie est incorrecte, on définit l'erreur
$erreur = $erreurs["erreurSaisie"];
}
echo $erreur;
En gros tu définit directement ta variable login et pass, dans tes fonction tu passes ton login et ton pass, et j'ai remplacé ton if isset par une ternaire ??
, c'est mieux x)