Oppure

Loading
12/02/10 19:01
giocala88
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 ???


<?php

// funzione che visualizza 5 form
function print_form_giocatore() {

	
?>

  <br/>
  <?php 
	// ciclo per 5 volte, num max e min, il form di inserimento giocatori
	for($i = 1; $i <= 5; $i++) { 
  ?>
  <br/>	
  <form name="form_giocatore" method="post" action="">
    <label><?php echo "<font face='verdana' color='black' size ='3'> <b>GIOCATORE</b>"; ?><br/>
    <input name="nome" type="text" /> <?php echo "<font face='verdana' color='black' size ='2'> nome"; ?><br/>
    </label>
    <label>
    <input name="cognome" type="text" /> <?php echo "<font face='verdana' color='black' size ='2'> cognome"; ?><br/>
    </label>
    <label>
    <input name="gg" type="text" size="1" maxlength="2" /> - 
    </label>
    <label>
    <input name="mm" type="text" size="1" maxlength="2" /> - 
    </label>
    <label>
    <input name="aaaa" type="text" size="4" maxlength="4" /> <?php echo "<font face='verdana' color='black' size ='2'> data di nascita"; ?><br/>
    </label>
    <label>
    <input name="luogo_nascita" type="text" /> <?php echo "<font face='verdana' color='black' size ='2'> luogo di nascita"; ?><br/>
    </label>
    <label>
    <input name="cittadinanza" type="text" /> <?php echo "<font face='verdana' color='black' size ='2'> cittadinanza"; ?><br/>
    </label>
    <label>
    <input name="peso" size="1" maxlength="2" /> <?php echo "<font face='verdana' color='black' size ='2'> peso"; ?><br/>
    </label>
    <label>
    <input name="altezza" type="text" size="1" maxlength="3" /> <?php echo "<font face='verdana' color='black' size ='2'> altezza"; ?><br/>
    </label>
  <?php
    }
  ?>
    <br/>
     <input name="Carica" type="submit" value="Carica le informazioni" />
    </form>

 <?php
}
?>


<?php 

// dichiaro la funzione che permette l'inserimento dei giocatori
function add_new_giocatori() {

	// ciclo gli n giocatori
	for($i = 1; $i <= 5; $i++) {

		//recupero i campi di tipo stringa per query giocatore da POST
		$nome$i          = trim($_POST['nome']);
		$cognome$i       = trim($_POST['cognome']);
		$luogo_nascita$i = trim($_POST['luogo_nascita']);
		$cittadinanza$i  = trim($_POST['cittadinanza']);

		//verifico se devo eliminare gli slash inseriti automaticamente
		if(get_magic_quotes_gpc()) {

			//record query stadio
			$nome$i          = stripslashes($nome);
			$cognome$i       = stripslashes($cognome);
			$luogo_nascita$i = stripslashes($luogo_nascita);
			$cittadinanza$i  = stripslashes($cittadinanza);
    
		}

		//query giocatore 
		$nome$i           = mysql_real_escape_string($nome$i);
		$cognome$i        = mysql_real_escape_string($cognome$i);
		$luogo_nascita$i  = mysql_real_escape_string($luogo_nascita$i);
		$cittadinanza$i   = mysql_real_escape_string($cittadinanza$i);

		// recupero i rimanti campi del form
		$gg$i            = intval($_POST['gg']);
        	$mm$i            = intval($_POST['mm']);
        	$aaaa$i          = intval($_POST['aaaa']);
		$peso$i          = intval($_POST['peso']);
		$altezza$i       = intval($_POST['altezza']);
	
	
		//preparo la query giocatore
		$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', 
                                                                       '$altezza$i')");

		// controllo l'esito
		if(!$query_giocatore) {

		// visualizzo un mex di errore
		echo "<br/>" . "<ul>" . 
                     "<font face='verdana' color='black' size ='2'> <b>WARNING : </b> I dati inseriti sono gia' registrati nei nostri database ." .
                     "<br/>" . "Errore nella query $query_giocatore: " . mysql_error();
 
		}
		// altrimenti, gestisco l'esito corretto
		else {

			// visualizzo un messaggio       
			echo "<br/><br/>" . "<ul>" . 
                             "<font face='verdana' color='black' size ='2'> Giocatore inserito correttamente <b> ( i ) </b>." . "</ul>";

		}
	}

	//chiudo la connessione a MYSQL
	mysql_close();

}

?>


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-|
aaa
12/02/10 20:09
TheKaneB
usa degli array...
la sintassi corretta non è $variabile$indice, ma $variabile[$indice]

tanti saluti ;)
aaa
12/02/10 21:41
giocala88
Scusami tanto ma mi spiegheresti perchè mi visualizza solo l'ultimo elemento inserito?
Per semplificare le cose ti ho postato un codice riduttivo. 8-|


<?php
if(isset($_POST['nome'])) {
			
	// invoco la funzione che inserisce i records query stadio e squadra
	add_new_sq();
					
}
// altrimenti, controllo l'esito: i campi non sono stati digitati
else {

	// invoco la funzione che visualizza un form di inserimento records query stadio 
	print_form_sq();
		 	
}
?>			

<?php

// dichiaro una funzione che inserisce i records query stadio e squadra
function add_new_sq() {

	$a = print_form_sq($a);

	for($i = 0; $i < 2; $i++) {

		
	echo "$i : $a[$i]<br/>";}

}

?>



<?php

// dichiaro una funzione che visualizza un form di inserimento records query stadio e squadra
function print_form_sq() {
		
?>
	<br/>
	<?php for($i = 1; $i <= 2; $i++) { ?>

	<form name="form_squadra" method="post" action="">
    	  	
    	<label><?php echo "<font face='verdana' color='black' size ='3'> <b>STADIO</b>"; ?><br/>

    	<input name='nome' type='text' /> <?php echo "<font face='verdana' color='black' size ='2'> nome$i"; ?><br/>
    	</label>    
    	
    	
<?php 
	$nome[$i] = $_POST['nome'];
	$a[] = "$nome[$i]";
}
?>
	<br/>
     <input name="Carica" type="submit" value="Carica le informazioni" />
    </form>
	
 <?php
	return($a);
}
?>


Ringranzio ancora...;)
Ultima modifica effettuata da giocala88 12/02/10 21:42
aaa
12/02/10 22:01
antometal
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
aaa
12/02/10 22:08
giocala88
No antometal non va... com'è possibile???8-|...ufff :-o:-o:-o
Qualche alternativa??

Grazie a tutti ...
aaa
12/02/10 22:26
antometal
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?>' ....
aaa
12/02/10 22:40
giocala88
Niente antometal. Allora

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

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

aaa
12/02/10 23:03
antometal
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
aaa