Problème fonction assoc pour lire une Base de donnée

Résolu
Peckeno12 Messages postés 11 Statut Membre -  
Peckeno12 Messages postés 11 Statut Membre -
Bonjour,

Bonjour,
J'essaye de récupérer une valeur en BDD en incluant dans mon SELECT une unique valeur, mais voila mon problème. Quand j'applique la fonction mysql_fetch_array() à ma requête, il y a une erreur. Rien ne se passe, alors je ne sais pas si cela vient de la structure de mon code où d'une erreur dans la syntaxe. Merci pour votre aide, je vous pose mon bout de code.

<?php
try
{
$link = mysql_connect(sql.free.fr, "identifiant", "mdp")or die('Erreur de connexion !<br>'.$sql.'<br>'.mysql_error());
if (!$link)
{
die('Connexion impossible : ' . mysql_error());
//echo 'Connecté correctement';
//mysql_close($link)
}
mysql_select_db("identifiant");
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
if($_POST['pseudo']==NULL||$_POST['password']==NULL) // reggeeexxxx !!!!!
{
mysql_close($link);
echo '<script language="Javascript">
<!--
document.location.replace("www");
// -->
</script>';
}
else
{
$pseudo=htmlspecialchars($_POST['pseudo'], ENT_QUOTES, 'UTF-8');
$_POST['password']=htmlspecialchars($_POST['password'], ENT_QUOTES, 'UTF-8');
$password_hache=sha1($_POST['password']);
$sql ="SELECT nom,prenom,mail,mdp FROM inscrits WHERE 'pseudo'='.$pseudo.'" or die('Pseudo invalide');
$requete = mysql_query($sql)or die($query . " - " . mysql_error());
$donnees = mysql_fetch_assoc($requete)or die('probleme'.mysql_error()); // Le problème est ici, car cela me renvoie juste "problème".
if($password_hache==$donnees['mdp'])
{
$_SESSION['connect']=1;
$_SESSION['nom']=$donnees['nom'];
$_SESSION['prenom']=$donnees['prenom'];
$_SESSION['pseudo']=$donnees['pseudo'];
$_SESSION['mail']=$donnees['mail'];
mysql_close($link);
echo '<script language="Javascript">
<!--
document.location.replace("www");
// -->
</script>';
}
else
{
echo 'Mot de Passe errone';
mysql_close($link);
echo '<script language="Javascript">
<!--
document.location.replace("www");
// -->
</script>';
}
}
?>

5 réponses

  1. ThEBiShOp Messages postés 9307 Date d'inscription   Statut Contributeur Dernière intervention   1 607
     
    Et l'erreur gagnante, est... ?

    au passage, si tu pouvais mettre ton code là : https://pastebin.com/
    je t'en serai reconnaissant !!
    0
    1. Peckeno12 Messages postés 11 Statut Membre
       
      j'ai mis l'erreur dans le code, c'est à la ligne 35.
      0
    2. ThEBiShOp Messages postés 9307 Date d'inscription   Statut Contributeur Dernière intervention   1 607
       
      ouais, enfin... un code comme ça, c'est juste illisible

      Et l'erreur en question, c'est quoi ? Le suspens, c'est bien à la télé, mais pas sur un forum ^^
      0
    3. Peckeno12 Messages postés 11 Statut Membre
       
      ok ok pardon, il est vrai j'ai posté un peu vite.
      Donc je reprend tout depuis le début.
      J'essaye de récupérer une valeur en BDD en incluant dans mon SELECT un WHERE qui me permet de sélectionner une unique valeur, mais voila mon problème. Quand j'applique la fonction mysql_fetch_array() à ma requête, il y a une erreur. Rien ne se passe, alors je ne sais pas si cela vient de la structure de mon code où d'une erreur dans la syntaxe.

      J'ai mis un or die('probleme'.mysql_error()); à la ligne ou je suppose qu'il y a une erreur et cela me renvoie donc que 'problème'.





      <?php
           try
           {
                   $link = mysql_connect(sql.free.fr, "identifiant", "mdp")or die('Erreur de connexion
                   <br>'.$sql.'<br>'.mysql_error());
                    if (!$link)
                    {
                            die('Connexion impossible : ' . mysql_error());
                            //echo 'Connecté correctement';
                            //mysql_close($link)
                    }
                     mysql_select_db("identifiant");
             }
             catch(Exception $e)
             {
                     die('Erreur : '.$e->getMessage());
              }
              if($_POST['pseudo']==NULL||$_POST['password']==NULL) // reggeeexxxx !!!!!
              {
                   mysql_close($link);
                   echo '<script language="Javascript">
                   <!--
                   document.location.replace("www");
                    // -->
                    </script>';
               }
              else
               {
                     $pseudo=htmlspecialchars($_POST['pseudo'], ENT_QUOTES, 'UTF-8');
                     $_POST['password']=htmlspecialchars($_POST['password'], ENT_QUOTES, 'UTF-8');
                     $password_hache=sha1($_POST['password']);
                     $sql ="SELECT nom,prenom,mail,mdp FROM inscrits WHERE 'pseudo'='.$pseudo.'"
                     or die('Pseudo invalide');
                     $requete = mysql_query($sql)or die($query . " - " . mysql_error());
                     $donnees = mysql_fetch_assoc($requete)or die('probleme'.mysql_error());
                     // Le problème est ici, car cela me renvoie juste "problème".
                     if($password_hache==$donnees['mdp'])
                     {
                             $_SESSION['connect']=1;
                             $_SESSION['nom']=$donnees['nom'];
                             $_SESSION['prenom']=$donnees['prenom'];
                             $_SESSION['pseudo']=$donnees['pseudo'];
                             $_SESSION['mail']=$donnees['mail'];
                             mysql_close($link);
                             echo '<script language="Javascript">
                              <!--
                             document.location.replace("www");
                              // -->
                             </script>';
                    }
                   else
                   {
                         echo 'Mot de Passe errone';
                         mysql_close($link);
                         echo '<script language="Javascript">
                         <!--
                         document.location.replace("www");
                          // -->
                         </script>';
                   }
             }
      ?> 
      
      0
    4. ThEBiShOp Messages postés 9307 Date d'inscription   Statut Contributeur Dernière intervention   1 607
       
      okaaaay

      bon tu fais ça de bonne volonté, ton soucis, je l'ai compris, pas besoin de le remettre ;)
      Ensuite comme je l'ai demandé dans mon 1er message, ton code, si tu pouvais le mettre là, ça serait génial ! https://pastebin.com/
      le forum est nul pour afficher du code, c'est un peu mieux avec la balise code, mais quand le code est un peu long, c'est mieux d'avoir ça avec la coloration syntaxique, le numéro des lignes, etc, etc
      ce n'est pas de ta faute, c'est le forum qui est mal branlé ^^
      0
    5. Peckeno12 Messages postés 11 Statut Membre
       
      ok je vois ce que tu veux dire ;)
      c'est done !
      0
  2. Utilisateur anonyme
     
    Bonjour

    Si ça ne t'affiche que 'Problème' sans message d'erreur de mysql, c'est que tu n'as pas d'erreur de syntaxe de mysql. Tu n'as simplement aucune réponse à ta requête.
    Et tu n'as aucune réponse à ta requête parce que tu as mis des apostrophes autour du nom de colonne 'pseudo' : du coup, ce n'est plus un nom de colonne, tu compares juste la chaîne 'pseudo' au pseudo saisi. De plus, tu mes des points comme si tu concaténais des chaînes, alors qu'il n'y a rien à concaténer.
    ->
     $sql ="SELECT nom,prenom,mail,mdp FROM inscrits WHERE pseudo='$pseudo'";
    0
  3. Alain_42 Messages postés 5413 Statut Membre 904
     
    deux choses me paraissent bizarres :
    - $link = mysql_connect(sql.free.fr, "identifiant",
    sql_free ne devrait-il pas être entre ' ?

    -mysql_select_db("identifiant");
    est ce normal que tu ait "identifiant" comme user et comme nom de base ?

    si une erreur sort à la ligne mysql_fetch_array cela peut venir des lignes avant qui ont un pb
    0
    1. Peckeno12 Messages postés 11 Statut Membre
       
      Oui c'est normal, car j'héberge mon site chez free, donc mon identifiant est le même pour ma bdd et mon compte free.
      0
    2. Utilisateur anonyme
       
      Tout à fait d'accord pour le sql.free.fr entre apostrophes. C'est même bizarre que son script ne plante pas dès le départ.
      Par contre chez Free, le nom de user est bien le même que celui de la base.
      0
  4. Peckeno12 Messages postés 11 Statut Membre
     
    Désolé mais j'ai appliqué les corrections que vous m'avez donné mais il n'y a aucun changement. Il est vrai que c'est surement plus propre par contre.
    0
    1. Utilisateur anonyme
       
      Peux-tu montrer le code corrigé et confirmer que c'est bien exactement le même message d'erreur ?
      0
    2. Peckeno12 Messages postés 11 Statut Membre
       
      <?php 
         try 
         { 
          $link = mysql_connect('sql.free.fr', 'identifiant', 'mdp')or die('Erreur de connexion !<br>'.$sql.'<br>'.mysql_error());  
          if (!$link)  
          { 
          die('Connexion impossible : ' . mysql_error()); 
          //echo 'Connecté correctement'; 
          //mysql_close($link) 
          } 
          mysql_select_db('identifiant'); 
         } 
         catch(Exception $e) 
         { 
           die('Erreur : '.$e->getMessage()); 
         } 
         if($_POST['pseudo']==NULL||$_POST['password']==NULL) // reggeeexxxx !!!!! 
         { 
          mysql_close($link); 
          echo '<script language="Javascript"> 
          <!-- 
          document.location.replace("www"); 
          // --> 
          </script>'; 
         } 
         else 
         { 
          $pseudo=htmlspecialchars($_POST['pseudo'], ENT_QUOTES, 'UTF-8'); 
          $_POST['password']=htmlspecialchars($_POST['password'], ENT_QUOTES, 'UTF-8'); 
          $password_hache=sha1($_POST['password']); 
          $sql ="SELECT nom,prenom,mail,mdp FROM inscrits WHERE 'pseudo'='$pseudo'" or die('Pseudo invalide'); 
          $requete = mysql_query($sql)or die($query . " - " . mysql_error()); 
          $donnees = mysql_fetch_assoc($requete)or die('probleme'.mysql_error()); 
          if($password_hache==$donnees['mdp']) 
          { 
           $_SESSION['connect']=1; 
           $_SESSION['nom']=$donnees['nom']; 
           $_SESSION['prenom']=$donnees['prenom']; 
           $_SESSION['pseudo']=$donnees['pseudo']; 
           $_SESSION['mail']=$donnees['mail']; 
           mysql_close($link); 
           echo '<script language="Javascript"> 
           <!-- 
           document.location.replace("www"); 
           // --> 
           </script>'; 
          } 
          else 
          { 
           echo 'Mot de Passe errone'; 
           mysql_close($link); 
           echo '<script language="Javascript"> 
           <!-- 
           document.location.replace("www"); 
           // --> 
           </script>'; 
          } 
         } 
         ?>
      0
    3. Peckeno12 Messages postés 11 Statut Membre
       
      oui c'est bien le même message d'erreur
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Peckeno12 Messages postés 11 Statut Membre
     
    Merci beaucoup pour ton commentaire, ça m'a rendu compte que mon code était juste "pourri", et encore c'est peu dire...

    Enfin bref j'ai changé plein de trucs et donc voila la solution que j'ai trouvé :

    <?php 
       try 
       { 
        $link = mysql_connect('sql.free.fr', 'identifiant', 'mdp')or die('Erreur de
        connexion !<br>'.$sql.'<br>'.mysql_error());  
        if (!$link)  
        { 
        die('Connexion impossible : ' . mysql_error()); 
        //echo 'Connecté correctement'; 
        //mysql_close($link) 
        } 
        mysql_select_db('identifiant'); 
       } 
       catch(Exception $e) 
       { 
         die('Erreur : '.$e->getMessage()); 
       } 
       if($_POST['pseudo']==NULL||$_POST['password']==NULL)
       { 
        mysql_close($link); 
        echo '<script language="Javascript"> 
        <!-- 
        document.location.replace("www"); 
        // --> 
        </script>'; 
       } 
       else 
       { 
        $pseudo=htmlspecialchars($_POST['pseudo'], ENT_QUOTES, 'UTF-8'); 
        $_POST['password']=htmlspecialchars($_POST['password'], ENT_QUOTES,
        'UTF-8'); 
        $password_hache=sha1($_POST['password']); 
        $sql ="SELECT nom,prenom,mail,mdp,pseudo FROM inscrits " or die('Pseudo
         invalide'); 
        $requete = mysql_query($sql)or die($query . " - " . mysql_error()); 
        while($donnees = mysql_fetch_assoc($requete)) 
        { 
         if($donnees['pseudo']==$pseudo) 
         { 
          if($donnees['mdp']==$password_hache) 
          { 
           $_SESSION['connect']=1; 
           $_SESSION['nom']=$donnees['nom']; 
           $_SESSION['prenom']=$donnees['prenom']; 
           $_SESSION['pseudo']=$donnees['pseudo']; 
           $_SESSION['mail']=$donnees['mail']; 
           mysql_close($link); 
           echo '<script language="Javascript"> 
           <!-- 
           document.location.replace("www"); 
           // --> 
           </script>'; 
          } 
         } 
        } 
        echo 'Pseudo errone'; 
        mysql_close($link); 
        echo '<script language="Javascript"> 
        <!-- 
        document.location.replace("www"); 
        // --> 
        </script>'; 
       }
    0
    1. Utilisateur anonyme
       
      Pourquoi faire le test if($donnees['pseudo']==$pseudo) en PHP au lieu de le laisser dans le WHERE de la requête SQL ? Tu avais mal écrit ce WHERE au départ, mais le principe était bon.
      0
    2. Peckeno12 Messages postés 11 Statut Membre
       
      Oui, c'est vrai que je préférais cette idée car je pense que techniquement c'est surement plus rapide, ça évite de parcourir la bdd avec un while. Enfin bref, peut-être que si je reviens à cette méthode et que je trouve mon erreur je posterais, mais bon pour l'instant c'est pas mal. :)
      0
    3. Utilisateur anonyme
       
      ???
      Je te l'ai donnée, la correction.
      0
    4. Peckeno12 Messages postés 11 Statut Membre
       
      Quand je fais ce que tu dis, le problème n'est toujours pas résolu, il y a un autre problème dans la structure du code.
      Cette façon de faire m'a parue plus simple à mettre en oeuvre car je l'avais déjà fais avant ;)
      0