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

Résolu/Fermé
Peckeno12 Messages postés 11 Date d'inscription mercredi 6 mars 2013 Statut Membre Dernière intervention 6 mars 2013 - 6 mars 2013 à 12:28
Peckeno12 Messages postés 11 Date d'inscription mercredi 6 mars 2013 Statut Membre Dernière intervention 6 mars 2013 - 6 mars 2013 à 17:37
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 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
6 mars 2013 à 12:32
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 mercredi 6 mars 2013 Statut Membre Dernière intervention 6 mars 2013
Modifié par Peckeno12 le 6/03/2013 à 12:35
j'ai mis l'erreur dans le code, c'est à la ligne 35.
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
6 mars 2013 à 12:44
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 mercredi 6 mars 2013 Statut Membre Dernière intervention 6 mars 2013
6 mars 2013 à 12:55
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 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
6 mars 2013 à 13:02
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 mercredi 6 mars 2013 Statut Membre Dernière intervention 6 mars 2013
6 mars 2013 à 13:06
ok je vois ce que tu veux dire ;)
c'est done !
0
Utilisateur anonyme
6 mars 2013 à 13:25
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 dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
6 mars 2013 à 14:37
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 mercredi 6 mars 2013 Statut Membre Dernière intervention 6 mars 2013
6 mars 2013 à 16:18
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
6 mars 2013 à 16:21
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 mercredi 6 mars 2013 Statut Membre Dernière intervention 6 mars 2013
6 mars 2013 à 16:22
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
6 mars 2013 à 16:26
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 mercredi 6 mars 2013 Statut Membre Dernière intervention 6 mars 2013
Modifié par Peckeno12 le 6/03/2013 à 16:54
<?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 mercredi 6 mars 2013 Statut Membre Dernière intervention 6 mars 2013
6 mars 2013 à 16:33
oui c'est bien le même message d'erreur
0
Utilisateur anonyme
6 mars 2013 à 16:35
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 mercredi 6 mars 2013 Statut Membre Dernière intervention 6 mars 2013
Modifié par Peckeno12 le 6/03/2013 à 16:56
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
6 mars 2013 à 17:03
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 mercredi 6 mars 2013 Statut Membre Dernière intervention 6 mars 2013
6 mars 2013 à 17:09
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
6 mars 2013 à 17:21
???
Je te l'ai donnée, la correction.
0
Peckeno12 Messages postés 11 Date d'inscription mercredi 6 mars 2013 Statut Membre Dernière intervention 6 mars 2013
6 mars 2013 à 17:37
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