8719 sujets

Développement web côté serveur, CMS

J'arrive à authentifier l'utilisateur et à obtenir le numero de semaine avec ma requête dans la table "utilisateurs", mais ensuite, je voudrais extraire les informations de la table global et j'obtiens un message ERREUR serveur 500
Où est l'erreur ?

 $conn = mysqli_connect($dbservername, $dbusername, $dbpassword, $dbname);
            // Check connection
            if (!$conn) {
                die("Connection failed: " . mysqli_connect_error());
            }

            $sql = "SELECT * FROM utilisateurs WHERE username = '$username'";
            $result = mysqli_query($conn, $sql);

            if (mysqli_num_rows($result) > 0) {
                // output data of each row
                while($row = mysqli_fetch_assoc($result)) {
                    $usermotdepasse= $row["password"];
                    $nUser= $row["numero"];
                    $genre= $row['genre'];
                    $today= time();
                    $_SESSION['nUser']=$nUser;
                    $semaine=strftime('%W',$today) ;
                } //jusque là ça marche : Chrome affiche $semaine 
//si j'ajoute le code qui suit, j'obtiens "Erreur serveur 500
                if ($usermotdepasse==$password){
                     $sql = "SELECT * FROM global WHERE nuser = '$nUser' AND semaine = '$semaine';
                     $result = mysqli_query($conn, $sql);

                    if (mysqli_num_rows($result) > 0) {
                        // output data of each row
                        while($row = mysqli_fetch_assoc($result)) {
                            $titreGlobal= $row["titre"];
                        } 
                         echo "titreGlobal = ". $titreGlobal;


                      } else if (mysqli_num_rows($result) == 0) {
                            echo "pas de but global cette semaine";
                     }
                 } 

            } else {
                echo "identifiant ou mot de passe non reconnu";
            }
            

Modifié par fredericmarcel (28 Nov 2015 - 11:28)
Salut,

as-tu copié/collé le code exact ? Car là j'ai l'impression que tu as un guillemet de non fermé, justement à ta seconde requête.
Fais un echo de ta requête SQL et lance à la main dans MySQL, via phpMyAdmin par exemple, ça devrait peut être de donner des infos.
Ton nom de table "global" est, il me semble, un keyword de MySQL donc il faut que tu le changes ou que tu mettes des backticks soit "`".
Quelques remarques, tu pourrais être sensible à l'injection SQL, je n'ai pas l'impression que tu filtres tes variables, $username par exemple.
Ne fais pas de select *, ça permet de récupérer "trop de données", la bonne pratique reste à ne récupérer que ce dont tu as besoin. Cela chargera moins MySQL, rendra les requêtes plus rapides.
Pense aussi à fermer tes connexions même si ce n'est pas "obligatoire" ça reste relativement plus propre.
Bon courage Smiley smile