Problema sulla lezione 16 di PHP base.

Ho provato lo script riportato a fine lezione sui form e l'utilizzo di $_POST ,ma il risultato è questo :

E questo è il codice :

<form name="form1" method="post" action="">

  <p> campo di testo: <br>

    <input type="text" name="textfield">

  </p>

  <p>area di testo:<br>

    <textarea name="textarea"></textarea>

  </p>

  <p>

    <input type="checkbox" name="checkbox" value="checkbox">

    casella di controllo </p>

  <p>

    <label>

    <input type="radio" name="radio" value="1">

    Pulsante di scelta 1</label>

    <br>

    <label>

    <input type="radio" name="radio" value="2">

    Pulsante di scelta 2</label>

    <br>

  </p>

  <p>Menu:<br>

    <select name="select">

      <option value="1">Opzione 1</option>

      <option value="2">Opzione 2</option>

      <option value="3">Opzione 3</option>

      <option value="4">Opzione 4</option>

    </select>

  </p>

  <p>Elenco:<br>

    <select name="select2[]" size="5" multiple>

      <option value="1">Opzione 1</option>

      <option value="2">Opzione 2</option>

      <option value="3">Opzione 3</option>

      <option value="4">Opzione 4</option>

    </select>

  </p>

  <p>

    <input type="submit" name="Submit" value="Invia">

  </p>

</form>

<?php if($_POST)
{
    // converto alcuni caratteri illeciti per l'HTML
    $testo = htmlspecialchars($_POST['textfield']);
    echo('campo di testo: ' .$_POST['textfield']);
    echo('<br>');

    // converto alcuni caratteri illeciti per l'HTML
    $testo = htmlspecialchars($_POST['textarea']);
    // converto gli 'a capo' con dei <br>
    $testo = nl2br($testo);
    echo('area di testo: ' .$testo);
    echo('<br>');

    // se la casella non è stata selezionata
    // allora $_POST['checkbox'] non sarà settato
    $casella = isset($_POST['checkbox']) ? 'selezionata' : 'non selezionata';
    echo('casella di controllo: ' . $casella);
    echo('<br>');

    // se neanche un bottone è stato selezionato
    // allora $_POST['radio'] non sarà settato
    if(isset($_POST['radio']))
        $pulsante = 'selezionato il numero ' . $_POST['radio'];
    else
        $pulsante = 'nessun pulsante selezionato';
    echo('Pulsante di scelta: ' . $pulsante);
    echo('<br>');

    // un menu restituisce sempre un valore
    echo('Menu: ' .$_POST['select']);
    echo('<br>');

    // un elenco a scelta multipla restituisce un array di valori
    // se nessun valore è stato selezionato però
    // $_POST['select2'] non sarà settato
    if(isset($_POST['select2']))
        $valori_selezionati = implode($_POST['select2'],', ');
    else
        $valori_selezionati = 'Nessun valore selezionato';
    echo('Elenco: ' . $valori_selezionati);
    echo('<br>');

}
else
{
    echo("Compila il modulo e premi il bottone 'Invia'");
} ?>

Dopo la quinta riga di php non mi interpreta piu il codice e mi scrive il php come se fosse testo.

Grazie in anticipo.

inviato 9 anni fa
Stream
X 0 X

Effettivamente c'è un errore nello script. La riga:

echo('campo di testo: ' .$_POST['textfield']);

andrebbe cambiata in:

echo('campo di testo: ' .$testo);

Questa correzione risolve il tuo problema?

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Ho provato a cambiare la riga :

<?php if($_POST)
{
    // converto alcuni caratteri illeciti per l'HTML
    $testo = htmlspecialchars($_POST['textfield']);
    echo('campo di testo: ' . $testo);
    echo('<br>');

Ma nulla da fare  :(

Il resto è uguale al primo post.

risposto 9 anni fa
Stream
X 0 X

ma quel problema si verifica alla prima visualizzazione dello script? (intendo dire senza l'invio dei dati del form)

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Ehm devo dire un grande "Oops" .

Mentre rispondevo qui,mi sono accorto di aver sbagliato l'estensione del file  (per sbaglio ho salvato .html) :-[

Devo stare piu attento,scusa per il tempo perso  ::)

risposto 9 anni fa
Stream
X 0 X

Figurati, inavvertitamente mi hai comunque fatto notare un errore nello script  :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda