variabile che sparisce

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
ciao a tutti sono ancora qui inesorabile come il destino

devo operare su due tabelle uguali come struttura su cui compiere le usuali operazioni (aggiungi/modifica/elimina/trova record), quindi ho pensato di fare una sola pagina (es. per trovare record) (nota non scrivo esattamente il codice)

in paginaIniziale.php ho due link
<a....seconda.php?quale=N...
<a....seconda.php?quale=U...

in seconda.php ho:

$sel=$_GET['quale'*;
if(==N) $nometabella= "tabellaN"
elseif (==U) $nometabella="tabellaU"
........
if(submit){
SELEC * FROM.$nometabella.WHERE......
e faccio la ricerca
}

<form action=seconda.php......
<input cerca...
<input submit...

il problema e questo:
parto dalla pagina iniziale (es. con N)

faccio la ricerca e mi appaiono i record cercati della tabellaN

faccio un'altra ricerca... e qui l'inghippo la variabile $nometabella non esiste più, di conseguenza: ERRORE


sino a che non sarò padrone di php non mi leverete più di torno
 
Ok, allora ti dichiaro padrone di PHP :)

Ti risolvi la cosa passando il valore ad una variabile di sessione,
così lo avrai sempre disponibile
 
Scusa la mia ignoranza, ma sino a circa 20 gg fa di php sapevo solo che esisteva qualcosa con tale nome

Ho provato con le sessioni

<?php
session_start();
$provenienza=$_GET['id'];// N = nuovo **** U = usato
$_SESSION['quale'] = $provenienza;
//echo "<br> provenienza $provenienza <br>";
switch ($_SESSION['quale']){//si seleziona la tabella del database
case "N":
$tabella="categorienuovo";
$_SESSION['tabella'] = $tabella;
$nome = "NUOVO";
break;
case "U":
$tabella="categorieusato";
$_SESSION['tabella'] = $tabella;
$nome = "USATO";
break;
}

e questo il risultato:
]: Cannot send session cookie - headers already sent by (output started at C:\AppServ\www\macchionattrezzature\catalogo\per_login\vediCategorie.php:7) in C:\AppServ\www\macchionattrezzature\catalogo\per_login\vediCategorie.php on line 17


quindi, da quanto ho capito sulla guida php di mr devo andare a settere qualcosa su pho.ini

In phpinfo.php “sessioni” risulta
session.save_path C:/DOCUME~1/Gianni/IMPOST~1/Temp C:/DOCUME~1/Gianni/IMPOST~1/Temp

Ho cercato php.ini ma ho trovato solo questi due che come none si assomiglia

php.ini-dist e pho.ini-recomended

tre domande:
devo ridenominare uno dei due a php.ini?
se pho.ini si modifica con blocco note?
devo fisicamente con crea nuova cartella crearela?

grazie

Come sono stupidi i computers fanno solo quello che gli si dice di fare e non quello che si vorrebbe che facessero
 
Ultima modifica:
Ho cercato di anticipare le risposte alle donade. Su html.it ho trovato come personalizzare php.ini

Ho fatto un backup del file php.ini-recommended e ridenominato php.ini

Nella cartella di php (si chiama php5) ho cretao la cartella “sessioni”

Con blocco note ho aperto php.ini e mi sono portato alle seguenti righe

; Argument passed to save_handler. In the case of files, this is the path
; where data files are stored. Note: Windows users have to change this
; variable in order to use PHP's session functions.
;
; As of PHP 4.0.1, you can define the path as:
;
; session.save_path = "N;/path"
;

dcommentato e modificata la session.save_path

session.save_path = C:/php5/sessioni


salvato e chiuso php.ini

guardato php.info ed alla riga session.path trovo

session.save_path C:/DOCUME~1/Gianni/IMPOST~1/Temp C:/DOCUME~1/Gianni/IMPOST~1/Temp

Come se non avessi cambiato nulla (anche dopo il riavvio), ma quello che è grave che continua a dare errore su session_start
(ho provato anche “C:/php5/sessioni” con gli stessi risultati)
 
soluzione parziale trovata

Spero che sia l’ultimo, ma voi non sperateci troppo. Ripeto il codice per evitarvi di cercarlo nel post precedenti

*/-----------------pagina chiamante---------*/

<a haref=”paginachiamata1.php?id=”N”>vedi nuovo</a>
<a haref=”paginachiamata2.php?id=”N”>inserisci nuovo</a>
………………..
<a haref=”paginachiamata1.php?id=”U”>vedi usato</a>
<a haref=”paginachiamata2.php?id=”U”>inserisci usato</a>
………………………




/*------------pagina chiamata1-----------------------*/
<?php session_start();?>

<head>
<link rel="stylesheet" type="text/css" href="_file-CSS/PERcatalogo-macchion.css">
</head>

<body>
<?php

$provenienza=$_GET['id']; // N = nuovo **** U = usato
switch ($provenienza){//si seleziona la tabella del database
case "N":
$_SESSION['tabella'] = "categorienuovo";
$_SESSION['nome'] = "NUOVO";
break;
case "U":
$_SESSION['tabella'] = "categorieusato";
$_SESSION['nome'] = "USATO";
break;
}
$nome=$_SESSION['nome'];

echo "<div align=\"center\"><h2>aggiungi categoria catalogo $nome</h2></div>";

if ($_POST['Submit']){ //avviata la ricerca…..

fa la ricerca giusta anche se ripetuta, da cui deduco che $_SESSION['tabella'] funzioni, però $_SESSION['nome'] dalla seconda ricerca in poi sparisce(?)
…………………………..

?>

<a haref=”paginachiamante.php”>torna</a>
</body>

Ma il consiglio che vorrei avere è il seguente:

devo mettere php session_start() in tutte le pagine chiamate o basta che lo metta nella pagina chiamantete? Conviene che nella pagina chiamante metta $_SESSION = array() per ripulire la sessione quando torno alla chiamante dalla chiamata?

Sto facendo, e vi sto facendo fare, tutto questo lavoro per scopi didattici in quanto semplicemente potrei creare (salva con nome) due tipi di pagine chiamata1N e chiamata1U eliminando il get e le varie variabili scrivendo semplicemente xes. al posto di

$seleziona="SELECT * FROM ".$tabella.” WHERE ".$scelta." LIKE '%".$cercare."%' ORDER BY ".$scelta;

$seleziona="SELECT * FROM categorienuovo WHERE ".$..........


p.s.
l’errore precedentemente dato …. headers already sent by…. L’ho risolto “sbagliando si impara”
 
borgo, devi fare un controllo sulla sessione, se già esiste ed è uguale al nome della tabella che ti serve non ricrearla.
 

Discussioni simili