Newsgroup: it.comp.www.php
Titolo: Riconoscere numero nella casella di testo

Salve a tutti, è la prima volta che scrivo su questo ng, sto studiando 
da poco il php, e spero di diventare quanto prima una assidua 
frequentatrice.
Vi pongo il mio problema: ho costruito un questionario on line, i dati 
poi andranno a confluire in un database mysql, ma ho dei problemi con la 
request.
Dopo che ho inserito i dati mi esce la pagina nella quale ho scritto di 
visualizzarmeli, solo che i dati dei check box escono, mentre quello 
della casella di testo risulta mancante.
Il questionario è questo:
     <tr>
       <td>Et&agrave;:</td>
       <td><label>età
         <input name="eta" type="text" id="eta" size="3" maxlength="3" />
       </label></td>
     </tr>
     <tr>
la il file che legge i dati questo:
if(isset($_REQUEST["eta"]))
echo $_REQUEST["eta"]."<br>";
else
echo "manca dato eta"."<br>";
qualunque cosa scrivo, mi esce "manca dato età" sia se metto lettere che 
numeri. Manca forse qualcosa nel request?
Grazie a tutti

 
Dov'è il <form>?
Se il tuo html è tutto qui manca il form.
Una volta che scegli il metodo di invio dei dati (GET o POST) sarebbe 
preferibile usare il relativo array superglobale ($_POST o $_GET) 
anziché $_REQUEST
-- 
doh!

 numeri.
Non usare $_REQUEST, può essere fonte di ambiguità. Usa GET o POST a
seconda dei casi. Come li invii i dati alla pagina? Guarda se queste
righe possono aiutarti a capire dove sta il problema:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<div>
Et&agrave;: <input name="eta" type="text" id="eta" size="3" maxlength="3" />
<input type="submit" name="btnSubmit" value="Avanti" />
</div>
</form>
<?php
if (!empty($_POST)) {
    echo '<pre>'.print_r($_POST, true).'</pre>';
}
?>
-- 
Federico

Il 13/03/2007, Skip ha detto :

LA butto lì: potrebbe darsi che ci sia un'ambiguità fra name e id?
-- 
Raffaele Masi
www.webmasterfirenze.it

Magilla ha scritto:

Gli altri però me li legge bene, però sono check button
Cmq ti posto i due file completi, non lo avevo fatto per non 
costringervi a leggerli tutti ;)
questo è il questionario:
<form id="questionario" name="questionario" method="post" action="dati.php">
   <p>&nbsp;</p>
   <table width="277" border="1" align="center">
     <tr>
       <td width="80">Sesso:</td>
       <td width="181"><p>
         <label>
           <input type="radio" name="sesso" value="f" />
           Femmina</label>
         <br />
         <label>
           <input type="radio" name="sesso" value="m" />
           Maschio</label>
         <br />
       </p></td>
     </tr>
     <tr>
       <td>Et&agrave;:</td>
       <td><label>età
         <input name="eta" type="text" id="eta" size="3" maxlength="3" />
       </label></td>
     </tr>
     <tr>
       <td>Posizione lavorativa: </td>
       <td><p>
         <label>
           <input type="radio" name="lavoro" value="artigiano" />
           artigiano</label>
         <br />
         <label>
           <input type="radio" name="lavoro" value="operaio" />
           operaio</label>
         <br />
         <label>
           <input type="radio" name="lavoro" value="impiegato" />
           impiegato</label>
         <br />
         <label>
           <input type="radio" name="lavoro" value="professionista" />
           Libero professionista</label>
         <br />
         <label>
           <input type="radio" name="lavoro" value="insegnante" />
           insegnante</label>
         <br />
         <label>
           <input type="radio" name="lavoro" value="altro" />
           altro</label>
         <br />
       </p></td>
     </tr>
     <tr>
       <td colspan="2"><div align="center">
         <input type="submit" name="Submit" value="Invia" />
       </div></td>
     </tr>
   </table>
   <p align="center">&nbsp;</p>
</form>
QUESTO IL PHP:
if(isset($_REQUEST["sesso"]))
echo $_REQUEST["sesso"]."<br>";
else
echo "manca dato sesso"."<br>";
if(isset($_REQUEST["eta"]))
echo $_REQUEST["eta"]."<br>";
else
echo "manca dato eta"."<br>";
if(isset($_REQUEST["lavoro"]))
echo $_REQUEST["lavoro"]."<br>";
else
echo "manca dato lavoro"."<br>";
ho omesso ovviamente i dati relativi alla connessione mysql.

 
A magilla ho postato i file completi, nel caso avessi dimenticato di 
copiarvi qualche cosa importante.
l'if che mi hai dato, dove dovrei metterlo?
Grazie

 > LA butto lì: potrebbe darsi che ci sia un'ambiguità fra name e id?
uso sempre lo stesso nome per non confondermi, non si fa? ora provo a 
cambiarli, però con le altre domande non mi succede questa cosa.
p.s. se ti interessa o ti può servire a capire meglio il mio problema, 
ho postato a Magilla i due file completi.

 
ho provato il tuo form usando come dati.php un banale
<?
print_r($_POST); //$_POST è preferibile
?>
i dati che inserisco ci sono
(questo l'output)
Array (
[sesso] => m
[eta] => 15
[lavoro] => impiegato
[Submit] => Invia
)
-- 
doh!

 cambiarli, però con le altre domande non mi succede questa cosa.
Non cambiarli, perché dovresti?
Ricordati che se ussassi un validatore xhtml strict, l'attributo "name" 
non potresti manco usarlo, ma dovresti usare solo l'"id".
Invece in un html 4.01 o in un xhtml transitional, puoi tranquillamente 
usare "name" e "id". Anzi se li usi, è bene (comodità) che abbiano lo 
stesso nome.
Come ti ha già risposto Magilla, lui stesso ha provato il form che tu 
hai postato qui, e a lui funziona.
Di conseguenza nella scrittura del form non hai commesso alcun errore.
Quindi:
1) o in realtà non hai postato proprio tutto tutto il file,
2) oppure potresti avere un problema di cache, se magari hai fatto 
modifiche e non sono state aggiornate. Svuota la cache del browser 
(CTRL+F5).
--
rob4you

 l'if che mi hai dato, dove dovrei metterlo?
Nella pagina che riceve i dati. Però non c'è nessun controllo sui dati
ricevuti, andrebbero aggiunti.
-- 
Federico

 (CTRL+F5).
domani mattina mi rimetto con calma e controllo.
Grazie a te e a tutti