Newsgroup: it.comp.www.php
Titolo: Risolvere i Notice con $_POST $_GET

Salve,
Vorrei risolvere i notices legati ai  $_POST e $_GET.
Vengo subito all'esempio:
::::::::::::::::PAG.php::::::::::::::::::::
<?php
if ($_POST['esegui']) {
  //elabora qui con uno switch...
} else { ?>
   <form method=post action=PAG.php>
   <input type=text name="esegui" value="x">
   <input type=submit>
   </form>
<?php } ?>
::::::::::::::::::::::::::::::::::::::::::::::::::
La pagina ricarica se stessa, se $_POST['esegui'] contiene qualcosa
elabora altrimenti visualizza la form.
Non voglio mettere if (isset($_POST['esegui'])) { poichè in questo
caso elaborerebbe anche se la variabile fosse settata ma vuota.
Quel if ($_POST['esegui']) { serve a controllare che non sia null.
Avete soluzioni da consigliarmi?
Grazie e saluti


beh forse non elegantissimo ma funzionale:
 if (isset($_POST['esegui']) and $_POST['esegui']) {
# codice ...
Mario
_________________________
WEB: 
www.mario-online.com
________________________________ 

 
Oltre "esegui" hai anche altre variabili (fai un print_r($_POST) e vedi 
quello che ricevi, almeno il name della form). Potresti ovviare anche 
con campo hidden ed eseguire il controllo su quello
	Francesco

 con campo hidden ed eseguire il controllo su quello
volevo trovare una soluzione anche per quelle pagine a cui se viene
passato un campo pieno da qualche parte, post o get, fanno qualcosa
altrimenti visualizzano la pagina normalmente.
Per questo motivo avevo scartato di usare solo isset.
Un esempio può essere quello di passare diverse variabili il cui
contenuto non è per tutte obbligatorio. In questo caso isset non è
adatto.

 avevo scartato di usare solo isset.
if (isset($_POST['campo']) && trim($_POST['campo']) != '') {
  // Il campo č stato riempito...
} else {
  // Il campo non č stato riempito...
}
Ciao.
-- 
Federico

 
Come ti avevo già suggerito se te fai:
<form name="pippo" method="get" actio="a.php">
in $_POST trovi anche la variabile pippo
Quindi puoi fare un controllo di isset su $_POST['pippo']
	Francesco

 	Francesco
grazie, ma nel caso di variabili get?

 Federico
e se tagliassi la testa al toro mettendo all'inizio della pagina un
"if" fittizio del tipo:
if (isset($_POST['var1']) || isset($_GET['var2']) ||
isset($_POST['var3']));
potrei lasciare il restante codice così com'è, il punto è: quanto è
prestante e giusta una scelta del genere?
grazie

 
Specificando il nome del tasto di submit:
<form name="a" method="get" action="d.php">
	<input type="text" name="1">
	<input type="submit" name="tasto">
</form>
Array
(
     [1] => abcdef
     [tasto] => Submit Query
)
	Francesco

Francesco F ha scritto:

per get intendevo: pag.php?campo1=valorea&campo2=valoreb

 
Secondo me la scelta più pulita è aggiungere un campo di controllo (il 
classico action); eviterei il controllo su strlen oppure un isset 
ripetuto su tutti i campi.
	Francesco

 isset($_POST['var3']));
Cosa intendi con if "fittizio"? Esattamente cosa vuoi fare? Perché
all'inizio parlavi di un parametro passato via POST.
Dal tuo primo post:
 | La pagina ricarica se stessa, se $_POST['esegui'] contiene qualcosa
 | elabora altrimenti visualizza la form.
 | Non voglio mettere if (isset($_POST['esegui'])) { poichč in questo
 | caso elaborerebbe anche se la variabile fosse settata ma vuota.
Per fare in modo che la pagina elabori i dati quando $_POST['esegui']
contiene qualcosa devi usare il controllo che ti ho proposto, cioč:
if (isset($_POST['esegui']) && trim($_POST['esegui']) != '') {
  // elabora i dati
}
Ossia verifichi che $_POST['esegui'] esista e non sia una stringa
vuota.
Per esempio:
<?php
if (isset($_POST['esegui']) && trim($_POST['esegui']) != '') {
  echo 'hai scritto '.$_POST['esegui'];
} else {
echo <<<FORM
<form action="$_SERVER[PHP_SELF]" method="post">
<input type="text" name="esegui" value="" />
<input type="submit" name="sbmButton" value="Avanti..." />
</form>
FORM;
}
?>
Non č quello che volevi ottenere?
-- 
Federico