Page 1 sur 1

fonction return

Posté : 22 mai 2006, 17:39
par konjiki
Bijour, j'ai du mal avec la fonction return (newbiz oblige :D ) alors voila ma fonction:
$tab_jour=array();
for($i = 1; $i <= 7; $i++){

$req 	= "select count(id) as nb_news from news where `timestamp` between 20$annee$month$day_precedent and 20$annee$month$day";
echo $req."<br>";

$result = mysql_query($req) or die( $req . '<br />' . mysql_error() );
$row 	= mysql_fetch_array($result, MYSQL_ASSOC);

$day = str_pad($day_precedent, 2, "0", STR_PAD_LEFT); //le jour actuel devient le jour precedent
$day_precedent 	= $day_precedent-1; //idem ci dessus

$tab_jour[$i].= $row["nb_news"];

}
echo "<br>";

return($tab_jour[$i]);
}
et comme vous l'aurez compris je cherche à retourner $tab_jour pour afficher les résultat dans un tableau.

Dans mon fichier qui reçoit la fonction:
requete_current_day();
<tr bgcolor="#e6e8ec" align="center">
		<td width="10%" ><? echo "20".$annee; ?></td>
		<td width="10%"><a hre="#" class="info"><? echo $tab_jour[7] ; ?><span>heure de pointe<br>pages vues</span></a></td>
		<td width="10%"><a hre="#" class="info"><? echo $tab_jour[6]; ?><span>test</span></td>
		<td width="10%"><a hre="#" class="info"><? echo $tab_jour[5]; ?><span>test</span></td>
		<td width="10%"><a hre="#" class="info"><? echo $tab_jour[4]; ?><span>test</span></td>
		<td width="10%"><a hre="#" class="info"><? echo $tab_jour[3]; ?><span>test</span></td>
		<td width="10%"><a hre="#" class="info"><? echo $tab_jour[2]; ?><span>test</span></td>
		<td width="10%"><a hre="#" class="info"><? echo $tab_jour[1]; ?><span>test</span></td>

	</tr>


Merci

Posté : 22 mai 2006, 18:35
par mere-teresa
Retourne juste $tab_jour, sans les crochets, et tu auras tout le tableau !

Posté : 23 mai 2006, 13:43
par konjiki
desolé de la reponse un peu tardive, mais euh ... ça marche pas :cry:
Php ne me renvoi aucune erreure que faire ](*,) ?

Posté : 23 mai 2006, 13:51
par jojolapine
auh.. ta fonction n'en est pas une, parceque je vois pas la partie
function nom_de_la_fonction(){
[/php]

Posté : 23 mai 2006, 14:37
par konjiki
j'ai oublié de vous montrer cette partie mais elle est dans le code:
function requete_current_day(){
require('connexion.php');
$day=date('d');
$day_precedent=$day-1;
$jours=date('w');
$annee=date('y');
$annee_precedent=$annee-1;
$month=date('m');
$month_precedent=$month-1;
et apres c'est ce qui est ci-dessus

Posté : 23 mai 2006, 14:47
par ouckileou
Et comme ça (sans les parenthèses) :
return $tab_jour[$i];
ou pour tout le tableau
return $tab_jour;

Posté : 23 mai 2006, 14:51
par ouckileou
En fait si tu ne récupères pas c'est que tu l'utilises mal

Tu appelles ta fonction, et c'est là que le tableau est renvoyé:
requete_current_day(); 
Hors tu ne stockes le retour dans rien

Le tableau que tu renvoie avec return n'existe QUE dans la fonction, il n'est pas global, tu ne peux pas l'utiliser ensuite comme tu fais

Solution :
$tab_jour = requete_current_day(); // ici on récupère le tableau entier de la fonction
<tr bgcolor="#e6e8ec" align="center">
        <td width="10%" ><? echo "20".$annee; ?></td>
        <td width="10%"><a hre="#" class="info"><? echo $tab_jour[7] ; ?><span>heure de pointe<br>pages vues</span></a></td> 

Posté : 23 mai 2006, 15:00
par konjiki
Yeah one point pour toi ouckileou ma marche parfaitement. Encore une fois merci à ceux qui aident les débutant :wink:

Posté : 23 mai 2006, 15:05
par ouckileou
Pour info :
Note : Notez que puisque return() est une structure de langage et non pas une fonction, les parenthèses ne sont pas requises : en fait, il est classique de les ignorer, même si cela ne change rien et vous devriez actuellement en faire de même, PHP ayant moins de travail dans ce cas.
http://fr.php.net/manual/fr/function.return.php

;)

Posté : 24 mai 2006, 08:56
par Invité
il faudrait que tu fasses comme ça:
<?php
function requete_current_day(){
require('connexion.php');
$day=date('d');
$day_precedent=$day-1;
$jours=date('w');
$annee=date('y');
$annee_precedent=$annee-1;
$month=date('m');
$month_precedent=$month-1;
$tab_jour=array();
for($i = 1; $i <= 7; $i++){

$req     = "select count(id) as nb_news from news where `timestamp` between 20$annee$month$day_precedent and 20$annee$month$day";

$result = mysql_query($req) or die( $req . '<br />' . mysql_error() );
$row     = mysql_fetch_array($result, MYSQL_ASSOC);

$day = str_pad($day_precedent, 2, "0", STR_PAD_LEFT); //le jour actuel devient le jour precedent
$day_precedent     = $day_precedent-1; //idem ci dessus

$tab_jour[$i].= $row["nb_news"];

}

return($tab_jour);
}

$tableau=requete_current_day();
?>
<tr bgcolor="#e6e8ec" align="center">
        <td width="10%" ><? echo "20".$annee; ?></td>
        <td width="10%"><a hre="#" class="info"><?php echo $tableau[7] ; ?><span>heure de pointe<br>pages vues</span></a></td>
        <td width="10%"><a hre="#" class="info"><?php echo $tableau[6]; ?><span>test</span></td>
        <td width="10%"><a hre="#" class="info"><?php echo $tableau[5]; ?><span>test</span></td>
        <td width="10%"><a hre="#" class="info"><?php echo $tableau[4]; ?><span>test</span></td>
        <td width="10%"><a hre="#" class="info"><?php echo $tableau[3]; ?><span>test</span></td>
        <td width="10%"><a hre="#" class="info"><?php echo $tableau[2]; ?><span>test</span></td>
        <td width="10%"><a hre="#" class="info"><?php echo $tableau[1]; ?><span>test</span></td>

    </tr>