Page 1 sur 1

Requête qui revient

Posté : 29 oct. 2007, 18:57
par Sebe
Salut,

J'aurais voulu utiliser une fonction pour une requête qui revient souvent dans mon code avec des arguments différents mais visiblement, j'ai un petit soucis pour faire cela convenablement !
La requête qui revient souvent :
$query = "SELECT *"
    	. "\n FROM #__classement_chang"
		. "\n WHERE participant_id = '" . $id . "' AND annee ='" . $annee . "'"
 		;
	$database->setQuery( $query );
	$database->loadObject($coureur);
	echo '$dossard ' . $dossard = $coureur->dossard;
Je voudrais donc en faire une fonction php avec les arguments $id et $annee. J'avais donc pensé à ceci:
function x() {
$id = 26; 
$annee = 2004;

dossard ($id, $annee);

$database->setQuery( $query );
$database->loadObject($coureur);
echo '$dossard ' . $dossard = $coureur->dossard;
}

// Tout le reste du code

function dossard ($id, $annee) {
	global $database;
	$query = "SELECT *"
    	. "\n FROM #__classement_chang"
		. "\n WHERE participant_id = '" . $id . "' AND annee ='" . $annee . "'"
 		;
	return $query;
	}
Evidement, cela ne fonctionne pas mais je ne sais pas pourquoi ... enfin si, je fais ma formation de codeur sur le tas :roll:

Quelqu'un pourrait-il m'expliquer ce que j'ai fait comme erreur ?

Merci

Posté : 29 oct. 2007, 19:13
par Volkow
Quel est l'erreur qu'il t'affiche à l'écran?

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

Pourquoi tu as ça comme requête SQL:
$query = "SELECT *"
        . "\n FROM #__classement_chang"
        . "\n WHERE participant_id = '" . $id . "' AND annee ='" . $annee . "'"
         ; 
Au lieu de:
$query = "SELECT * FROM #__classement_chang" WHERE participant_id = '" . $id . "' AND annee ='" . $annee . "'";

Posté : 29 oct. 2007, 19:35
par Sebe
Salut,
Quel est l'erreur qu'il t'affiche à l'écran?
Aucune erreur ... rien n'en ressort !
J'ai quand même tester si les arguments passaient dans la fonction
echo '$id ' . $id . ' $annee ' . $annee;
Et c'est bon mais après rien n'est visiblement retourné !
Pourquoi tu as ça comme requête SQL:
En fait, je me suis mis dans l'idée de faire un composant pour Joomla! et c'est la méthodologie qui y est utilisé !

Posté : 29 oct. 2007, 19:42
par zeus
la fonction dossard($id, $annee) te retourne la requête à exécuter. Dans ton exemple, tu ne récupères pas cette requête.
function x() {
$id = 26; 
$annee = 2004;

dossard ($id, $annee); // Ici, tu ne récupère pas $query retournée

$database->setQuery( $query );
$database->loadObject($coureur);
echo '$dossard ' . $dossard = $coureur->dossard;
} 

Posté : 29 oct. 2007, 19:43
par Sebe
Salut,
la fonction dossard($id, $annee) te retourne la requête à exécuter. Dans ton exemple, tu ne récupères pas cette requête.
Que dois-je faire dans ce cas?

Merci

Posté : 29 oct. 2007, 19:46
par Sebe
N'y a-t-il pas un problème dans l'ordre du codage ?

appel -> fonction ???

Posté : 29 oct. 2007, 19:50
par zeus
Si une fonction te retourne une valeur, il faut que tu places le résultat dans une variable
// Retourne le produit de 2 valeurs
function multiplie($val1, $val2)
{
  $produit = $val1 * $val2;
  return $produit;
}

$a = 2;
$b = 4;

$resultat = multiplie($a, $b); // Ici, je récupère le résultat de la fonction dans la variable $resultat
echo "Le résultat du produit de ". $a ." par ". $b ." est ". $resultat;

Posté : 29 oct. 2007, 22:40
par Sebe
C'est vrai que cela va beaucoup mieux ... un grand merci pour l'aide.



NB: Il n'y a visiblement pas de problème pour l'ordre entre l'appel et la fonction !

Posté : 29 oct. 2007, 22:42
par zeus
Modération :
Sebe, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.

Posté : 29 oct. 2007, 23:33
par Sebe
Modération :
Sebe, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.
Oups !