fonction return

Eléphant du PHP | 85 Messages

22 mai 2006, 17:39

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
la fantaisie, oui...mais toujours avec un peu de rigueure :wink:

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

22 mai 2006, 18:35

Retourne juste $tab_jour, sans les crochets, et tu auras tout le tableau !
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphant du PHP | 85 Messages

23 mai 2006, 13:43

desolé de la reponse un peu tardive, mais euh ... ça marche pas :cry:
Php ne me renvoi aucune erreure que faire ](*,) ?
la fantaisie, oui...mais toujours avec un peu de rigueure :wink:

ViPHP
ViPHP | 3607 Messages

23 mai 2006, 13:51

auh.. ta fonction n'en est pas une, parceque je vois pas la partie
function nom_de_la_fonction(){
[/php]

Eléphant du PHP | 85 Messages

23 mai 2006, 14:37

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
la fantaisie, oui...mais toujours avec un peu de rigueure :wink:

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

23 mai 2006, 14:47

Et comme ça (sans les parenthèses) :
return $tab_jour[$i];
ou pour tout le tableau
return $tab_jour;

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

23 mai 2006, 14:51

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> 

Eléphant du PHP | 85 Messages

23 mai 2006, 15:00

Yeah one point pour toi ouckileou ma marche parfaitement. Encore une fois merci à ceux qui aident les débutant :wink:
la fantaisie, oui...mais toujours avec un peu de rigueure :wink:

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

23 mai 2006, 15:05

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

;)

Invité
Invité n'ayant pas de compte PHPfrance

24 mai 2006, 08:56

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>