Lezione 3 E Sia: Uso di alcuni attributi Html 5 e soluzione dell'Errore PHP Undefined index





Questo post è importante e risolve il problema emerso nella lezione di lunedì 8 gennaio 2018.

Durante l’utilizzo dei vettori $_POST o $_GET per poi passare i dati nelle variabili PHP nelle ultime versioni di PHP potreste visualizzare questo errore:

Notice: Undefined index ‘campo method’ in ‘percorso del file php in corso d’esecuzione’ on line ‘riga in corso’

Per risolverlo è importante utilizzare la funzione isset().


Ecco lo script:


// Prima dell'utilizzo $_POST['variabile']
if (isset($_POST['variabile']))
{
$variabile=$_POST['variabile']
}

Non si tratta di un errore vero ma di un Warning!
Se si vuole evitare l'utilizzo della funzione isset() si può inibire l'errore nel file php.ini alla voce error_reporting.


Esempio completo:


esempio_isset.php

<?php //Inizio codice PHP

$prim=0;
$seco=0;

if (isset($_POST['prim'])) 
   $prim=$_POST['prim']; //Recupero la variabile globale del primo numero
}

 if (isset($_POST['seco'])) 
   $seco=$_POST['seco']; //Recupero la variabile globale del primo numero
}

 $risu=$prim*$seco; //moltiplico i numeri e definisco $risu (risultato)
  //Fine primo ciclo if
 ?> //Fine codice PHP

<form action="#" method="post">
 <input type="text" name="prim" size="5" maxlength="5"  value="<?php echo "$prim" ?> ">Primo numero<br>
 <input type="text" name="seco" size="5" maxlength="5" value="<?php echo "$seco" ?> ">Secondo numero<br>
 <br>
 <input type="text" name="risu" size="6" maxlength="6" value="<?php echo "$risu" ?>">Risultato<br>
 <input type="submit" value="Calcola">
 </form> 

-------------------------------------------------------------------------------

Uso degli attributi pattern, autocomplete, placeholder, required


1) L'attributo pattern è una delle novità più interessanti dei forms in HTML5, poichè permette di validare il campo lato client senza fare ricorso al JavaScript.
Facendo qualche test scopriamo che la regola immessa, sebbene ci faccia accettare un nome come Pluto e sia case insensitive, potrebbe essere certamente migliorata, ad esempio accettando:
Nomi con un numero di caratteri compreso tra 2 e 15
spazi vuoti: in questo modo potrei chiamare la mia gattina Yoko Ono;
l'apostrofo: come O'Brien, in onore di George Orwell e del protagonista del suo romanzo 1984.
2) L'attributo Required rende il campo obbligatorio.

3) L'attributo Autocomplete: attiva/disattiva la precompilazione del campo in base ai testi precedentemente inseriti. Ammette soltanto i due valori on/off, ma se si omette la funzione risulta attiva.

4) L'attributo Autofocus: porta il mouse sul controllo per il quale è impostato l'autofocus. Da dichiarare al massimo una volta in ogni pagina.
5) L'attributo Placeholder: suggerisce un testo all'interno del campo fino a quando non si scrive qualcosa. Già nel primo esempio di form si nota il testo all'interno del campo (vedi sopra).



esempio.html


<!doctype html>
<html>
    <head>
        <meta charset=utf-8>
        <meta name=viewport content="width=device-width, initial-scale=1.0">
        <title>Modulo con controllo campo con tag HTML5</title>
            </head>
    <body style="padding: 20px;">
        <header>
            <h1>Modulo con controllo campo con tag HTML5</h1>
            <h4>Tags: HTML5, PHP, FORMS</h4>
        </header>
        <form action="invia.php" method="post" id="form_contatto">
            <label for="nomefiore">Suggerisci un nome di un fiore</label>
            <input type="text" pattern="[a-zA-Z'\s]{2,15}" autocomplete="off" placeholder="Suggerisci un fiore" name="nomefiore" required>
            <input type="submit" name="suggerisci" value="invia">
  <input type="reset" name="resetta" value="resetta il campo">
        </form>
        <hr style="margin: 60px 0 25x 0; color: red;">
        </body>
</html>

invia.php

<?php

if (isset($_POST['nomefiore'])) 
$nomefiore=$_POST['nomefiore']
}
echo "Ecco il nome del fiore: $nomefiore";
?>




Commenti

Post popolari in questo blog

Simulazioni di reti (con Cisco Packet Tracer)

Esercizi sulla rappresentazione della virgola mobile IEEE 754 (Floating Point)