PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 07-04-2010 13:56:20

michmich30
Membre
Inscription : 07-04-2010
Messages : 3

Php Variable globale

bonjour,

Lorsque je clike sur le bouton valider la variabe param_requete  est alimenté .
ensuite lorsque je clique sur le bouton export 
et que je recupere cet evenenement par de if(isset($_POST['Export']))
ma variable $param_requete est a vide
Comment puis je la rendre globale
Merci

<?php
$conn = pg_pconnect("host=localhost port=5432 dbname=eco user=postgres password=postgres");
if(isset($_POST['Export']))
{  

$values = pg_query($param_requete);   // ICI PARAM_REQUETE EST VIDE ?????????
while ($rowr = pg_fetch_row($values)) {
for ($j=0;$j<100;$j++) {
$csv_output .= $rowr[$j]."; ";
}
$csv_output .= "\n";
}
$filename = $file."_".date("Y-m-d_H-i",time());
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("Y-m-d") . ".csv");
header( "Content-disposition: filename=".$filename.".csv");
print $csv_output;
exit;
}
?>


<html>
<!-- CSS pour contourner le bug du textarea sous mozilla -->
<style type="text/css">
textarea#contenu {
height: 20px;
width:10%;
}
</style>

<!-- PHP_SELF lors de la validation rememorise les variables -->
<form name="unform" action="<?$_SERVER['PHP_SELF'];?>" method="post">
tables : <BR>
<SELECT NAME="tables" MULTIPLE SIZE="8" onchange="document.unform.submit();">  

<?php
/*récupére le nom du schema envoyé par tigra menu voir menu_items.js*/
$nom1 = $_GET['schemaInput'];
$Schema=$nom1;

/* AFFICHE LES TABLES DU SCHEMA et les mets dans une liste */
$requete_tables_du_schema ="select distinct(relname)  from pg_attribute, pg_class, pg_namespace where
attnum>0 and attrelid=pg_class.oid and relnamespace=pg_namespace.oid and nspname="
."'".$Schema."'";

$resultat = pg_query($conn,$requete_tables_du_schema);
$tableau = array();
while($ligne = pg_fetch_assoc ($resultat))
{
   $tableau[] = $ligne; /* memorisation des tables du schema dans un tableau  */
}
?>

tables : <BR>
<?php
/* lit le tableau et affiche les schemas  */
foreach ($tableau as $tab1)
{
   $sel=isset($_POST['tables'])&&($tab1[relname]==$_POST['tables'])?'selected="selected"':' ';
   echo "<OPTION VALUE=".$tab1["relname"]." ".$sel." >".$tab1["relname"]."</option>";
}
?>
</SELECT>

<!-- espace presentation  -->
   
Chercher Pour :
   
<?php
/* MEMORISE Le click de la selection de la table */
if(isset($_POST["tables"])){
     $tavariable=$_POST["tables"];    
}
?>
<?php
/* affiche le resultat dans un tableau */
     include('cmb_champs_table.php');
?>
   
<?php
/* AFFICHE LES criteres > < = etc ...  */
include('criteres.php');
?>
   
<TEXTAREA id="contenu" NAME="contenu" COLS=1 ROWS=1>
<?php
/* recupere le contenu du textarea */
if(isset($_POST["contenu"]))
   echo $_POST["contenu"];
?>
</TEXTAREA>
<!-- Validation du bouton -->
<INPUT TYPE="submit" NAME="Valider" VALUE="OK">
<INPUT TYPE="submit" NAME="Export" VALUE="Export">
</FORM>
<?php
/* BOUTON VALIDER RECUPERATION PARAMETRE   */
if(isset($_POST['Valider']))
{
$criteres   =$_POST['criteres'];    
$ChoixTable =$_POST['tables'];
$ChoixChamp =$_POST['cmb_champs_table'];
$Choixvaleur=$_POST['contenu'];
$nomschema = $_GET['schemaInput'];
if ($criteres=="Egal")
{
[b]  $param_requete="select *  from ".$nomschema.".".$ChoixTable." where ".$ChoixChamp."=". "'" .$Choixvaleur."'". " limit 500 ";[/b]
}

// Affichage dans un tableau
   include('tableau.php');  
}
?>
</html>

 

Dernière modification par ManicoW (07-04-2010 14:17:48)

Hors ligne

#2 07-04-2010 14:22:03

ManicoW
Cowrespondant
Lieu : Tours
Inscription : 08-05-2009
Messages : 192
Site Web

Re : Php Variable globale

Bonjour,

On ne parle là pas de variable globale (qui veut dire, en gros, accessible partout a travers un script/des fonctions), mais plutot de variable persistante, c'est a dire qui est présente sur plusieurs page (ou lors d'appel successif a un/des script(s) php).

Les possibilités :

- la transmettre dans un champs (genre un input de type hidden)
- utiliser les sessions pour stoquer ce contenu dans une variable de session, qui sera alors accessible lors de l'appel suivant

Remarques :

- transmettre une requete SQL a travers une méthode post/get, c'est très très dangereux, c'est une grosse faille de sécurité. En fait les paramètres d'une requete qui sont transmis via post/get/cookie (tout ce qui vient d'un visiteur en gros) doit être vérifié pour éviter une injection de données dans la requete, pouvant conduire au piratage complet du site.

- utiliser la coloration du code, comme indiqué juste en dessous du formulaire qui permet de poster un message, ca fait du bien aux yeux.

Attention aux failles donc !


la v2, c'est tabou, on en viendra tous a bout

Hors ligne

#3 07-04-2010 15:56:49

michmich30
Membre
Inscription : 07-04-2010
Messages : 3

Re : Php Variable globale

ok merci fait avec les sessions

Hors ligne

Pied de page des forums