Affichage de l'erreur

Par God23, il y a 4 ans


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>

17 réponses

popotte, il y a 4 ans

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 :)

God23, il y a 4 ans

merci ton explication etait superbe je peux aller travailler maintenant :)

popotte, il y a 4 ans

Avec plaisir ;)

God23, il y a 4 ans

$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 = {

popotte, il y a 4 ans

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 ^^

God23, il y a 4 ans

regarde ce que j'ai fait :
$erreurs[
"incorrect: 'Nom d\'utilisateur ou mot de passe incorrect'",
"plusieursMembres: 'Plusieurs membres...'",
"erreurSaisie: 'Erreur de Saisie'",
];

God23, il y a 4 ans

ah oui j'ai meme pas fait ce que tu as dit

God23, il y a 4 ans

$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

popotte, il y a 4 ans

alors pour l'erreur, en gros tu n'a pas definit $bdd x)

God23, il y a 4 ans

// 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"];
}

?>

God23, il y a 4 ans

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"));
}"

popotte, il y a 4 ans

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))

God23, il y a 4 ans

ca ne fonctionne toujours pas :(

popotte, il y a 4 ans

Bon j'ai essayé de deviner l'erreur ça ne devait pas etre ça :/

tu peux envoyer ton erreur??

God23, il y a 4 ans

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"];
}

?>

God23, il y a 4 ans

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 :(

popotte, il y a 4 ans

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)