Newsgroup: it.comp.www.php
Titolo: Variabile PHP globale

Mi serve il vs aiuto per capire come mai la seg. pagina non funziona
(la variabile PHP globale non viene creata).
Il sito ha una pagina principale divisa in due frame. Nel frame di
sinistra ci sono vari valori che si possono scegliere attraverso drop
down list e, ogni volta che si cambia un valore qualsiasi, questo
viene mandato al frame di destra (in php) che ricarica i record dal
database.
Nel frame di destra c'e' poi un'icona che serve per andare in stampa.
Quando ci si clicca sopra apre una seconda finestra che chiede
ulteriori parametri e poi, cliccando sul pulsante ''create report'',
parte la creazione del file PDF.
Quello che sopra ho chiamato ''il frame di destra'' crea delle
variabili php globali che poi recupero cosi' :
$CurPg = $_SESSION['CurPg'];
Sia la finestra che chiede i parametri che il programma che crea il
PDF leggono senza problemi queste variabili pero' non riesco, dalla
finestra ''parametri'' a modificare il contenuto delle variabili e
questo mi stupisce alquanto dato che il codice (qui sotto riportato)
e' al 99% uguale a quello del frame con le drop down list (che
funziona alla grande).
Le grossissime differenze tra i due sono :
- uno viene eseguito in un frame mentre l'altro no
- uno manda i dati verso un secondo frame, l'altro li manda verso se
stesso (la pagina la ricarica, vedo l'ora cambiare ma non il contenuto
della variabile)
Dov'e' l'errore ?
<?php
	session_set_cookie_params(0);
	session_start();
	include("getvars.inc.php");//carica variabili globali
?>
<html>
  <head>
  <title>Print options</title>
  <SCRIPT language="javascript" type="text/javascript">
  var ReqPageOn = '';
  function SetPar(VarName, VarValue)
    {
    if (VarName = 'ReqPageOn')
      {
      document.PriOpt.ReqPageOn.value = VarValue;
      document.PriOpt.submit();
      }
    }
  function CreatePDF()
    {
    window.open("outpdf.php", "", "status=no");
    }
  </SCRIPT>
  </head>
  <body bgcolor="#BBDDFF">
  <form name="PriOpt" method="post" action="outpdfd_par.php"
target="_self">
  <input type="hidden" name="ReqPageOn">
  <input type="hidden" name="SumBasedOn">
  <table width="100%" cellspacing=0 cellpadding=0 border=0>
    <tr><td height=20 colspan=4></td></tr>
    <tr><td width="10%">&nbsp;</td>
    <td colspan=2>Print first page showing request parameters :
    <td width="10%">&nbsp;</td></tr>
    <tr><td>&nbsp;</td>
    <td width="40%"><input type="radio" name="ReqPageOn" value=1
onclick="if (this.checked) {SetPar('ReqPageOn', 1)}">&nbsp;YES</td>
    <td width="40%"><input type="radio" name="ReqPageOn" value=0
onclick="if (this.checked) {SetPar('ReqPageOn', 0)}">&nbsp;NO</td>
    <td>&nbsp;</td></tr>
    <tr><td height=20 colspan=4></td></tr>
    </table>
    <table width="100%" cellspacing=0 cellpadding=0 border=0>
    <tr><td><input type="submit" value="Create report"
onclick="CreatePDF()"></td>
    <td width="10%">&nbsp;</td></tr></table>
    </form>
<?php
    echo "<p>ReqPageOn = ". $ReqPageOn;
    echo "<br>SumBasedOn = ". $SumBasedOn;
    echo "<br>".strftime("%H : %M : %S");
?>
</body>
</html>
Grz in anticipo, saluti

 finestra ''parametri'' a modificare il contenuto delle variabili
E' evidente.
Sull'onclick non invii i parametri allo script per creare il PDF ma
apri solamente la finestra del PDF (CreatePDF()).
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/3C
L'uomo, conscio di sbagliare, persevera.

apri solamente la finestra del PDF (CreatePDF()).
Scusa ma a me non e' cosi' evidente. Dato che le variabili di sessione
sono ''pubbliche'' mi aspetto che il programma che crea il PDF riesca
a leggerle.
Cerco di spiegare meglio com'e' il collegamento tra le varie videate :
- finestra 1 frame di sinistra - seleziona valori che invia a frame di
destra
- finestra 1 frame di destra - mostra record caricati da database e
icona per stampare. Cliccando su icona apre popup
- finestra popup - chiede ultime domande e passa poi controllo a
programma di stampa. Questa finestra legge senza problemi le variabili
create da ''finestra 1-frame sx''
- il programma di stampa (CreatePDF()) legge anche lui quello che e'
stato creato dal frame di sx e quindi direi che non c'entra i
parametri che passo con la onclick (anche perche' le varibili di
sessione le uso appunto per non passare parametri)
Comunque, possiamo semplificare e dimenticare quello che c'e' prima e
dopo della finestra di popup. Dato che questa finestra :
- legge un valore (radio button)
- esegue una submit
- ricarica se' stessa
mi aspetterei di vedere, una volta ricaricata, il valore cambiato
Grz mille
ciao

 mi aspetterei di vedere, una volta ricaricata, il valore cambiato
Tralasciando il fatto che sembrerebbe tu stia utilizzando
register_globals = on un sistema deprecato dall'agosto 2000, nel codice
che utilizzi non si capisce come dovrebbero fare il valore del
parametro $ReqPageOn ad essere inserito all'interno di una variabile di
sessione.


di una variabile di sessione.
Con queste righe :
  function SetPar(VarName, VarValue)
    {
    if (VarName = 'ReqPageOn')
      {
      document.PriOpt.ReqPageOn.value = VarValue;
      document.PriOpt.submit();
      }
    }
Nelle altre finestre funziona, perche' qui non ne vuole sapere ?
Tks, ciao

 Nelle altre finestre funziona, perche' qui non ne vuole sapere ?
Questo e' codice JS lato client, come credi che possa modificare delle
variabili di sessione lato server?


variabili di sessione lato server?
Beh, visto che in tutte le altre finestre ci riesce non vedo perche'
non dovrebbe in questa.
Ti riporto un pezzo di programma perfettamente funzionante :
<html>
  <head>
  <script language=javascript>
  function SetPar()
    {
    document.GotoArr.submit();
    }
  function Goto(Goto_Page)
    {
    document.GotoArr.CurPg.value = Goto_Page;
    SetPar();
    }
  </script>
  </head>
  <body bgcolor="#BBDDFF">
 
<form name="GotoArr" method="post" action="outr2.php" target="R2">
<input type="hidden" name="CurPg" value="1">
<table width="100%">
<tr bgcolor=#CCEEFF>
  <td><A HREF = "javascript:Goto(2)"><IMG SRC = "rgt1off.gif" NAME =
"R1"></A></td>
  etc....
Cliccando sull'immagine contenuta in quest'ultima cella viene mandato
il ''2'' verso la Goto la quale richiama la SetPar che forza la submit
del form. La pagina viene ricaricata e la parte PHP del programma
legge senza problemi il contenuto della variabile CurPg (e tutte le
finestre la leggono correttamente essendo di sessione).
Perche' quanto sopra funziona ????
Grz, ciao.

 Perche' quanto sopra funziona ????
Mi spiace, ma hai delle lacune troppo evidenti per poter capire i tuoi
stessi errori. Forse dovresti postare il codice della pagina outr2.php
dove DOVREBBE essere presente il codice PHP che inserisce i valori in
sessione.


sessione.
Non ci crederai ma questa frase mi ha portato alla soluzione del
problema. Conscio delle mie lacune (o incertezze) sul dialogo tra il
lato server e il lato client, mi ostinavo a cercare il problema sul
client quando invece poi era nel codice PHP.
Partivo dal pressupposto che una subroutine facesse un certo lavoro e
cosi' non mi sono accorto che non eseguiva mai la parte piu'
importante :
reset ($_POST);
while (list ($k, $v) = each ($_POST))
  {
  $_SESSION[$k] = $v;
  }
Mi ''dimenticavo'' di andare a leggere quanto la submit mi aveva
postato !!!
Comunque, grazie. Anche se non direttamente sei riuscito a darmi una
mano.
Posso cogliere l'occasione per scroccare un altro aiuto ?
Conosci per caso qualcosa di valido, semplice e soprattutto gratis per
creare, da PHP, file che possano venir aperti da excel ?
Ho provato con header("Content-Type:  application/vnd.ms-excel"); e
funziona pero' cercavo qualcosa di piu' sofisticato con qualche
opzione in piu' (per farti un esempio : per i pdf uso fpdf che pur
essendo essenziale offre tutto quello che serve)
Grz, bye