Utiliser global/php

Fermé
tigre198 Messages postés 54 Date d'inscription dimanche 27 avril 2008 Statut Membre Dernière intervention 13 août 2012 - 9 juin 2009 à 12:58
tigre198 Messages postés 54 Date d'inscription dimanche 27 avril 2008 Statut Membre Dernière intervention 13 août 2012 - 9 juin 2009 à 17:09
Bonjour,

j'ai un petit souci pour variable global en php

en effet apres une requete de select de la table qui contien les liens pricipaux de mon site j'ai un champs dans ma table qui est le suivant
global valeur page;
<code> while($row = mysql_fetch_assoc($result))
        {
$valeur_page = $row['valeur_page'];

}


le but de mon variable global est de l'appeler a fin d'afficher sous menu selon le lien princcipal
par exempe; quand je clique sur astuces un sous lien s'affiche avec des different categories etc
c'est a dire :
select * from liens_secondaires where valeur_page=$valeur_page;

$valeur_page c'est le condition de la deuxieme requete pour afficher le sous liens

le probleme $valeur_page affiche toujours valeur de la derniere resultat de la prmiere requete.c'es-tv a dire si j'ai 6 lignes dans la tables liens_principaux $valeur_page contien toujours contact(juste exemple) et donc ma deuxieme requete aura toujours des resultats vides

j'espere j'étais clair et j'espere j'aurais d'aides
A voir également:

9 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
9 juin 2009 à 13:26
c'est pas parce qu'une variable est globale que sa valeur subsiste d'un appel de script à l'autre
0
Bonjour
Quand tu as exécuté ce code

while($row = mysql_fetch_assoc($result))
{
$valeur_page = $row['valeur_page'];
}

puisque tu as bouclé sur tous les résultats, $valeur_page correspond à la valeur du dernier enregistrement. Si ta deuxième requête est placée APRÈS la sortie de la boucle, $valeur_page n'a plus aucune raison de changer.
0
tigre198 Messages postés 54 Date d'inscription dimanche 27 avril 2008 Statut Membre Dernière intervention 13 août 2012 9
9 juin 2009 à 14:18
merçi pour vos réponses

je peux pas mettre deuxieme requete apres la pemiere pour raison suivante:

les requetes sont dans des fonctions séparés car dans une zone div j'appale la premiere fonction et dans deuxieme div je met fonction qui affiche les liens secondaires.en faite c'est a cause de template d'ou je dois mettre bloc <liens_princiapaux> et autre bloc <liens_secondaires>
pour miex vous expliquer voiçi un bout de fonction

function liens_principaux($linked = false, $page, $return = true)
    {
	    
	    $sql = array(
          'SELECT' => '*',
          'FROM' => 'liens_principaux'
           );
        
        $sql=$this->build_key_query($sql);
      
  
        while($row = mysql_fetch_assoc($result))
        {
		    
		        $nom = $row['nom_lien'];
			$href = $row['href'];
			$style = $row['style'];
			 $valeur_page;
			$valeur_page = $row['valeur_page'];
			
                $page .= "<li>
				               <a href='?page={$valeur_page}' class='$style'>{$nom}  </a>
						  </li>";
            ++$p;
        }
      
      
        
            return $page;	
    }


c'est la fonction pour liens principaux .donc si je clique sur un lien .dans une autre zone les liens secondaires s'affichent selon la liaison entre les deux tables de liens principaux et liens secondaires.
je sais pas dans href je dois mettre quoi exactement pour passer variable valeur page a la deuxieme fonction a fin d'excecuter la deuxieme requete avec clause where

remarque: les requete marche bien!!!!
0
Si j'ai bien compris (mais je n'en suis pas sûr car ton français n'est pas très bon), tu veux récupérer la valeur de $valeur_page quand on a cliqué sur le lien.
Pour ça, global ne sert absolument à rien, tu n'en as pas besoin.
Pour récupérer la valeur , il suffit de faire
if (isset($_GET['valeur_page'])) $valeur_page=$_GET['valeur_page'];
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tigre198 Messages postés 54 Date d'inscription dimanche 27 avril 2008 Statut Membre Dernière intervention 13 août 2012 9
9 juin 2009 à 15:43
bonjour merçi pour la réponse et désolé pour le français car je tape vite sur le clavier
en effet c'est pas un script simple et je vais essayer d'éclaircir

il y a deux fonctions dans ma classe

le première est celle que j'ai écris tout a l'heure c'est pour les liens principaux

le deuxième fonction est celle des liens secondaires .le problème je dois appeler ma variable $valeur_page de la première fonction dans la deuxième fonction.c'est pour cette raison je cherche fonction

par exemple :

function fonction1($parametre)
{

$a=5;

return $a;

}
function fonction2($parametre)
{
  $a ;

}


donc je cherche a appeler $a

j'espere j'étais clair

merçi d'avance
0
D'après ce que tu demandes, il suffit de faire
function fonction1($parametre)
{
global $a;
$a=5;
return $a;
}
function fonction2($parametre)
{
 global $a;
  $a ;
}

C'est ce que tu as demandé mais je suis à peu près sûr que ce n'est pas ce dont tu as besoin.
Peux-tu montrer le script complet (en cachant les mots de passe bien sûr)
0
tigre198 Messages postés 54 Date d'inscription dimanche 27 avril 2008 Statut Membre Dernière intervention 13 août 2012 9
9 juin 2009 à 16:15
c'est ça le probleme je vais réecrir tous pour que tu comprenne

voila fonction1
function liens_principaux($linked = false, $page, $return = true)
    {
	    
	    $sql = array(
          'SELECT' => '*',
          'FROM' => 'liens_principaux'
           );
        
        $sql=$this->build_key_query($sql);
      
  
        while($row = mysql_fetch_assoc($result))
        {
		    
		        $nom = $row['nom_lien'];
			$href = $row['href'];
			$style = $row['style'];
			 $valeur_page;
			$valeur_page = $row['valeur_page'];
			
                $page .= "<li>
				               <a href='?page={$valeur_page}' class='$style'>{$nom}  </a>
						  </li>";
            ++$p;
        }
      
      
        
            return $page;	
    }


si j'appelle a cette fonction j'aurais mes liens avec href et css .ça marche jusqu'à ici

ce que je veux faire une deuxième fonction lorsque je clique sur un lien il y'a des sous lien qui s'affiche

par exemple si je clique sur articles des liens s'affiche sur un div avec les titres des articles.la deuxieme fonction bien sur aura une autre requete sur la table sous_lien .donc je veux passer parametre ou variable dans le premier href a fin que la requete affiche que les liens articles et pas tous les liens de la table
0
Quand tu cliques sur le lien, l'éxécution du script est terminée et tu lances une nouvelle exécution du script. Il n'y a plus aucune trace des variables de la fonction liens_principaux, qu'elles soient globales ou pas.
Dans le nouveau script appelé, tu peux retrouver le lien choisi en faisant :
if (isset($_GET['page'])) $valeur_page=$_GET['page'];
Comme je te l'avais dit dans le message 4 (en me trompant sur le nom de la variable transmise)
0
tigre198 Messages postés 54 Date d'inscription dimanche 27 avril 2008 Statut Membre Dernière intervention 13 août 2012 9
9 juin 2009 à 17:09
merçi pour votre patience mais c'est içi le probleme
car ce sont des fonctions

mon href est dans la fonctions

donc si j'appelle $valeur_page dans la deuxième fonction alors j'aurais erreur undefined ....

ce sont pas des simples script sinon j'aurais pas de problèmes .je conais $_post et j'ai l'utiliser des dizaines de fois

ce sont des fonctions et après j'appelle a ces fonctions dans ma page index

donc ma page index va contenir
$liens_principaux.=$db->liens_principaux(true, false,$liens_principaux);
$liens_gauches.=$db->liens_gauches(true, false,$liens_gauches);


je sais c'est pas trop clair mais mon programme est trop long de l'ecrire içi surtout avec ajax et jquery
0