Aiutamici Forum
Benvenuto Ospite Cerca | Topic Attivi | Utenti | | Log In | Registra

Form HTML, per ecofive Opzioni
simo95
Inviato: Monday, December 06, 2010 3:35:46 PM

Rank: AiutAmico

Iscritto dal : 12/4/2008
Posts: 2,008
Ciao a tutti ragazzi!
Sto programmando in php per il mio prof. un software per la gestione dei test a scelta multipla; Ogni test comprende 20 quesiti. I dati vengono immessi tramite form html, elaborati e inseriti in un DB MySQL.
Per ora ho due problemi:

1) Devo scrivere per 20 volte (il numero dei quesiti) lo stesso codice HTML del form, modificando solamente volta per volta un progressivo che va ad identificarmi in maniera univoca ogni campo. Mi chiedevo quindi se ci fosse un qualche modo per far si che questo progressivo venga immesso automaticamente? Oppure c'è qualche altra soluzione? Vi posto uno spezzone di codice per far comprendere quello che intendo:

Code:
<form id=immissione name="immissione" action="elabora.php" method="post">
<fieldset>
  <legend>1° quesito</legend>
  <br>
  <label for="questiontest">Testo della domanda</label>
  <textarea name="questiontest" rows="8">
  </textarea>
  <p>
  <label for="risp1">Risposta n. 1</label>
  <textarea id"risp1" name="risp1">(1)
  </textarea>
  <label for="true">Corretta</label><input id="true1" name="true" type="radio">
  <p>
  <label for="risp2">Risposta n. 2</label>
  <textarea id"risp2" name="risp2">(2)
  </textarea>
  <label for="true">Corretta</label><input id="true2" name="true" type="radio">
  <p>
  <label for="risp3">Risposta n. 3</label>
  <textarea id"risp3" name="risp3">(3)
  </textarea>
  <label for="true">Corretta</label><input id="true3" name="true" type="radio">
  <p>
  <label for="risp4">Risposta n. 4</label>
  <textarea id"risp4" name="risp4">(4)
  </textarea>
  <label for="true">Corretta</label><input id="true4" name="true" type="radio">
  <p>
  <label for="risp5">Risposta n. 5</label>
  <textarea id"risp5" name="risp5">(5)
  </textarea>
  <label for="true">Corretta</label><input id="true5" name="true" type="radio">
  <p>
  <textarea id"risptrue" name="risptrue" style="display:none;">
  </textarea>
</fieldset>
<fieldset>
  <legend>2° quesito</legend>
  <br>
  <label for="questiontest">Testo della domanda</label>
  <textarea name="questiontest2" rows="8">
  </textarea>
  <p>
  <label for="risp1">Risposta n. 1</label>
  <textarea id"risp1(2)" name="risp1(2)">(1)
  </textarea>
  <label for="true">Corretta</label><input id="true1(2)" name="true(2)" type="radio">
  <p>
  <label for="risp2">Risposta n. 2</label>
  <textarea id"risp2(2)" name="risp2(2)">(2)
  </textarea>
  <label for="true">Corretta</label><input id="true2(2)" name="true(2)" type="radio">
  <p>
  <label for="risp3">Risposta n. 3</label>
  <textarea id"risp3(2)" name="risp3(2)">(3)
  </textarea>
  <label for="true">Corretta</label><input id="true3(2)" name="true(2)" type="radio">
  <p>
  <label for="risp4">Risposta n. 4</label>
  <textarea id"risp4(2)" name="risp4(2)">(4)
  </textarea>
  <label for="true">Corretta</label><input id="true4(2)" name="true(2)" type="radio">
  <p>
  <label for="risp5">Risposta n. 5</label>
  <textarea id"risp5(2)" name="risp5(2)">(5)
  </textarea>
  <label for="true">Corretta</label><input id="true5(2)" name="true(2)" type="radio">
  <p>
  <textarea id"risptrue" name="risptrue(2)" style="display:none;">
  </textarea>
</fieldset>


...

</form>


(Come potete notare il progressivo è il numero che si trova dentro alle parentesi tonde in alcuni campi nel secondo fieldset non il numero dentro alle parentesi tonde all'interno dei tag <textarea> e </textarea>)

Il risultato finale, con gli stili applicati, è questo:


2) Inserendo il campo <textarea> mi vengono automaticamente inseriti due spazi all'interno. C'è qualche modo per eliminarli?

Grazie mille.

Ciao!
Sponsor
Inviato: Monday, December 06, 2010 3:35:46 PM

 
wubullo
Inviato: Monday, December 06, 2010 4:20:02 PM

Rank: AiutAmico

Iscritto dal : 12/9/2009
Posts: 345
Ciao simo95!

Purtroppo in PHP sono una vera schiappa... Però hai provato con $count?

Code:
$count = 1;


Poi, nel markup:

Code:
  <label for="risp<?php echo '$count'; ?>">Risposta n. <?php echo "$count"; ?></label>
  <textarea id"risp<?php echo "$count"; ?>" name="risp<?php echo "$count"; ?>">(<?php echo "$count"; ?>)
  </textarea>
  <label for="true">Corretta</label>


Per la seconda questione (quella degli spazi vuoti) non saprei dirti con certezza... Una domanda (che però magari non c'entra): che sono quei <p> che compaiono alla fine di ogni <textarea> che tra l'altro rimangono aperti?

A presto!


P.S.: scusate l'intromissione, vedo solo adesso dal titolo che il destinatario era l'amico ecofive... d'oh!
ecofive
Inviato: Monday, December 06, 2010 5:03:19 PM

Rank: AiutAmico

Iscritto dal : 6/20/2008
Posts: 7,111
Il quale Ecofive ti passa molto volentieri la palla, caro Wubullo: oggi sono stressato (oltre a non capir nulla di PHP ...).

Ciao.
simo95
Inviato: Monday, December 06, 2010 5:14:26 PM

Rank: AiutAmico

Iscritto dal : 12/4/2008
Posts: 2,008
wubullo ha scritto:
Ciao simo95!

Purtroppo in PHP sono una vera schiappa... Però hai provato con $count?

Code:
$count = 1;


Poi, nel markup:

Code:
  <label for="risp<?php echo '$count'; ?>">Risposta n. <?php echo "$count"; ?></label>
  <textarea id"risp<?php echo "$count"; ?>" name="risp<?php echo "$count"; ?>">(<?php echo "$count"; ?>)
  </textarea>
  <label for="true">Corretta</label>


Per la seconda questione (quella degli spazi vuoti) non saprei dirti con certezza... Una domanda (che però magari non c'entra): che sono quei <p> che compaiono alla fine di ogni <textarea> che tra l'altro rimangono aperti?

A presto!


P.S.: scusate l'intromissione, vedo solo adesso dal titolo che il destinatario era l'amico ecofive... d'oh!


Grazie per la risposta. Ho specificato nel titolo eco perchè so che è molto competente in materia. E dato che è da tempo che non gironzolo più per il forum, non conosco i più "nuovi" :D

Comuqnue la funzione count() non serve a nulla perchè si riferisce ai valori presenti in un array.
Al massimo si potrebbe fare un ciclo:

for ($indice=1; $indice==20; ++$indice) {

//però qui non saprei come impostare il ciclo...

}

Commento il ciclo:

Il valore iniziale di $indice è 1. Il ciclo poi continua ad aumentarne il valore (++$indice) finchè esso avrà valore 20 , quindi il ciclo termina. Però che istruzioni dare? Dovrei impostarlo in modo da contare il numero del fieldset del form e di conseguenza dare il valore...Però come si fa??? A sto punto mi conviene mettermi di buona lena e scriverli quesito per quesito direttamente in html...

2) I tag <p> gli ho usati per fare un ritorno a capo. Controllerò se sono loro la causa, anche se non credo.

Aspetto una vostra risposta!
Ciao eco! Ciao wubullo!

Grazie

wubullo
Inviato: Monday, December 06, 2010 5:22:48 PM

Rank: AiutAmico

Iscritto dal : 12/9/2009
Posts: 345
simo95 ha scritto:
Commento il ciclo:

Il valore iniziale di $indice è 1. Il ciclo poi continua ad aumentarne il valore (++$indice) finchè esso avrà valore 20 , quindi il ciclo termina. Però che istruzioni dare? Dovrei impostarlo in modo da contare il numero del fieldset del form e di conseguenza dare il valore...Però come si fa???


Purtroppo conosco solo la teoria, ma non la pratica... Però forse tu riesci a trarre qualcosa di buono da questo mio vago ricordo:

Code:
$indice = 1;
while ($indice <= 20) {
echo "$indice";
++$indice;
}


Il ciclo continua fino a quando la condizione while è valida (cioè fino a che il numero progressivo è minore o uguale a 20); dopodiché, si ferma.

Non aggiungo altro, perché mi sto avventurando in un terreno che conosco poco.

Se vuoi, posso pensare a una soluzione in Javascript (con cui ho un po' più di confidenza).

Alla prossima!
simo95
Inviato: Monday, December 06, 2010 5:24:55 PM

Rank: AiutAmico

Iscritto dal : 12/4/2008
Posts: 2,008
wubullo ha scritto:
simo95 ha scritto:
Commento il ciclo:

Il valore iniziale di $indice è 1. Il ciclo poi continua ad aumentarne il valore (++$indice) finchè esso avrà valore 20 , quindi il ciclo termina. Però che istruzioni dare? Dovrei impostarlo in modo da contare il numero del fieldset del form e di conseguenza dare il valore...Però come si fa???


Purtroppo conosco solo la teoria, ma non la pratica... Però forse tu riesci a trarre qualcosa di buono da questo mio vago ricordo:

Code:
$indice = 1;
while ($indice <= 20) {
echo "$indice";
++$indice;
}


Il ciclo continua fino a quando la condizione while è valida (cioè fino a che il numero progressivo è minore o uguale a 20); dopodiché, si ferma.

Non aggiungo altro, perché mi sto avventurando in un terreno che conosco poco.

Se vuoi, posso pensare a una soluzione in Javascript (con cui ho un po' più di confidenza).

Alla prossima!


Il ciclo che hai scritto è correttissimo ed equivalente a quello che avevo riportato (tranne l' echo), grazie.

Se vuoi trovare soluzione con JS ti lascio la strada libera (sono io adesso l'ignorante in materia :D)

Grazie
wubullo
Inviato: Monday, December 06, 2010 5:31:14 PM

Rank: AiutAmico

Iscritto dal : 12/9/2009
Posts: 345
simo95 ha scritto:
Se vuoi trovare soluzione con JS ti lascio la strada libera (sono io adesso l'ignorante in materia :D)


Ci provo, ma non posso garantire...

Solo per avere più chiaro il concetto: puoi mettere in rosso i valori numerici che bisogna incrementare? (questo è appunto il tuo seconod fieldset)

Commenta:
<fieldset>
<legend>2° quesito</legend>
<br>
<label for="questiontest">Testo della domanda</label>
<textarea name="questiontest2" rows="8">
</textarea>
<p>
<label for="risp1">Risposta n. 1</label>
<textarea id"risp1(2)" name="risp1(2)">(1)
</textarea>
<label for="true">Corretta</label><input id="true1(2)" name="true(2)" type="radio">
<p>
<label for="risp2">Risposta n. 2</label>
<textarea id"risp2(2)" name="risp2(2)">(2)
</textarea>
<label for="true">Corretta</label><input id="true2(2)" name="true(2)" type="radio">
<p>
<label for="risp3">Risposta n. 3</label>
<textarea id"risp3(2)" name="risp3(2)">(3)
</textarea>
<label for="true">Corretta</label><input id="true3(2)" name="true(2)" type="radio">
<p>
<label for="risp4">Risposta n. 4</label>
<textarea id"risp4(2)" name="risp4(2)">(4)
</textarea>
<label for="true">Corretta</label><input id="true4(2)" name="true(2)" type="radio">
<p>
<label for="risp5">Risposta n. 5</label>
<textarea id"risp5(2)" name="risp5(2)">(5)
</textarea>
<label for="true">Corretta</label><input id="true5(2)" name="true(2)" type="radio">
<p>
<textarea id"risptrue" name="risptrue(2)" style="display:none;">
</textarea>
</fieldset>


Ciao!
simo95
Inviato: Monday, December 06, 2010 5:34:03 PM

Rank: AiutAmico

Iscritto dal : 12/4/2008
Posts: 2,008
wubullo ha scritto:
simo95 ha scritto:
Se vuoi trovare soluzione con JS ti lascio la strada libera (sono io adesso l'ignorante in materia :D)


Ci provo, ma non posso garantire...

Solo per avere più chiaro il concetto: puoi mettere in rosso i valori numerici che devono incrementare? (questo è appunto il tuo seconod fieldset)

Commenta:
<fieldset>
<legend>2° quesito</legend>
<br>
<label for="questiontest">Testo della domanda</label>
<textarea name="questiontest2" rows="8">
</textarea>
<p>
<label for="risp1">Risposta n. 1</label>
<textarea id"risp1(2)" name="risp1(2)">(1)
</textarea>
<label for="true">Corretta</label><input id="true1(2)" name="true(2)" type="radio">
<p>
<label for="risp2">Risposta n. 2</label>
<textarea id"risp2(2)" name="risp2(2)">(2)
</textarea>
<label for="true">Corretta</label><input id="true2(2)" name="true(2)" type="radio">
<p>
<label for="risp3">Risposta n. 3</label>
<textarea id"risp3(2)" name="risp3(2)">(3)
</textarea>
<label for="true">Corretta</label><input id="true3(2)" name="true(2)" type="radio">
<p>
<label for="risp4">Risposta n. 4</label>
<textarea id"risp4(2)" name="risp4(2)">(4)
</textarea>
<label for="true">Corretta</label><input id="true4(2)" name="true(2)" type="radio">
<p>
<label for="risp5">Risposta n. 5</label>
<textarea id"risp5(2)" name="risp5(2)">(5)
</textarea>
<label for="true">Corretta</label><input id="true5(2)" name="true(2)" type="radio">
<p>
<textarea id"risptrue" name="risptrue(2)" style="display:none;">
</textarea>
</fieldset>


Ciao!


Nel terzo fieldset nella parentesi ci sarà un 3: ....(3)....

Grazie mille

Ciao
wubullo
Inviato: Monday, December 06, 2010 5:36:31 PM

Rank: AiutAmico

Iscritto dal : 12/9/2009
Posts: 345
OK, faccio un po' di esperimenti. Ti faccio sapere!

A presto
simo95
Inviato: Thursday, December 09, 2010 3:07:25 PM

Rank: AiutAmico

Iscritto dal : 12/4/2008
Posts: 2,008
Grazie wubullo, ho trovato la soluzione (in php).

Ecco il codice (grazie a Knaz che mi ha finito di impostare il ciclo for, http://hackerforum.globalfreeforum.com/viewtopic.php?f=48&t=14199 ):

Code:
<?php
    $nQuesiti=20;
    for($i=1; $i<=$nQuesiti; $i++)
    {
?>
    <fieldset>
    <legend><?php echo $i; ?>° quesito</legend>
    <br>
    <label for="questiontest_<?php echo $i; ?>">Testo della domanda</label>
    <textarea name="questiontest_<?php echo $i; ?>" rows="8">
    </textarea>
    <p>
    <label for="risp1">Risposta n. 1</label>
    <textarea id="risp1_<?php echo $i; ?>" name="risp1_<?php echo $i; ?>">(1)
    </textarea>
    <label for="true">Corretta</label><input id="true1_<?php echo $i; ?>" name="true_<?php echo $i; ?>" type="radio">
    <p>
    <label for="risp2_<?php echo $i; ?>">Risposta n. 2</label>
    <textarea id="risp2_<?php echo $i; ?>" name="risp2_<?php echo $i; ?>">(2)
    </textarea>
    <label for="true">Corretta</label><input id="true2_<?php echo $i; ?>" name="true_<?php echo $i; ?>" type="radio">
    <p>
    <label for="risp3_<?php echo $i; ?>">Risposta n. 3</label>
    <textarea id="risp3_<?php echo $i; ?>" name="risp3_<?php echo $i; ?>">(3)
    </textarea>
    <label for="true">Corretta</label><input id="true3_<?php echo $i; ?>" name="true_<?php echo $i; ?>" type="radio">
    <p>
    <label for="risp4_<?php echo $i; ?>">Risposta n. 4</label>
    <textarea id="risp4_<?php echo $i; ?>" name="risp4_<?php echo $i; ?>">(4)
    </textarea>
    <label for="true">Corretta</label><input id="true4_<?php echo $i; ?>" name="true_<?php echo $i; ?>" type="radio">
    <p>
    <label for="risp5_<?php echo $i; ?>">Risposta n. 5</label>
    <textarea id="risp5_<?php echo $i; ?>" name="risp5_<?php echo $i; ?>">(5)
    </textarea>
    <label for="true">Corretta</label><input id="true5_<?php echo $i; ?>" name="true_<?php echo $i; ?>" type="radio">
    <p>
    <textarea id="risptrue_<?php echo $i; ?>" name="risptrue_<?php echo $i; ?>" style="display:none;">
    </textarea>
    </fieldset>
<?php
    }
?>


Ciao
wubullo
Inviato: Monday, December 13, 2010 1:44:58 AM

Rank: AiutAmico

Iscritto dal : 12/9/2009
Posts: 345
Ciao simo95!

Ottima soluzione! Sono contento che tu sia riuscito a risolvere con PHP: avevo cominciato a pensare a una possibile istruzione Javascript, ma non riuscivo a venirne fuori... d'oh!

Ancora congratulazioni e a presto!

seess
Inviato: Sunday, February 06, 2011 2:51:25 AM
Rank: Newbie

Iscritto dal : 2/6/2011
Posts: 6
simo95 ha scritto:




Il ciclo che hai scritto è correttissimo ed equivalente a quello che avevo riportato (tranne l' echo), gr4zie.

Se vuoi trovare soluzione con JS ti lascio la strada libera (sono io adesso l'ignorante in materia :D)

Grazie


questa è una buona soluzione. grazie
Utenti presenti in questo topic
Guest


Salta al Forum
Aggiunta nuovi Topic disabilitata in questo forum.
Risposte disabilitate in questo forum.
Eliminazione tuoi Post disabilitata in questo forum.
Modifica dei tuoi post disabilitata in questo forum.
Creazione Sondaggi disabilitata in questo forum.
Voto ai sondaggi disabilitato in questo forum.

Main Forum RSS : RSS

Aiutamici Theme
Powered by Yet Another Forum.net versione 1.9.1.8 (NET v2.0) - 3/29/2008
Copyright © 2003-2008 Yet Another Forum.net. All rights reserved.