Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
PHP - acquisire n valori da un unico form
Forum - PHP - acquisire n valori da un unico form

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
giocala88 (Normal User)
Expert


Messaggi: 248
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 20:01
Venerdì, 12/02/2010
Salve ragazzi ho un piccolo problema.
Ho postato 2 funzioni: una stampa 5 form di inserimento, la seconda dovrebbe acquisire i valori inseriti nel form. Qui nasce proprio il problema, come faccio a far acquisire 5 valori differenti con $_POST ???

Codice sorgente - presumibilmente PHP

  1. <?php
  2.  
  3. // funzione che visualizza 5 form
  4. function print_form_giocatore() {
  5.  
  6.        
  7. ?>
  8.  
  9.   <br/>
  10.   <?php
  11.         // ciclo per 5 volte, num max e min, il form di inserimento giocatori
  12.         for($i = 1; $i <= 5; $i++) {
  13.   ?>
  14.   <br/>
  15.   <form name="form_giocatore" method="post" action="">
  16.     <label><?php echo "<font face='verdana' color='black' size ='3'> <b>GIOCATORE</b>"; ?><br/>
  17.     <input name="nome" type="text" /> <?php echo "<font face='verdana' color='black' size ='2'> nome"; ?><br/>
  18.     </label>
  19.     <label>
  20.     <input name="cognome" type="text" /> <?php echo "<font face='verdana' color='black' size ='2'> cognome"; ?><br/>
  21.     </label>
  22.     <label>
  23.     <input name="gg" type="text" size="1" maxlength="2" /> -
  24.     </label>
  25.     <label>
  26.     <input name="mm" type="text" size="1" maxlength="2" /> -
  27.     </label>
  28.     <label>
  29.     <input name="aaaa" type="text" size="4" maxlength="4" /> <?php echo "<font face='verdana' color='black' size ='2'> data di nascita"; ?><br/>
  30.     </label>
  31.     <label>
  32.     <input name="luogo_nascita" type="text" /> <?php echo "<font face='verdana' color='black' size ='2'> luogo di nascita"; ?><br/>
  33.     </label>
  34.     <label>
  35.     <input name="cittadinanza" type="text" /> <?php echo "<font face='verdana' color='black' size ='2'> cittadinanza"; ?><br/>
  36.     </label>
  37.     <label>
  38.     <input name="peso" size="1" maxlength="2" /> <?php echo "<font face='verdana' color='black' size ='2'> peso"; ?><br/>
  39.     </label>
  40.     <label>
  41.     <input name="altezza" type="text" size="1" maxlength="3" /> <?php echo "<font face='verdana' color='black' size ='2'> altezza"; ?><br/>
  42.     </label>
  43.   <?php
  44.     }
  45.   ?>
  46.     <br/>
  47.      <input name="Carica" type="submit" value="Carica le informazioni" />
  48.     </form>
  49.  
  50.  <?php
  51. }
  52. ?>

  

Codice sorgente - presumibilmente PHP

  1. <?php
  2.  
  3. // dichiaro la funzione che permette l'inserimento dei giocatori
  4. function add_new_giocatori() {
  5.  
  6.         // ciclo gli n giocatori
  7.         for($i = 1; $i <= 5; $i++) {
  8.  
  9.                 //recupero i campi di tipo stringa per query giocatore da POST
  10.                 $nome$i          = trim($_POST['nome']);
  11.                 $cognome$i       = trim($_POST['cognome']);
  12.                 $luogo_nascita$i = trim($_POST['luogo_nascita']);
  13.                 $cittadinanza$i  = trim($_POST['cittadinanza']);
  14.  
  15.                 //verifico se devo eliminare gli slash inseriti automaticamente
  16.                 if(get_magic_quotes_gpc()) {
  17.  
  18.                         //record query stadio
  19.                         $nome$i          = stripslashes($nome);
  20.                         $cognome$i       = stripslashes($cognome);
  21.                         $luogo_nascita$i = stripslashes($luogo_nascita);
  22.                         $cittadinanza$i  = stripslashes($cittadinanza);
  23.    
  24.                 }
  25.  
  26.                 //query giocatore
  27.                 $nome$i           = mysql_real_escape_string($nome$i);
  28.                 $cognome$i        = mysql_real_escape_string($cognome$i);
  29.                 $luogo_nascita$i  = mysql_real_escape_string($luogo_nascita$i);
  30.                 $cittadinanza$i   = mysql_real_escape_string($cittadinanza$i);
  31.  
  32.                 // recupero i rimanti campi del form
  33.                 $gg$i            = intval($_POST['gg']);
  34.                 $mm$i            = intval($_POST['mm']);
  35.                 $aaaa$i          = intval($_POST['aaaa']);
  36.                 $peso$i          = intval($_POST['peso']);
  37.                 $altezza$i       = intval($_POST['altezza']);
  38.        
  39.        
  40.                 //preparo la query giocatore
  41.                 $query_giocatore = mysql_query("INSERT INTO giocatore (nome, cognome, data_nascita, luogo_nascita, cittadinanza, peso, altezza) VALUES ('$nome$i', '$cognome$i', '$aaaa$i-$mm$i-$gg$i', '$luogo_nascita$i', '$cittadinanza$i', '$peso$i',
  42.                                                                       '$altezza$i')");
  43.  
  44.                 // controllo l'esito
  45.                 if(!$query_giocatore) {
  46.  
  47.                 // visualizzo un mex di errore
  48.                 echo "<br/>" . "<ul>" .
  49.                      "<font face='verdana' color='black' size ='2'> <b>WARNING : </b> I dati inseriti sono gia' registrati nei nostri database ." .
  50.                      "<br/>" . "Errore nella query $query_giocatore: " . mysql_error();
  51.  
  52.                 }
  53.                 // altrimenti, gestisco l'esito corretto
  54.                 else {
  55.  
  56.                         // visualizzo un messaggio      
  57.                         echo "<br/><br/>" . "<ul>" .
  58.                              "<font face='verdana' color='black' size ='2'> Giocatore inserito correttamente <b> ( i ) </b>." . "</ul>";
  59.  
  60.                 }
  61.         }
  62.  
  63.         //chiudo la connessione a MYSQL
  64.         mysql_close();
  65.  
  66. }
  67.  
  68. ?>



Ho provato a fare in questo modo mi da il seguente errore
syntax error, unexpected T_VARIABLE indicandomi la linea
$nome$i          = stripslashes($nome);
Qualcuno sa darmi una soluzione? ... grazie.8-|

PM Quote
Avatar
TheKaneB (Member)
Guru^2


Messaggi: 1792
Iscritto: 26/06/2009

Segnala al moderatore
Postato alle 21:09
Venerdì, 12/02/2010
usa degli array...
la sintassi corretta non è $variabile$indice, ma $variabile[$indice]

tanti saluti ;)

PM Quote
Avatar
giocala88 (Normal User)
Expert


Messaggi: 248
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 22:41
Venerdì, 12/02/2010
Scusami tanto ma mi spiegheresti perchè mi visualizza solo l'ultimo elemento inserito?
Per semplificare le cose ti ho postato un codice riduttivo. 8-|

Codice sorgente - presumibilmente Php

  1. <?php
  2. if(isset($_POST['nome'])) {
  3.                        
  4.         // invoco la funzione che inserisce i records query stadio e squadra
  5.         add_new_sq();
  6.                                        
  7. }
  8. // altrimenti, controllo l'esito: i campi non sono stati digitati
  9. else {
  10.  
  11.         // invoco la funzione che visualizza un form di inserimento records query stadio
  12.         print_form_sq();
  13.                        
  14. }
  15. ?>                     
  16.  
  17. <?php
  18.  
  19. // dichiaro una funzione che inserisce i records query stadio e squadra
  20. function add_new_sq() {
  21.  
  22.         $a = print_form_sq($a);
  23.  
  24.         for($i = 0; $i < 2; $i++) {
  25.  
  26.                
  27.         echo "$i : $a[$i]<br/>";}
  28.  
  29. }
  30.  
  31. ?>
  32.  
  33.  
  34.  
  35. <?php
  36.  
  37. // dichiaro una funzione che visualizza un form di inserimento records query stadio e squadra
  38. function print_form_sq() {
  39.                
  40. ?>
  41.         <br/>
  42.         <?php for($i = 1; $i <= 2; $i++) { ?>
  43.  
  44.         <form name="form_squadra" method="post" action="">
  45.                
  46.         <label><?php echo "<font face='verdana' color='black' size ='3'> <b>STADIO</b>"; ?><br/>
  47.  
  48.         <input name='nome' type='text' /> <?php echo "<font face='verdana' color='black' size ='2'> nome$i"; ?><br/>
  49.         </label>    
  50.        
  51.        
  52. <?php
  53.         $nome[$i] = $_POST['nome'];
  54.         $a[] = "$nome[$i]";
  55. }
  56. ?>
  57.         <br/>
  58.      <input name="Carica" type="submit" value="Carica le informazioni" />
  59.     </form>
  60.        
  61.  <?php
  62.         return($a);
  63. }
  64. ?>



Ringranzio ancora...;)

Ultima modifica effettuata da giocala88 il 12/02/2010 alle 22:42
PM Quote
Avatar
antometal (Member)
Guru


Messaggi: 691
Iscritto: 12/09/2007

Segnala al moderatore
Postato alle 23:01
Venerdì, 12/02/2010
forse perchè nella funzione print_form_sq(), il tag <form> si trova all' interno del for, invece </form> si trova all' esterno
in questo modo (puoi verificare vedendo l' html di output) apre 5 form, ma ne chiudi uno solo

PM Quote
Avatar
giocala88 (Normal User)
Expert


Messaggi: 248
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 23:08
Venerdì, 12/02/2010
No antometal non va... com'è possibile???8-|...ufff :-o:-o:-o
Qualche alternativa??

Grazie a tutti ...

PM Quote
Avatar
antometal (Member)
Guru


Messaggi: 691
Iscritto: 12/09/2007

Segnala al moderatore
Postato alle 23:26
Venerdì, 12/02/2010
prova così per tutti gli oggetti del form, tranne per il submit

<input name='nome[]' ....

altrimenti potresti aggiungere al nome anche l' indice

<input name='nome_<?=$i?>' ....

PM Quote
Avatar
giocala88 (Normal User)
Expert


Messaggi: 248
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 23:40
Venerdì, 12/02/2010
Niente antometal. Allora

<input name='nome[]' ....
non va -> risultato Array Array

il secondo metodo non mi visualizza niente....bah?!8-|


PM Quote
Avatar
antometal (Member)
Guru


Messaggi: 691
Iscritto: 12/09/2007

Segnala al moderatore
Postato alle 0:03
Sabato, 13/02/2010
Testo quotato

Postato originariamente da giocala88:

Niente antometal. Allora

<input name='nome[]' ....
non va -> risultato Array Array

il secondo metodo non mi visualizza niente....bah?!8-|




invece funziona il primo metodo
restituisce array perchè ci sono + valori del tipo: $_POST['nome'][0]
nella pagina di destinazione del form metti:

print_r($_POST['nome'])

deve stampare tutti i valori dei campi nome

PM Quote
Avatar
giocala88 (Normal User)
Expert


Messaggi: 248
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 0:07
Sabato, 13/02/2010
Intendi dire questo?

Codice sorgente - presumibilmente PHP

  1. <?php
  2.  
  3. // dichiaro una funzione che visualizza un form di inserimento records query stadio e squadra
  4. function print_form_sq() {
  5.                
  6. ?>
  7.         <form name="form_squadra" method="post" action="">
  8.         <br/>
  9.         <?php for($i = 1; $i <= 2; $i++) { ?>
  10.  
  11.        
  12.                
  13.         <label><?php echo "<font face='verdana' color='black' size ='3'> <b>STADIO</b>"; ?><br/>
  14.  
  15.         <input name='nome[$i]' type='text' /> <?php echo "<font face='verdana' color='black' size ='2'> nome$i"; ?><br/>
  16.         </label>  
  17.        
  18.          
  19.        
  20.        
  21. <?php
  22.         $nome[$i] = print_r($_POST['nome']);
  23.         $a[] = "$nome[$i]";
  24. }
  25. ?>
  26.         <br/>
  27.      <input name="Carica" type="submit" value="Carica le informazioni" />
  28.    </form>
  29.  
  30.        
  31.        
  32.  <?php
  33.         return($a);
  34. }
  35. ?>



Mi visualizza questo (cioè il secondo elemento):
Array ( [$i] => rob2 )
Array ( [$i] => rob2 )

0 : 1
1 : 1

... mi posteresti il codice perpiacere?
Sto impazzendo....:d

Grazie ancora...soprattutto per la pazienza ;)

Ultima modifica effettuata da giocala88 il 13/02/2010 alle 0:12
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo