[PHP/MySQL] Une histoire d'array ... :'(

Fermé
sango69780 Messages postés 44 Date d'inscription vendredi 15 septembre 2006 Statut Membre Dernière intervention 2 octobre 2009 - 10 janv. 2008 à 15:19
sango69780 Messages postés 44 Date d'inscription vendredi 15 septembre 2006 Statut Membre Dernière intervention 2 octobre 2009 - 10 janv. 2008 à 17:17
Bonjour,
Voici mon soucis:

Je souhaite uniquement écrire dans ma page web le nom d'un champs ... ca parrait simple et pourtant je bloque dessus !!!

Voici mon code:

$titre = mysql_query (" SELECT theme FROM agricole WHERE idtheme = $donnees");

Dans lequel $titre doit prendre comme valeur le champ theme de ma base de donnée,
agricole est le nom de ma table,
idtheme ets la clef primaire de cette table
theme est un enregistrement de cet table
et $donnees contient l'identifiant souhaité

C'est vraiment bysard, je ne comprend pas pourquoi mais si je fait echo $titre, cei me renvoie un array !!!

Aide please !!!
A voir également:

4 réponses

Bonjour

bysard quel mot bizare !

mysql_query ne rend pas un array ni un champ mais une resource si tout va bien et le booléen false s'il y a un problème, comme il est indiqué dans la doc PHP.

pour extraire ton info de la resource, il faut faire (entre autres possibilités)
$res = mysql_query (" SELECT theme FROM agricole WHERE idtheme = $donnees"); 
$ligne= mysql_fetch_array($res);
$titre=$ligne['theme'];
1
sango69780 Messages postés 44 Date d'inscription vendredi 15 septembre 2006 Statut Membre Dernière intervention 2 octobre 2009
10 janv. 2008 à 15:38
Ok niquel ca marche ...
Mais je ne comprend pas :-(

Pourrais-tu mettre un petit commentaire apres chacune des 3 ligne de codes, que je comprenne une fois pour toute le fonctionnement, car j'avoue que là j'ai du mal :S

En tout cas, merci encore de ta gentilesse.

Cordialement.
0
Pourrais-tu mettre un petit commentaire apres chacune des 3 ligne de codes ça, c'est la meilleure des questions à poser.

$res = mysql_query (" SELECT theme FROM agricole WHERE idtheme = $donnees");
on fait une requête mysql SELECT. Si tout va bien, $res contiendra un 'truc' qui s'appelle une resource et qu'on utilisera à la 2ème ligne. S'il y a un problème, $res vaudra false. Dans un programme sérieux, on contrôle que le résultat n'est pas false en faisant :
$res = mysql_query (" SELECT theme FROM agricole WHERE idtheme = $donnees") or die (mysql_error());
Remarque : qu'il n'y ait aucun enregistrement avec idtheme = $donnees n'est pas une erreur, mais $res ne contiendra aucun résultat. Par contre, si la table agricole n'existe pas, il y aura bien une erreur.

$ligne= mysql_fetch_array($res);
la resource obtenue peut être considérée comme une sorte de tableau à deux dimensions dont on lit une ligne à chaque fois en faisant $ligne= mysql_fetch_array($res);
chaque ligne de ce tableau à 2 dimensions est un tableau à une dimension dont les éléments ont pour indice les noms des champs récupérés. Si tu avais fait "SELECT idtheme,theme FROM..." tu aurais récupéré dans $ligne un tableau à 2 éléments $ligne['idtheme'] et $ligne['theme'].
Quand tu as balayé tout le tableau $res, mysql_fetch_array($res) te rend false. C'est pour ça qu'on rencontre très souvent la boucle :
while ($ligne= mysql_fetch_array($res)) {
... traitement
}
La condition du while fait à la fois l'appel à la fonction, l'affectation à $ligne (grâce au '=' qui n'est pas un == de comparaison !) et le test de la valeur false.
Remarque que sans faire de boucle, tu peux utiliser mysql_num_rows($res) qui te dit s'il y a 0, 1 ou 25000 résultats à ta requête

$titre=$ligne['theme'];
tu sors tu tableau $ligne une valeur particulière (même si c'est la seule ici !)
0
sango69780 Messages postés 44 Date d'inscription vendredi 15 septembre 2006 Statut Membre Dernière intervention 2 octobre 2009
10 janv. 2008 à 17:17
Ok ok j'ia compris la méthode et la logique !

Je t'en remercie !

Cordialement.
0