Problème sur un projet php/sql (page connexion resultat bac)

Fermé
tyga - Modifié le 9 janv. 2022 à 21:55
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 10 janv. 2022 à 20:08
Bonsoir à tous

Je vous écrit car j'ai un petit problème avec un projet php/sql que je dois effectuer
En effet, je dois créer plusieurs pages qui permettrons la connexion et la consultations des résultats vis à vis de celui qui les cherche (jury,professeurs,administrateur,élève...). Je suis entrain de créer la page élève mais voilà bientôt une semaine que je bloque dessus à cause de choses que je ne comprend pas. Je vous met le sujet pour que ce soit plus clair pour vous, je vous joins aussi mes codes et la base de données sql.

SUJET:
L’objectif de ce projet est de réaliser une interface homme-machine permettant la gestion des résultats du bac dans une académie .

Il vous faudra donc créer :

• Une page d’accueil, intitulée index.html et qui propose un menu vers les différentes pages

• Une page pour l’administrateur, qui ne sera accessible que par identifiant et mot de passe.

Cette page doit vous permettre :

o De créer un élève en connaissant tous ses descripteurs.

o De supprimer un élève connaissant son numéro de candidat.

o De modifier le mot de passe d’un utilisateur connaissant son numéro d’utilisateur.

• Une page pour les jurys, accessible via un identifiant et un mot de passe.

Si vous êtes effectivement jury, cette page doit vous permettre :

o De connaitre la moyenne des élèves.

o De connaitre le nombre d’élèves pour chacune des mentions.

o De trouver tous les élèves dont la moyenne est proche d’une valeur à choisir.

o De modifier le nombre de points d’un élève en ajoutant des points jury.

• Une page pour les élèves, accessible avec leur numéro de candidat et leur date de naissance. Chaque élève pourra ainsi connaître sa moyenne et sa mention.

• Une page pour les proviseurs, accessible avec mot de passe et identifiant. Si vous êtes vraiment proviseur, cette page doit vous permettre d’avoir accès aux résultats des élèves de votre établissement, de voir la moyenne des élèves de votre établissement et de connaitre le majorant.

Pour chaque page, vous pourrez utiliser, au choix, des boutons, zones de saisies, menu déroulant, …

Vous disposez également de 4 tables constituant votre base de données :
• La liste des candidats, • La liste des établissements, • La liste des résultats, • La liste des utilisateurs.

JE NE PEUX PAS COPIER LA BASE DE DONNEES ICI MALHEURESEMENT


MON CODE

PAGE ELEVES HTML

 
<!DOCTYPE html>

<html>
    <head>  <!-- en-tête de la page -->
            <meta charset="utf-8" />
            <title>Identification</title>
            <link rel="stylesheet" type="text/css" href="CSS/histoire.css">
    </head>

    <body>
        <!-- corps de la page -->
        <div class="entete">
            <h1>Connection</h1>
        </div>

        <div class="barenav">
            <div class="bordure">
            <a href="http://localhost/php/projet/index.html">Accueil</a>
                <a class="pageactu" href="http://localhost/php/projet/Pages/Pageélève.php">Page éleves</a>
                <a href="http://localhost/php/projet/Pages/Page jury.php">Page Jury</a>
                <a href="http://localhost/php/projet/Pages/Page administrateur.php">Page administrateur</a>
                <a href="http://localhost/php/projet/Pages/Page Proviseur.php" style="float:right">Page proviseur</a>
            </div>
        </div>

<!--demande des identifiant/mots de passe pour connection-->
        <div class="global">
            <div class="gauche">
                <div class="contenu">
                    <h2><mark> Indentification à votre compte d'élève </mark></h2>
                    <form method="post" action="eleveconnect.php"><!--fait parvenir la demande de connection à une page dédiée-->
                        Votre numéro de candidat : <input type="text" name="identifiant" /><br><br>
                   
                       
                        Votre date de naissance : <input type="password" name="mdp" /><br><br>
                           
                       
                        <button type="submit" >Se connecter</button>
                    </form>
                </div>
    </body>
</html>




[PHP] ELEVECONNECT
<!DOCTYPE html>
<html>

    <head>
        <title>eleveconnect</title>
        <meta charset=utf-8" />
    </head>
    <body>
<?php
    include "db_connect3.php";
    $identifiant=$_POST["identifiant"];  
    $mdp=$_POST["mdp"];
    //on écrit la requête
    $requete="SELECT num_anonymat FROM liste_candidats WHERE num_candidat ='$identifiant' AND mdp='$mdp'" ;
    // on récupère la reponse de la bdd dans la variable $result qui contient
    // une sorte de tableau de dictionnaires          
    $result=$db->query($requete);
    // On regarde si le mot de passe et l'identifiant correspond bien à un compte
    if (($result->num_rows > 0)){
        $row = $result->fetch_assoc();
        // On vérifie que le mot de passe correspond bien à celui d'un élève
        echo "$row[num_anonymat]";
            include "traitementélèves.php";
        }
        // Si ce n'est pas le cas, on retourne sur la page de connexion et on affiche un message "mot de passe incorrect"
            else{
                include "Pageélèves.php";
                echo "<div class='bas'>";
                echo "<h2>Identifiant ou mot de passe incorrect</h2>";
                echo "</div>";
            }
                   
        }
        // Si ce n'est pas le cas, on retourne sur la page de connexion et on affiche un message "mot de passe incorrect"
        else{
            include "Pageélèves.php";
            echo "<div class='bas'>";
            echo "<h2>Mot de passe incorrect</h2>";
            echo "</div>";
        }
    ?>
</body>



[PHP] TRAITEMENT ELEVE
<!DOCTYPE html>

<html>
    <head>  <!-- en-tête de la page -->
            <meta charset="utf-8" />
            <title>Dashboard</title>
            <link rel="stylesheet" type="text/css" href="CSS/histoire.css">
    </head>

    <body>
        <!-- corps de la page -->
        <div class="entete">
            <h1>Dashboard</h1>
        </div>

        <div class="barenav">
            <div class="bordure">
                <a href="http://localhost/php/projet/index.html">Accueil</a>
                <a href="http://localhost/php/projet/Pages/Pageélèves.php">Page éleves</a>
                <a class="pageactu" href="http://localhost/php/projet/Pages/Page jury.php">Page Jury</a>
                <a href="http://localhost/php/projet/Pages/Page administrateur.php">Page administrateur</a>
                <a href="http://localhost/php/projet/Pages/Page Proviseur.php" style="float:right">Page proviseur</a>
            </div>
        </div>

        <div class="global">

                <div class="contenu">
                    <p> Résultats :
                        <?php
                            include "db_connect3.php";
                            //on écrit la requête
                            $requete2="SELECT "moyenne" FROM "liste_resultats.php" WHERE NAME="num_anonymat" FROM "eleveconnect.php"/> ;
                            $requete="SELECT "avis" FROM "liste_resultats.php" WHERE NAME="num_anonymat" FROM "eleveconnect.php"/> ;
                            // on récupère la reponse de la bdd dans la variable $result qui contient
                            // une sorte de tableau de dictionnaires  
                            $result2=$db->query($requete2);
                            //on commence le taleau en html avec toutes les balises nécessaires
                            // tant qu'il y a des lignes, on affiche les données issues de la requête
                            while ($row = $result2->fetch_assoc()){
                                echo $row["moyenne"] ;//on écrit les lignes et cellules du tableau en y insérant le titre du film
                            }  
                            echo "<br>";



                        //On va repeter le même procédé sur les prochains codes
                        ?>
                       
           
        </div>
                <div class="contenu">
                    <?php
                       
                    include "db_connect3.php";
                    session_start();
                    if(isset($_POST['username']) && isset($_POST['password']))
{
    // connexion à la base de données
    $db_username = 'root';
    $db_password = 'mot_de_passe_bdd';
    $db_name     = 'nom_bdd';
    $db_host     = 'localhost';
    $db = mysqli_connect($db_host, $db_username, $db_password,$db_name)
           or die('could not connect to database');
   
    // on applique les deux fonctions mysqli_real_escape_string et htmlspecialchars
    // pour éliminer toute attaque de type injection SQL et XSS
    $username = mysqli_real_escape_string($db,htmlspecialchars($_POST['username']));
    $password = mysqli_real_escape_string($db,htmlspecialchars($_POST['password']));
   
    if($username !== "" && $password !== "")
    {
        $requete = "SELECT count(*) FROM utilisateur where
              nom_utilisateur = '".$username."' and mot_de_passe = '".$password."' ";
        $exec_requete = mysqli_query($db,$requete);
        $reponse      = mysqli_fetch_array($exec_requete);
        $count = $reponse['count(*)'];
        if($count!=0) // nom d'utilisateur et mot de passe correctes
        {
           $_SESSION['username'] = $username;
           header('Location: principale.php');
        }
        else
        {
           header('Location: login.php?erreur=1'); // utilisateur ou mot de passe incorrect
        }
    }
    else
    {
       header('Location: login.php?erreur=2'); // utilisateur ou mot de passe vide
    }
}
else
{
   header('Location: login.php');
}
mysqli_close($db); // fermer la connexion
?>

 </div>
               
    </body>
</html>


Merci de votre aide, n'hésiter pas à demander si vous voulez plus d'explications, je n'ai pas bien expliquer ici

EDIT : Correction des balises de code

A voir également:

2 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
9 janv. 2022 à 22:08
Bonjour,

Déjà.. pour poster ton code à l'avenir, merci d'utiliser les balises de code
(explications A LIRE ENTIEREMENT , disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code)
=> Là j'ai édité ton message pour corriger les balises...


Ensuite :
PAGE ELEVES HTML
- Ligne 36 .. ce n'est pas la date de naissance que tu demandes.. mais son mot de passe.

eleveconnect.php
- Ligne 6, manque un guillemet
-Ligne 22, les doubles quotes autour de la variable ne servent à rien.. par contre, tu as oublié de mettre des quotes pour la "clé" de l'array
 echo $row["num_anonymat"];

- Ligne 23 .. ne JAMAIS utiliser d'accents dans le nom de variables ou de fichiers
- idem ligne 27 et 36

-- Le "retour" à une page ne se fait pas avec un include .. mais avec une redirection ( voit l'instruction HEADER en php ) (comme les lignes 82, 86 et 91 du fichier traitementeleve.php )


TRAITEMENT ELEVE
- Ligne 33 .. ta requête est fausse... c'est le nom d'une table qu'il faut mettre .. et non pas le nom d'un fichier php
- Lignes 59 à 65 ... INUTILES vu que tu inclus déjà un fichier qui semble être celui qui fait déjà la connexion à la bdd
 include "db_connect3.php";

D'ailleurs;. tu l'as inclus ligne 33 et 55 .. c'est inutile ...
Inclus le UNE SEULE FOIS au tout début de ton fichier PHP et tu seras tranquil
- Ligne 56.. le session start ... est lui aussi à mettre au tout début du fichier .. avant même tout autre code html ou php ..

Voila déjà un début ...
Je t'invite, avant de poursuivre, de lire et d'appliquer les consiles/consignes données ici :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

PS: Le mot de passe est stocké en "clair" dans la bdd ?? .. ce n'est pas très sécur..




0
Merci de ton aide, j'ai tout recommencer voilà ce que ça donne
PS: désolé pour l'affichage du code qui n'est pas joli joli

<!DOCTYPE html>#PAGE ELEVE

<html>
    <head>  <!-- en-tête de la page -->
      <[https://www.commentcamarche.net/applis-sites/reseaux-sociaux/1777-meta-un-nouveau-nom-pour-facebook/ meta] charset="utf-8" />
      <title>Identification</title>
      <link rel="stylesheet" type="text/css" href="CSS/histoire.css">
    </head>

    <body>
        <!-- corps de la page -->
        <div class="entete">
            <h1>Connection</h1>
        </div>

        <div class="barenav">
            <div class="bordure">
            <a href="http://localhost/php/projet/index.html">Accueil</a>
                <a class="pageactu" href="http://localhost/php/projet/Pages/Pageeleves.php">Page éleves</a>
                <a href="http://localhost/php/projet/Pages/Page jury.php">Page Jury</a>
                <a href="http://localhost/php/projet/Pages/Page administrateur.php">Page administrateur</a>
                <a href="http://localhost/php/projet/Pages/Page Proviseur.php" style="float:right">Page proviseur</a>
            </div>
        </div>

<!--demande des identifiant/mots de passe pour connection-->
        <div class="global">
            <div class="gauche">
                <div class="contenu">
                    <h2><mark> Identification à votre compte d'élève </mark></h2>
                    <form method="post" action="eleveconnect.php"><!--fait parvenir la demande de connection à une page dédiée-->
                        Votre numéro de candidat : <input type="text" name="identifiant" /><br><br>
                    
                        
                        Votre date de naissance : <input type="password" name="mdp" /><br><br>
     <form method="post" action="eleveconnect.php"><!--fait parvenir la demande de connection à une page dédiée-->
                            
                        
                        <button type="submit" >Se connecter</button>
                    </form>
                </div>
    </body>
</html>


<!DOCTYPE html>#ELEVE CONNECT

<html>

 <head>

  <title>élèveconnect</title>
  <meta charset="utf-8" />

 </head>

 <body>

  <?php 

  //fait le lien avec db_connect3 qui lui fait le lien avec les bases de données

   include "db_connect3.php";
   $identifiant=$_POST["identifiant"]; 
   $mdp=$_POST["mdp"];
   echo $mdp;
   //on écrit la requête
   $requete="SELECT num_candidat,num_etablissement,date_naissance FROM liste_candidats WHERE num_candidat='$identifiant' AND date_naissance='$mdp'" ;
   // on récupère la reponse de la bdd dans la variable $result qui contient 
   // une sorte de tableau de dictionnaires   
   $result=$db->query($requete);
   // On regarde si le mot de passe et l'identifiant correspond bien à un compte
   if (($result->num_rows > 0) ){
    $row = $result->fetch_assoc();
    // Si oui on vérifie que le mot de passe correspond bien à celui d'un jury
     $etablissement=$row["num_etablissement"]; 
     include "traitementeleves.php";
    }
   // Si ce n'est pas le cas, on retourne sur la page de connexion (via include) et on affiche un message d'erreur
   else{
    include "Pageeleves.php";
    echo $mdp;
    echo "<div class='bas'>";
    echo "<h2>Identifiant ou mot de passe incorrect</h2>";
    echo "</div>";
    

   }
  ?> 
 </body>


<!DOCTYPE html>#TRAITEMENT ELEVE

<html>
    <head>  <!-- en-tête de la page -->
      <meta charset="utf-8" />
      <title>Dashboard</title>
      <link rel="stylesheet" type="text/css" href="CSS/histoire.css">
    </head>

    <body>
        <!-- corps de la page -->
        <div class="entete">
            <h1>Page élève</h1>
        </div>

        <div class="barenav">
            <div class="bordure">
            <a href="http://localhost/php/projet/index.html">Accueil</a>
                <a class="pageactu" href="http://localhost/php/projet/Pages/Pageeleves.php">Page éleves</a>
                <a href="http://localhost/php/projet/Pages/Page jury.php">Page Jury</a>
                <a href="http://localhost/php/projet/Pages/Page administrateur.php">Page administrateur</a>
                <a href="http://localhost/php/projet/Pages/Page Proviseur.php" style="float:right">Page proviseur</a>
            </div>
        </div>

        <div class="global">

                <div class="contenu">
     <p> Votre Moyenne : 
      <?php 
       include "db_connect3.php";
       //on écrit la requête SQL qui nous donne la moyenne des élèves
       $requete2="SELECT liste_resultats.moyenne FROM liste_resultats INNER JOIN liste_candidats WHERE liste_candidats.num_candidat=$identifiant AND liste_resultats.num_anonymat=liste_candidats.num_anonymat " ;
       // on récupère la reponse de la bdd dans la variable $result qui contient 
       // une sorte de tableau de dictionnaires 
       $result2=$db->query($requete2);
       //on commence le taleau en html avec toutes les balises nécessaires
       // tant qu'il y a des lignes, on affiche les données issues de la requête
       while ($row = $result2->fetch_assoc()){
        echo $row["moyenne"] ;//on écrit les lignes et cellules du tableau 
       } 
       echo "<br>";
       
      
      ?>
     
     <p> Votre Mention : 
      <?php 
       include "db_connect3.php";
       //on écrit la requête SQL qui nous donne la mention des élèves
       $requete2="SELECT liste_resultats.avis FROM liste_resultats INNER JOIN liste_candidats WHERE liste_candidats.num_candidat=$identifiant AND liste_resultats.num_anonymat=liste_candidats.num_anonymat " ;
       // on récupère la reponse de la bdd dans la variable $result qui contient 
       // une sorte de tableau de dictionnaires 
       $result2=$db->query($requete2);
       //on commence le taleau en html avec toutes les balises nécessaires
       // tant qu'il y a des lignes, on affiche les données issues de la requête
       while ($row = $result2->fetch_assoc()){
        echo $row["avis"] ;//on écrit les lignes et cellules du tableau 
       } 
       echo "<br>";
       
      
      ?>
     
     
    </div>


    
     
                </div>
            </div>
    

    </body>
</html>

Edit: correction des balises de code (ajout du langage)

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
10 janv. 2022 à 00:09
Pour la mise en forme du code, je t'invite à lire attentivement le lien expliquant le fonctionnement des balises .
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Concernant ton code, je n'ai pas tout regarder mais déjà, dans la page #PAGE ELEVE, la ligne 36 est en trop.

Ensuite, si tu as des soucis essaies de nous les expliquer.
N'ayant pas ta base de données sous la main, nous ne pouvons de toute façon pas tester ton code.
1
tyga > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
Modifié le 10 janv. 2022 à 19:20
Bonsoir, j'ai un autre problème cette fois c'est par rapport au CSS.

En faite, j'ai pris deux images que je voudrais mettre dans la page d'accueil mais le résultat n'est pas vraiment ce que j'espérer.

Je voudrais donc savoir si il était possible de redimensionner la taille des images pour avoir un meilleurs résultat et si oui comment devrai-je m'y prendre.

MON CODE HTML DE LA PAGE D'ACCUEIL



<!DOCTYPE html>

<html>
<head> <!-- en-tête de la page -->
<meta charset="utf-8" />
<title>Page d'acceuil</title>
<link rel="stylesheet" type="text/css" href="Pages/CSS/home.css">
</head>

<body>
<!-- corps de la page -->
<div class="entete">
<h1>Consultations: Résultats du Baccalauréat</h1>
</div>

<div class="barenav">
<div class="bordure">
<a class="pageactu" href="http://localhost/php/projet/index.html">Accueil</a>
<a href="http://localhost/php/projet/Pages/Pageeleves.php">Page élèves</a>
<a href="http://localhost/php/projet/Pages/page jury.php">Page Jury</a>
<a href="http://localhost/php/projet/Pages/Page administrateur.php">Page administrateur</a>
<a href="http://localhost/php/projet/Pages/Page proviseur.php" style="float:right">Page proviseur</a>
</div>
</body>

<body>

<div class="images">
<img src="image1.jpg">
<img src="image2.jpg">
</div>


</body>
</html>


MON CODE CSS
  • {

box-sizing: border-box;
}

body {
font-family: Arial;
padding: 10px;
background: #f1f1f1;
}

/* entete*/
.entete {
padding: 30px;
text-align: center;
background: white;
}

.entete h1 {
font-size: 50px;
}

/* Barre de navigation*/
.barenav {
overflow: hidden;
background-color: #333;
}

.barenav a:hover {
background-color: #ddd;
color: black;
}


.pageactu {
background-color: #498bbe;
}

.bordure a{
border-right: 1px solid #bbb;
}

.barenav a {
float: left;
display: block;
color: #f2f2f2;
text-align: center;
padding: 14px 16px;
text-decoration: none;
}



/* colone de gauche */
.gauche {
float: left;
width: 75%;
}

/* colone de droite */
.droite {
float: left;
width: 25%;
background-color: #f1f1f1;
padding-left: 20px;
}




.contenu {
background-color: white;
padding: 20px;
margin-top: 20px;
}


.global:after {
content: "";
display: table;
clear: both;
}


mark{
background-color: #498bbe
}

/* Footer */
.bas {
padding: 20px;
text-align: center;
background: #ddd;
margin-top: 20px;
}

.résultat-search {
border: 5px solid #d0dce1;
padding: 0 35px 30px;
}
  • , :after, :before {

box-sizing: border-box;
}
  • {

margin: 0;
padding: 0;
-webkit-tap-highlight-color: rgba(0,0,0,0);
}
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > tyga
Modifié le 10 janv. 2022 à 20:08
Pour le CSS il y a un forum dédié à ça.
https://forums.commentcamarche.net/forum/css-156

Merci d'y reposer ta question.
Et pense à clôturer cette discussion
0