Passare variabile in SELECT

criccroc

Utente Attivo
7 Gen 2011
44
0
6
Ciao a tutti, ho un piccolo problemino che provero' a spiegarvi:

ho un file in php che gestisce i dati in base ad una variabile ($per_pagina) ed in base ad essa visualizzerà XX record in una pagina HTML.

In questa pagina HTML c'e' un SELECT che permette la scelta all'utente:

<form method="POST" action="utenti.php">
<select name="per_pagina">
<option value="5">5</option>
<option value="10">10</option>
<option value="20" selected="selected">20</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
<input type="submit" value="SELEZIONA">
</form>

fin qui tutto chiaro e tutto funzionante. Per default si visualizzano 20 record per pagina.

Ora, il mio obiettivo è quello di MEMORIZZARE la scelta fatta dall'utente affinchè sia la nuova scelta il valore di default, ovvero: se l'utente clicca ad esempio su 10, quando il programma php richiama nuovamente la pagina HTML il valore di default deve essere impostato su 10 e non su 20 e cosi via.

In altre parole, il valore di default del SELECT deve essere lo stesso della variabile $per_pagina.

Inoltre vorrei che la selezione venga fatta in modo automatico appena si clicca sul nuovo valore scelto, anzichè cliccare su SELEZIONA.
Grazie.
Carlo.
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Per memorizzare la scelta dell'utente puoi usare i cookie: https://www.mrw.it/php/guide/gestire-cookie_87.html.
Per inviare il form appena viene selezionata una opzione puoi usare Javascript. Modifica il form così:
HTML:
<form name="ppg" method="POST" action="utenti.php">
	<select name="per_pagina" onchange="document.ppg.submit()">
		<option value="5">5</option>
		<option value="10">10</option>
		<option value="20" selected="selected">20</option>
		<option value="50">50</option>
		<option value="100">100</option>
	</select>
</form>
 

criccroc

Utente Attivo
7 Gen 2011
44
0
6
Grazie Alessandro per la risposta!!!
Ho modificato il SELECT utlizzando il comando Javascript come da te consigliato.. GRAZIE era da parecchio che volevo risolvere questo problema. FUNZIONISSIMA!

Il secondo probema pero' e' rimasto irrisolto. Ti spiego meglio:

La pagina HTML richiama il programma PHP e ritorna nella stessa pagina HTML (per eventuali altre modifiche). Pertanto il problema non e' quello di MEMORIZZARE LA VARIABILE, ma fare in modo che l'utente legga nella casella del select il VALORE della variabile, ovvero:
se io scelgo 50, appena ritorno nella pagina devo avere come default 50 sul select.

Penso quindi che dovrei togliere il selected="selected" e sostituirlo in qualche modo con il valore della variabile cambiata (50).

Mi spiego ancora meglio: se ulilizzassi un INPUT TEXT potrei mettere come VALUE=$per_pagina e di conseguenza nella casellina ci sara' scritto 50.

Spero di essere stato un po piu chiaro.

Con l'occasione ti ringrazio anche per avermi dato il link riguardo i COOKIES che ora mi sono piu chiari ehehe..
A presto.
Carlo.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
non ho usato i cookie perche non mi piaccono molto.
comunque usando le sessioni raggiungi quello che vorresti (almeno così mi sembra)

PHP:
<?php
if(!isset($_SESSION)){session_start();}
if(isset($_POST['per_pagina'])){
	$valore=(int)$_POST['per_pagina'];
	unset($_SESSION['pag']);
	$_SESSION['pag'][$valore]="selected";
}else{
	$_SESSION['pag'][20]="selected";
}
?>
<form name="ppg" method="POST" action="<?php echo $_SERVER['PHP_SELF'];?>">
	<select name="per_pagina" onchange="document.ppg.submit()">
		<option value="5" <?php echo $_SESSION['pag'][5];?>>5</option>
		<option value="10" <?php echo $_SESSION['pag'][10];?>>10</option>
		<option value="20" <?php echo $_SESSION['pag'][20];?>>20</option>
		<option value="50" <?php echo $_SESSION['pag'][50];?>>50</option>
		<option value="100" <?php echo $_SESSION['pag'][100];?>>100</option>
	</select>
</form>
ho messo l'action alla stessa pagina, ma puoi cambiarlo puntando ad un'altra tricordandoti però di
inizializzare le sessioni e di usare $_SESSION['pag']
comunque prova, al massimo non funzia
p.s.
per la sessione del numero di pagine ho utilizzato la globale $session come array di array perchè se ad es.
la pagina che stai usando è una pagina riservata e stai già usando una sessione per autorizzarne l'accesso
non voglio che l'unset elimini tale sessione, ma solo quella relativa al numero di pagine

dimenticavo:
guarda che per fare quello che vuoi la pagina con <select> deve essere una pagina php, non html
 
Ultima modifica:

criccroc

Utente Attivo
7 Gen 2011
44
0
6
Ciao anche a te borgoitalia e grazie per la risposta.

Provero' quello che mi hai postato ma facciamola un attimo piu semplice cosi non creiamo confusione. Immaginate questa situazione:

php:
$per_pagina = 50;

html:
<select name="per_pagina" onchange="document.ppg.submit()">
<option value="5">5</option>
<option value="10">10</option>
<option value="20">20</option>
<option value="50">50</option>
<option value="100">100</option>
</select>

Ora dimentichiamoci il come memorizzare le variabil o variabili che cambiano. Obiettivo:

Fare in modo che il SELECT selezioni automaticamente 50 anzichè 5 (per default prende il primo valore e, nel caso di selected sara' quello il valore di default).

Se utilizzassi il comando input (ad esempio) la cosa sarebbe semplicissima:
in HTML scrivero' una riga cosi:
<input type="text" name="pagine" value=[var.per_pagina]/>

Penso quindi che ci sia la possibilita', anche nel caso del select, di passare la variabile e selezionare una delle 4 scelte in modo automatico o da HTML o da JAVASCRIPT.

Forse bisogna modificare questa parte:
<option value="5" <?php echo $_SESSION['pag'][5];?>>5</option>
con una simile a questa:
<option value="5" [var.per_pagina]>5</option>
e via dicendo..

Ho provato cosi ma non funziona.
Ciao ciao
Carlo
 
Ultima modifica:

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Io ti consiglio, all'invio, di memorizzare in un cookie chiamato per_pagina il valore selezionato e modificare in questo modo il form:
PHP:
<select name="per_pagina" onchange="document.ppg.submit()">
	<option value="5"<?php if($_COOKIE['per_pagina'] == 5) echo ' selected="selected"'; ?>>5</option>
	<option value="10"<?php if($_COOKIE['per_pagina'] == 10) echo ' selected="selected"'; ?>>10</option>
	<option value="20"<?php if($_COOKIE['per_pagina'] == 20) echo ' selected="selected"'; ?>>20</option>
	<option value="50"<?php if($_COOKIE['per_pagina'] == 50) echo ' selected="selected"'; ?>>50</option>
	<option value="100"<?php if($_COOKIE['per_pagina'] == 100) echo ' selected="selected"'; ?>>100</option>
</select>
P.S. Ti ricordo che l'impostazione del cookie deve essere effettuata prima di qualunque output.
 

criccroc

Utente Attivo
7 Gen 2011
44
0
6
penso che il mio problema non sia quello di memorizzare la variabile e in che modo farlo, lo ho gia risolto questo problema e funzionissima, anche se provero' l'utilizzo dei cookies.

parto da un presupposto, se funziona questo:
<option value="5"<?php if($_COOKIE['per_pagina'] == 5) echo ' selected="selected"'; ?>>5</option>

allora dovrebbe funzionare anche questo:
<option value="5"<?php if($'per_pagina == 5) echo ' selected="selected"'; ?>>5</option>

Correggetemi se sbaglio :)
nel frattempo lo provo eheh. ciaooo
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
guarda che se usi il mio sistema o quello di alex (da certi punti di vista si equivalgono cioè funziano) è lo stesso si tratta principalmente di stile di programmazione (a me piacciono le sessioni e gli array, a alex, data l'età, le caramelle:))
l'unico modo di ricordare i valori dopo i submit (e/o i reffresh) sono i cookie o le sessioni, salvo ricorrere (in questo caso assurdamente) a un db.
se provi il mio sistema (o quello di alex) vedrai che alla partenza viene selectatto il valore di default, poi il valore scelto dall'utente diventa, fino all'uscita dal bw nel mio caso o sino alla morte del cokie per alex, il valore di default (sino a che non lo cambia)
 
Ultima modifica:

criccroc

Utente Attivo
7 Gen 2011
44
0
6
sicuramente c'e' qualche errore di sintassi nella parte html che mi avete postato.
Ecco cosa ho fatto:
PHP:
//memorizzo le pagine in un cookie ed imposto la scadenza tra un'ora...
$pagine = $_POST['per_pagina'];
setcookie("pagine", $pagine, time()+3600);

fin qui tutto ok!! Infatti usando il comando
echo "pagine= " . $_COOKIE['pagine'];
visualizzo la scelta effettuata (ma questo come avevo gia detto era per me gia risolto).

E' qui che bisogna concentarsi :)
HTML:
<option value="5"<?php if($_COOKIE['pagine'] == 5) echo ' selected="selected"'; ?>>5</option>
<option value="10"<?php if($_COOKIE['pagine'] == 10) echo ' selected="selected"'; ?>>10</option>
<option value="20"<?php if($_COOKIE['pagine'] == 20) echo ' selected="selected"'; ?>>20</option>
<option value="50"<?php if($_COOKIE['pagine'] == 50) echo ' selected="selected"'; ?>>50</option>
<option value="100"<?php if($_COOKIE['pagine'] == 100) echo ' selected="selected"'; ?>>100</option>


tanto per cominciare c'e' un > che non dovrebbe esserci prima dei numeri, da qui deduco che il codice e' errato.
Comunque in questo modo NON FUNZIONA. Imposta il valore di default (il primo della lista).

Ricordo che il problema mio non e' COME memorizzare la variabile ma IN CHE MODO passarla al SELECT.

PS: io personalmente non amo inserire codice PHP in un file html ... ognuno ha i suoi difetti ehehehe.
 
Ultima modifica:

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Scusami, ma prima memorizzi la scelta nella variabile $pagine e poi imposti la variabile $nome come valore del cookie... com'è possibile? Modifica il tuo codice così:
PHP:
$pagine = $_POST['per_pagina'];
setcookie("pagine", $pagine, time() + 3600);
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Tra l'altro il mio codice funziona benissimo. Ho creato una pagina index.php contenente:
PHP:
<?php
if(!isset($_COOKIE['per_pagina']))
{
	setcookie('per_pagina', 5, time() + 3600, '/');
	$_COOKIE['per_pagina'] = 5;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<title>Memorizzazione scelta</title>
		<meta http-equiv="content-type" content="text/html;charset=utf-8" />
	</head>

	<body>
		<form name="memorizza" action="memorizza.php" method="post">
			<select name="per_pagina" onchange="document.memorizza.submit();">
				<option value="5"<?php if($_COOKIE['per_pagina'] == 5) echo ' selected="selected"'; ?>>5</option>
				<option value="10"<?php if($_COOKIE['per_pagina'] == 10) echo ' selected="selected"'; ?>>10</option>
				<option value="20"<?php if($_COOKIE['per_pagina'] == 20) echo ' selected="selected"'; ?>>20</option>
				<option value="50"<?php if($_COOKIE['per_pagina'] == 50) echo ' selected="selected"'; ?>>50</option>
				<option value="100"<?php if($_COOKIE['per_pagina'] == 100) echo ' selected="selected"'; ?>>100</option>
			</select>
		</form>
	</body>
</html>
E una pagina memorizza.php contenente:
PHP:
<?php
setcookie('per_pagina', $_POST['per_pagina'], time() + 3600, '/');
header('Location: index.php');
?>
E tutto funziona a meraviglia.
 

criccroc

Utente Attivo
7 Gen 2011
44
0
6
ora mi ucciderete perchè divento INSOPPORTABILE? ehehe Spero di no.

Caro Alessandro, ho provato a fare ESATTAMENTE come tu mi hai consigliato.
Infatti ho creato 2 files (index.php e memorizza.php) facendo copia incolla del tuo codice.

A prima vista SEMBRA che tutto funzioni ma in realta' tu non vai di nuovo sul select dopo che hai fatto la scelta.

Ti faccio notare che vicino al numero c'e' un ">" e questo mi fa pensare che il codice HTML non e' scritto correttamente.


Prova a vedere in realta' quello che accade direttamente sul mio sito:

http://www.bigemerald.com/shop.php

vedrai che c'e' un select dove scegliere la quantita' di negozi da visualizzare.

In alto a sinistra invece vedrai la scritta pagine=XX ma vedrai che nel select accade questo:
1) il simbolo > che non deve apparire
2) la scelta non cambia , resta sempre su 5.

borgo: si avevo capito questo ed e' corretta la sintassi, ma come vedrai non e' corretto perche appare nelle scelte.

Se vuoi possiamo anche sentirci su skype. Fatemi sapere :)
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Io nel codice sorgente della tua pagina vedo:
PHP:
<option value="5"<?php if($_COOKIE['per_pagina'] == 5) echo ' selected="selected"'; ?>>5</option>
                <option value="10"<?php if($_COOKIE['per_pagina'] == 10) echo ' selected="selected"'; ?>>10</option>
                <option value="20"<?php if($_COOKIE['per_pagina'] == 20) echo ' selected="selected"'; ?>>20</option>
                <option value="50"<?php if($_COOKIE['per_pagina'] == 50) echo ' selected="selected"'; ?>>50</option>
                <option value="100"<?php if($_COOKIE['per_pagina'] == 100) echo ' selected="selected"'; ?>>100</option>
Mentre in realtà dovrei vedere solo il codice HTML. Evidentemente il tuo server non interpreta correttamente il codice PHP. Potresti postare i sorgenti della pagina shop.php?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ho provato anche io, ma vedo solo l'html (IE + fire), comunque nella select c'è (ne prendo una sola)

<option value="10">&gt;10</option>
che non so da dove salti fuori

dimentivavo: lo script di alex (strano a dirsi) ma è vero che funzia
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Ehm... io continuo a vedere il codice PHP. Quindi Google Chrome può leggere il codice PHP delle pagine anche se il server lo processa prima, fantastico! Corro subito a scaricare il CMS che gestisce Google! :D

Scherzi a parte, è una cosa piuttosto curiosa...
 

criccroc

Utente Attivo
7 Gen 2011
44
0
6
Cari ragazzi, intanto vi ringrazio perchè partecipate al mio problema,
io personalmente comunque resto dell'idea che il problema non si risolve con i cookies o similari riguardo la variabile. QUELLA FUNZIONA!

La dimostrazione pratica la potete vedere ora sul sito:
Ho rimesso tutto come era prima, se selezionate dal menu il valore vedrete che tutto fuziona correttamente (si visualizzeranno 5,10,20,50 o 100 negozi per pagina in base alla scelta effettuata), tranne il VALORE che dovrebbe cambiare in base alla scelta fatta.

Quindi il problema non sta sulla variabile, ma come impostare il select in base alla variabile!

Pertanto credo che bisogna intervenire o in JAVASCRIPT oppure inserire ulteriori comandi in SELECT.

Guardate questa parte di codice.. che FUNZIONA nel caso in cui tramite una SELECT si seleziona la situazione sentimentale:

<option value="[var.rel_single]" [var.Single]>[var.rel_single] </option> <option value="[var.rel_taken]" [var.Taken]>[var.rel_taken] </option>
<option value="[var.rel_looking]" [var.Looking]>[var.rel_looking]</option>

le tre variabili sono: Single, Impegnato, In cerca di..

cosi facendo in base alla scelta effettuata viene memorizzato PER DEFAULT i valore scelto.

Ora bisogna provare a mettere questo semplice codice nel mio semplice programma :)

A chi ci riesce, iscrizione gratis sul mio sito (ahahah tanto e' gia gratuita di suo ahah) :)
 
Discussioni simili
Autore Titolo Forum Risposte Data
V passare la scelta di una select ad un variabile php PHP 5
F Passare variabile a pulsante in finestra modale PHP 2
A Problema nel passare la variabile PHP 0
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
L [PHP] Passare variabile PHP 3
AMONRA75 [PHP] passare una variabile in una finestra MODAL PHP 1
K [PHP] Paginazione Wordpress: passare variabile PHP 6
T [PHP] passare una variabile in una finestra MODAL di bootstrap PHP 3
A [Javascript] Passare variabile tra pagine html diverse Javascript 13
W Passare una variabile da una pagina all'altra PHP 25
M [C#] ListView: passare variabile a un LayoutTemplate caricato da codebehind ASP.NET 0
neo996sps Passare variabile in GET a script python PHP 1
G Passare valore ad una variabile con jQuery e PHP PHP 1
R [Risolto] Passare Variabile importo carrello a Paypal Classic ASP 7
A passare variabile ad un file PHP da acquisire con $_GET PHP 3
R passare una variabile in query per ORDER BY PHP 6
B AIUTO: come passare una variabile php ad una funzione javascript Javascript 2
7 Come passare una variabile internamente tra due funzioni... Javascript 3
neo996sps Passare variabile su include di file php PHP 2
J Passare variabile a popup PHP 7
U passare una variabile di sessione da pagina di joomla a pagina php Joomla 3
neo996sps passare variabile su link tramite post PHP 4
P passare valore variabile da javascript a php Javascript 1
I Passare variabile da Form PHP 1
P Passare una variabile a una query sql Database 0
L Passare variabile PHP 6
P Passare solo una variabile di un form a pagina principale Javascript 1
P passare variabile a swf da pagina inclusa PHP 1
B passare una variabile javascript ad una jsp Javascript 0
G passare una variabile da una prompt js a php Javascript 1
G Passare una variabile ad un applet PHP 1
E Passare variabile php a JS Javascript 0
E Conviene passare in sessione una variabile db ? Classic ASP 5
G Passare variabile Classic ASP 1
S passare un valore da un form a un file .php con metodo post PHP 4
R valore value di un id da passare in chiamata ajax Ajax 3
N Passare array da php a javascript PHP 5
S Passare query o utm alla pagina successiva Domini 1
P Passare solo alcuni parametri a script per CSV PHP 0
D passare valori da database sql a php PHP 1
P Passare contenuto in value. Ajax 1
P Passare i risultati di un foreach in un modal. Help! PHP 2
P jButton1ActionPerformed passare parametri ad altra classe Java 2
Fendo59 Passare parametri con metodo POST a una pagina in un frame PHP 0
I Passare dei parametri in javascript PHP 0
G Passare path directory in POST PHP 2
G [Javascript] Passare un valore via querystring Javascript 1

Discussioni simili