Stampare dati da form

  • Creatore Discussione Creatore Discussione antoooo
  • Data di inizio Data di inizio

antoooo

Nuovo Utente
5 Gen 2022
11
0
1
Ciao a tutti,:)
eccomi di nuovo qui, alla ricerca di soluzioni e consigli.
Da un modulo HTML devo scrivere uno script PHP che stampi in tabella tutte le info che gli sono passate dall'utente.
Ecco ciò che ho scritto io:
PHP:
<?php   
                        
                        // Recupero i valori inseriti nel form
                        $nome=trim($_POST['nome']);
                        $passwordget=trim($_POST['password']);
                        $password=sha1(md5(sha1($passwordget)));
                        $check_1=isset($_POST['HTML'])?"si":"no";
                        $check_2=isset($_POST['immagini'])?"si":"no";
                        $check_3=isset($_POST['collegamenti'])?"si":"no";
                        $check_4=isset($_POST['multimedia'])?"si":"no";
                        $check_5=isset($_POST['XHTML'])?"si":"no";
                        
                    if(isset($_POST['Invia!']))
                    {            //verifico che sia stato premuto il submit
                        
                    }
                            // compilo una tabella combinando i dati recuperati dal form
                            print("<table border='1' cellspacing='2' cellpadding='0'>");
                            print("<th colspan='7' align='center'><b>INFORMAZIONI INVIATE</b></th>");
                            print("<tr><td>Nome</td><td> Password</td><td>Informazioni su HTML</td><td>Immagini</td><td>Collegamenti e URL</td><td>Oggetti multimediali</td><td>XHTML versione 1.0</td> </tr>");
                            print("<tr><td>$nome</td><td>$password</td><td>$check_1</td><td>$check_2</td><td>$check_3</td><td>$check_4</td><td>$check_5</td></tr>");
                            print("</table>");

                    ?>
questo invece è il modulo
HTML:
<html>
    <head>
        <title>INFO</title>
    </head>
    <body>
            
                    <table align=center border><tr><td>
                        <center>
                            <h1>Scelta Utente</h1>
                        </center>

                            <hr>
                                <form method="post" action="invia.php">

                                    Nome: <input type="text" name="nome" size="15"><br>
                                    Password: <input type="password" name="password" size="8"><p>
        
        
                                    Quali argomenti preferiresti approfondire:<br>
                                    <input type="checkbox" name="HTML" value="HTML"> Informazioni su HTML <br>
                                    <input type="checkbox" name="immagini" value="immagini"> Immagini <br>
                                    <input type="checkbox" name="collegamenti" value="collegamenti"> Collegamenti e URL <br>
                                    <input type="checkbox" name="multimedia" value="multimedia"> Oggetti multimediali <br>
                                    <input type="checkbox" name="XHTML" value="XHTML"> XHTML versione 1.0
                                <hr>


                            <center>
                                        <input type="submit" value="Invia!">
                                        <input type="reset" value="Cancella tutto!">
                            </center>

                                </form>
            </table>
    </body>
</html>

Il codice sembra funzionare e stampa esattamente ciò che voglio, però vorrei un vostro consiglio ed eventuali suggerimenti.
Grazie a tutti dell'attenzione
 
dovresti capire un po' meglio i suggerimenti al tuo precedente post (molto simile a questo)
ed applicarlo pari pari, altrimenti continui a fare male i COMPITI SCOLASTICI
ciao
 
  • Like
Reactions: MarcoGrazia
Ciao, ho ricontrollato il tuo codice (per ora solo l'HTML) col mio browser ed anche se, in effetti, visualizza il form, mi da parecchi errori di forma che, magari all'inizio non danno problemi, ma andando avanti possono darne. Per la maggior parte si tratta di tag non chiusi. Anche nell'HTML, come per il PHP, è importante indentare bene il testo: esistono tag (padri) che, al loro interno, possiedono 3, 4, 5, 6 tag figli e se non indenti bene il testo fatichi parecchio a trovare il tag non chiuso: quando hai aperto il tag TABLE, ad esempio, sulla stessa riga hai aperto anche TR e TD; TR è figlio di TABLE e quindi andrebbe su un'altra riga e indentato; stessa cosa per TD (figlio di TR); inoltre ti consiglio di chiudere i tag subito dopo averli aperti, poi ti posizioni tra i due e continui a scrivere: in questo modo non ti dimenticherai mai di chiuderli.
Di seguito il codice corretto:

HTML:
<html>
<head>
    <title>INFO</title>
</head>
<body>
     <table align="center" border="1">
         <tr>
             <td>
                 <center>
                     <h1>Scelta Utente</h1>
                 </center>
                 <hr>
                 <form method="post" action="invia.php">
                     Nome: <input type="text" name="nome" size="15"><br>
                     Password: <input type="password" name="password" size="8">
                
                     Quali argomenti preferiresti approfondire:<br>
                     <input type="checkbox" name="HTML" value="HTML"> Informazioni su HTML <br>
                     <input type="checkbox" name="immagini" value="immagini"> Immagini <br>
                     <input type="checkbox" name="collegamenti" value="collegamenti"> Collegamenti e URL <br>
                     <input type="checkbox" name="multimedia" value="multimedia"> Oggetti multimediali <br>
                     <input type="checkbox" name="XHTML" value="XHTML"> XHTML versione 1.0
                     <hr>
                
                     <center>
                         <input type="submit" value="Invia!">
                         <input type="reset" value="Cancella tutto!">
                     </center>
                 </form>
             </td>
        </tr>
    </table>
</body>
</html>


Zorro
 
Ultima modifica:
In fondo alla tabella inserisci questo:
HTML:
<a href="#" onclick="window.print();">STAMPA LA PAGINA </a>
ed hai risolto.

Ma davvero a sQuola ti danno quei compiti?
Senza un controllo sull'ingresso dei dati dal form?
Senza parlare di traformazione in PDF o DOC dei dati tabellati?
 
scusate il ritardo nella risposta. Allora ho capito che ho svolto l'esercizio davvero male, il mio problema è che non ho ben capito come struttutuare il codice. Ho provato un sacco di volte, gli esempi che ho non sono esaustivi e quindi ho cercato di risolvere da me, con le conoscenze che ho, facendo ovviamente un gran pasticcio.
Vi ringrazio per la pazienza che avete, ma se qualcuno potrebbe aiutarmi a capire bene come fare vi sarei davvero grata.
Dopo aver scritto il modulo, nel codice php, come si comicia?
Faccio prima un recupero dei valori inseriti nel form e poi? A che livello faccio i controlli? Quando inserisco la verifica del submit?
 
Ciao, come ti dicevo io ho controllato solo l'HTML dove ho trovata qualche errore di forma (dipende anche dal browser che usi: il mio, ad esempio, se dimentico di chiudere un tag, tutto il testo successivo lo mette in rosso) basta seguire quei semplici consigli che ti ho dato (in particolare quello di chiuderei tag subito dopo .averli aperti).
Al PHP ho solo dato una breve occhiata: il primo consiglio che ti posso dare è di usare, solo in fase di progettazione, il metodo GET invece di POST; con GET infatti puoi vedere, sulla barra degli indirizzi del browser, i dati che vengono passati e, soprattutto, se vengono passati (che è già un primo controllo); io sono un autodidatta, nemmeno troppo aggiornato, ma non ho mai fatto la verifica del submit; dopo aver recuperato i dati passati, con una serie di if nidificati comincio i controlli dei vari campi (in genere io uso le espressioni regolari per validare i dati) dopodiché, se va tutto bene, mando all'utente un messaggio di ok. Se vuoi, e se hai un po' di pazienza, ti posso riscrivere ,come esempio, lo script PHP con tutti i controlli. Fammi sapere; spero di esserti stato d'aiuto. Ciao

Zorro
 
Ciao, come ti dicevo io ho controllato solo l'HTML dove ho trovata qualche errore di forma (dipende anche dal browser che usi: il mio, ad esempio, se dimentico di chiudere un tag, tutto il testo successivo lo mette in rosso) basta seguire quei semplici consigli che ti ho dato (in particolare quello di chiuderei tag subito dopo .averli aperti).
Al PHP ho solo dato una breve occhiata: il primo consiglio che ti posso dare è di usare, solo in fase di progettazione, il metodo GET invece di POST; con GET infatti puoi vedere, sulla barra degli indirizzi del browser, i dati che vengono passati e, soprattutto, se vengono passati (che è già un primo controllo); io sono un autodidatta, nemmeno troppo aggiornato, ma non ho mai fatto la verifica del submit; dopo aver recuperato i dati passati, con una serie di if nidificati comincio i controlli dei vari campi (in genere io uso le espressioni regolari per validare i dati) dopodiché, se va tutto bene, mando all'utente un messaggio di ok. Se vuoi, e se hai un po' di pazienza, ti posso riscrivere ,come esempio, lo script PHP con tutti i controlli. Fammi sapere; spero di esserti stato d'aiuto. Ciao

Zorro
Ciao, se hai voglia di aiutarmi sono disponibile ad imparare. Se magari hai voglia, vorrei comiciare con il capire come strutturare al meglio il codice, magari con qualche esercizio semplice. La sintassi l'ho capita ma non riesco ad applicarla al meglio. Ho riscritto il codice inserendo dei controlli, ma mi vengono fuori sempre dei notice di indice non definito. Se hai voglia e pazienza son qui. Grazie mille. ps: vorrei provare a far da me l'esercizio, non mi piace la "pappa pronta". Come si suol dire "sbagliando si impara".
 
Magari nella progettazione pratica non ha molto senso, ma era un esercizio, che in ogni caso ho risolto.
Grazie a tutti dell'attenzione e per i suggerimenti.
Come devo fare per chiudere la discussione?
 
Ciao Zorro, spero sia possibile riprendere questo esercizio. Ho scritto lo script di Antooo, salvato come php e poi fatto eseguire con XAMPP ma questo è il risultato:
1712622499491.png


come posso fare per correggere lo script? grazie mille
 
Ciao Enzo71,
bisognerebbe vedere come hai impostato il form: da quei due messaggi di errore si evince che c'è un problema sui due campi di input; oltretutto il warning parla di array: infatti, una volta passati, i dati vengono inseriti in un array superglobale ($_POST o $_GET a seconda del metodo scelto per passare i dati) probabilmente avrai sbagliato a definirli ma, come ho detto, bisognerebbe vedere gli script. A presto

Zorro
 
ciao, non speravo in una risposta così rapida! Lo script della parte in PHPè quello che aveva suggerito antooo, che cmq ripropongo:
<?php

// Recupero i valori inseriti nel form
$nome=trim($_POST['nome']);
$passwordget=trim($_POST['password']);
$password=sha1(md5(sha1($passwordget)));
$check_1=isset($_POST['HTML'])?"si":"no";
$check_2=isset($_POST['immagini'])?"si":"no";
$check_3=isset($_POST['collegamenti'])?"si":"no";
$check_4=isset($_POST['multimedia'])?"si":"no";
$check_5=isset($_POST['XHTML'])?"si":"no";

if(isset($_POST['Invia!']))
{ //verifico che sia stato premuto il submit

}
// compilo una tabella combinando i dati recuperati dal form
print("<table border='1' cellspacing='2' cellpadding='0'>");
print("<th colspan='7' align='center'><b>INFORMAZIONI INVIATE</b></th>");
print("<tr><td>Nome</td><td> Password</td><td>Informazioni su HTML</td><td>Immagini</td><td>Collegamenti e URL</td><td>Oggetti multimediali</td><td>XHTML versione 1.0</td> </tr>");
print("<tr><td>$nome</td><td>$password</td><td>$check_1</td><td>$check_2</td><td>$check_3</td><td>$check_4</td><td>$check_5</td></tr>");
print("</table>");

?>

Mentre la parte (correttissima) in Html è quella che avevi suggerito tu in questa discussione. Grazie in ogni caso!
 
Scusate,
ciao, non speravo in una risposta così rapida! Lo script della parte in PHPè quello che aveva suggerito antooo, che cmq ripropongo:
<?php

// Recupero i valori inseriti nel form
$nome=trim($_POST['nome']);
$passwordget=trim($_POST['password']);
$password=sha1(md5(sha1($passwordget)));
$check_1=isset($_POST['HTML'])?"si":"no";
$check_2=isset($_POST['immagini'])?"si":"no";
$check_3=isset($_POST['collegamenti'])?"si":"no";
$check_4=isset($_POST['multimedia'])?"si":"no";
$check_5=isset($_POST['XHTML'])?"si":"no";

if(isset($_POST['Invia!']))
{ //verifico che sia stato premuto il submit

}
// compilo una tabella combinando i dati recuperati dal form
print("<table border='1' cellspacing='2' cellpadding='0'>");
print("<th colspan='7' align='center'><b>INFORMAZIONI INVIATE</b></th>");
print("<tr><td>Nome</td><td> Password</td><td>Informazioni su HTML</td><td>Immagini</td><td>Collegamenti e URL</td><td>Oggetti multimediali</td><td>XHTML versione 1.0</td> </tr>");
print("<tr><td>$nome</td><td>$password</td><td>$check_1</td><td>$check_2</td><td>$check_3</td><td>$check_4</td><td>$check_5</td></tr>");
print("</table>");

?>

Mentre la parte (correttissima) in Html è quella che avevi suggerito tu in questa discussione. Grazie in ogni caso!
Risolto problema, purtroppo ne è sorto subito un altro relativamente all'ultimo esercizio in programma....
 
Ecco il nuovo esercizio:
1712700425423.jpeg

Finora ho solo scritto lo script del modulo html:
<!DOCTYPE html>
<html>
<head>
<title>Modulo Informazioni Personali</title>
</head>
<body>

<h2>Informazioni Personali</h2>
<form method="post" action="elabora_informazioni.php">
<label for="cognome">Cognome:</label>
<input type="text" name="cognome" id="cognome" required><br><br>

<label for="nome">Nome:</label>
<input type="text" name="nome" id="nome" required><br><br>

<label for="data_nascita">Data di nascita:</label>
<input type="date" name="data_nascita" id="data_nascita" required><br><br>

<label for="luogo_nascita">Luogo di nascita:</label>
<input type="text" name="luogo_nascita" id="luogo_nascita" required><br><br>

<label for="sesso">Sesso:</label><br>
<input type="radio" name="sesso" id="sesso_maschio" value="Maschio" required>
<label for="sesso_maschio">Maschio</label>
<input type="radio" name="sesso" id="sesso_femmina" value="Femmina" required>
<label for="sesso_femmina">Femmina</label><br><br>

<h3>Indirizzo</h3>
<label for="via">Via:</label>
<input type="text" name="via" id="via" required><br><br>

<label for="numero">Numero:</label>
<input type="text" name="numero" id="numero" required><br><br>

<label for="cap">C.A.P.:</label>
<input type="text" name="cap" id="cap" required><br><br>

<label for="citta">Città:</label>
<input type="text" name="citta" id="citta" required><br><br>

<label for="provincia">Provincia:</label>
<input type="text" name="provincia" id="provincia" required><br><br>

<input type="submit" name="submit" value="Invia">
<input type="submit" name="submit" value="Cancella">
</form>

</body>
</html>
<!DOCTYPE html>
<html>
<head>
<title>Elaborazione Informazioni Personali</title>
</head>
<body>
</html>

ma le due tabelle di dati non vengono affiancate. E poi c'è la parte in php da scrivere per importare il form... Purtroppo fra studio,lavoro e figli non ho il tempo ne la lucidità per studiare bene questi argomenti. Vi ringrazio fin d'ora per l'aiuto che potrete ancora darmi
 
Ciao Enzo,
è stato un caso: qualche giorno fa ho disinstallato una delle mie caselle di posta, dopo vari tentativi sono riuscito a reinstallarla solo ieri e, scaricando la posta, ho visto che c'era una nuova discussione. Ma bando alle ciance, come diceva sempre mio nonno, e veniamo a noi.
Innanzi tutto io consiglio sempre, con i form, in fase di progettazione, di impostare il method a GET in quanto, a diferenza di POST, permette di visualizzare, sulla barra degli indirizzi del bowser, i dati passati; inoltre ti ringrazio di aver riaperto questa discussione perché mi hai dato modo di rendermi conto di un mio errore davvero imperdonabile (contrariamente a quello che faccio di solito non l'avevo testato): quando passi dati multipli, come le checkbox, questi, essendo più di uno, vengono inseriti in un array per cui devi mettere, nell specifica name di tutte le checkbox il valore argomenti[] (occhio alle parentesi quadre aperta e chiusa, indicano appunto che si tratta di un array). Per quanto riguarda invece lo script PHP vedo che fai dei controlli che, a mio avviso, potresti anche evitare; io sono un autodidatta quindi, può darsi che mi sia 'perso' qualcosa, ma, pur avendo spesso a che fare con i form, non li ho mai utilizzati; ho provato a riscrivere tutto e (tranquillo) l'ho pure testato, provo a mandartelo giusto come spunto

HTML:
<html>
<head>
    <title>INFO</title>
</head>
<body>
     <table align="center" border="1">
         <tr>
             <td>
                 <center>
                     <h1>Scelta Utente</h1>
                 </center>
                 <hr>
                 <form method="get" action="contr2.php">
                     Nome: <input type="text" name="nome" size="15"><br>
                     Password: <input type="password" name="password" size="8">
                
                     Quali argomenti preferiresti approfondire:<br>
                     <input type="checkbox" name="argomenti[]" value="Informazioni su HTML">Informazioni su HTML<br>
                     <input type="checkbox" name="argomenti[]" value="Immagini">Immagini<br>
                     <input type="checkbox" name="argomenti[]" value="Collegamenti e URL">Collegamenti e URL<br>
                     <input type="checkbox" name="argomenti[]" value="Oggetti multimediali">Oggetti multimediali<br>
                     <input type="checkbox" name="argomenti[]" value="XHTML versione 1.0">XHTML versione 1.0<br><hr>

                     <hr>
                
                     <center>
                         <input type="submit" value="Invia!">
                         <input type="reset" value="Cancella tutto!">
                     </center>
                 </form>
             </td>
        </tr>
    </table>
</body>
</html>

e lo script PHP

PHP:
<?php
$nome=$_GET['nome'];
$password=$_GET['password'];

$argomenti=$_GET['argomenti'];
echo '<h2>Informazioni inviate</h2>';
echo '<b>nome utente: </b>'.$nome.'<br><b>password: </b>'.$password.'<br><br>';
echo '<h3>argomenti passati: </h3>';
$n_ele=count($argomenti);
//ciclo l'array
for ($ind=0;$ind<$n_ele;$ind++) {
     echo $argomenti[$ind].'<br>';
}
?>

PS Intanto do un'occhiata al tuo ultimo post

Zorro
 
Ciao Zorro, non ho parole per ringraziarti. Raro trovare, anche fra i propri conoscenti ed amici, qualcuno che prenda a cuore il problema di un perfetto sconosciuto! "Purtroppo", a 50 anni suonati, mi sono messo in testa di finire qualcosa iniziato quasi trenta anni fa, ma capirai le difficoltà di ricominciare... come dicevo nel precedente post, mi manca soltanto l'esercizio proposto per superare la parte del programma di Fondamenti relativo alla programmazione ma risulto arenato in questa ultima difficoltà...
 
  • Like
Reactions: zorro

Discussioni simili