Se connecter / S'enregistrer
Votre question

Probleme php / mysql

Tags :
  • MySQL
  • Programmation
Dernière réponse : dans Programmation
21 Novembre 2005 07:55:50

Bonjour

Je débute en Php et j'ai un problême de code que je n'arrive pas à saisir malgré mes recherches sur le net et sur votre forum.

Il s'agit de récupérer la moyenne des chiffres d'une colonne mysql (en l'occurence "age"), d'en faire la moyenne et de la ressortir via un echo ou un print dans ma page php (le nom de la table est "users").

Mon code est a récupérer ici.

Au lieu de renvoyer le chiffre attendu, la page affiche "Array". Je suis donc un peu perdu ...

En vous remerciant d'avance de vos réponses

webkawa

Autres pages sur : probleme php mysql

21 Novembre 2005 08:24:59

Comme c' est expliqué dans les cours de qualité du siteduzero, la fonction fetch_array renvoie une tableau qui contient les différentes valeur de la ligne.
Meme quand le tableau contient un seul élément, ca reste une tableau, et donc le echo ne marche pas.

Exemple :
  1. SELEC nom, prenom FROM...

/!\ le forum d'infos-du-net est moisi, donc je ne peux pas écrire SELEC_T, je dois écrire SELEC sinon ca plante. Dans tout le message j'écrirais SELEC au lieu de la meme chose avec un T :p 


Si tu fais un $result = mysql_fetch_array(....),
$result['nom'] vaudra le nom de la personne, et $result['prénom'] son prénom.

Le problème dans ton cas c'est que "avg(age)" n'est pas un nom de champ, et je ne suis pas sur que $result['avg(age)'] marche.

Tu as donc deux possiblités :
1- utiliser les indices numériques : la première valeur a pour indice 0, la deuxième 1...

Par exemple :
  1. SELEC nom, prenom, classe FROM ...
  2. ....
  3. while($result = mysql_fetch_array(...))


Tu peux accéder aux valeur avec $result['nom'], $result['prenom'] et $result['classe'], mais aussi avec $result[0], $result[1] et $result[2] ( /!\ attention ce n'est pas $result['0']).
Dans ton cas, $result[0] contiendra effectivement le résultat de ta requête.

2- nommer la valeur dans la requete SQL
On utilise le mot-clé AS :
  1. SELEC avg(age) AS moyenne FROM...


Quand tu fais ça, tu indiques à MySQL "je veux que tu nommes 'moyenne' le résultat de la moyenne des ages".

Ainsi tu pourras accéder à la valeur par $result['moyenne'].


Que signifiait ton erreur ?

En fait, $result n'est pas une variable texte mais un tableau.
Comme php ne savait pas quoi afficher, il a choisi de te prévenir que c'était un tableau en affichant 'Array' ('tableau' en anglais).

La prochaine fois, pense à utiliser la fonction
print_r : Celle si affiche la variable, spécifie son type, et affiche les valeurs des éléments quand c'est un tableau.

Si tu as une valeur étrange qui ne réagit pas comme tu le souhaites, c'est très utile pour débugguer : cela demande à php "quel est le contenu de la variable ?', et ca marche meme quand c'est une variable innatendue comme un tableau, contrairement à echo.

Liens utiles
- http://siteduzero.com/php/ : cours de PHP du siteduzero
- http://siteduzero.com/php/liredonnees.php#recuperer : passage sur la récupération de données (le passage qui t'intéresse est un peu plus bas, "Afficher le résultat d'une requête")
- http://fr.php.net/manual/fr/function.print-r.php : page de la documentation php en francais sur la fonction print_r
21 Novembre 2005 16:48:19

Merci beaucoup de cette réponse rapide & complete ! je vais regarder ca attentivement et je te tiens au courant :-D
Contenus similaires
22 Novembre 2005 08:10:12

Re ... décidemment je dois etre maudit ...

J'ai fait exactement comme tu me le conseillais dans la seconde méthode, via un AS, et ca ne marche pas, la page php n'affiche aucun résultat ...

Mon code est dispo ici.

Merci d'avance du coup de main

a+

kawa
22 Novembre 2005 16:26:10

C'est bon, j'ai trouvé. Merci beaucoup du coup de main, c'est super !
22 Novembre 2005 19:51:43

C'est pas ton ip qu'il faut mettre mais plutôt localhost.


et fait msql_query() or die ('Erreur SQL !
'.$sql.'
'.mysql_error());


comme cela tu aura le message d'erreur de mysql
22 Novembre 2005 20:10:39

Merci du conseil
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS