Aller au contenu

probleme mysql_fetch_array & nommage variables


bigornot

Sujets conseillés

@mysql_connect($host,$user,$pass) or die("Impossible de se connecter à la base de donnÈes");

_AT_mysql_select_db("$bdd") or die("Impossible de se connecter à la base de donnÈes");

$query = "SELECT * FROM $table ORDER BY id DESC LIMIT 1";
$result = mysql_query($query) or die (rate);

$nb = mysql_fetch_array($result);

?>

ci dessus, mon code

ci dessous, ma reponse

Array

ci dessous, la partie dans le code html ( c'est pt'etre ca:!: )

<?php
echo $nb
?>

qu'est ce :?::?:

Lien vers le commentaire
Partager sur d’autres sites

"nb" est l'agencement d'un resultat de recherche "result", effectuée dans la table sql "table", consistant au passage à tout contenu "*" dans l'ordre rangé croissant par attributs "id", dans la base de données "bdd" connectée sur le serveur "host" à l'aide du login "user" et du mot de passe "pass".

tu n'as plus qu'à remplacer tes absolus (variables aux valeurs connues comme l'ip du serveur à la place de "host", ton login, etc.) par les valeurs en vigueur et les variables (les noms arbitraires que tu donnes à tes recherches, tes resultats) par ce que tu veux selon ta méthode et pour bien t'en rappeller.

à la fin en html tu affiches ton résultat retrouvé dans l'état actuel sous "nb" avec le code :

<?php

echo $nb

?>

qui correspond dans un document nomme *.php à l'ouverture d'un tag php (<?) puis la demande d'écrire quelquechose (echo) qui est en l'occurence la valeur du résultat de la recherche ($nb), puis fermer le tag php (?>) pour revenir à l'html.

tu pouvais aussi ecrire en html :

<p>le resultat de ma recherche est<br><?=$nb?>

qui revient presque au même.

nb : tu peux aussi fixer les valeurs des variables absolues dans une entête rechargée à chaque début de document en ayant besoin, histoire de renseigner le document sur les élèments qu'il ne pourra pas deviner seul (créer des liaisons de renseignement entre tes docs, comme pour une feuille de style).

cette "feuille de variable" peut être appellée par un include et elle consiste en du code php du type :

$table='nom_de_ma_table';

n'oublie pas le ";" à chaque fin de commande

n'oublie pas de repenser la totalité du document et de vérifier (au travers des includes, de l'html) que ces additions doivent toujours laisser les php entre des "<?" et des "?>"

sinon l'explorateur au final aura un bordel incompréhensible et les erreurs arrivent vite (les messages de débogage du serveur te disent à quelle ligne l'erreur intervient cependant).

Modifié par Beatnykk
Lien vers le commentaire
Partager sur d’autres sites

@mysql_connect($host,$user,$pass) or die("Impossible de se connecter à la base de donnÈes");

_AT_mysql_select_db("$bdd") or die("Impossible de se connecter à la base de donnÈes");

$query = "SELECT * FROM $table ORDER BY id DESC LIMIT 1";

$result = mysql_query($query) or die (rate);

$nb = mysql_fetch_array($result);

?>

ci dessus, mon code

ci dessous, ma reponse

Array

ci dessous, la partie dans le code html ( c'estp t'etre ca:!: )

<?php

echo $nb

?>

qu'est ce  :?:  :?:

En bref, l'erreur :

$nb te renvoie un Array, autrement dit, un tableau.

Il faut que tu fasses :

while ($nb=mysql_fetch_array($result)){

echo "<br>".$nb[0];

echo "<br>".$nb[1];

echo "<br>".$nb[2];

// etc, etc...

}

Mais il existe egalement une erreur, apparemment, ici :

$result = mysql_query($query) or die (rate);

A moins que 'rate' soit une constante (avec DEFINE('rate','...');)

sinon, il manque probablement un $, soit :

$result = mysql_query($query) or die ($rate);

Anonymus.

Lien vers le commentaire
Partager sur d’autres sites

"nb" est l'agencement d'un resultat de recherche "result", effectuée dans la table sql "table", consistant au passage à tout contenu "*" dans l'ordre rangé croissant par attributs "id", dans la base de données "bdd" connectée sur le serveur "host" à l'aide du login "user" et du mot depass "pass".

tu n'as plus qu'à remplacer tes absolus (variables aux valeurs connues comme l'ip du serveur à la place de "host", ton login, etc.) par les valeurs en vigueur et les variables (les noms arbitraires que tu donnes à tes recherches, tes resultats) par ce que tu veux selon ta méthode et pour bien t'en rappeller.

euh, desolé, j'ai pas bien compris :

tu n'as plus qu'à remplacer tes absolus (variables aux valeurs connues comme l'ip du serveur à la place de "host", ton login, etc.) par les valeurs en vigueur et les variables (les noms arbitraires que tu donnes à tes recherches, tes resultats) par ce que tu veux selon ta méthode et pour bien t'en rappeller.

c-a-d ??

moi, ce que je voulais, c'est afficher 1 message de ma table, qui apparaitra comme dernier mess posté ...

Lien vers le commentaire
Partager sur d’autres sites

euh ..

rate, c'est le petit mot que je me suis choisi pour toutes mes erreurs ...

pour la petite histoire, avant, c'était : raté

et ppuis, j'en ai eu marre avec l'accent

sinon, je vais essayer ton "truc"

Lien vers le commentaire
Partager sur d’autres sites

et je mets : while ($nb=mysql_fetch_array($result)){

echo "<br>".$nb[0];

echo "<br>".$nb[1];

echo "<br>".$nb[2];

// etc, etc...

}

à la place de $nb ???

dsl, je connais pas .$nb[1];

:huh::huh::huh::blink:

Lien vers le commentaire
Partager sur d’autres sites

On recommence :

Pour le die(), il te faut marquer :

die("Raté");

Pour le $nb, il ne retourne pas un seul mot, mais un tableau, c'est à dire tous les champs de ta table (d'où le SELECT * qui signifie Selectionner tous les champs).

Donc, lorsque tu fais

$nb = mysql_fetch_array, il te faut aussi appeler les champs par leur nom.

Par exemple, pour appeler le champ id, tu feras :

while($nb = mysql_fetch_array($result)){
echo $nb['id'];
}

Pour afficher le champ 'id', un champ 'nom', un autre 'prenom' et un autre 'adresse', tu feras :

while($nb = mysql_fetch_array($result)){
echo "<br>".$nb['id'];
echo "<br>".$nb['nom'];
echo "<br>".$nb['prenom'];
echo "<br>".$nb['adresse'];
}

Anonymus.

Lien vers le commentaire
Partager sur d’autres sites

bah oui bah on choisit pas au hasard comme ça, il faut fixer.

en cas d'impossibilité le serveur affiche un message :

...or die ('raté');

ou bien la valeur d'une variable

...or die ($raté);

que tu as fixé plus haut dans le document ou sur une autre page incluse (par include) plus haut dans le doc ou dans une variable global (fixée ailleurs et appellée plus haut) d'une façon équivalente à :

$raté='message';

Lien vers le commentaire
Partager sur d’autres sites

Prenons une table personne :

id | nom | prenom | age |

1 | gates| bill | 25 |

2 | clinton| bill | 32 |

En fait, quand tu fais

SELECT * from personne

tu demandes les champs id, nom, prenom, age. Cela revient à faire :

SELECT id,nom,prenom,age FROM personne

Donc, il faut les rappeler par leur nom.

Lorsque tu fais ta requète, (avec mysql_query), le base stocke le résultat dans une table temporaire. Il te faut donc rappeler la table temporaire, pour retourner les résultats. Pour cela, tu fais mysql_fethc_array. La synthaxe est :

tant que $row = mysql_fetch_array (de la table temporaire de 'result')

donc :

tant qu'il y a des lignes (meme s'il n'y en a qu'une )

donc :

while ($nb = mysql_fetch_array($result)){

/*

Au niveau du echo, tu as le choix entre :

- demander le champ '1' (dans ce cas, c'est $row[1]

- demander le champ 'id' (dans ce cas, c'est $row['id']

*/

// on choisit les noms de champs

echo $nb['id'];

echo $nb['nom'];

echo $nb['prenom'];

echo $nb['age'];

}

Le point, c'est pour différencier les variables php des mots html.

Ainsi, tu peux écrire :

echo "nom $row[1] ";

echo "nom ".$row[1];

echo "nom ".$row[1]."";

ou ?>nom<? echo $row[1]; ?>

Voilà,

Anonymus.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...