E' possibile assegnare all' attributo name di un form html il nome di una variabile php?

  • Creatore Discussione Creatore Discussione Cirano86
  • Data di inizio Data di inizio

Cirano86

Nuovo Utente
26 Ago 2015
15
0
0
Buongiorno, vi ringrazio ancora per l'aiuto!.
Il problem,a questa volta è che non riesco a capire se è possibile e se possibile com'è la sintassi per attribuire all'attributo name di un form html il nome di una variabile php.
Mi spiego meglio:
In questo modo sono riuscito ad attribuire all' attributo value di una select la variabile $x proveniente dallo script php:
HTML:
<?php
for($x=0; $x<$numrows; $x++){
codice php dove la variabile $x assume di volta in volta un valore che viene passato al attributo value
?>
 <option value="<?php echo "$x";?>" readonly="readonly"> <?php echo "$x"; ?> </option>";
...
<?php
}
...
Adesso devo fare la stessa cosa solo che invece che all' attributo value di una select devo assegnare il valore della variabile $x all' attributo name di un form di input:
Usando questa sintassi:
HTML:
<label>Nr. porzioni:
 <input type="number" name="<?php $x; ?>" min="0" step="1" required/><br>
</label>
Non riesco ad ottenere lo stesso risultato perchè nel 1# quando vado a recuperare il valore della variabile riesco ad ottenerlo nel secondo invece ottengo solo una variabile vuota
 
ciao
si che è possibile rilevarlo
intanto manca echo
HTML:
<input type="number" name="<?php echo $x; ?>" min="0" step="1" required/><br>
poi non so se i valori di $x sono conosciuti comunque un metodo potrebbe essere questo
PHP:
<?php
if(isset($_POST['invia'])){
	foreach($_POST as $chiave => $valore){
		if($chiave =="pinco"){
			echo "il valore del POST $chiave è $valore<br>";
		}
	}
}

$x="pinco";
?>
<form action="#" method="post">
<input type="number" name="<?php echo $x; ?>" min="0" step="1" required/><br>
<input name="invia" type="submit" id="invia" value="invia">
</form>
oppure, forse meglio usando le sessioni
PHP:
<?php
session_start();
if(isset($_POST['invia'])){
	echo "il valore del POST ".$_SESSION['name']." è ".$_POST[$_SESSION['name']]."<br>";
}

$x="pinco";
$_SESSION['name']=$x
?>
<form action="#" method="post">
<input type="number" name="<?php echo $_SESSION['name']; ?>" min="0" step="1" required/><br>
<input name="invia" type="submit" id="invia" value="invia">
</form>
in entrambi i casi l'uotput (ho scritto 9999) è
il valore del POST pinco è 9999
 
Intanto ti ringrazio perchè almeno ho capito cosa mancava alla input number.
Per quello che riguarda la variabile $x è un contatore di un ciclo for; in pratica devo creare N campi input number ognuno dei quali si chiamerà con il valore assunto da $x in quel momento del ciclo for.
I 2 metodi non mi sono serviti cmq grazie cmq magari mi saranno utili in futuro XD!
 
Ultima modifica:
ciao
allora se non ho capito male ti conviene dare un name all'input, un name tipo array es pinco[xy]
PHP:
<?php
if(isset($_POST['invia'])){
	foreach($_POST['pinco'] as $chiave => $valore){
		echo "il post [$chiave] ha valore $valore<br>";
	}
}
?>
<form action="#" method="post">
<?php
$max=3;
for($x=0; $x<$max;$x++){//o se vuoi partire da 1 ...$x=1; $x<=$max;...
?>
<input type="number" name="pinco[<?php echo $x; ?>]" min="0" step="1" required/><br>
<?php
}
?>
<input name="invia" type="submit" id="invia" value="invia">
</form>
output
il post [0] ha valore 11
il post [1] ha valore 22
il post [2] ha valore 33
 
Alla fine ho risolto in questo modo:
PHP:
for($x=0; $x<$numrows; $x++){
$resrow = mysql_fetch_row($result);
$id = $resrow[0];
?>
<label>Quantità:
 <input type="number" name="<?php echo $id; ?>" min="0" step="1" required/><br>
</label>
<?php
}
?>
poi nella pagina dopo ricarico la tabella da dove prendo l'id dei vari prodotti e allo stesso modo riesco a caricare i valori dati alle quantità
il post [$id=0] ha valore 11
il post [$id=0] ha valore 351
il post [$id=0] ha valore 113
 
ciao
guarda che così sprecheresti meno risorse
PHP:
<?php
while($resrow = mysql_fetch_row($result)){
	$id = $resrow[0];
?>
<label>Quantità:
 <input type="number" name="<?php echo $id; ?>" min="0" step="1" required/><br>
</label>
<?php
}
?>
poi ti ribadisco se gli dai un nome array poi ti faciliti le cose in seguito
PHP:
<input type="number" name="quantita[<?php echo $id; ?>]" min="0" step="1" required/>
es, se vuoi uppare (immagino nel db) le quantità di n prodotti
PHP:
<?php
//....
foreach($_POST['quantita'] as $id => $quantita){
	$res="UPDATE tabella SET quantita=$quantita) WHERE id=$id"
	//....
}
//....
?>
 
In effetti hai ragione, seccessivamente ho dovuto creare ugualmente l'array quindi alla fine ho cambiato il codice come da te consigliato.
 

Discussioni simili