Moteur de recherche affichant le message d'une personne

Résolu/Fermé
Utilisateur anonyme - 1 janv. 2017 à 16:04
yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 - 5 juin 2017 à 22:04
Bonjour, J'ai crée un projet de moteur de recherche fait en PHP et avec Bootstrap. Ce moteur de recherche doit avoir le concept suivant : lorsque je tape dans le champ de recherche le nom et le prénom d'une personne (je précise), le message d'une personne doit apparaitre. Pour cela, j'ai crée une base de données appelée "amourethaine". Dans cette base de données, il y a une seule table appelée "Personne" qui contient 3 colonnes : nom, prenom et message. Voici le moteur de recherche dans le fichier index.php :
<?php
/* Fichier index.php */

//affichage des erreurs php
//error_reporting(E_ALL);
require_once '__gestionBase.inc.php';


//traitement du formulaire
if ($nom . $prenom) {
    $messagePersonne = obtenirMessagePersonne($nom, $prenom);
}

?>

<!DOCTYPE html>
<html lang="fr">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta name="description" content="">
        <meta name="author" content="">
        <link rel="icon" href="../../favicon.ico">

        <title>De l'amour à la haine...</title>

        <!-- Bootstrap core CSS -->
        <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">

        <!-- Custom styles for this template -->
        <link href="bootstrap/css/theme.css" rel="stylesheet">
        <link href="bootstrap/css/style.css" rel="stylesheet">

        <!-- Just for debugging purposes. Don't actually copy these 2 lines! -->
        <!--[if lt IE 9]><script src=""quot;../../assets/js/ie8-responsive-file-warning.js"></script><![endif]-->
        <script src=""quot;../../assets/js/ie-emulation-modes-warning.js"></script>

        <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
        <!--[if lt IE 9]>
          <script src=""quot;https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
          <script src=""quot;https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
        <![endif]-->
    </head>

    <body>
        <h1>De l'amour à la haine...</h1>
        <form class="navbar-form pull-left"method="POST">
            <input type="text" name="nom" class="span4" placeholder="Prénom Nom" value="<?php echo $prenom . $nom; ?>">
            <button type="submit" class="btn">Rechercher</button><br>
            <?php
            if (!empty($messagePersonne)) {
                echo "<h2>$messagePersonne</h2>";
            }
            ?>
        </form><br>

        <script src=""quot;http://code.jquery.com/jquery.js"></script>
        <script src=""quot;js/bootstrap.min.js"></script>
    </body>
    </head>

    <body>
        <h1>De l'amour à la haine...</h1>
        <form class="navbar-form pull-left"method="POST">
            <input type="text" name="nom" class="span4" placeholder="Prénom Nom" value="<?php echo $prenom . $nom; ?>">
            <button type="submit" class="btn">Rechercher</button><br>
            <?php
            if (!empty($messagePersonne)) {
                echo "<h2>$messagePersonne</h2>";
            }
            ?>
        </form><br>

        <script src=""quot;http://code.jquery.com/jquery.js"></script>
        <script src=""quot;js/bootstrap.min.js"></script>
    </body>



Pour interagir avec la base de données "amourethaine" et la table "personne", j'ai crée un fichier PDO appelé "_gestionBase.inc.php" que voici :
<?php

/*
  __gestionBase.inc.php
 * Ce fichier regroupe l'ensemble des fonctions utilisées pour la connexion et la gestion de la base de données
 * 
 */


/* La première fonction regroupe la fonction se connectant à la base de données
 * Elle se connecte à la base de données "amour et haine" du serveur de la base de données MySQL et retourne un gestionnaire de connexion
 * Elle retourne un objet PDO en cas de succès et false en cas d'échec
 */

function gestionnaireDeConnexion() {
    try {
        $pdo = new PDO('mysql:host=localhost;dbname=amourethaine; charset=utf8', 'root', '');
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
    } catch (PDOException $e) {
        die("Erreur ! :" . $e->getMessage());
    }
    return $pdo;
}

//var_dump(gestionnaireDeConnexion()); //Ne sert à rien ici !


/*
 * Retourne le message d'une personne
 * Retourne PDOStatement|false Un objet PDO en cas de succès, "false" en cas d'échec
 */

function obtenirMessagePersonne($nom, $prenom) {
    $pdo = gestionnaireDeConnexion();
    if (isset($_POST['submit'])) {
        if (isset($_POST['nom'])) {
            $nom = $_POST['nom'];
            $sql = "select message from personne where nom=:nom and prenom=:prenom";
            $query = $pdo->prepare($sql);
            $query->bindParam(':nom', $nom);
            $query->bindParam(':prenom', $prenom);
            $query->execute();
            $resultat = $query->fetch();
            //le temps des tests :
            //print_r($resultat);
            $messagePersonne = !empty($resultat) ? $resultat->message : '';

            //Pour les tests :
            /* echo "requête = ".$req;
              print_r($datas); */

            return $messagePersonne;
        } else
            return 0;
    } else
        return false;
}


Or pour le moment, quand je saisi dans le champ de recherche uniquement le nom de la personne, le message correspondant à la personne s'affiche. Mais quand je saisi le nom etle prénom, rien ne s'affiche. Or mon but c'est quand tapant dans le moteur de recherche le nom et le prénom, le message s'affiche. En d'autres termes, je souhaiterai afficher le contenu de la colonne "message" correspondant au nom et au prénom de la personne issu également dans les colonnes nom et prenom de la table "personne"

Pouvez-vous m'aider ?
A voir également:

10 réponses

jordane45 Messages postés 38304 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 novembre 2024 4 705
1 janv. 2017 à 16:14
Bonjour,
Tu as un seul champ "nom"
que tu récupères via l'instruction
   $nom = $_POST['nom'];

.. au passage .. comme il me semble te l'avoir déjà dit ... il serait préférable de le faire "proprement" comme ceci :
   $nom = !empty($_POST['nom']) ? trim($_POST['nom']) : '';


Le probème c'est que ce champ contient à la fois le NOM et le PRENOM.
Hors.. ta variable $prenom .. n'est pas renseignée ...

Tu as plusieurs possibilités :
Soit tu "split" le contenu de $_POST['nom'] en deux variables ( $nom et $prenom)
 $nomPrenom = !empty($_POST['nom']) ? $_POST['nom'] : '';
 $NP = explode(" ",$nomPrenom);
 $nom = $NP[0];
 $prenom = $NP[1];


Soit, dans ta requête, tu fais ton WHERE sur la CONCATENATION de tes deux champs ( nom prenom )
Par exemple :
SELECT message 
FROM personne 
WHERE concat_ws(' ',nom,prenom) = :nom


0
jee pee Messages postés 40464 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 22 novembre 2024 9 425
1 janv. 2017 à 16:17
Bonjour,

Avant ton select, avec $POST, tu récupères le nom du formulaire, mais pas le prénom.

Cdlt
0
Utilisateur anonyme
1 janv. 2017 à 16:35
Bon en écoutant ce que vous m'avez proposé, voici ce que j'ai fais :
<?php
/* Fichier index.php */

//affichage des erreurs php
//error_reporting(E_ALL);
require_once '__gestionBase.inc.php';

$nom = !empty($_POST['nom']) ? trim($_POST['nom']) : '';
/*$nomPrenom = !empty($_POST['nom']) ? $_POST['nom'] : '';
$NP = explode(" ",$nomPrenom);
$nom = $NP[0];
$prenom = $NP[1];*/
 
//traitement du formulaire
if ($nomPrenom) {
    $messagePersonne = obtenirMessagePersonne($nomPrenom);
}

?>

<!DOCTYPE html>
<html lang="fr">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta name="description" content="">
        <meta name="author" content="">
        <link rel="icon" href="../../favicon.ico">

        <title>De l'amour à la haine...</title>

        <!-- Bootstrap core CSS -->
        <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">

        <!-- Custom styles for this template -->
        <link href="bootstrap/css/theme.css" rel="stylesheet">
        <link href="bootstrap/css/style.css" rel="stylesheet">

        <!-- Just for debugging purposes. Don't actually copy these 2 lines! -->
        <!--[if lt IE 9]><script src=""quot;../../assets/js/ie8-responsive-file-warning.js"></script><![endif]-->
        <script src=""quot;../../assets/js/ie-emulation-modes-warning.js"></script>

        <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
        <!--[if lt IE 9]>
          <script src=""quot;https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
          <script src=""quot;https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
        <![endif]-->
    </head>

    <body>
        <h1>De l'amour à la haine...</h1>
        <form class="navbar-form pull-left"method="POST">
            <input type="text" name="nom" class="span4" placeholder="Prénom Nom" value="<?php echo $prenom . $nom; ?>">
            <button type="submit" class="btn">Rechercher</button><br>
            <?php
            if (!empty($messagePersonne)) {
                echo "<h2>$messagePersonne</h2>";
            }
            ?>
        </form><br>

        <script src=""quot;http://code.jquery.com/jquery.js"></script>
        <script src=""quot;js/bootstrap.min.js"></script>
    </body>

Et le fichier _gestionBase.inc.php
<?php

/*
  __gestionBase.inc.php
 * Ce fichier regroupe l'ensemble des fonctions utilisées pour la connexion et la gestion de la base de données
 * 
 */


/* La première fonction regroupe la fonction se connectant à la base de données
 * Elle se connecte à la base de données "amour et haine" du serveur de la base de données MySQL et retourne un gestionnaire de connexion
 * Elle retourne un objet PDO en cas de succès et false en cas d'échec
 */

function gestionnaireDeConnexion() {
    try {
        $pdo = new PDO('mysql:host=localhost;dbname=amourethaine; charset=utf8', 'root', '');
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
    } catch (PDOException $e) {
        die("Erreur ! :" . $e->getMessage());
    }
    return $pdo;
}

//var_dump(gestionnaireDeConnexion()); //Ne sert à rien ici !


/*
 * Retourne le message d'une personne
 * Retourne PDOStatement|false Un objet PDO en cas de succès, "false" en cas d'échec
 */

function obtenirMessagePersonne($nom, $prenom) {
    $pdo = gestionnaireDeConnexion();
    if (isset($_POST['submit'])) {
        if (isset($_POST['nom'])) {
            $nom = $_POST['nom'];
            $prenom = $_POST['nom'];
            $sql = "select message from personne where concat_ws(' ',nom,prenom) = :nom";
            $query = $pdo->prepare($sql);
            $query->bindParam(':nom', $nom);
            $query->bindParam(':prenom', $prenom);
            $query->execute();
            $resultat = $query->fetch();
            //le temps des tests :
            //print_r($resultat);
            $messagePersonne = !empty($resultat) ? $resultat->message : '';

            //Pour les tests :
            /* echo "requête = ".$req;
              print_r($datas); */

            return $messagePersonne;
        } else
            return 0;
    } else
        return false;
}


Et ça ne marche pas.
0
jee pee Messages postés 40464 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 22 novembre 2024 9 425
Modifié par jee pee le 1/01/2017 à 16:56
"en écoutant", je crois que tu entends mal des yeux ;-)

tu n'as pas lu tout ce que jordane45 a détaillé pour toi.
0
yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 1 550
1 janv. 2017 à 17:06
Si tu as deux champs (pour nom et pour prénom) dans ta base, ne serait-ce pas plus propre d'avoir deux champs dans ton formulaire?
0
Utilisateur anonyme > jee pee Messages postés 40464 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 22 novembre 2024
1 janv. 2017 à 17:29
Bon en lisant ce que vous dites, voici ce que j'ai fais :

Pour index.php :
<?php
/* Fichier index.php */

//affichage des erreurs php
//error_reporting(E_ALL);
require_once '__gestionBase.inc.php';

$nom = !empty($_POST['nom']) ? trim($_POST['nom']) : '';
$prenom = !empty($_POST['prenom']) ? trim($_POST['prenom']) : '';
/* $nomPrenom = !empty($_POST['nom']) ? $_POST['nom'] : '';
  $NP = explode(" ",$nomPrenom);
  $nom = $NP[0];
  $prenom = $NP[1]; */

//traitement du formulaire
if ($nom && $prenom) {
    $messagePersonne = obtenirMessagePersonne($nom, $prenom);
}
?>

<!DOCTYPE html>
<html lang="fr">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta name="description" content="">
        <meta name="author" content="">
        <link rel="icon" href="../../favicon.ico">

        <title>De l'amour à la haine...</title>

        <!-- Bootstrap core CSS -->
        <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">

        <!-- Custom styles for this template -->
        <link href="bootstrap/css/theme.css" rel="stylesheet">
        <link href="bootstrap/css/style.css" rel="stylesheet">

        <!-- Just for debugging purposes. Don't actually copy these 2 lines! -->
        <!--[if lt IE 9]><script src=""quot;../../assets/js/ie8-responsive-file-warning.js"></script><![endif]-->
        <script src=""quot;../../assets/js/ie-emulation-modes-warning.js"></script>

        <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
        <!--[if lt IE 9]>
          <script src=""quot;https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
          <script src=""quot;https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
        <![endif]-->
    </head>

    <body>
        <h1>De l'amour à la haine...</h1>
        <form class="navbar-form pull-left"method="POST">
            <input type="text" name="nom" class="span4" placeholder="Nom" value="<?php echo $nom; ?>">
            <input type="text" name="prenom" class="span4" placeholder="Prenom" value="<?php echo $prenom; ?>">
            <button type="submit" class="btn">Rechercher</button><br>
            <?php
            if (!empty($messagePersonne)) {
                echo "<h2>$messagePersonne</h2>";
            }
            ?>
        </form><br>

        <script src=""quot;http://code.jquery.com/jquery.js"></script>
        <script src=""quot;js/bootstrap.min.js"></script>
    </body>


Et le fichier __gestionBase.inc.php
<?php

/*
  __gestionBase.inc.php
 * Ce fichier regroupe l'ensemble des fonctions utilisées pour la connexion et la gestion de la base de données
 * 
 */


/* La première fonction regroupe la fonction se connectant à la base de données
 * Elle se connecte à la base de données "amour et haine" du serveur de la base de données MySQL et retourne un gestionnaire de connexion
 * Elle retourne un objet PDO en cas de succès et false en cas d'échec
 */

function gestionnaireDeConnexion() {
    try {
        $pdo = new PDO('mysql:host=localhost;dbname=amourethaine; charset=utf8', 'root', '');
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
    } catch (PDOException $e) {
        die("Erreur ! :" . $e->getMessage());
    }
    return $pdo;
}

//var_dump(gestionnaireDeConnexion()); //Ne sert à rien ici !


/*
 * Retourne le message d'une personne
 * Retourne PDOStatement|false Un objet PDO en cas de succès, "false" en cas d'échec
 */

function obtenirMessagePersonne($nom, $prenom) {
    $pdo = gestionnaireDeConnexion();
    if (isset($_POST['submit'])) {
        if (isset($_POST['nom'])) {
            $nom = $_POST['nom'];
            $prenom = $_POST['prenom'];
            $sql = "select message from personne where concat_ws(' ',nom,prenom) = :nom";
            $query = $pdo->prepare($sql);
            $query->bindParam(':nom', $nom);
            $query->bindParam(':prenom', $prenom);
            $query->execute();
            $resultat = $query->fetch();
            //le temps des tests :
            //print_r($resultat);
            $messagePersonne = !empty($resultat) ? $resultat->message : '';

            //Pour les tests :
            /* echo "requête = ".$req;
              print_r($datas); */

            return $messagePersonne;
        } else
            return 0;
    } else
        return false;
}


Sachant peut-être que je n'ai pas tout compris dans ce que vous m'avez écrit, maintenant dans mes démonstrations, plus aucun message s'affiche.
0
Utilisateur anonyme > yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024
1 janv. 2017 à 17:40
Ben c'est que j'ai fais dans mon formulaire index.php, j'ai rajouté un champ. Mais cela ne marche pas et maintenant aucun message ne s'affiche.
0
yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 1 550 > Utilisateur anonyme
1 janv. 2017 à 17:46
et tu a remis la condition
where nom=:nom and prenom=:prenom
?
0
jordane45 Messages postés 38304 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 novembre 2024 4 705
Modifié par jordane45 le 1/01/2017 à 18:59
Ah la la ....
Dans ta fonction... pourquoi avoir mis les lignes :
if (isset($_POST['submit'])) {
        if (isset($_POST['nom'])) {
            $nom = $_POST['nom'];
            $prenom = $_POST['prenom'];

Alors que tu passes déjà les variables nom et prénom dans l'appel à ta fonction ??
function obtenirMessagePersonne($nom, $prenom) {


Tu colles du code sans en comprendre le fonctionnement... ce n'est pas comme ça que tu vas apprendre !

Bref !:
<?php
/* Fichier index.php */

//affichage des erreurs php
error_reporting(E_ALL);
ini_set('display-errors','on');

require_once '__gestionBase.inc.php';

$nom = !empty($_POST['nom']) ? trim($_POST['nom']) : NULL;
$prenom = !empty($_POST['prenom']) ? trim($_POST['prenom']) : NULL;

//traitement du formulaire
if ($nom && $prenom) {
    $messagePersonne = obtenirMessagePersonne($nom, $prenom);
}
?>

<!DOCTYPE html>
<html lang="fr">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta name="description" content="">
        <meta name="author" content="">
        <link rel="icon" href="../../favicon.ico">

        <title>De l'amour à la haine...</title>

        <!-- Bootstrap core CSS -->
        <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">

        <!-- Custom styles for this template -->
        <link href="bootstrap/css/theme.css" rel="stylesheet">
        <link href="bootstrap/css/style.css" rel="stylesheet">

        <!-- Just for debugging purposes. Don't actually copy these 2 lines! -->
        <!--[if lt IE 9]><script src=""quot;"quot;"quot;../../assets/js/ie8-responsive-file-warning.js"></script><![endif]-->
        <script src=""quot;"quot;"quot;../../assets/js/ie-emulation-modes-warning.js"></script>

        <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
        <!--[if lt IE 9]>
          <script src=""quot;"quot;"quot;https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
          <script src=""quot;"quot;"quot;https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
        <![endif]-->
    </head>

    <body>
        <h1>De l'amour à la haine...</h1>
        <form class="navbar-form pull-left" method="POST" action="">
            <input type="text" name="nom" class="span4" placeholder="Nom" value="<?php echo $nom; ?>">
            <input type="text" name="prenom" class="span4" placeholder="Prenom" value="<?php echo $prenom; ?>">
            <button type="submit" class="btn">Rechercher</button><br>
            <?php
            if (!empty($messagePersonne)) {
                echo "<h2>$messagePersonne</h2>";
            }
            ?>
        </form>
  <br>
        <script src=""quot;"quot;quot;http://code.jquery.com/jquery.js"></script>
        <script src=""quot;"quot;quot;js/bootstrap.min.js"></script>
    </body>
</html>


<?php

/*
  __gestionBase.inc.php
 * Ce fichier regroupe l'ensemble des fonctions utilisées pour la connexion et la gestion de la base de données
 * 
 */


/* La première fonction regroupe la fonction se connectant à la base de données
 * Elle se connecte à la base de données "amour et haine" du serveur de la base de données MySQL et retourne un gestionnaire de connexion
 * Elle retourne un objet PDO en cas de succès et false en cas d'échec
 */

function gestionnaireDeConnexion() {
    try {
        $pdo = new PDO('mysql:host=localhost;dbname=amourethaine; charset=utf8', 'root', '');
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
    } catch (PDOException $e) {
        die("Erreur ! :" . $e->getMessage());
    }
    return $pdo;
}

//var_dump(gestionnaireDeConnexion()); //Ne sert à rien ici !


/*
 * Retourne le message d'une personne
 * Retourne PDOStatement|false Un objet PDO en cas de succès, "false" en cas d'échec
 */

function obtenirMessagePersonne($nom, $prenom) {
    $pdo = gestionnaireDeConnexion();
  
 $sql = "SELECT message 
           FROM personne 
           WHERE nom = :nom 
           AND prenom =:prenom";
     
 $query = $pdo->prepare($sql);
 
 $query->bindParam(':nom', $nom);
 $query->bindParam(':prenom', $prenom);
 
 $query->execute();
 
 $resultat = $query->fetch();
 $messagePersonne = !empty($resultat) ? $resultat->message : '';

 return $messagePersonne;
}

Cordialement, 
Jordane                                                                 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
1 janv. 2017 à 19:23
C'est bon j'ai réussi à le faire marcher parfaitement. En fait cela vient de mon fichier PDO _gestionBase.inc.php, j'ai modifié la condition si de ma fonction obtenirMessagepersonne:
function obtenirMessagePersonne($nom, $prenom) {
    $pdo = gestionnaireDeConnexion();
        if (isset($_POST['nom']) && isset($_POST['prenom'])) {
            $nom = $_POST['nom'];
            $prenom = $_POST['prenom'];
            $sql = "select message from personne where nom=:nom and prenom=:prenom";
            $query = $pdo->prepare($sql);
            $query->bindParam(':nom', $nom);
            $query->bindParam(':prenom', $prenom);
            $query->execute();
            $resultat = $query->fetch();
            //le temps des tests :
            //print_r($resultat);
            $messagePersonne = !empty($resultat) ? $resultat->message : '';

            //Pour les tests :
            /* echo "requête = ".$req;
              print_r($datas); */

            return $messagePersonne;
        }
        else
            return false;
    
}


Et pour mon fichier index.php, j'ai juste modifier la manière dont s'affiche le message en dessous du formulaire. Du coup, avec le nom et le prénom le message s'affiche bien en dessous :
<?php
/* Fichier index.php */

//affichage des erreurs php
//error_reporting(E_ALL);
include_once '_gestionBase.inc.php';

$nom = !empty($_POST['nom']) ? trim($_POST['nom']) : '';
$prenom = !empty($_POST['prenom']) ? trim($_POST['prenom']) : '';



//traitement du formulaire
if ($nom && $prenom) {
    $messagePersonne = obtenirMessagePersonne($nom, $prenom);
    
}
?>


<!DOCTYPE html>
<html lang="fr">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta name="description" content="">
        <meta name="author" content="">
        <link rel="icon" href="../../favicon.ico">

        <title>De l'amour à la haine...</title>

        <!-- Bootstrap core CSS -->
        <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">

        <!-- Custom styles for this template -->
        <link href="bootstrap/css/theme.css" rel="stylesheet">
        <link href="bootstrap/css/style.css" rel="stylesheet">

        <!-- Just for debugging purposes. Don't actually copy these 2 lines! -->
        <!--[if lt IE 9]><script src=""quot;../../assets/js/ie8-responsive-file-warning.js"></script><![endif]-->
        <script src=""quot;../../assets/js/ie-emulation-modes-warning.js"></script>

        <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
        <!--[if lt IE 9]>
          <script src=""quot;https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
          <script src=""quot;https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
        <![endif]-->
    </head>

    <body>
        <h1>De l'amour à la haine...</h1>
        <form class="navbar-form pull-left"method="POST">
            <input type="text" name="nom" class="span4" placeholder="Nom" value="<?php echo $nom; ?>">
            <input type="text" name="prenom" class="span4" placeholder="Prenom" value="<?php echo $prenom; ?>">
            <button type="submit" class="btn">Rechercher</button><br>
            <?php if (isset($messagePersonne)) : ?> 
                <?php echo "<h2>$messagePersonne</h2>"; ?>
            <?php endif; ?>
        </form><br>

        <script src=""quot;http://code.jquery.com/jquery.js"></script>
        <script src=""quot;js/bootstrap.min.js"></script>
    </body>
0
jordane45 Messages postés 38304 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 novembre 2024 4 705
1 janv. 2017 à 19:38
Tu n'as pas lu la réponse que je viens de te donner !
Relis là et applique ce que j'y ai marqué .... (ce n'est pas compliquer à comprendre pourtant !!! )
0
Utilisateur anonyme
1 janv. 2017 à 19:38
Mais quand c'est moi qu'il le fait, j'arrive à comprendre.
0
yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 1 550
Modifié par yg_be le 1/01/2017 à 20:24
La fonction obtenirMessagePersonne reçoit $nom, $prenom comme paramètre, cela n'a pas de sens d'aller les chercher à nouveau dans $_POST: tu peux donc supprimer les lignes 3 à 5, ainsi que 22 à 24.
0
jordane45 Messages postés 38304 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 novembre 2024 4 705 > yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024
1 janv. 2017 à 20:24
0
Utilisateur anonyme
20 avril 2017 à 19:15
Bonsoir. J'ai améliorer mon moteur de recherche en faisant du PHP orienté objet. Voici mon nouveau fichier gestionBase.php contenant mon fichier PDO :

<?php

/*
 * _gestionBase.php
 * Ce fichier regroupe l'ensemble des fonctions utilisées pour la connexion et la gestion de la base de données
 *
 */

/*
 * La première fonction regroupe la fonction se connectant à la base de données
 * Elle se connecte à la base de données "amour et haine" du serveur de la base de données MySQL et retourne un gestionnaire de connexion
 * Elle retourne un objet PDO en cas de succès et false en cas d'échec
 */
class gestionBase {
	function gestionnaireDeConnexion() {
		$user = 'root';
		$pass = '';
		$hote = 'localhost';
		$base = 'amourethaine';
		$dsn = "mysql:host=$hote;dbname=$base";
		try {
			$pdo = new PDO ( $dsn, $user, $pass );
			$pdo->setAttribute ( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
			$pdo->setAttribute ( PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ );
		} catch ( PDOException $e ) {
			die ( "Erreur ! :" . $e->getMessage () );
		}
		return $pdo;
	}
	
	/*
	 * Retourne le message d'une personne
	 * Retourne PDOStatement|false Un objet PDO en cas de succès, "false" en cas d'échec
	 */
	function obtenirMessagePersonne($nom, $prenom) {
		$pdo = $this->gestionnaireDeConnexion ();
			$sql = "select message from personne where nom=:nom and prenom=:prenom";
			$query = $pdo->prepare ( $sql );
			$query->bindParam ( ':nom', $nom );
			$query->bindParam ( ':prenom', $prenom );
			$query->execute ();
			$resultat = $query->fetch ();
			$messagePersonne = !empty($resultat) ? $resultat->message : 'Inconnu(e) au bataillon';
			return $messagePersonne;
		} 
	}


Et voici mon nouveau fichier de traitement traitement.php :

<?php

/* Fichier index.php */

// affichage des erreurs php
// error_reporting(E_ALL);
require_once 'gestionBase.php';
class Traitement {
	function __construct() {

	}
	function interrogation() {
		$base = new gestionBase();
		
		// Récupération des valeurs saisies dans le formulaire
		$nom = isset ( $_POST ['nom'] ) ? trim ( $_POST ['nom'] ) : NULL;
		$prenom = isset ( $_POST ['prenom'] ) ? trim ( $_POST ['prenom'] ) : NULL;
		// Traitement du formulaire
		if ($nom && $prenom) {
		$messagePersonne = $base->obtenirMessagePersonne ( $nom, $prenom );
		}

	}
}

?>


Et voici l'IHM de mon moteur de recherche index.php :

<?php
/* Fichier index.php */

// affichage des erreurs php
error_reporting ( E_ALL );
require_once '_debut.php';
require_once 'traitement.php';

$interro = new Traitement ();
$nom = $interro->interrogation ();
$prenom = $interro->interrogation ();

?>



<body>

	<div class="container">
		<h1>De l'amour à la haine...</h1>
		<form class="navbar-form pull-left" method="POST">
			<input type="text" name="prenom" placeholder="Prenom"
				value="<?php echo $prenom; ?>"> <input type="text" name="nom"
				placeholder="Nom" value="<?php echo $nom; ?>">
			<button type="submit" name="rechercher" class="btn">Rechercher</button>
			<br>
			<!--Affichage du message correspondant à la personne-->
                <?php if (isset($messagePersonne)) : ?> 
                    <?php echo "<h2>$messagePersonne</h2>"; ?>
                <?php elseif (isset($_POST["rechercher"])) : ?>
                    <?php echo "<h2>Inconnu au bataillon</h2>"; ?>
                <?php endif; ?>
                <br>
			<!--button type="button" class="btn btn-default" href= "index.php">Rafraichir</button-->
		</form>
		<br>
	</div>

<?php
require_once '_fin.php';
?>


Or pour le rappeler, je veux qu'un message s'affiche en fonction du nom et du prenom de la personne qui sont renseigné dans les champs du formulaire. Or le problème c'est que pour tous les noms et prénoms présents dans ma base de données, s'affiche le message "Inconnu au bataillon" quand je valide avec le bouton Rechercher. Or ce message s'affiche pour les personnes présentes dans ma base de données et renseigné dans les champs.

Pouvez-vous m'aider ? Merci d'avance.
0
Utilisateur anonyme
27 avril 2017 à 16:33
Personne pour m'aider ?
0
yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 1 550 > Utilisateur anonyme
Modifié le 28 avril 2017 à 07:57
je vois tellement de bizarreries que je ne sais pas par où commencer...
c'est ton premier exercice en php orienté objet?
je te suggère de commencer par des exercices plus simples.
pourquoi ne commences-tu pas par t'aider toi-même, par exemple en examinant le contenu de tes variables après avoir fait:
$interro = new Traitement ();
$nom = $interro->interrogation ();
$prenom = $interro->interrogation ();
0
jordane45 Messages postés 38304 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 novembre 2024 4 705
Modifié le 28 avril 2017 à 17:04
...

<?php
/* Fichier index.php */

// affichage des erreurs php
error_reporting ( E_ALL );
ini_set('display-erros','on');




//include des class
require_once '_gestionBase.php';
require_once 'traitement.php';

$nom = !empty($_POST['nom']) ? trim($_POST['nom']) : NULL;
$prenom = !empty($_POST['prenom']) ? trim($_POST['prenom']) : NULL;

//traitement du formulaire
if (isset($_POST['rechercher'])) {
  $interro = new Traitement();
  $messagePersonne = $interro->interrogation($nom,$prenom);
}
?>

<?php
  require_once '_debut.php';
?>
<body>

 <div class="container">
  <h1>De l'amour à la haine...</h1>
  <form class="navbar-form pull-left" method="POST">
   <input type="text" name="prenom" placeholder="Prenom"
    value="<?php echo $prenom; ?>"> <input type="text" name="nom"
    placeholder="Nom" value="<?php echo $nom; ?>">
   <button type="submit" name="rechercher" class="btn">Rechercher</button>
   <br>
   <!--Affichage du message correspondant à la personne-->
      <?php 
        if (isset($messagePersonne)){
           echo "<h2>$messagePersonne</h2>"; 
        }
      ?>
      <br>
   <!--button type="button" class="btn btn-default" href= "index.php">Rafraichir</button-->
  </form>
  <br>
 </div>

<?php
require_once '_fin.php';
?>


<?php

/*
 * _gestionBase.php
 * Ce fichier regroupe l'ensemble des fonctions utilisées pour la connexion et la gestion de la base de données
 *
 */

class gestionBase {
  
  public bdd;
  
 private function gestionnaireDeConnexion() {
  $user = 'root';
  $pass = '';
  $hote = 'localhost';
  $base = 'amourethaine';
  $dsn = "mysql:host=$hote;dbname=$base";
  try {
   $pdo = new PDO ( $dsn, $user, $pass );
   $pdo->setAttribute ( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
   $pdo->setAttribute ( PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ );
  } catch ( PDOException $e ) {
   die ( "Erreur ! :" . $e->getMessage () );
  }
    
  $this->bdd = $pdo;
 }
   
}


<?php
/* Class Traitement*/
class Traitement extends gestionBase{
 function __construct() {
    //appel le constructeur de gestionBase
    //et instancie la variable bdd
    parent::constuct();
 }
 
  /**
  * Recuperation du message
  */
  public function interrogation($nom,$prenom) {
   // Traitement du formulaire
  if ($nom && $prenom) {
    $messagePersonne = $this->obtenirMessagePersonne ($nom, $prenom );
  }else{
      $messagePersonne = "Merci de renseigner le nom et le prenom ";
    }
    return  $messagePersonne;
 }
  
  
  /*
  * Retourne le message d'une personne
  * Retourne PDOStatement|false Un objet PDO en cas de succès, "false" en cas d'échec
 */
 private function obtenirMessagePersonne($nom, $prenom) {
  $pdo = $this->bdd; //vient de la class parent gestionBase
  $sql = "select message from personne where nom=:nom and prenom=:prenom";
  $query = $pdo->prepare($sql);
  $query->bindParam(':nom', $nom);
  $query->bindParam(':prenom', $prenom);
  $query->execute();
  $resultat = $query->fetch();
  return !empty($resultat) ? $resultat->message : 'Inconnu(e) au bataillon';
 } 
 
}

?>

?>


Cordialement, 
Jordane                                                                 
0
Utilisateur anonyme
28 avril 2017 à 17:39
Vous pouvez me rappeler en programmation orienté objet à quoi sert le constructeur déjà ?
0
jordane45 Messages postés 38304 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 novembre 2024 4 705 > Utilisateur anonyme
28 avril 2017 à 17:46
.. à construire ... :-)
Autrement dit ... à instancier l'objet.
0
Utilisateur anonyme
28 avril 2017 à 17:51
Et si je veux que la méthode obtenirMessagePersonne() reste dans ma class gestionBase, comment doit-elle être implémentée ?
0
jordane45 Messages postés 38304 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 novembre 2024 4 705 > Utilisateur anonyme
28 avril 2017 à 20:13
Si ta class c'est gestionBASE ... que viendrait y faire ta méthode MessagePersonne ?? C'est comme si je rangeai des chaussures dans mon frigo ....
Chaque "container" à une utilité ... un but .. ..... faut pas commencer à y mettre n'importe quoi.
Sinon autant ne faire qu'une seule CLASS et y mettre directement toutes tes méthodes ....
0
Utilisateur anonyme
28 avril 2017 à 20:23
Mais la méthode obtenirMessagePersonne() contient la fonction qui prépare et exécute la requête vers la base de données. Et ma classe gestionBase contient toutes les méthodes faisant appel à l'extension PDO et préparant et exécutant les requêtes vers la base de données.
0
Utilisateur anonyme
4 juin 2017 à 18:46
Bonsoir. Concernant le dernier message, j'ai réglé l'erreur en en stockant dans des variables les appels de méthodes $compte->getUser() et $compte->getMdp(). Cependant, je n'arrive pas à me connecter à mon moteur de recherche. En effet, quand je me connecte, je dois basculer sur la page du moteur de recherche. Or ça ne marche pas, et j'ai l'impression qu'il ne récupère pas les valeurs de mes variables $_SESSION[].

Pouvez-vous m'aider, ce serait super.

Voici ma entête appelée "_debut.php" de ma page index :
<?php

?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="#">

<title>De l'amour à la haine...</title>

<!-- Bootstrap core CSS -->
<link href="bootstrap/css/style.css" rel="stylesheet">
<link href="bootstrap/css/bootstrap.css" rel="stylesheet">
<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="bootstrap/css/bootstrap-responsive.css" rel="stylesheet">
<link href="bootstrap/css/bootstrap-responsive.min.css" rel="stylesheet">
<link rel="stylesheet"
	href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
<script
	src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<!-- Custom styles for this template -->
<link href="bootstrap/css/theme.css" rel="stylesheet">


<!-- Just for debugging purposes. Don't actually copy these 2 lines! -->
<!--[if lt IE 9]><script src="../../assets/js/ie8-responsive-file-warning.js"></script><![endif]-->
<script src="../../assets/js/ie-emulation-modes-warning.js"></script>

<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
          <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
          <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
        <![endif]-->
</head>
<body>


Ensuite, voici ma page index.php où se trouve mon interface de connexion :
<?php
/* Fichier index.php permettant au utilisateur de se connecter, c'est la page d'accueil */

// affichage des erreurs php
error_reporting ( E_ALL );
include_once '_debut.php';
include_once 'controleur/authentification.php';
?>

<header></header>
<center>
	<div class="container">
		<h1>De l'amour à la haine...</h1>
		<form class="navbar-form navbar-left" role="search" method="POST" S>
			<div class="form-group">
				<input type="text" class="form-control" placeholder="Login"
					name="user">  <input type="password" class="form-control"
					placeholder="Mot de passe" name="mdp">
			</div>
			<button type="submit" class="btn btn-success" name="connecter">Se
				connecter</button>
		</form>
		
	</div>
</center>
<?php
include_once '_fin.php';
?>

Les deux fichiers sont à la racine de mon projet.

Voici ma classe compte.php qui interagit avec ma table compte de ma base de données. Il est dans mon répertoire modele :
<?php

class Compte {

    protected $user;
    protected $mdp;


    public function getUser() {
        return $this->user;
    }

    public function getMdp() {
        return $this->mdp;
    }

    public function setUser($user) {
        $this->user = (string) $user;
        return $this;
    }

    public function setMdp($mdp) {
        $this->mdp = $mdp;
        return $this;
    }

}




En dessous se trouve le manager de ma table compte appelé comptemanager.php Il se trouve dans mon répertoire modele :
<?php

// Méthode CRUD de la table Compte
class CompteManager {

    //Instance de PDO
    protected $db;

    public function __construct($pdo) {
        $this->setDb($pdo);
    }

// Ajouter un compte
    public function add(Compte $compte) {
        $q = $this->db->prepare('INSERT INTO compte (user, mdp)VALUES(:user,:mdp)');
        $q->bindvalue(':user', $compte->getUser());
        $q->bindvalue(':mdp', $compte->getMdp());
        $q->execute();
    }

//Suppression d'un compte
    public function delete(Compte $compte) {
        $this->db->execute('DELETE FROM compte WHERE user= ' . $compte->getUser());
    }

    //Selection d'un utilisateur
    public function get(Compte $compte) {
        $user = $compte->getUser();
        $mdp = $compte->getMdp();
        $q = $this->db->prepare('SELECT user, mdp FROM compte WHERE user =:user AND mdp =:mdp');
        $q->bindParam(':user', $user, PDO::PARAM_STR);
        $q->bindParam(':mdp', $mdp, PDO::PARAM_STR);
        $q->execute();
        $u = $q->fetch(PDO::FETCH_ASSOC);
        return new Compte($u);
    }

    //Liste des utilisateurs
    public function getList() {
        $comptes = [];
        $q = $this->db->query('SELECT user, mdp FROM compte ORDER BY user');
        while ($donnees = $q->fetch(PDO::FETCH_ASSOC)) {
            $comptes[] = new Compte($donnees);
        }
        return $comptes;
    }

//Mise à jour d'un utilisateur en fonction du nom de l'utilisateur
    public function update(Compte $compte) {
        $q = $this->db->prepare('UPDATE compte SET user =: user, mdp =:mdp WHERE user =:user');
        $q->bindParam(':user', $compte->getUser(), PDO::PARAM_STR);
        $q->bindParam(':mdp', $compte->getMdp(), PDO::PARAM_STR);
        $q->execute();
    }

    public function setDb(PDO $pdo) {
        $this->db = $pdo;
    }

}

try {
    $pdo = new PDO('mysql:host=localhost;dbname=amourethaine', 'root', '');
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
} catch (PDOException $e) {
    die("Erreur ! :" . $e->getMessage());
}



Maintenant se trouve l'algorithme PHP d'authentification au moteur de recherche. Celui-ci se trouve dans mon répertoire controleur :
<?php

include_once('modele/comptemanager.php');
// Algorithme permmetant au super utilisateur de se connecter
include_once('modele/compte.php');
$compte = new Compte();
$manager = new CompteManager($pdo);

if (isset($_POST ["connecter"])) {
    if (isset($_POST ["user"]) && isset($_POST ["mdp"])) {
        $user = $compte->getUser();
        $_POST ["user"] = $user;
        $mdp = $compte->getMdp();
        $_POST ["mdp"] = $mdp;
        $resultat = $manager->get($compte);

        if ($resultat == "true") {
            $_SESSION ["user"] = $user;
            $_SESSION ["mdp"] = $mdp;
            header("location:recherche.php");
            print_r($_SESSION);
        }
    }
}


Merci de me répondre.
0
yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 1 550
4 juin 2017 à 19:45
bonjour, je ne vois pas de session_start(), ni de récupération des variables $_SESSION.
il est nécessaire d'appeler session_start() au début de chaque page participant à la session (créant, lisant ou modifiant les variables de la session).
0
Utilisateur anonyme > yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024
4 juin 2017 à 20:08
Pour le session_start() je l'ai rajouté dans mon _debut.php inclus dans ma page de connexion.

Et pour la récupération des variables de $_SESSION, je dois faire quoi exactement ?
0
yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 1 550 > Utilisateur anonyme
Modifié le 4 juin 2017 à 20:51
pour récupérer les variables de session, tu peux faire, par exemple (après le session_start()):
$session_user = $_SESSION["user"] ;
$session_mdp = $_SESSION["mdp"] ;

je n'ai pas analysé tout ton code, je réagis à ta phrase "j'ai l'impression qu'il ne récupère pas les valeurs de mes variables $_SESSION[]"
en passant: je ne comprends pas vraiment pourquoi tu enregistres le mot de passe dans la session: d'habitude, le mot de passe est vérifié une seule fois, avant de créer la session.
0
Utilisateur anonyme > yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024
4 juin 2017 à 21:20
Parce que quand je pratique, c'est ce que je fais d'habitude. Bon pour le moment et selon tes suggestions, cela ne marche toujours pas.
0
yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 1 550 > Utilisateur anonyme
4 juin 2017 à 21:25
peux-tu donner des informations supplémentaires?
0
yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 Ambassadeur 1 550
5 juin 2017 à 19:27
je suis un peu perdu, peux-tu partager le contenu de _debut.php et de _debutmenu.php?
merci de chaque fois mettre le nom du fichier avant le contenu.
si je comprends bien, la seule façon d'arriver à la page recherche.php, c'est à partir de la redirection dans la page authentification.php. c'est exact?
je comprends aussi que ton problème, c'est que l'utilisateur la redirection n'est jamais exécutée. est-ce exact?
je pense que c'est le moment d'ajouter des "else" dans authentification.php, cela nous permettra de comprendre ce qui se passe dans la page authentification.php.
suggestion pour authentication.php:
<?php

include_once('modele/comptemanager.php');
// Algorithme permmetant au super utilisateur de se connecter
include_once('modele/compte.php');
$compte = new Compte();
$manager = new CompteManager($pdo);

if (isset($_POST ["connecter"])) {
    if (isset($_POST ["user"]) && isset($_POST ["mdp"])) {
        $user = $compte->getUser();
        $_POST ["user"] = $user;
        $mdp = $compte->getMdp();
        $_POST ["mdp"] = $mdp;
        $resultat = $manager->get($compte);

        if ($resultat == "true") {
            $_SESSION ["user"] = $user;
            $_SESSION ["mdp"] = $mdp;
            header("location:recherche.php");
            print_r($_SESSION);
        }
        else
            echo "resultat faux";
    }
    else
        echo " user ou mdp non reçu";
}
else
    echo " connecter non reçu";
//(...la suite manque, tu ne l'as pas partagée...)
0
Utilisateur anonyme
5 juin 2017 à 20:05
Il me semble que précedemment j'ai partagé ces deux fichiers... Mais bon.

Voici le fichier de l'entête de ma page index.php, "_debut.php" :
<?php
session_start();
$session_user = $_SESSION["user"] ;
$session_mdp = $_SESSION["mdp"] ;
include_once 'controleur/authentification.php';

?>
<!DOCTYPE html>
<html lang="fr">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta name="description" content="">
        <meta name="author" content="">
        <link rel="icon" href="#">

        <title>De l'amour à la haine...</title>

        <!-- Bootstrap core CSS -->
        <link href="bootstrap/css/style.css" rel="stylesheet">
        <link href="bootstrap/css/bootstrap.css" rel="stylesheet">
        <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">
        <link href="bootstrap/css/bootstrap-responsive.css" rel="stylesheet">
        <link href="bootstrap/css/bootstrap-responsive.min.css" rel="stylesheet">
        <link rel="stylesheet"
              href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
        <script
        src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
        <!-- Custom styles for this template -->
        <link href="bootstrap/css/theme.css" rel="stylesheet">


        <!-- Just for debugging purposes. Don't actually copy these 2 lines! -->
        <!--[if lt IE 9]><script src="../../assets/js/ie8-responsive-file-warning.js"></script><![endif]-->
        <script src="../../assets/js/ie-emulation-modes-warning.js"></script>

        <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
        <!--[if lt IE 9]>
                  <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
                  <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
                <![endif]-->
    </head>
    <body>


Et enfin, voici le fichier "_debutmenu.php" entête du fichier "recherche.php"uniquement :
<?php
session_start();
include_once 'controleur/restriction.php';
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="#">

<title>De l'amour à la haine...</title>

<!-- Bootstrap core CSS -->
<link href="bootstrap/css/style.css" rel="stylesheet">
<link href="bootstrap/css/bootstrap.css" rel="stylesheet">
<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="bootstrap/css/bootstrap-responsive.css" rel="stylesheet">
<link href="bootstrap/css/bootstrap-responsive.min.css" rel="stylesheet">
<link rel="stylesheet"
	href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
<script
	src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<!-- Custom styles for this template -->
<link href="bootstrap/css/theme.css" rel="stylesheet">


<!-- Just for debugging purposes. Don't actually copy these 2 lines! -->
<!--[if lt IE 9]><script src="../../assets/js/ie8-responsive-file-warning.js"></script><![endif]-->
<script src="../../assets/js/ie-emulation-modes-warning.js"></script>

<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
          <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
          <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
        <![endif]-->
</head>
<body>
	<nav class="navbar-fixed-top navbar">

		<div class="container">
			<div class="navbar-header">

				<a class="navbar-brand"></a>
			</div>
			<div id="navbar" class="collapse navbar-collapse">
           
                     <?php if (!isset($_SESSION["user"])): ?>
                        <div class="nav navbar-nav pull-right">
					<span class="glyphicon glyphicon-user white xsTabulation"
						aria-hidden="true"> </span> <a href="utilisateur.php" rel="nofollow noopener noreferrer" target="_blank"><span
						class="text-center white xsTabulation"><?php echo "Bienvenue  " . $_SESSION["user"]; ?></a>
					</span> <span> <a href="<?php echo $_SERVER[" rel="nofollow noopener noreferrer" target="_blank"PHP_SELF"]; ?>?logout"
						class="white">
							<button type="submit" name="deconnecter" class="btn btn-success"
								span class="glyphicon glyphicon-log-out " aria-hidden="true"
								title="log-out"
								<?php include_once'controleur/deconnexion.php';?>>Se déconnecter</button></span>
					</a> </span>
				</div>
                    <?php endif; ?>
                </div>
			<!-- /.nav-collapse -->
		</div>
		<!-- /.container -->

	</nav>
0
yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 Ambassadeur 1 550
5 juin 2017 à 20:33
as-tu l'intention de répondre à mes questions en #44, et de tester la suggestion proposée?
autre question, pour clarifier si le problème est causé par la page authentification ou par la page recherche: que se passe-t'il si tu encodes l'adresse de la page recherche dans la barre d'adresse du navigateur?
0
Utilisateur anonyme
5 juin 2017 à 20:42
Pour répondre à la première question sur la redirection du fichier "authentification.php" : oui c'est uniquement ce script là qui est censé redirigé vers la page "recherche.php" si il y a une session connecté.

Pour la deuxième question : oui l'utilisateur n'est jamais redirigé vue il ne semble pas reconnaitre les identifiants de connexion.

Et pour la questions du dernier post : si je mets le chemin qui mêne la page "recherche.php" dans ma barre d'adresse du navigation, et bien il redirige vers la page de connexion car seul les utilisateurs authentifiés peuvent y accéder. Et c'est le script du fichier "restriction.php" qui fait la redirection pour les utilisateurs non connectés.
0
yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 1 550
5 juin 2017 à 21:06
1) si tu mets le chemin qui mène la page "recherche.php" dans ta barre d'adresse du navigation, après avoir été authentifié, que se passe-t'il?
2) que donne ma suggestion en #44?
0
Utilisateur anonyme
5 juin 2017 à 21:11
1) Normalement il atterrit sur la page "recherche.php" s'il y est connecté

2) Pour l'instant cela ne marche pas. De plus le message "connecter non reçu" reste affiché avant et après avoir rentré dans le formulaire mes identifiants de connexion.
0
yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 1 550 > Utilisateur anonyme
Modifié le 5 juin 2017 à 21:37
le but de ma suggestion, c'était de comprendre ce que fait la page authentification, pas de corriger.
le message "connecter non reçu" indique que le test
if (isset($_POST ["connecter"]))
empêche de rediriger vers la page recherche.
voilà, maintenant tu sais pourquoi la page recherche ne s'affiche pas.
0
Utilisateur anonyme > yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024
5 juin 2017 à 21:43
En gros, pour bien comprendre. C'est que quand je clique sur le bouton connecter de mon formulaire de connexion, il redirigera toujours ma page de connexion c'est ça ?
0