Discussion:
Appeler une fonction...
(trop ancien pour répondre)
Auden <""@free.fr>
2007-06-04 07:14:56 UTC
Permalink
Bonjour j'ai un soucis pour appeler une fonction :

Je pense avoir bien suivi le tutoriel mais j'ai toujours une erreur.


Voici la fonction
---------------------------------------------
// Affiche de la moyenne

<?php
function affichemoyenne($numerocrit,$boutique)
{

// connexion à la base

$db = mysql_connect('mysql5-3', 'aaaaaaa', 'bbbbbbb') or die('Erreur de
connexion '.mysql_error());
// sélection de la base
mysql_select_db('aquaoiyp') or die('Erreur de selection '.mysql_error());


$query = "SELECT AVG(".$numerocrit.") FROM ".$boutique." WHERE
TO_DAYS(NOW()) - TO_DAYS(date) <= 180;";
$result = mysql_query($query);
$record_array = mysql_fetch_array($result, MYSQL_NUM);
$moyenne = $record_array[0] ;
if ( $moyenne == 0 ) {
echo "Pas de note";
} else {
echo round($moyenne, 2);
echo " / 10";
}
mysql_close(); // on ferme la connexion

}
?>


Et voici avec quoi je comptais l'appeler :
------------------------------------
<?php
Require("/affichemoyenne.php");
// on appelle la page contenant la fonction

affichemoyenne("crit1","boutiqueanimalissaintpriest");
?>

---------------------------------------------------

Maia ça m'indique une erreur sur cette ligne :




erreur : Fatal error: Call to undefined function: affichemoyenne() in
.../boutiques/liste-des-boutiques-de-la-region-lyonnaise.php on line 64
line 64 => affichemoyenne("crit1","boutiqueanimalissaintpriest");

Merci pour votre soutien !!

Auden
Mihamina Rakotomandimby (R12y)
2007-06-04 09:25:58 UTC
Permalink
D'abord, on t'a indiqué que MySQL sait faire tout seul la moyenne comme un
grand.
A tu pris en compte?
Auden <""@free.fr>
2007-06-04 11:02:04 UTC
Permalink
Post by Mihamina Rakotomandimby (R12y)
D'abord, on t'a indiqué que MySQL sait faire tout seul la moyenne comme un
grand.
A tu pris en compte?
Oui ce code fonctionne pafaitement :

<?php
// Affiche la moyenne

// connexion à la base
$db = mysql_connect('mysql5-3', 'aaaa', 'bbbbbb') or die('Erreur de
connexion '.mysql_error());
// sélection de la base
mysql_select_db('aquaoiyp') or die('Erreur de selection '.mysql_error());
$query = "SELECT AVG(crit4) FROM boutiqueanimalissaintpriest WHERE
TO_DAYS(NOW()) - TO_DAYS(date) <= 180;";
$result = mysql_query($query);
$record_array = mysql_fetch_array($result, MYSQL_NUM);
$moyenne = $record_array[0] ;
if ( $moyenne == 0 ) {
echo "Pas de note";
} else {
echo round($moyenne, 2);
echo " / 10";
}

mysql_close(); // on ferme la connexion
?>
-----------------------------------------

Le soucis c'est que je dois écire ce code une quarantaine de fois dans une
même page en ne modifiant juste que le nom de la colonne
(crit1,crit2,crit3,crit4,crit5) et le nom de la table
(boutiqueanimalis,...,....)

C'est pour cela que j'ai voulu mettre ces lignes dans une fonction que
j'aurais pu appeler...avec une commande du genre :
function affichemoyenne("crit1","boutiqueanimalissaintpriest")

Je pourrais faire du copié/collé en ne modifiant que le nom de la colonne et
la table mais c'est loin d'être "propre" et pratique.
J'espére ne pas avoir répondu à côté de la plaque...

Merci
Olivier Miakinen
2007-06-04 09:25:58 UTC
Permalink
Post by Auden <""@free.fr>
------------------------------------
<?php
Require("/affichemoyenne.php");
Tu n'as pas d'erreur sur le require ? Il n'est pas commun de mettre
un fichier utilisateur à la racine du système de fichier (ce qui n'a
évidemment rien à voir avec la racine du site web).
Auden <""@free.fr>
2007-06-04 11:02:04 UTC
Permalink
Post by Olivier Miakinen
Tu n'as pas d'erreur sur le require ? Il n'est pas commun de mettre
un fichier utilisateur à la racine du système de fichier (ce qui n'a
évidemment rien à voir avec la racine du site web).
J'avais tronqué l'adresse volontairement dans le post..
La voici dans sa version d'origine..

-----------
<?php
Require("http://www.aqua69.fr/boutiques/affichemoyenne.php"); // on
appelle la page contenant la fonction
// affichage -----------------------------------------
affichemoyenne("crit1","boutiqueanimalissaintpriest");
?>
-----------------------------

Merci pour votre aide !
Olivier Miakinen
2007-06-04 11:29:01 UTC
Permalink
Post by Auden <""@free.fr>
Tu n'as pas d'erreur sur le require ? [...]
J'avais tronqué l'adresse volontairement dans le post..
La voici dans sa version d'origine..
-----------
<?php
Require("http://www.aqua69.fr/boutiques/affichemoyenne.php");
^^^^^

Ah, ça change tout ! Là tu ne te contentes pas de lire le fichier, mais
tu demandes à ton serveur de former une requête HTTP qu'elle envoie sur
le réseau (après résolution DNS), cette requête est donc envoyée sur
Internet, elle revient ensuite au serveur, est reçue par le serveur
Apache, qui lance un nouveau processus PHP, lequel lit le fichier (ce
que tu aurais pu faire directement), puis *exécute le code*, code qui
ne retourne rien puisqu'il ne fait que définir une fonction, Apache
forme alors la réponse vide, le renvoie sur le réseau, à destination
de ton premier script PHP qui attend depuis un moment, lit la réponse
vide (donc sans aucune définition de fonction), et continue jusqu'à
l'appel de fonction qui plante puisque cette fonction n'existe pas.

Ai-je besoin de préciser que lire le fichier directement serait plus
efficace (et fonctionnerait) ?
Auden <""@free.fr>
2007-06-04 21:06:33 UTC
Permalink
Post by Olivier Miakinen
Ai-je besoin de préciser que lire le fichier directement serait plus
efficace (et fonctionnerait) ?
Merci infiniment cela fonctionne enfin !!

Et dire que j'avais tapé l'adresse au complet pour être sur de ne pas me
tromper dans l'adresse !!

Au plaisir et encore merci !!

Continuer la lecture sur narkive:
Loading...