Vous n'êtes pas identifié(e).
Pages :: 1
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
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
ok merci fait avec les sessions
Hors ligne
Pages :: 1