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

Résolu
Peckeno12 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   -  
Peckeno12 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   -
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>';
}
}
?>



A voir également:

5 réponses

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

au passage, si tu pouvais mettre ton code là : https://pastebin.com/
je t'en serai reconnaissant !!
0
Peckeno12 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
j'ai mis l'erreur dans le code, c'est à la ligne 35.
0
ThEBiShOp Messages postés 8411 Date d'inscription   Statut Contributeur Dernière intervention   1 566
 
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
Peckeno12 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
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
ThEBiShOp Messages postés 8411 Date d'inscription   Statut Contributeur Dernière intervention   1 566
 
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
Peckeno12 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
ok je vois ce que tu veux dire ;)
c'est done !
0
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
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
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
Peckeno12 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
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
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
Peckeno12 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
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
Utilisateur anonyme
 
Peux-tu montrer le code corrigé et confirmer que c'est bien exactement le même message d'erreur ?
0
Peckeno12 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
<?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
Peckeno12 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
oui c'est bien le même message d'erreur
0
Utilisateur anonyme
 
Je ne vois pas la correction indiquée dans mon message de 13h45
0

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

Posez votre question
Peckeno12 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
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
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
Peckeno12 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
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
Utilisateur anonyme
 
???
Je te l'ai donnée, la correction.
0
Peckeno12 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
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