Bonjour, petit soucis une erreur bete je pense

Résolu
jerome33610 Messages postés 14 Date d'inscription samedi 21 février 2009 Statut Membre Dernière intervention 9 octobre 2009 - 8 oct. 2009 à 21:38
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 - 9 oct. 2009 à 19:09
Bonjour,
Pouvez-vous m'éclairer ?
J'ai une erreur mais je ne met pas le doigt dessus, voyez ci-dessous

voici l'erreur trouvé :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in gestion.php on line 19


et voici mon code :

<?php
session_start();
require ('config.php');
?>
Id |
Nom |
Prénom |
Mail |
Téléphone |

<?php
mysql_connect($serveur, $utilisateur, $mdp);
mysql_select_db($bdd);
$result = mysql_query(\"SELECT * FROM jerome ORDER BY ID DESC\");

while ($row = mysql_fetch_array($result))
{
?>
----

<?php echo $row[0]; ?>,
<?php echo $row[1]; ?>,
<?php echo $row[2]; ?>,
<?php echo $row[3]; ?>,
<?php echo $row[4]; ?>,

<?php
}
?>

14 réponses

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
9 oct. 2009 à 08:57
Euh... Mon code n'est pas "bourré" de fautes, il n'y en a qu'une : j'ai oublié de fermer la parenthèse de la boucle while.
Et puis le formattage de code a supprimé mes majuscules (E_USER_ERROR qui devait être en capitales)
Maintenant ça dépend peut-être aussi du code que tu as avant... Bref...

J'ai fait ça à l'arrache sans tester, l'idée était surtout de donner une piste sur la manière de coder proprement pour éviter les erreurs impossibles a déboguer.
3
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
9 oct. 2009 à 18:23
C'est normal : si tu utilises des caractères qui ne sont pas alphanumériques, tu dois protéger le nom de la table avec des guillemets simples inversés :

select * from `jerome-table` order by id desc

3
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
9 oct. 2009 à 00:32
Salut,

C'est assez simple en réalité : la variable $result n'est pas une ressource de type mysql result. A tout les coup, $result vaut FALSE voire NULL.
Plusieurs causes possibles :
- La connexion au serveur de bases de données a échoué
- La base de données mentionnée n'existe pas (faute de frappe ?)ou l'utilisateur n'a pas les droits requis dessus
- La requête a échoué
Pour savoir ce qui se passe, il faut :
- activer l'affichage de TOUTES les erreurs : error_reporting(E_ALL & E_STRICT)
- vérifier que les fonctions que tu utilises sont correctement exécutées et retournent une valeur que tu pourras exploiter.

Basiquement et de manière assez crade (mais suffisante pour le debug), tu peux te contenter de quelque chose comme ça :
mysql_connect($serveur, $utilisateur, $mdp) or die(mysql_error());

Mais ça, c'est crade, parce que ça affiche l'erreur à l'écran pour tout le monde.
Tu peux aussi contrôler l'exécution des fonctions et ne passer à la suite que si tout se déroule bien.
$error = FALSE;
if (FALSE ($dbh mysql_connect($serveur, $utilisateur, $mdp))) {
  trigger('Erreur lors de la connexion à mysql', E_USER_ERROR);
}
if ($error || !mysql_select_db($bdd)) {
  trigger_error('Une erreur est survenue lors de l\'accès à la base de données', E_USER_ERROR);
}
// Exécution de la requête :
if (FALSE !($result mysql_query("select * from jerome order by id desc"))) {
  // La requête a été exécutée, on peut traiter le résultat
  while (FALSE !($row mysql_fetch_array($result)) {
    // Bla bla bla
  }
}
else {
  // DEBUG UNIQUEMENT !
  die(mysql_error());
}


Bon, je ne résiste pas à l'envie de signaler qu'utiliser l'extension mysql de nos jours ça commence à être limite obsolète...
L'extension mysqli() permet quand même de produire du code plus propre (notamment orienté objet pour l'accès à la base de données), sans parler de PDO qui domine les trois (c'est un point de vue qui m'appartient).
Mais bon, quitte à utiliser des vieilles fonctions, autant les utiliser correctement, hein ;)
0
jerome33610 Messages postés 14 Date d'inscription samedi 21 février 2009 Statut Membre Dernière intervention 9 octobre 2009
9 oct. 2009 à 06:28
bonjour,

Très gentil de part, mais ton code est bourré de fautes du moins c'est ce que me dit la page quand je me sert de ton code et que je test sur mon hébergeur
erreur T IF erreur syntax, mais je vais voir ce que je peux faire avec ton idée, encore merci
0

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

Posez votre question
jerome33610 Messages postés 14 Date d'inscription samedi 21 février 2009 Statut Membre Dernière intervention 9 octobre 2009
9 oct. 2009 à 15:55
re coucou,

merci pour ton aide j'ai trouvé mon erreur, il y avais un soucis avec les cotes choses quand même bizarre :

J'ai mis juste ceci :
$result = mysql_query('select * from jerome order by id desc');

A la place de ceci :
$result = mysql_query("select * from jerome order by id desc");


Il y a des fois ou je ne comprends vraiment pas cette histoire de cotes !

en tous cas merci pour ton aide c'est gentil.
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
9 oct. 2009 à 16:00
Euh ouais, c'est étonnant ça...
Ta requête est rigoureusement identique à celle que tu écris ici ? Y'a pas une variable dedans ?

Bon c'est étrange, mais l'important c'est que ton code fonctionne ^^
0
jerome33610 Messages postés 14 Date d'inscription samedi 21 février 2009 Statut Membre Dernière intervention 9 octobre 2009
9 oct. 2009 à 16:03
Ben ouais c'est juste a la place des "" j'ai mis '' je ne sais pas vraiment ce que sa change mais maintenant sa fonctionne, si quelqu'un pouvais m'expliquer la différence entre '' et "" je pense que j'y verrais plus clair


@ plus

et merci
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
9 oct. 2009 à 16:11
Ben justement, a priori, ça ne change rien dans le cas présent.

Les guillemets doubles indiquent à PH qu'il doit interpréter la chaîne de caractères : si la chaîne contient une variable, celle-ci sera interprétée et remplacée par sa valeur. Les guillemets simples au contraire indiquent à PHP que la chaîne de caractères doit être traitée sans être interprétée. Les $bidule restent tels quels, même s'ils correspondent à une variable dans le reste du script.

MAIS : les deux syntaxes définissent une chaîne de caractères, la différence s'arrête à l'évaluation des variables dans celle-ci. Donc, il n'y a aucune raison pour que l'une fonctionne et pas l'autre si ta requête ne contient pas de variable mais uniquement du texte statique...
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
9 oct. 2009 à 17:50
Salut,

Comme le dit Neigedhiver il n'y a aucune raison qu'il y ait une différence dans ton cas (ou du moins elle m'échappe)

Es tu certain de n'avoir aucune erreur affichée lors de l'exécution du script ?
As tu suivi ce que préconisé Neige pour les erreurs ?

Cordialement,



Kohntark -
0
jerome33610 Messages postés 14 Date d'inscription samedi 21 février 2009 Statut Membre Dernière intervention 9 octobre 2009
9 oct. 2009 à 18:00
Bonjour kohntark,

oui j'ai bien utiliser ce que m'as dit neige il m'as été d'une grande aide

je viens de me rendre compte d'une chose
dans ma variable :
$result = mysql_query('select * from jerome order by id desc');


si je met :
$result = mysql_query('select * from jerome-table order by id desc');


sa ne fonctionne plus je ne comprend plus rien lol
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
9 oct. 2009 à 18:43
oui j'ai bien utiliser ce que m'as dit neige il m'as été d'une grande aide
Je me permettais de te poser la question car je ne vois nul part, dans le code que tu fournis, un quelconque "false !($result mysql_query ...", "die(mysql_error..." comme l'indiquait Neige.

Si j'étais toi je ne me contenterai pas de me dire "je remplace les ["] par des ['] et ça fonctionne, donc c'est bon", mais je chercherai à comprendre pourquoi.
$result = mysql_query('select * from jerome order by id desc');

doit fonctionner, ainsi que
$result = mysql_query("select * from jerome order by id desc");

Si ce n'est pas le cas il y a un pb quelque part que tu retrouveras tôt ou tard dans ton développement.

Si tu remplaces :
$result = mysql_query("select * from jerome order by id desc");

par
if (false $result mysql_query("SELECT * FROM jerome ORDER BY id DESC")) die('erreur requête : '.mysql_error());


est ce qu'une erreur est affichée ?

Pourquoi changer le nom de la table au fait ?

Cordialement,

Kohntark -
0
jerome33610 Messages postés 14 Date d'inscription samedi 21 février 2009 Statut Membre Dernière intervention 9 octobre 2009
9 oct. 2009 à 18:52
le nom de la table change car je fais un espace membre avec la possibilité pour chaque membres de gérer des envoies mail a leur prospects

donc je leur donne la possibilité de créer une bdd sur le serveur.

oui il y a une erreur la voici

erreur requête : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-table' at line 1

voici le code complet :
if (false $result mysql_query("SELECT * FROM jerome-table ORDER BY id DESC")) die('erreur requête : '.mysql_error());


et quand je met :
if (false $result mysql_query("SELECT * FROM jerome ORDER BY id DESC")) die('erreur requête : '.mysql_error());

sa fonctionne
0
jerome33610 Messages postés 14 Date d'inscription samedi 21 février 2009 Statut Membre Dernière intervention 9 octobre 2009
9 oct. 2009 à 18:55
merci neige

effectivement si je met des guillemets inversés sa fonctionne merci a vous
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
9 oct. 2009 à 19:09
et quand je met :

if (false $result mysql_query("select * from jerome order by id desc")) die('erreur requête : '.mysql_error());

sa fonctionne

donc il n'y a pas de différence entre l'utilisation de guillemets simples(') et les doubles ("), les 2 fonctionnent ??
j'ai du mal à suivre.

donc je leur donne la possibilité de créer une bdd sur le serveur

une bdd pour chaque membre !!!! Tu dois avoir une belle structure de serveurs pour permettre ça (idem pour 1 table/membre)

Cordialement,


Kohntark -
0
Rejoignez-nous