Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2019
    Messaggi
    19

    Attributo "name" della checkbox non riconosciuto nel file php

    Ciao ragazzi, ho costruito un form e ho compilato anche il file php per vedere i dati inviati col form, funziona tutto correttamente tranne i dati selezionati nella checkbox in quanto mi da il seguente errore:

    Notice: Undefined index: interessi[1] in D:\Xampp\htdocs\Lab drioli\Invio dati form.php on line 7
    Notice: Undefined index: interessi[2] in D:\Xampp\htdocs\Lab drioli\Invio dati form.php on line 8
    Notice: Undefined index: interessi[3] in D:\Xampp\htdocs\Lab drioli\Invio dati form.php on line 9
    Notice: Undefined index: interessi[4] in D:\Xampp\htdocs\Lab drioli\Invio dati form.php on line 10

    Questo è il codice del form:
    codice:
    <form method="get" action="Invio dati form.php">
    	<p>
    	<b>Inserisci il tuo nome</b>
    	<input type="text" name="nome"><br><br>
    	<b>Inserisci la tua età</b>
    	<input type="text" name="age"><br><br>
    	<b>Inserisci il tuo indirizzo email</b>
    	<input type="text" name="email"><br><br>
    	<b>Inserisci la tua password</b>
    	<input type="text" name="password"><br><br>
    	
    	<b>Selezionare il sesso</b><br>
    	<input type="radio" name="genere" value="maschile">M<br>
    	<input type="radio" name="genere" value="femminile">F<br><br>
    	
    	<b>Seleziona i tuoi interessi personali</b><br>
    	<input type="checkbox" name="interessi[1]" value="cucina">Cucina<br>
    	<input type="checkbox" name="interessi[2]" value="sport">Sport<br>
    	<input type="checkbox" name="interessi[3]" value="libri">Libri<br>
    	<input type="checkbox" name="interessi[4]" value="viaggi">Viaggi<br><br>
    	
    	<b>Seleziona la tua professione</b><br>
    	<select name="professione" multiple>
    		<option value="studente">Studente</option>
    		<option value="dipendente">Dipendente</option>
    		<option value="lavoratore">Lavoratore autonomo</option>
    		<option value="artigiano">Artigiano</option>
    	</select><br><br>
    	
    	<b>Lascia un commento</b><br>
    	<textarea rows="5" cols="50" name="commento"></textarea><br><br>
    	
    	<input type="submit" value="Invia i dati">
    	<input type="reset" value="Cancella i dati">
    	</p>
    </form>
    Questo invece il codice php per mostrare i dati inviati dal form:
    codice:
    <?php
    $tuo_nome=$_GET['nome'];
    $tua_età=$_GET['age'];
    $tua_email=$_GET['email'];
    $tua_password=$_GET['password'];
    $tuo_sesso=$_GET['genere'];
    $tuoi_interessi1=$_GET['interessi[1]'];
    $tuoi_interessi2=$_GET['interessi[2]'];
    $tuoi_interessi3=$_GET['interessi[3]'];
    $tuoi_interessi4=$_GET['interessi[4]'];
    $tua_professione=$_GET['professione'];
    $tuo_commento=$_GET['commento'];
    $tuo_commento_ok=preg_replace("/\n/", "<br>", $tuo_commento);
    ?>
    
    
    <!DOCTYPE>
    <html>
    <head>
    <meta charset="uf-8">
    	
    	<title>Invio dati form</title>
    </head>
    
    
    <body>
    <p>
    <?php
    	echo "Ciao <b>$tuo_nome</b>, confermi di avere <b>$tua_età</b> anni?<br>
    		  Ti invieremo un'email al seguente indirizzo: <b>$tua_email</b>, la tua password di accesso è: <b>$tua_password</b>.<br>
    		  Sei di sesso <b>$tuo_sesso</b> e ti interessi di <b>$tuoi_interessi1 - $tuoi_interessi2 - $tuoi_interessi3 - $tuoi_interessi4</b>.<br>
    		  Svolgi la professione di <b>$tua_professione</b> e questo è il commento che ci hai lasciato:<br> <b>$tuo_commento_ok</b>";
    ?>
    </p>
    
    
    </body>
    </html>
    Qualcuno può aiutarmi a capire come mai non risultano definiti i valori della checkbox? Ho provato anche con la funzione var_dump ma mi dà sempre errore. Grazie

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Non devi scrivere niente tra le parentesi quadre dei name dei checkbox, quindi tutti
    name="interessi[]"

    PHP riceverà un array e potrai ciclare su questo per prendere i vari valori, solo i valori dei checkbox selezionati arrivaranno, quindi tutti i valori che trova php nell'array sono stati selezionati.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2019
    Messaggi
    19
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Non devi scrivere niente tra le parentesi quadre dei name dei checkbox, quindi tutti
    name="interessi[]"

    PHP riceverà un array e potrai ciclare su questo per prendere i vari valori, solo i valori dei checkbox selezionati arrivaranno, quindi tutti i valori che trova php nell'array sono stati selezionati.
    Grazie Alharzed, ho modificato e ora non mi da più l'errore di prima ma quando stampo mi esce questa scritta invece degli elementi selezionati nella checkbox:
    Sei di sesso maschile e ti interessi di string(15) "$tuoi_interessi" .

    Questo è il codice che ho modificato per dirgli cosa stampare a schermo:
    codice:
    echo "Ciao <b>$tuo_nome</b>, confermi di avere <b>$tua_età</b> anni?<br>
              Ti invieremo un'email al seguente indirizzo: <b>$tua_email</b>, la tua password di accesso è <b>$tua_password</b>.<br>
              Sei di sesso <b>$tuo_sesso</b> e ti interessi di <b> "; 
    echo var_dump('$tuoi_interessi'); 
    echo"</b>.<br> Svolgi la professione di <b>$tua_professione</b> e questo è il commento che ci hai lasciato:<br> <b>$tuo_commento_ok</b>";
    $tuoi_interessi=$_GET['interessi']; è la variabile a cui appoggio gli elementi della checkbox

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Dal var_dump() togli gli apici o quello che ci metti dentro viene interpretato come una stringa, non come una variabile.
    Comunque non sarà quello il modo corretto di stampare il dato, è un array, dovrai usare foreach e stampare con un echo il valore corrente di ogni iterazione.

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2019
    Messaggi
    19
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Dal var_dump() togli gli apici o quello che ci metti dentro viene interpretato come una stringa, non come una variabile.
    Comunque non sarà quello il modo corretto di stampare il dato, è un array, dovrai usare foreach e stampare con un echo il valore corrente di ogni iterazione.
    Ho provato col for each ma non mi funziona perché mi dice che c'è una conversione da array a stringa nella riga dove ho scritto il comando echo, questo è il codice:
    codice:
    foreach ($_GET as $K=>$V)
    	{
    		echo "$K: $V<br>";
    	}
    e questo è come ho dichiarato la variabile che contiene i dati della checkbox:
    $tuoi_interessi=$_GET['interessi'];

    Un'altra domanda: se il file notepad all'interno al quale scrivo il codice del form è salvato in estensione .php funziona la comunicazione tra quello stesso file e quello che mostra i dati inviati (il file php al quale vengono inviati i dati il cui indirizzo è indicato nell'attributo action), se invece il file del form lo salvo in estensione .html non funziona la comunicazione col file php. E' corretto? Perché nella consegna dell'esercizio il professore ci dice di creare un file html all'interno del quale creare il form, intende forse che ci sia semplicemente del codice html?
    Ultima modifica di Ale17; 03-01-2020 a 20:16

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Codice PHP:
    foreach( $_GET['interessi'] as $interesse )
    {
        echo 
    $interesse '<br>';


    Il form funziona regolarmente in un file html, il codice php invece necessita di essere scritto in un file con estensione .php, altrimenti non viene interpretato.

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2019
    Messaggi
    19
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Codice PHP:
    foreach( $_GET['interessi'] as $interesse )
    {
        echo 
    $interesse '<br>';


    Il form funziona regolarmente in un file html, il codice php invece necessita di essere scritto in un file con estensione .php, altrimenti non viene interpretato.

    Io vorrei stampare tutti i dati di tutto il form e mi sembra di capire che sia necessario usare il for each scrivendo solo $_GET come ho scritto nel messaggio precedente, ma così facendo non mi riconosce i dati della checkbox, devo fare due foreach differenti inserendo sia il mio codice sia il tuo per ottenere tutti i dati del form stampati?

    Se salvo in estensione html il file del form e in estensione php quello a cui invio i dati tramite il form, dopo avere compilato tutti i campi e premuto sul bottone per inviare i dati del form, mi compare una pagina google con tutte le istruzioni del codice del file php

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Quote Originariamente inviata da Ale17 Visualizza il messaggio
    Io vorrei stampare tutti i dati di tutto il form e mi sembra di capire che sia necessario usare il for each scrivendo solo $_GET come ho scritto nel messaggio precedente
    Questa è una cosa che vuoi fare tu o ti è stata richiesta? Perché non è la procedura corretta.
    Solitamente chi scrive il codice che gestisce i dati ricevuti da un form sa anche come è fatto il form e dunque i nomi dei campi, quindi il codice va scritto di conseguenza prendendo i vari campi in modo corretto col loro nome.

    ma così facendo non mi riconosce i dati della checkbox
    Certo, perché i dati riguardanti i checkbox sono racchiusi in un array, non in una variabile semplice.

    devo fare due foreach differenti inserendo sia il mio codice sia il tuo per ottenere tutti i dati del form stampati?
    Quasi, dovresi anche prevedere dei controlli per escludere la stampa dei campi checkbox nel foreach principale, il che ti fa tornare al discorso del dover conoscere i dati che ti arrivano e la non correttezza di ciclare su tutto l'array $_GET.

    Se salvo in estensione html il file del form e in estensione php quello a cui invio i dati tramite il form, dopo avere compilato tutti i campi e premuto sul bottone per inviare i dati del form, mi compare una pagina google con tutte le istruzioni del codice del file php
    Hai Apache attivo sul pc? Se Apache (o altro webserver) non è attivo, il codice php non viene riconosciuto.

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2019
    Messaggi
    19
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Questa è una cosa che vuoi fare tu o ti è stata richiesta? Perché non è la procedura corretta.
    Solitamente chi scrive il codice che gestisce i dati ricevuti da un form sa anche come è fatto il form e dunque i nomi dei campi, quindi il codice va scritto di conseguenza prendendo i vari campi in modo corretto col loro nome.


    Certo, perché i dati riguardanti i checkbox sono racchiusi in un array, non in una variabile semplice.


    Quasi, dovresi anche prevedere dei controlli per escludere la stampa dei campi checkbox nel foreach principale, il che ti fa tornare al discorso del dover conoscere i dati che ti arrivano e la non correttezza di ciclare su tutto l'array $_GET.


    Hai Apache attivo sul pc? Se Apache (o altro webserver) non è attivo, il codice php non viene riconosciuto.
    Il professore aveva usato un unico foreach come ho scritto io sopra per stampare tutto, quindi credevo fosse giusto così.

    Ho Apache attivo ma rimane il problema

  10. #10
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Quote Originariamente inviata da Ale17 Visualizza il messaggio
    Il professore aveva usato un unico foreach come ho scritto io sopra per stampare tutto, quindi credevo fosse giusto così.
    $_GET è un array, al suo interno hai $_GET['interessi'] che è un altro array, 2 array annidati non si possono scorrere con un unico ciclo foreach.
    Sei sicuro che nella situazione proposta dal professore non ci fossero solo variabili semplici?

    Ho Apache attivo ma rimane il problema
    Assicurati che non ci sia una doppia estensione alla fine del file php, una cosa tipo .php.html o .php.txt o altro, se sei su Windows disabilita l'opzione per nascondere le estensioni dei tipi di file conosciuti, altrimenti non te ne accorgi di questa cosa.

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.