Variabile fissa per tutto lo script(è ora delle sessioni?)

Monital

Utente Attivo
15 Apr 2009
778
2
18
Buongiorno,

più che un problema sarebbe una curiosità

ho una tabella semplice con ID e Nome ora con una select box dove all'interno estraggo i nomi permetto all'utente di fare una scelta .

Questa scelta diciamo $nome la richiamo nelle pagine successive con
PHP:
$nome=$_POST['nome'];

fin qui ci siamo, penso che parliamo delle basi.

Però avrei la necessità di portarmi dietro tutte le pagine dello script anche l'ID. ID che non potrei richiamare nelle pagine successive in quanto al momento della scelta devo recuperare il suo ID che lo rende univoco, perchè poi alcuni dati inerenti a $nome devo upparli in altre tabella dove potrebbero esserci $nome uguali.

Ora fermo restando che sapre come associare L'ID alla scelta con un array associativo come facio però a poratrlo dietro?

Ovviamente nella select box devono vedere solo i nomi non l'ID.

Grazie a chi mi aiuta
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
Facevo una prova per evitare la sessione che comunque mi sa cambierebbe poco il problema:

questo il codice della select

PHP:
<select class="select" name="nome" onchange="submit();">
<option value="<? echo $nome;?>">Seleziona</option>
<?php

mysql_connect($DBhost,$DBuser,$DBpass) or die("Impossibile collegarsi al server");
@mysql_select_db("$DBName") or die("Impossibile connettersi al database $DBName");
    $query = "SELECT * FROM tabella ORDER by Soprannome ASC,Cognome ASC";
    $secondorisultato = mysql_query($query) or die("Query fallita: " . mysql_error() );
while( $linea = mysql_fetch_array($secondorisultato, MYSQL_ASSOC)){
		

   						if($linea['Soprannome']==''){
										
		            echo "<option>".$linea['Cognome']."&nbsp;".$linea['Nome']."</option>";
			
					}else{
													
					echo "<option>".$linea['Soprannome']."</option>";
									}

					}

					}
					

?>
</select>

ora io vorrei portarmi dietro l'id del nome scelto

ho provato con
PHP:
<select class="select" name="nome" onchange="submit();">
<option value="<? echo $nome;?>">Seleziona</option>
<?php

mysql_connect($DBhost,$DBuser,$DBpass) or die("Impossibile collegarsi al server");
@mysql_select_db("$DBName") or die("Impossibile connettersi al database $DBName");
    $query = "SELECT * FROM tabella ORDER by Soprannome ASC,Cognome ASC";
    $secondorisultato = mysql_query($query) or die("Query fallita: " . mysql_error() );
while( $linea = mysql_fetch_array($secondorisultato, MYSQL_ASSOC)){
		

   						if($linea['Soprannome']==''){
										
		            echo "<option>".$linea['Cognome']."&nbsp;".$linea['Nome']."</option>";
			[B]	$idname=$linea['ID'];
							echo "<form method=\"post\" action=\"pagina.php\">\n";
		echo "<input type=\"hidden\" name=\"idname\" value=\"$idname\">\n";[/B]
					}else{
													
					echo "<option>".$linea['Soprannome']."</option>";
		[B]	$idname=$linea['ID'];
							echo "<form method=\"post\" action=\"pagina.php\">\n";
		echo "<input type=\"hidden\" name=\"idname\" value=\"$idname\">\n";[/B]
									}

					}

					}
					

?>
</select>

che mi apreva la più logica, così dopo avrei richiamato $_POST['ID'] ma mi estrae i dati fuori dalla select box
mi scuso se ho fatto una prova che denota la mia ignoranza su certi particolari
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Dipende da come è strutturato lo script. Se le pagine in cui devi usare la variabile impostata precedentemente sono comunque form (ad esempio nel caso di un'azione che richiede più passaggi) allora puoi usare gli input nascosti come avevi provato a fare tu. Se sono pagine comuni allora è il caso di usare le sessioni.
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
Dipende da come è strutturato lo script. Se le pagine in cui devi usare la variabile impostata precedentemente sono comunque form (ad esempio nel caso di un'azione che richiede più passaggi) allora puoi usare gli input nascosti come avevi provato a fare tu. Se sono pagine comuni allora è il caso di usare le sessioni.

non necessariamente, comquneu ho rpvato ad inviare l'id come ho psotato su ma non lo prende, c'è maniera di inviarlo senza usare le sessioni? questo erpchp lo script è finito ed è un pò lunghetto.

visto che si tratta solo di mofiifcare quella porzione mi scocciava irepdnere tutto o script
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
Niene da fare roba da impazzire

e nemmeno con le sessioni risolverei sto problema che dopo attenta esaminazione posso specificare:

ho una tabella nomi del tipo questa
ID|NOMI
1 | Mario_Phptiodioavolte
2 | Giovanni Nuncelafaccio

come si vede a volte ho un _ che stacca nome e cognome ed a volte no, e questo deve necessariamente restare così.

ora nella select box del tipo
PHP:
<?
<select class=\"select\" name=\"nome\">
$sqlquery = "SELECT * FROM $tabella ORDER BY Nome ";
$result = mysql_query($sqlquery);
}   
while( $linea = mysql_fetch_array($result, MYSQL_ASSOC)){
$thename=$linea['Nome'];        
		$idname=$linea['ID'];
      
    $thename=str_replace("_"," ",$thename);                
echo  "<option>$thename</option>";

}

ho usato str_replace per nonf ar vedere l'odiato_ però quando vado a recuperare la variabile ad esempiodell'id 1 mi risulta Mario Phptiodioavolte e se faccio il apsso idnietro cioè

$thename=str_replace(" ","_",$thename);
e putacaso è sattos elezionato l'ID2 mi risulta
Giovanni_Nuncelafaccio

quindi mi saltano le successive query

ora io non voelvo modificare il database mi basterebbe inviare inseieme al nome l'ID così risolverei tutti i problemi perchè nelle varie tabelle ogni nome è identificato dallo stesso ID

isnerendo il campo nascosto all'interno del while e dell'option mi fa saltare appunto la select

ci deve essere un sistema per trascinarmi dietro l'ID
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
iao
perche non trasmetti direttamente $linea['Nome'] come valore e non usi $thename solo come visualizzazione

PHP:
<?php
//...
$thename=str_replace("_"," ",$linea['Nome']);
echo  "<option value=\"".$linea['Nome']."\">$thename</option>";
//...
?>
in questo caso l'html diventa

HTML:
<option value="Mario_Phptiodioavolte">Mario Phptiodioavolte</option>
<option value="Giovanni Nuncelafaccio">Giovanni Nuncelafaccio</option>
cioè vedi come ti piacerebbe vedere, ma trasmetti il nome come è scritto nella tabella, quindi non ti sballano le successive query.
fai il replace solo quando ti serve visualizzare il nome
 

minatore

Utente Attivo
25 Set 2007
410
0
0

Ciao, prova questo script, se ti può servire
PHP:
for($a = 0; $a < mysql_num_rows($query);$a++)
{
$rec=mysql_fetch_assoc($query);
echo"
<option value='".intval($rec['id'])."'>
".$rec['nome']."
</option>";
}

Ciao
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
Nel caso della soluzione di Minatore passere $rec['nome'] per stripslashes(), non si sa mai che il lista ci sia qualche "Tommaso d'Aquino".
 

minatore

Utente Attivo
25 Set 2007
410
0
0
Nel caso della soluzione di Minatore passere $rec['nome'] per stripslashes(), non si sa mai che il lista ci sia qualche "Tommaso d'Aquino".


Ciao Eliox, a proposito dell'apostrofo, ho inserito stripslashes davanti, ma non ho notato differenze, invece ho rilevato un errore in un campo text dove prelevo dal db un nome con l'apostrofo e quando lo vado a recuperare sono rimasto come un fessacchiotto, allora
nel db ho un campo nome con dentro Tommaso d'Aquino
lo recupero così
PHP:
<input type='text' name='nome' class='text' value='" . stripslashes($rec_estr['nome']) . "'>
come risultato ho
Codice:
Tommaso d
mi tronca tutto quello che ho dopo l'apostrofo, come mai sta cosa

Ciao

Apro un altro post perchè la cosa sembra interessante
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
nel db non ci possono essere stringhe del tipo
Tommaso d'Aquino
ma (nel db) la stringa deve essere scritta
Tommaso d\'Aquino
eliox intendeva che quando la leggi e la visualizzi devi usare stripslashes
se pensi a come è scritta una query ti rendi conto del perchè
INSERT INTO tabella(campo) VALUES ('parola')
se invece dovessi insetire tommaso
INSERT INTO tabella(campo) VALUES ('Tommaso d'Aquino')
mysql e/o php non capisce dove è la fine della stringa
per cui devo adslaslacciare
INSERT INTO tabella(campo) VALUES ('Tommaso d\'Aquino')
cosi mysql/php capiscono che è un apostrofo e non la fine della stringa

dimenticavo: per inserire nel db addslashes("Tommaso d'Aquino")
 
Ultima modifica:

minatore

Utente Attivo
25 Set 2007
410
0
0
ciao
nel db non ci possono essere stringhe del tipo
Tommaso d'Aquino
ma (nel db) la stringa deve essere scritta
Tommaso d\'Aquino
eliox intendeva che quando la leggi e la visualizzi devi usare stripslashes
se pensi a come è scritta una query ti rendi conto del perchè
INSERT INTO tabella(campo) VALUES ('parola')
se invece dovessi insetire tommaso
INSERT INTO tabella(campo) VALUES ('Tommaso d'Aquino')
mysql e/o php non capisce dove è la fine della stringa
per cui devo adslaslacciare
INSERT INTO tabella(campo) VALUES ('Tommaso d\'Aquino')
cosi mysql/php capiscono che è un apostrofo e non la fine della stringa

dimenticavo: per inserire nel db addslashes("Tommaso d'Aquino")


Ciao e grazie borgo, quando faccio l'inserimento io uso addslashes, ecco perchè non notavo nessuna differenza
Ciao
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
iao
perche non trasmetti direttamente $linea['Nome'] come valore e non usi $thename solo come visualizzazione

PHP:
<?php
//...
$thename=str_replace("_"," ",$linea['Nome']);
echo  "<option value=\"".$linea['Nome']."\">$thename</option>";
//...
?>
in questo caso l'html diventa

HTML:
<option value="Mario_Phptiodioavolte">Mario Phptiodioavolte</option>
<option value="Giovanni Nuncelafaccio">Giovanni Nuncelafaccio</option>
cioè vedi come ti piacerebbe vedere, ma trasmetti il nome come è scritto nella tabella, quindi non ti sballano le successive query.
fai il replace solo quando ti serve visualizzare il nome

Signore onnipotente, La sapevo pure sta cosa del valure che pirla :hammer::hammer::hammer::hammer:

Ieri mi era passata pure per la mente sta cosa del value poi preso da altre cose mi son dimenticato. Che stupido.tutto eprfetto Graie Utilissimo e gentilissimo come sempre.
 
Discussioni simili
Autore Titolo Forum Risposte Data
borgo italia div ad altezza variabile ma fissa HTML e CSS 2
N Come si crea una variabile dinamica da incrementare? Javascript 1
R Variabile non risconosciuta dentro una funzione PHP 1
K posizionare variabile da pagina html all'iframe. Javascript 1
I Assegnare dati fetch request ad una variabile globale Javascript 0
E Inviare variabile a PHP da ciclo in JS Javascript 0
S Variabile in post su altra pagina PHP 2
F Passare variabile a pulsante in finestra modale PHP 2
R Nome input testo+variabile PHP 1
A inserire variabile php colore in div html PHP 2
N Variabile di sessione è un array PHP7 PHP 3
A variabile non riconosciuta PHP 0
K Cambiare font size su echo stringa variabile PHP 24
B Errore unexpected '$variabile' (T_VARIABLE) in your code on line PHP 2
M Inserire variabile nella value di una hidden PHP 3
A Problema nel passare la variabile PHP 0
C variabile in img Javascript 8
C [RISOLTO]Inserimento variabile php in input html PHP 20
N PDF fpdi passare variabile PHP 4
F Come passare una variabile al modal di bootstrap PHP 1
F Passare una variabile php dal DB mysql alla pagina PHP 3
M [PHP] Passare variabile di sessione con metodo GET PHP 10
S [PHP] Rendere visibile variabile di un costrutto if in un altro costrutto if PHP 1
T PHP: variabile che cambia ogni 5 giorni... PHP 3
Tommy03 Variabile PHP per impostare una proprietà CSS PHP 2
L [PHP] Passare variabile PHP 3
J Passaggio variabile tra 2 file php PHP 15
Tommy03 Variabile PHP dentro a JQuery PHP 3
A [PHP] Scopo di una variabile PHP 4
M [PHP] Salvare campo di una tabella in una variabile PHP 14
B [PHP] Valore variabile non riconosciuto PHP 1
AMONRA75 [PHP] passare una variabile in una finestra MODAL PHP 1
P [PHP] $_GET non preleva variabile nell’URL PHP 4
A Php variabile immagine inesistente PHP 4
Shyson [PHP] Personalizzare variabile PHP 0
Monital Funzione php e campo database come variabile PHP 6
N [Javascript] For-loop su thead: tempo di esecuzione variabile Javascript 1
R Come creare report dinamico/variabile in Access Presentati al Forum 1
IT9-Gpp [RISOLTO] Leggere variabile restituita da success Ajax 3
E assegnare a una variabile il contenuto di un url (javascript) Javascript 0
V [PHP] Variabile modificata in un if non mantiene quel valore PHP 5
Elena Lazzarini [Magento] Prezzo variabile in base alla priorità di spedizione Magento 0
K [PHP] Paginazione Wordpress: passare variabile PHP 6
A [PHP] Passaare una variabile ad un PHP 2
A [PHP] Non prende variabile $provincia ma tutte le altre si PHP 6
P [PHP] Query con variabile PHP 2
napuleone scrivere in un file <?php $variabile PHP 1
A [PHP] Widget Meteo con località variabile PHP 0
paloppa [PHP] Dubbio print variabile PHP 27
paloppa [PHP] Dubbio valore variabile PHP 16

Discussioni simili