Problème avec global et function

Eléphant du PHP | 59 Messages

30 juil. 2010, 14:15

Bonjour,

J'ai un problème sur mon site. Je voudrais insérer une variable dans une function, comme le modèle ci dessous mais ça ne marche pas.
J'ai éssayé toutes les solutions et tuto que j'ai pu trouvé. Apparemment global ne fonctionne pas.
Je voulais donc savoir si par hasard vous auriez une idée.
<?php
$a = 1;
$b = 2;

function Sum()
{
    global $a, $b;

    $b = $a + $b;
} 

Sum();
echo $b;
?>
si j'utilise ce code j'obtiens 2 et pas 3

Eléphant du PHP | 50 Messages

30 juil. 2010, 14:27

Bonjour,

Les variables globales peuvent être activées ou désactivées selon la configuration du serveur.

Eléphant du PHP | 59 Messages

30 juil. 2010, 14:41

Ok, c'est bien ce que je pensais.
c'est avec register_globals, non?

Et si on ne peut pas modifier la config, comment on fait?

merci

Eléphant du PHP | 59 Messages

03 août 2010, 12:30

Bonjour,

Il y a vraiment aucun moyen de réaliser cette fonction sans global? Merci
<?php
$a = 1;
$b = 2;

function Sum()
{
    global $a, $b;

    $b = $a + $b;
} 

Sum();
echo $b;
?>

ViPHP
ViPHP | 5462 Messages

03 août 2010, 16:59

pourquoi ne pas faire un fonction normale
$a = 1;
$b = 2;

function Sum($a, &$b)
{
    $b = $a + $b;
}

Sum($a, $b);
echo $b;

Eléphant du PHP | 59 Messages

03 août 2010, 17:20

J'y avais bien penser mais dans mon cas c'est pas possible.
Voici comment ça se présente
<?php
function search(){
//ici le code de ma fonction de recherche qui me donne le résultat
$resultat = "resultat";


function selection()
{
 //là j'ai une requete mysql contenant la variable $resultat
    echo $resultat_requete;
} 
}
?>
//et beaucoup plus loin
<?php selection() ?>
Voilà. Mon problème c'est de faire rentrer la variable $resultat dans function selection.

Si vous avez une idée?

MErci

ViPHP
ViPHP | 5462 Messages

03 août 2010, 17:24

faut utilise les paramètre de fonction
function selection($resultat)
c'est pas terrible de mettre des fonctions dans des fonctions non plus :wink:

Eléphant du PHP | 59 Messages

03 août 2010, 18:44

Je sais pas si j'ai bien compris mais si je mets la variable directement entre dans selection(), ça ne marche pas
<?php
function search(){
//ici le code de ma fonction de recherche qui me donne le résultat
$resultat = "resultat";


function selection($resultat)
{
 //là j'ai une requete mysql contenant la variable $resultat
    echo $resultat_requete;
} 
}
?>
//et beaucoup plus loin
<?php selection() ?>
c'est pas terrible de mettre des fonctions dans des fonctions non plus
Moi je veux bien la mettre à la fin mais c'est toujours le même problème, il faut que j'arrive à sortir la variable $resultat de la function search.
<?php
function search(){
//ici le code de ma fonction de recherche qui me donne le résultat
$resultat = "resultat";



}
?>
//et beaucoup plus loin
<?php function selection()
{
 //là j'ai une requete mysql contenant la variable $resultat
    echo $resultat_requete;
}  ?>

ViPHP
ViPHP | 5462 Messages

03 août 2010, 18:59

dans selection tu requêtes $resultat

$a = 1;

function test($a)
{
    echo $a;
}

test($a);
// 1

le $a dans test les juste le nom du paramètre tu peux mettre autre chose
$a = 1;

function test($blabla)
{
    echo $blabla;
}

test($a);
// 1
mais la c'est quand meme les base de la programmation, je t'invite a allé voir des tuto ou la doc : http://www.php.net/manual/fr/language.functions.php

Eléphant du PHP | 59 Messages

04 août 2010, 00:01

Code php
$a = 1;

function test($blabla)
{
echo $blabla;
}

test($a);
// 1


mais la c'est quand meme les base de la programmation, je t'invite a allé voir des tuto ou la doc : http://www.php.net/manual/fr/language.functions.php
Oui mais le problème c'est que je ne peut pas mettre la variable $a dans test(), comme on fait normalement.
A l'endroit où j'appelle ma fonction je ne peut pas lire cette variable.
C'est pour ça que je voulais utiliser global pour l'insérer directement dans la function.
Mais global ne fonctionne pas. Alors qu'est ce que je peut faire dans ce cas là?

ViPHP
ViPHP | 5462 Messages

04 août 2010, 00:14

montre ton vrai code, y'a un problème de conception dans ton raisonnement

Eléphant du PHP | 59 Messages

04 août 2010, 01:08

En faîtes c'est un composant joomla que je modifie et le code est très long.
C'est étonnant qui il n'y est rien pour remplacer global.

Eléphant du PHP | 59 Messages

05 août 2010, 16:00

C'est bon j'ai trouvé une solution en modifiant le code
Merci quand même pour ton aide stealth35