PHP Souci au niveau de la bdd

A

Anonymous

Invité
#1
Bonjour,

j'ai un nouveau souci niveau bdd.
J'aimerai faire un while qui lit tout les données de ma table. et si le champ login = XY alors on affiche certaines données de la table.

Voilà ce que sa donne mais sans succès:
include("config.php");

$sql = "SELECT * FROM command";
$req = mysql_query($sql)or die("Erreur SQL !");
$data = mysql_fetch_assoc($req);
$text = '';

while ($data = mysql_fetch_array($sql)) // On boucle pour afficher toutes les données et on met toutes données dans un tableau
{
If (!empty ($data['id']))
{
$text = $text.'</br>Commande n°'.$data['id'].'</br>Etat: '.$data['etat'].'</br>'.$data['text'];

}
}

Sa doit être tout con mais c'est pas évident pour moi.

Erreur:
Warning: mysql_fetch_array() expects parameter 1 to be resource, string given in C:\Program Files (x86)\EasyPHP-12.0\www\account.php on line 41
Ligne 41:
while ($data = mysql_fetch_array($sql))

Une idée ?
 

Kyu

Staff
Membre du personnel
Inscrit
4 Octobre 2009
Messages
327
Reactions
8
#2
Enlève cette ligne : $data = mysql_fetch_assoc($req);

D'après mes souvenirs, si tu fait un fetch, ta ressource sql ne peux plus être utilisés par la suite.

Ensuite, tu peux ajouter une clause WHERE login="XY" pour filtrer les résultats.
 
Inscrit
17 Février 2011
Messages
194
Reactions
0
#3
Si tu veux un bon conseil, quitte MySQL qui ne bénéficie plus d'aucunes mise à jours et qui contient des failles de sécurités importantes pour passer à PDO ou MySQLi.

Sinon, si tu veux formater ta réponse en tableau associatif, je reprend ton code :
Code:
$result = mysql_query('SELECT * FROM command');

while($row  = mysql_fetch_array($result, MYSQL_ASSOC)) 
{
	echo 'Commande n°' . $row['id'] . 'etc...';
}
Ton problème est que tu donnes un mauvais argument à ta fonction mysql_fetch_array() vus que tu as déjà utilisé mysql_fetch_assoc(). Si tu doutes de la structure d'une variable, regarder son type et utiliser print_r() si elle se trouve être un tableau permet souvent de régler ce genre d'erreurs ! (;

Pour vérifier si le login est égal à un certain résultat, un simple if devrait suffire :)
 
A

Anonymous

Invité
#4
Merci.

Pour l'histoire des fails bdd, ya rien d'important, juste des login et mdp. Aucun moyens de paiements enregistrés.
 
Inscrit
17 Février 2011
Messages
194
Reactions
0
#5
Justement c'est très important ! Ce sont des données sensibles (Les données utilisateurs sont toujours sensibles) et je doute que les laisser à la vus de n'importe qui soit une riche idée. Comment faire confiance à un webmaster qui juge cela "sans importance" ? o:

Alors jette un coup d'oeil sur PDO & MySQLi. Dans tout les cas, crypte bien les mots de passe...
 
Haut Bas