Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Appeler une fonction...

6 réponses
Avatar
Auden
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

6 réponses

Avatar
Mihamina Rakotomandimby (R12y)
Auden wrote:

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


D'abord, on t'a indiqué que MySQL sait faire tout seul la moyenne comme un
grand.
A tu pris en compte?

Avatar
Olivier Miakinen

Et voici avec quoi je comptais l'appeler :
------------------------------------
<?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).

Avatar
Auden
"Mihamina Rakotomandimby (R12y)" a écrit dans le
message de news: f40fss$9mh$
Auden wrote:

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


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


Avatar
Auden
"Olivier Miakinen" <om+ a écrit


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 !

Avatar
Olivier Miakinen

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) ?


Avatar
Auden
"Olivier Miakinen" <om+ a écrit

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 !!