Page 1 sur 1

m'enregistrer sur mon site problème php/mysql

Posté : 13 nov. 2006, 01:10
par charge360
salut toust le monde. J'Ai un petit problème avec un log que j'essaie de faire. Je crois que mon problème est là $donne = mysql_fetch_assoc($req);
if($donne['username'] != $pass) mais j'arrive pas à comprendre pourquoi ça marche pas. Si j'essaie de faire affichier $donne il m'Affaiche array et non pas la table log. Merci de bien vouloir m'aider
<?php session_start(); ?>
<html>

<head>
<title> </title>

<?php
if (isset($_POST) && !empty($_POST['username']) && !empty($_POST['pass']))
{
if (isset($_POST['username']) && ($_POST['pass']))
{

$username=$_POST['username'];
$pass=$_POST['pass'];

@mysql_connect ('127.0.0.1', 'root', '') or die ('imposible de se connecter');

@mysql_select_db('test2') or die ('impossible de se connecter à la bd');

$reqsql= ("SELECT nick FROM log WHERE nick ='".mysql_real_escape_string( $_POST['username'])."'
AND pass ='".mysql_real_escape_string( $_POST['pass'])."'") or die ("Impossible d'executer la requete");

$req = mysql_query($reqsql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

$donne = mysql_fetch_assoc($req);

if($donne['username'] != $pass)
echo '<p>Mauvais login / password. Merci de recommencer</p>';

}
else
{
echo 'Salut'.$_SESSION[''].'<br />';

}
}
else
{
echo '<p>Vous avez oublié de remplir un champ.</p>';
}


?>

Posté : 13 nov. 2006, 11:35
par zeus
mysql_fetch_assoc() retourne un tableau, même s'il n'y a qu'un champ présent ;)

Sinon, dans ta requete, le SELECT retourne le champ "nick", et dans ton test, tu essaye de récupérer le champ "username" ($donne['username']). N'y aurait-il pas un petit soucis :-k ;)

Posté : 13 nov. 2006, 11:38
par Cyrano
Salut, deux choses.
La première, en développement, vire-moi les "@" devant les noms de fonction. C'est un cache misère et quand on développe, on ne masque pas les erreurs, on les corrige.

Ensuite, mysql_fetch_assoc() retourne un tableau associatif dont les index sont les noms des colonnes des tables consultés dans la requête. Donc il est normal que echo() affiche "array". Utilise print_r() ou var_dump() à la place.

Pour afficher une donnée précise, on mettra $donnee['nom-de-la-colonne']. Et si tu attends plusieurs lignes, alors tu devras utiliser une boucle :
while(false != ($donnee = mysql_fetch_assoc($req)))
{
    echo("<p>". $donnee['nom-de-la-colonne'] ."</p>\n");
}
Tu auras de cette manière la valeur de la colonne pour toutes les lignes retournées.