logo

NPDS : Gestion de contenu et de communauté


Content & Community Management System (CCMS) robuste, sécurisé, complet, performant, parlant vraiment français, libre (Open-Source) et gratuit.
18 visiteur(s) et 0 membre(s) en ligne.
Activité du Site

Pages vues depuis 25/05/2001 : 109 364 252

  • Nb. de membres 8 695
  • Nb. d'articles 1 695
  • Nb. de forums 26
  • Nb. de sujets 8
  • Nb. de critiques 92

Top 10  Statistiques

Index du forum »»  Le coin des codeurs »» Variable globale !!!!

Variable globale !!!!#25002

3Contributeur(s)
PhilGuenJireckjpb
3 Modérateur(s)
developpeurjpbJireck
PhilGuen PhilGuenicon_post
Bonjour à tous

j'ai une page php qui s'articule comme suit (je vous passe le script complet)



<html>
    <head>
    </head>

    <body>
        <? php je me sers de $mavariable ?>
    </body>
</html>
<?php
    $mavariable 
"coucou";
?>




Comment faire pour que $mavariable soit commune aux deux bouts de php (j'ai bien sur essayé de mettre du global, sans succès)

Merci de votre aide

Message édité par : PhilGuen / 13-01-2011 09:29

Jireck Jireckicon_post
faut instancier ta variable avant le echo
PhilGuen PhilGuenicon_post
Merci Ji ... et on fait comment?
Jireck Jireckicon_post
instancier est mauvais mot

faut d'abord faire



$variable = "coucou";
puis
echo $mavariable;


si c'est plus compliquer pose tout dans le forum on va trier
PhilGuen PhilGuenicon_post
oui, mais ca je ne peux pas.

pour être plus explicite.

Dans un script php, j'utilise du !!!javascript!!! (dans le head de la partie html) pour ouvrir un "pseudo" popup dont le texte est dans le body. voir ici http://guenetsrcom.free.fr/Site%20Elevage/index.php?id_page=10 en cliquant sur un des noms (attention, si l'image est agrandie, le lien est en second plan de la transparence - faut que je modifie ca- et ne fonctionne donc pas). Dans la partie php, je connais donc l'id de l'enregistrement. j'ai besoin de faire de nouvelles requêtes à partir de cet ID dans la partie HTML. voici une partie du code pour mieux me faire comprendre


<html>
<head>
<link type="text/css" rel="stylesheet" href="./themes/lightbox_effect.css">
<script>
function OuvrePopup()
{
           document.getElementById('Page').style.display='block';
           document.getElementById('Lettre').style.display='block';
}
function FermePopup()
{
   document.getElementById('Page').style.display='none';
   document.getElementById('Lettre').style.display='none';
}
</script>
</head>
</html>
<body>
<!-- AFFICHAGE D'UNE LIGHTBOX -->
<div id='Page'></div> 
<div id='Lettre'>  
<p align='center'>
    <br><br>
<div align='center'>
<h1>Template des fiches individuelles en construction </h1>
<? php
// c'est ici que j'ai besoin de récupérer $reprod_id pour faire de nouvelles requêtes et les afficher
?>
<p align='center'><img src='images/consgrl2.jpg' width='300' border='0'></p>
<p align='center'>
   <font face='Arial Black' size='4' color='red'>
         Merci de revenir prochainement
   </font>
</p>
</div>

<p>  </p>
<p align='center'><b>
<input type='button' value='Fermer' !onclick!='FermePopup()' style='cursor:pointer'>
</b></p>
</div> 
<!-- FIN D'AFFICHAGE DE LIGHTBOX -->
</body>
</html>
<?php
$strSQL 
'SELECT `Titre`, `Id_parent` FROM `elev_menu` WHERE `Id_page` = '.$_ENV['id_page'];
        $resultat = requete_SQL($strSQL);
        $tabl_result = mysql_fetch_array($resultat);
        if ($tabl_result['Titre'] == 'Nos femelles'){
            $race = "";
        } else {
            $race = $tabl_result['Titre'];
        }
        
$content = "<h1>Test pour gestion multiraces - femelles ".$race." </h1>
<TABLE WIDTH=100%  ALIGN='CENTER'><TR><TD align='center'>\n";
if ($race == '') {
    $content .= "Vous trouverez ici la liste des reproducteurs présents à l'élevage<br /><br />Choisissez la race";
} else {
$result = mysql_query("SELECT * FROM elev_reproducteurs  WHERE reprod_race='$race' AND reprod_sexe='F' AND reprod_present='O' ORDER BY reprod_nom") or die(mysql_error());
if (mysql_num_rows($result) > 0) 
    {
        $content .= "<table id = 'tableau' width = '100%' border rules = 'rows' align = 'center'><tr height = '40'><th align = 'center'>Photos</th><th align = 'center' width = '22%'>Nom & Affixe</th><th align='center' width='8%'>Née le</th><th align='center' width='20%'>Père</th><th align='center' width='20%'>Mère</th><th align='center' width='25%'>Producteur</th></tr>";
        while (list($reprod_id, $reprod_nom, $reprod_affixe, $reprod_affixeplace, $reprod_race, $reprod_variete, $reprod_poil, $reprod_couleur, $reprod_taille, $reprod_poids, $reprod_sexe,$reprod_naissance, $reprod_deces, $reprod_identification, $reprod_present, $reprod_pere_id, $reprod_mere_id, $reprod_producteur_id, $reprod_photos) = mysql_fetch_row($result))
            {
             $content .= "<tr><td align = 'center' height = '80'>";
            if ($reprod_photos) {
                $content .= "
                <div class=\"thumb\">
                <a href=\"#\">
                <img src=\"./photos/".$reprod_photos."\" width=\"80\" border=\"0\" style=\"cursor:pointer\" />
                </a>
                </div>
                ";
            }
            $content .= "</td>";
            $content .= "<td align = 'center' height = '80'>";
            // Nom et affixe
            if ($reprod_affixeplace == 'B') {
                $content .=  "<a href='#' !onclick!='OuvrePopup()'>".$reprod_affixe." ".$reprod_nom."</a>";
            } else {
                $content .=  "<a href='#' !onclick!='OuvrePopup()'>".$reprod_nom." ".$reprod_affixe."</a>";                
            }
            $content .= "</td>";





Message édité par : PhilGuen / 13-01-2011 09:34

Jireck Jireckicon_post
si tu peux re-expliquer avec des mots car je ne vois pas pourquoi tu met ta requete apres ton affichage..??
PhilGuen PhilGuenicon_post
Bon :

sur cette page , j'affiche la liste des reproducteurs femelles (toute la partie php). Pas de soucis particuliers et je peux obtenir toutes les infos dont j'ai besoin.

Pour chaque reproducteur de la liste, je crée un lien dans le but d'ouvrir sa fiche individuelle complète (avec les infos qui n'apparaissent pas dans la liste).

C'est cette partie


 if($reprod_affixeplace == 'B') { 
     $content .=  "<a href='#' !!onclick!!='OuvrePopup()'>".$reprod_affixe." ".$reprod_nom."</a>"; 
 }else { 
  $content .=  "<a href='#' !!onclick!!='OuvrePopup()'>".$reprod_nom." ".$reprod_affixe."</a>"; 




La fiche individuelle aurait pu être ouverte dans un "vrai popup" (dans ce cas je mettais window.open .... à la place de !onclick! ... et le tour était joué, mais je n'aime pas beaucoup ca et j'avais trouvé le code d'un script d'un "pseudo popup" avec effet de grisé pour la page de fond qui fonctionne très bien. C'est la partie HTML/JAVASCIPT


<html>
<head>
<link type="text/css" rel="stylesheet" href="./themes/lightbox_effect.css">
<script>
function OuvrePopup()
{
           document.getElementById('Page').style.display='block';
           document.getElementById('Message').style.display='block';
}
function FermePopup()
{
   document.getElementById('Page').style.display='none';
   document.getElementById('Message').style.display='none';
}
</script>
</head>
</html>
<body>
<!-- AFFICHAGE D'UNE LIGHTBOX -->
<div id='Page'></div> 
<div id='Message'>  
<p align='center'>
    <br><br>
<div align='center'>
<h1>Template des fiches individuelles en construction </h1>
<p align='center'><img src='images/consgrl2.jpg' width='300' border='0'></p>
<p align='center'>
   <font face='Arial Black' size='4' color='red'>
         Merci de revenir prochainement
   </font>
</p>
</div>

<p>  </p>
<p align='center'><b>
<input type='button' value='Fermer' !onclick!='FermePopup()' style='cursor:pointer'>
</b></p>
</div> 
<!-- FIN D'AFFICHAGE DE LIGHTBOX -->
</body>
</html>



Tu peux voir ce que ca donne ICI en cliquant sur un des liens verts (Colonne Nom&Affixe)

Mais comme tu le vois, ca n'affiche que du html dans ce "pseudo popup" (en fait tout le code contenu dans le div ="message") c'est-à-dire



<div id='Message'>  
<p align='center'>
    <br><br>
<div align='center'>
<h1>Template des fiches individuelles en construction </h1>
<p align='center'><img src='images/consgrl2.jpg' width='300' border='0'></p>
<p align='center'>
   <font face='Arial Black' size='4' color='red'>
         Merci de revenir prochainement
   </font>
</p>
</div>

<p>  </p>
<p align='center'><b>
<input type='button' value='Fermer' !onclick!='FermePopup()' style='cursor:pointer'>
</b></p>
</div> 



Je voudrais pouvoir
- soit compléter cette partie par le contenu de mes requêtes php,
- soit pouvoir y effectuer de nouvelles requêtes.

Si tu vas sur le lien que je t'ai donné, ce que je veux faire te semblera lumineux.
PhilGuen PhilGuenicon_post
Voici le code complet de ma page


<html>
<head>
<link type="text/css" rel="stylesheet" href="./themes/lightbox_effect.css">
<script>
function OuvrePopup()
{
           document.getElementById('Page').style.display='block';
           document.getElementById('Message').style.display='block';
}
function FermePopup()
{
   document.getElementById('Page').style.display='none';
   document.getElementById('Message').style.display='none';
}
</script>
</head>
</html>
<body>
<!-- AFFICHAGE D'UNE LIGHTBOX -->
<div id='Page'></div> 
<div id='Message'>  
<p align='center'>
    <br><br>
<div align='center'>
<h1>Template des fiches individuelles en construction </h1>
<?php // c'est dans ce pseudo popup que je voudrais afficher les résultats de mes requêtes par exemple
echo "Fiche individuelle de ".$reprod_nom;
?>
<p align='center'><img src='images/consgrl2.jpg' width='300' border='0' /></p>
<p align='center'>
   <font face='Arial Black' size='4' color='red'>
         Merci de revenir prochainement
   </font>
</p>
</div>

<p> &nbsp;</p>
<p align='center'><b>
<input type='button' value='Fermer' !onclick!='FermePopup()' style='cursor:pointer'>
</b></p>
</div> 
<!-- FIN D'AFFICHAGE DE LIGHTBOX -->
</body>
</html>
<?php
$strSQL = 'SELECT `Titre`, `Id_parent` FROM `elev_menu` WHERE `Id_page` = '.$_ENV['id_page'];
        
$resultat = requete_SQL($strSQL);
        
$tabl_result = mysql_fetch_array($resultat);
        if (
$tabl_result['Titre'] == 'Nos femelles'){
            
$race = "";
        } else {
            
$race = $tabl_result['Titre'];
        }
        
$content = "<h1>Test pour gestion multiraces - femelles ".$race." </h1>
<TABLE ALIGN='CENTER'><TR><TD align='center'>\n";
if (
$race == '') {
    
$content .= "Vous trouverez ici la liste des reproducteurs présents à l'élevage<br /><br />Choisissez la race";
} else {
$result = mysql_query("SELECT * FROM elev_reproducteurs  WHERE reprod_race='$race' AND reprod_sexe='F' AND reprod_present='O' ORDER BY reprod_nom") or die(mysql_error());
if (mysql_num_rows(
$result) > 0) 
    {
        
$content .= "<table id = 'tableau' border rules = 'rows' align = 'center'><tr height = '40'><th align = 'center'>Photos</th><th align = 'center' width = '22%'>Nom & Affixe</th><th align='center' width='8%'>Née le</th><th align='center' width='20%'>Père</th><th align='center' width='20%'>Mère</th><th align='center' width='25%'>Producteur</th></tr>";
        while (list(
$reprod_id$reprod_nom$reprod_affixe$reprod_affixeplace$reprod_race$reprod_variete$reprod_poil$reprod_couleur$reprod_taille$reprod_poids$reprod_sexe,$reprod_naissance$reprod_deces$reprod_identification$reprod_present$reprod_pere_id$reprod_mere_id$reprod_producteur_id$reprod_photos) = mysql_fetch_row($result))
            {
             
$content .= "<tr><td align = 'center' height = '80'>";
            if (
$reprod_photos) {
                
$content .= "
                <div class=\"thumb\">
                <a href=\"#\">
                <img src=\"./photos/".
$reprod_photos."\" width=\"80\" border=\"0\" />
                </a>
                </div>
                ";
            }
            
$content .= "</td>";
            
$content .= "<td align = 'center' height = '80'>";
            // Nom et affixe
            if (
$reprod_affixeplace == 'B') {
                
$content .=  "<a href='#' !onclick!='OuvrePopup()'>".$reprod_affixe." ".$reprod_nom."</a>";
            } else {
                
$content .=  "<a href='#' !onclick!='OuvrePopup()'>".$reprod_nom." ".$reprod_affixe."</a>";
            }
            
$content .= "</td>";
    
            
$content .= "<td align = 'center' height = '80'>";
            // Date de naissance
            
$content .= $reprod_naissance;
            
$content .= "</td>";
    
            
$content .= "<td align = 'center' height = '80'>";
            // Père
            
$result2 = mysql_query("SELECT * FROM elev_reproducteurs  WHERE reprod_id='$reprod_pere_id'") or die(mysql_error());
            if (mysql_num_rows(
$result2) > 0)
            {
                while (list(
$reprod_id,$reprod_nom$reprod_affixe$reprod_affixeplace) = mysql_fetch_row($result2))
                {
                    if (
$reprod_affixeplace == 'B') {
                        
$content .=  $reprod_affixe." ".$reprod_nom."";
                    } else {
                        
$content .=  $reprod_nom." ".$reprod_affixe."";
                    }
                }                
            }    
            mysql_free_result(
$result2); 
            
$content .= "</td>";
            
            
$content .= "<td align = 'center' height = '80'>";
            // Mère
            
$result2 = mysql_query("SELECT * FROM elev_reproducteurs  WHERE reprod_id='$reprod_mere_id'") or die(mysql_error());
            if (mysql_num_rows(
$result2) > 0)
            {
                while (list(
$reprod_id,$reprod_nom$reprod_affixe$reprod_affixeplace) = mysql_fetch_row($result2))
                {
                    if (
$reprod_affixeplace == 'B') {
                        
$content .=  $reprod_affixe." ".$reprod_nom."";
                    } else {
                        
$content .=  $reprod_nom." ".$reprod_affixe."";
                    }
                }                
            }    
            mysql_free_result(
$result2); 
            
$content .= "</td>";
    
            
$content .= "<td align = 'center' height = '80'>";
            // Producteur
            
$result2 = mysql_query("SELECT * FROM elev_tiers  WHERE tiers_id='$reprod_producteur_id'") or die(mysql_error());
            //if (mysql_num_rows(
$result2) > 0)
            //{
                while (list(
$tiers_id$tiers_civilite,$tiers_nom$tiers_prenom$tiers_affixe) = mysql_fetch_row($result2))
                {
                        
$content .=  $tiers_civilite." ".$tiers_nom." ".$tiers_prenom."<br /> Elevage : ".$tiers_affixe;
                }                
            //}    
            mysql_free_result(
$result2); 
            
$content .= "</td></tr>";
        } 
        
$content .= "</table>"; 
    } else {
        
$content .= "Il n'y a pas de reproducteurs pour ce critère";
}
mysql_free_result(
$result); 
}
$content .= "</TD></TR></TABLE>";
echo 
$content;
?>



PhilGuen PhilGuenicon_post
Il faut lire

La fiche individuelle aurait pu être ouverte dans un "vrai popup" (dans ce cas je mettais window.open .... à la place de OuvrePopup() ...

et le tour était joué,
PhilGuen PhilGuenicon_post
Je vois que c'est encore une sacrée colle. Décidément, je n'ai pas de chance.
Personne n'a une tit idée?
Jireck Jireckicon_post
non c'est pas une colle ...

c'est toujours qu'il faut compredre ce que dis quelqu'un
et de comprendre aussi ce qu'elle veux ...
il y a pleins de visions differentes ...

il faut surtout que j'allume le cerveau et que je comprends ce que tu essaye d'expliquer
c'est pour cela que je voulais que tu explique avec des mots ...
PhilGuen PhilGuenicon_post
Oh oui, c'est souvent difficile d'expliquer.

Je vais ré-essayer.

Le but : ouvrir une fiche individuelle dans un "pseudo popup" à partir d'une liste issue d'une requête sql.

- faire une liste à partir d'une requête sql => OK (voir http://guenetsrcom.free.fr/Site%20Elevage/index.php?id_page=10)
- un click sur un élément de cette liste ouvre un "pseudo pop up" => OK (par exemple click sur le lien Marry vom Aschbachtal)
- ce pseudo popup actuellement construit en HTML/!javascript! (donc pour l'instant un simple message dans le <body>) doit pouvoir récupérer d'une manière
quelconque (global, passage de paramètre, cookie, etc) une variable php contenue dans la liste d'appel de manière à effectuer en son sein de nouvelles recherches sql et les afficher (à la place du simple message actuel)

Je ne sais pas si c'est plus clair ainsi. Voici le schéma de ma page


<html>
<head>
fonction ouvre popup (cache le div "page", ouvre le div "message") 
fonction ferme popup (cache le div "message" ouvre le div "page")
</head>
<body>
<div id='Page'></div>  
<div id='Message'> 
Message du popup
C'est ici que je veux inclure du php à partir d'une variable récupérée de la liste  
</div>
</body>
</html>
<php>
ma requete sql
ma liste => un click sur un élément ouvre le popup = et doit pouvoir passer une variable
</php>




:-?
jpb jpbicon_post
yo

si j'ai bien compris

c'est un probleme de chronologie des informations et de qui fait quoi
- une requete sql fabrique une liste
- l'utilisateur (clique sur le lien) Marry vom Aschbachtal
cette action doit générer une nouvelle requete sql => donc un nouvel appel au serveur et une nouvelle génération de page sauf si tu utilise ajax ou curl mais la c'est plus complexe...

toi tu veux déja avoir l'infos de détail dans la page avant la génération du contenu popup... ce qui signifie que comme c'est pas toi qui choisi le lien tu dois avoir toutes ces infos (stocker soit dans un tableau php ou un tableau !javascript! (ou les deux) suivant qui va écrire la fenêtre popup)...
donc une sous requete avec toutes les id unique pour avoir leur détail qui sera stocker dans un tableau d'ou on pourra extraire le contenu du popup avec l'incrémentation du tableau = à celui du lien du popup par exemple...

Tu peux essayer dans cette voie MAIS je pense que cette solution est une impasse... et qu'il vaut mieux fractionner le code et refaire un appel simple avec une requete... et donc une nouvelle page..
PhilGuen PhilGuenicon_post
Bravo JPB, tu as clairement exprimé mon souhait, ce qui me permet de voir que j'ai été incomplet.

En fait, je n'ai pas forcément besoin d'effectuer une nouvelle requête SI je pouvais passer le contenu de mes variables à la partie HTML
lorsqu'on clique sur Marry Aschbactal ... et ton analyse hyper pertinente me donne une idéee ...

Je vous tiens au courant ... en tous cas merci de votre aide par ce beau dimanche qui devarit nous voir ailleurs que devant un ordi.

Citation : jpb 

yo

si j'ai bien compris

c'est un probleme de chronologie des informations et de qui fait quoi
- une requete sql fabrique une liste
- l'utilisateur (clique sur le lien) Marry vom Aschbachtal
cette action doit générer une nouvelle requete sql => donc un nouvel appel au serveur et une nouvelle génération de page sauf si tu utilise ajax ou curl mais la c'est plus complexe...

toi tu veux déja avoir l'infos de détail dans la page avant la génération du contenu popup... ce qui signifie que comme c'est pas toi qui choisi le lien tu dois avoir toutes ces infos (stocker soit dans un tableau php ou un tableau !!javascript!! (ou les deux) suivant qui va écrire la fenêtre popup)...
donc une sous requete avec toutes les id unique pour avoir leur détail qui sera stocker dans un tableau d'ou on pourra extraire le contenu du popup avec l'incrémentation du tableau = à celui du lien du popup par exemple...

Tu peux essayer dans cette voie MAIS je pense que cette solution est une impasse... et qu'il vaut mieux fractionner le code et refaire un appel simple avec une requete... et donc une nouvelle page.. 
PhilGuen PhilGuenicon_post
Ce que je voulais tenter ne fonctionne pas, mais j'ai (c'est au moins ca ) très bien compris ce qu'a expliqué JPB = > grosse erreur d'analyse de ma part.

Mais je me disais qu'en rechargeant ma page ....

Je pense que le plus simple est effectivement de voir avec l'ouverture d'une autre page ... dommage, j'aimais bien cet effet "estompé" de la page de fond pendant que le popup ressortait.

En plus ca fonctionne même quand les antipopups sont activés.