Newsgroup: it.comp.www.php
Titolo: INPUT e BUTTON come vengono controllati i valori in PHP?

Buongiorno.
Il valore di BUTTON può essere verificato solo lato client?
Infatti volevo poter inserire un'immagine sul pulsante, invece che solo un 
dicitura, però con INPUT non sembra possibile e quindi ho optato per BUTTON. 
Il problema è che non posso verificare il valore con $_POST, ma diversamente 
non saprei come verificare.
Qualcuno mi può dare qualche consiglio?
Una seconda richiesta che esula un po' da PHP, ma se non volessi la forma 
del BUTTON così tridimensionale, ma volessi un qualcosa simile all'immagine 
come potrei operare per poter eseguire per esempio funzioni PHP?
Grazie
Ciao
Eugenio 

 dicitura, però con INPUT non sembra possibile
Controlla meglio :-)
<input type="image">
-- 
Raffaele Masi
www.webmasterfirenze.it

"Raffaele Masi"  ha scritto

Grazie!
Però poi non riesco a farlo funzionare come submit. 

 Però poi non riesco a farlo funzionare come submit.
Quando usi <input type="image" ...> nella pagina di destinazione
hai due parametri nome_x e nome_y, dove nome è il valore
dell'attributo name del tag <input type="image" name="...>,
valorizzati con le coordinate x e y dell'immagine in cui è stato
fatto il click. Per esempio:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<div><input type="image" name="img" src="img.gif"></div>
</form>
<?php
if (!empty($_POST)) {
    echo '<pre>'.print_r($_POST, true).'</pre>';
}
?>
-- 
Federico

> Perň poi non riesco a farlo funzionare come submit.
Mi sembra di avere capito che non hai le idee molto chiare di come
funzionino le cose in html (quindi va da se' che se all'90% OT)
esistono tra le altre cose 3 tipi di input
<input type="botton">
<input type="submit">
<input type="image">
il primo non spedisce un modulo a meno di funzioni javascript in qualche
suo evento (onclick, ...)
gli altri 2 "submit" e "image" invece sě e se sono presenti name e value,
il browser dovrebbe inviare anche i suddetti valori
in fine con i CSS puoi cambiare gli aspetti grafici di tutti gli elementi
della dagina e quindi anche di questi tre...

 della dagina e quindi anche di questi tre...
Potrei essere OT anche nel ng di HTML, perchè infatti il mio problema è come 
controllare lato server se ho cliccato sul pulsante.
Con Submit verifico eseguo questo controllo
if($_POST["opzione"] == "Verifica") {
... faccio qualcosa ...
}
ma se invece di Submit uso Image sembra sia ignorato $_POST.
Infatti ricevo questo messaggio:
Notice: Undefined index: butpiede in C:\www\RMA\RMAMain.php on line 51
la riga HTML del controllo é:
<input name="opzione" type="image" src="./Images/x.gif" value="Verifica">
Cosa devo usare in sostituzione?
Come si vede sono inesperto anche di PHP, ma faccio domande proprio perchè 
non conosco.
Grazie
Ciao

 non conosco.
Beh, certo fare una domanda di cui si sa gia' la risposta non è molto
furbo, normalmente... ;)

> Cmq che browser stai usando, magari č lui a fare scherzi...
Infatti, ho controllato con IE6 :(
non propaga il valore dei campi image ma solo le coordinate :(
allora affidati ai CSS e quindi qui sei OT  ;)

Ok, grazie.

 allora affidati ai CSS e quindi qui sei OT  ;)
Ok, allora sono ignorante a metà.
:-))))
Si sto usando IE6.
Grazie.

 il browser dovrebbe inviare anche i suddetti valori
Veramente qui dice il contrario:
http://www.w3.org/TR/html401/interact/forms.html#h-17.5
type = submit|button|reset [CI]
    This attribute declares the type of the button. Possible values:
        * submit: Creates a submit button. This is the default value.
	* reset: Creates a reset button.
	* button: Creates a push button.
Buttons created with the BUTTON element function just like
buttons created with the INPUT element, but they offer richer rendering
possibilities
Quindi, a meno che non specifichi il type, si comporta come submit.
Il browser invia diversi dati, ma quello che interessa qui e` come li
tratta PHP.
Per <input type="submit" name="pippo" value="pluto">, PHP imposta una
variabile $_POST["pippo"] = "pluto"
Per <input type="image" name="pippo" value="pluto">, PHP imposta due
variabili: $_POST["pippo_x"] e $_POST["pippo_y"] con le coordinate del
click. Mi pare che ignori totalmente pluto.
Per <button name="pippo" value="pluto"> non mi ricordo, non lo uso mai, ma
mi pare si comporti esattamente come per il submit.
Bye.

 mi pare si comporti esattamente come per il submit.
boh, mai usto :)

 pulsante.
Ammesso che sia:
 
 <input type="image" name="opzione" ...>
Per verificarne la pressione potresti usare $_POST['opzione_x']
oppure $_POST['opzione_y'] o anche entrambi.
Prova il codice che ti ho proposto nella mia prima risposta.
-- 
Federico

 Federico
Si, funziona.
Grazie. 

 boh, mai usto :)
In effetti la questione è proprio come trattare Input o Button in PHP, se 
poi è il browser a non passare $_POST['pluto']....
Sta di fatto che in PHP non è possibile verificarlo.
In merito a quanto quotato, invece, riporto la parte
di HTML
<input name="piede" type="submit" value="Conferma">
<button name="piede" type="submit" value="Elimina">Cancella</button>
di PHP
if($_POST["piede"] == "Elimina") {
  echo "piede vale ". $_POST["piede"];
}
In questo caso il controllo rende FALSO, perchè $_POST["piede"] contiene 
"Cancella".
Infatti se il controllo fosse
if($_POST["piede"] == "Cancella") {
  echo "piede vale ". $_POST["piede"];
}
e avvessi cliccato sul bottone "Conferma", il suddetto controllo è sempre 
VERO.
Quindi sembra che value non venga passato nemmeno in questo caso.
Credo che la soluzione sia il controllo che mi ha proposto Federico
Grazie
Ciao

 VERO.
La consecutio vacilla, comunque sei sicuro che questo problema non venga 
dall'aver chiamato due elementi della form con lo stesso parametro name 
e in particolare il button dopo l'input ? 
Se ne inverti l'ordine nel sorgente HTML ?

 La consecutio vacilla
anche secondo me, cmq...

"Ugo"  ha scritto

Lecita o non lecita, che la consecutio vacilli o no, a me non funziona, 
anche cambiando il valore di name.
Provato anche con print_r().
Sarà forse il browser...
Provate anche voi. ;-)
A me funziona benissimo la soluzione proposta da Federico.
Grazie
Ciao

 fatto il click. Per esempio:
En passant, qualcuno sa se è possibile non passarle? Perchè sporcano 
l'URL inutilmente...
-- 
Raffaele Masi
www.webmasterfirenze.it

 A me funziona benissimo la soluzione proposta da Federico.
A posto allora.

 l'URL inutilmente...
beh, inutilmente, e' fatto apposta!
Se non le vuoi usa un submit e gli cambi l'aspetto con i CSS o un button
come e' stato detto...
Altrimenti passa il form in post che č anche meglio...

 uno sarà quello passato.
Aggiungo una precisazione.
Firefox 2.0.0.4 e Opera 9.21 (entrambi su Windows XP) si
comportano allo stesso modo. Invece IE6 (sempre su WindowsXP) si
comporta allo stesso modo solo se il tag input è messo dopo il
tag button. Se invece il tag input è messo prima del button
$_GET['piede'] vale sempre il valore del button, 'Cancella'.
Dando due name differenti al tag input e al tag button si capisce
perché. Su IE6 premendo l'input viene passato anche il parametro
relativo al button e in questa situazione se quest'ultimo ha lo
stesso name del tag input e nel form rispetto ad esso è
posizionato dopo, il suo value ne sovrascrive il valore.
Firefox e Opera, invece, premendo il pulsante del tag input non
passano il parametro relativo al tag button, ma solo quello del
tag input.
Tutti e tre, infine, passano solo il parametro del tag button,
quando ad essere premuto è il pulsante relativo al tag button.
-- 
Federico

"Andrea "suppaman" D'Amore"  ha scritto nel messaggio >

Confermo che il problema è di IE 6, perchè con Firefox funziona.

 Altrimenti passa il form in post che è anche meglio...
Per un form di ricerca no di sicuro!
-- 
Raffaele Masi
www.webmasterfirenze.it

 un pulsante
Per fare le imagemap server-side.
E` cosi che si facevano prima che i client le implementassero client-side.
Bye.