Pagina 1 di 2
[php] condividere variabili
Inviato: mer 16 dic 2009, 0:07
da sya54M
salve, vorrei condividere delle variabili tra diverse pagine php, ho provato in questo modo:
pagina 1
pagina 2
ma ottengo un comportamento strano, ovvero di "pagine 2" ce ne sono più di una, in cui il contenuto della variabile è diversa in ognuna e al caricamento della prima pagina essa include la variabile caricata dalla pagina precedente e non da quella attuale... non so se sono stato chiaro ma potete chiedere chiarimenti e cerco di spiegare meglio la situazione.
grazie in aticipo
Re: [php] condividere variabili
Inviato: mer 16 dic 2009, 8:04
da aschenaz
Ma, non ho capito: se tu setti valori diversi per $_SESSION["variabile"], è ovvio
che da quel momento in poi il valore sia l'ultimo assegnato.
Una varaibile di sessione dovrebbe essere, per sua natura, uguale per tutta la
sessione (o finché non la distruggi di proposito). Altrimenti, usa variabili diverse
per scopi diversi...
Ma forse se fai un esempio pratico di quello che ti serve...
Re: [php] condividere variabili
Inviato: mer 16 dic 2009, 10:26
da sya54M
pagina 1:
Codice: Seleziona tutto
<html>
<codice html>
<?php
echo "variabile settata in pagina 2";
?>
<codice html>
<?php include("pagina2.php"); ?>
<codice html>
</html>
questo è quello che voglio fare.
hai ragione in quello che dici, infatti si vede dal risultato, quindi come lo posso fare?
Re: [php] condividere variabili
Inviato: mer 16 dic 2009, 11:10
da aschenaz
In genere le variabili di sessione non si settano in pagine incluse (e,
comunque, non è necessario includerle). In ogni caso, l'echo in testa
alla pagina di sicuro non ti restituirà mai un valore impostato dopo...
Ma, praticamente, cosa vuoi fare?
Re: [php] condividere variabili
Inviato: mer 16 dic 2009, 11:18
da sya54M
la pagina 2 la includo perchè mi serve includerla in quanto contiene dell'html da mostrare, non per le variabili.
in pratica ho fatto una index che contiene tutte le parti comuni del sito (la pagina 1 dell'esempio) nella quale si includono le pagine col contenuto (le pagine 2) passando un valore nell'url...
la questione delle variabili è dovuta al fatto che nelle pagine col contenuto ho dichiarato 2 variabili, titolo della pagina e descrizione della pagina, che devono essere stampati prima dell'inclusione come si vedeva nell'esempio, nella index.
Re: [php] condividere variabili
Inviato: mer 16 dic 2009, 11:57
da aschenaz
Per sommi capi, potresti impostare le variabili in testa alla index in base a delle
condizioni, ad esempio:
Codice: Seleziona tutto
isset($_REQUEST["paginainclusa"]) ? $_SESSION["nonso"]="qualcosa" : $_SESSION["nonso"]="qualcosaltro";
Altrimenti, non vedo come tu possa visualizzare dei valori di variabile impostate
solo successivamente...
Ma, comunque, questa è solo
una soluzione...
Naturalmente, puoi anche passare variabili e relativi valori nella querystring
della pagina:
Codice: Seleziona tutto
<a href="index.php?pagina=nomepagina&nomevariabile=valorevariabile">
Re: [php] condividere variabili
Inviato: mer 16 dic 2009, 19:12
da sya54M
nella prima soluzione devo ricordare che il nome della pagina inclusa cambia sempre e quindi non la posso dare fissa all'inizio della index.
alla seconsa soluzione ci avevo già pensato ma non mi piaceva perchè contenendo anche la descrizione delle pagine, avrei url veramente lunghissimi.
Re: [php] condividere variabili
Inviato: mer 16 dic 2009, 19:42
da aschenaz
sya54M ha scritto:nella prima soluzione devo ricordare che il nome della pagina inclusa cambia sempre e quindi non la posso dare fissa all'inizio della index.
alla seconsa soluzione ci avevo già pensato ma non mi piaceva perchè contenendo anche la descrizione delle pagine, avrei url veramente lunghissimi.
Io ancora sinceramente non ho ben compreso cosa vuoi fare...
Per quanto riguarda il discorso delle descrizioni, puoi ricorrere ad un array
e passare alla querystring solo la chiave. Ad esempio così:
Codice: Seleziona tutto
$descrizione=array(
"home"=>"descrizione pagina home",
"pagina1"=>"descrizione pagina1",
etc...
)
Poi la visualizzi con
Codice: Seleziona tutto
$pagina=$_GET["pagina"];
$descrizionedavisualizzare=$descrizione["$pagina"];
Re: [php] condividere variabili
Inviato: mer 16 dic 2009, 20:09
da sya54M
quindi tu dici di dichiararle tutte dentro la index....
allora non c'è un modo di fare come dicevo io?
Re: [php] condividere variabili
Inviato: mer 16 dic 2009, 21:09
da aschenaz
Il problema consiste nel fatto che tu vuoi visualizzare delle variabili che
ancora non sono state assegnate. Non puoi fare:
Codice: Seleziona tutto
echo $_SESSION["variabile"];
include("$pagina") // dove viene assegnato $_SESSION["variabile"]="valore";
In questo modo, alla prima istanza della sessione non visualizzerà nulla,
alle successive, visualizzerà sempre la precedente assegnazione.
Re: [php] condividere variabili
Inviato: mer 16 dic 2009, 21:25
da sya54M
si lo so
ma non c'è un modo di ovviare a questo facendolo in un altro modo ma sempre lasciando l'assegnazione nelle pagine coi contenuti?
Re: [php] condividere variabili
Inviato: gio 17 dic 2009, 8:18
da aschenaz
L'unica soluzione che mi viene in mente potrebbe essere questa:
- Nelle pagine da includere, inserisci in forma di variabile non solo quello che vuoi
visualizzare (titolo pagina e descrizione, per esempio), ma anche i contenuti
(magari aiutandoti con l'heredoc);
- Nella index, includi le pagine prima della visualizzazione delle variabili.
In questo modo, non hai nemmeno bisogno di scomodare le sessioni.
Faccio un esempio pratico.
Pagina inclusa:
Codice: Seleziona tutto
<?php
$titolo="titolo della pagina";
$descrizione="descrizione della pagina";
$contenuto=<<<EOC
<div>
<p class="boh">hjhj jhjhjhj j</p>
<p>etc. etc.</p>
</div>
EOC;
?>
Index:
Codice: Seleziona tutto
<?php
isset($_GET["pagina"]) ? $pagina=$_GET["pagina"] : $pagina="home"; // io di solito faccio così...
include("$pagina");
?>
<html>
<head>
<title><?php echo $titolo ?></title>
<meta name="description" content="<?php echo $descrizione ?>" />
</head>
<body>
<?php echo $contenuto ?>
</body>
</html>
Non so se faccia al caso tuo...
Re: [php] condividere variabili
Inviato: gio 17 dic 2009, 15:47
da sya54M
grande
ho appena letto la tua risposta, quindi lo devo ancora applicare, ma ho capito come funziona e va benissimo
grazie infinite! stasera lo faccio e casomai ho problemi faccio sapere
Re: [php] condividere variabili
Inviato: gio 17 dic 2009, 21:32
da sya54M
ho un problema con questa soluzione... le pagine coi contenuti contengono altro codice php (alcune anche molto) e facendo così lo vede come testo da scrivere nell'html

Re: [php] condividere variabili
Inviato: gio 17 dic 2009, 22:07
da aschenaz
sya54M ha scritto:ho un problema con questa soluzione... le pagine coi contenuti contengono altro codice php (alcune anche molto) e facendo così lo vede come testo da scrivere nell'html

Vabbe', ma il codice php non lo devi certo includere nell'heredoc!
Tu imposta le variabili in base a quello che vuoi visualizzare, mentre le
eventuali funzioni php rimangono per i fatti loro...
Codice: Seleziona tutto
<?php
$variabile="assegnazione";
$variabile2="altra assegnazione";
$variabile3=<<<EOV
testo vario da visualizzare che può contenere variabili ma non codice attivo
EOV;
// codice vario php
funzione() {
// contenuto della funzione
}
?>