Comment passer l'array de mysql_fetch_array() ?
Bonjour,
Voilà une question qui peut paraître bête :
Je voudrais faire une fonction qui va chercher les infos dans une table, et qui renvoie l'array (généré par mysql_fetch_array).
<?php
// ...
// Connection à la base de données effectuée
function topfonction(){
$requete = mysql_query("select * from table");
$array = mysql_fetch_array($requete);
if (isset($array)) return $array;
}
// Appel de la fonction
$tab = top_fonction();
while ($tab)
{
echo "$tab[ 'champ1'];
}
?>
Donc là, cela me crée une boucle infinie, au lieu d'afficher, par exemle, deux lignes dans la base :/
J'ai testé différentes variantes et soit cela m'affiche la dernière entrée dans la table, ou ça me fait cette sorte de boucle infinie.
Merci d'avance et désolé si ça parait simplissime, je dois pas être assez réveillé ce matin ;)
Webmaster de Clikmag http://www.clikmag.fr
Lu,
explication :
$array = mysql_fetch_array($requete); va en fait te retourner la dernière ligne de la table selectionnée.
mysql_fetch_array ne retourne pas un tableau proprement dit mais va permettre de parcourir les lignes de ta table en fonction de la requête que tu executes.
On peut alors imaginer ceci :
<?php
function topfonction($requete) {
$query = mysql_query($requete) or die('bla bla');
//
// Ici mysql_fetch_assoc est la même fonction que mysql_fetch_array
// à la différence qu'il ne retourne QU'UN tableau associatif (la clé est une string)
// à l'inverse de .._array() qui retourne le tab asso et un tab à clé numérique.
// On parcourt donc les lignes de ta table pour les inserer dans un tableau.
while($donnee = mysql_fetch_assoc($query) {
// Exemple aussi, mettre l'id unique comme clé.
$id = $donnee['champ_id'];
$tableau[$id] = $donnee;
}
// Return false si aucune donnée.
if(!$tableau) return FALSE;
// On retourne les données
return $tableau;
}
// Exemple :
$mesDonnees = topfonction('SELECT `machin` FROM `table`');
if(!$mesDonnees) echo 'Desolé aucun enregistrement';
else {
// On parcours cette fois le tableau avec foreach
foreach($mesDonnees as $id => $information) {
echo $information['champ1'];
}
?>
?>
Voilà, je pense que ça va te simplifier le vie ;)
zebdinou pour les intimes / Blog : http://www.zebden.fr
Ok merci beaucoup :)
Il y a une différence entre utiliser la nouvelle topfonction et simplement ceci ?
// J'ai pas détaillé les différents tests
$requete = mysql_query("select * from table");
while ($r=mysql_fetch_array($requete))
{
echo $r['champ1'];
}
Webmaster de Clikmag http://www.clikmag.fr
lu,
la fonction inclus plus de traitement plus qu'il va ta falloir parcourir le tableau retourné en plus du parcourt de la ressource mysql donc plus long et moins performant !
@+
Il en faut peu pour être heureux !!!!!
Ok merci bien ;)
Webmaster de Clikmag http://www.clikmag.fr
Pas forcement vrai,
Une fois les données enregistrées, il n'est plus nécessaire de revenir à la base. ce qui implique moins de ressource.
Surtout quand tu travailles en procédural. Et si tu approfondis cette fonction en passant à la POO, tu allègeras largement ton code et gagneras ainsi bcp de ressources.
Cela n'est absolument pas négligeable. Surtout que parcourir un simple tableau n'est pas si alourdissant que ça, que de parcourir une seconde fois ta table peut l'être.
De plus si tu centralises toutes tes actions, cela implique moins de complications lors du débugage ou d'évolution de ton code.
zebdinou pour les intimes / Blog : http://www.zebden.fr
Ecrire un message
Votre message vient d'être créé avec succès.
BB-Code
Pour insérer une URL clickable
Pour insérer une adresse E-mail
Pour annoter
Pour écrire du code
Pour faire un lien vers une fonction PHP
Pour écrire du texte préformaté
Pour écrire du texte en gras
Pour écrire du texte en italique
Pour écrire du texte souligné
Pour écrire du texte barré
Pour écrire un titre principal
Pour écrire un titre secondaire
Pour écrire une liste
Smiley
:bond:
:boxe:
:bsmile:
:bump:
:clap:
:coeur:
:cool:
:cry:
:eek:
:evil:
:fleur:
:fou2:
:fou:
:grin:
:grrr:
:hammer:
:hippy:
:hum:
:idee2:
:idee:
:kdo:
:king:
:ko:
:lol:
:love2:
:love:
:mad:
:maitre:
:noel:
:oops:
:raa:
:razz:
:roll:
:sad:
:skull:
:smile:
:timide:
:trink:
:vice:
:vomi:
:wink:
:zzz: