2010-01-24 10 views
4

Je dois itérer un tas de champs générés dynamiquement, mais cela ne fonctionne pas:

$population_density = $_POST['$current_location_id']; 

J'ai une liste des lieux avec leurs populations sur une page; Je dois faire en sorte que vous puissiez mettre à jour beaucoup d'entre eux à la fois. J'ai donc fait correspondre dynamiquement les noms de champs à l'identifiant de localisation. Lorsque le post est soumis, je dois les parcourir comme ça, mais il semble que vous ne pouvez pas mettre une variable dans un message.

for ($y_count = 1 ; $y_count <= $zone_height; $y_count++) { 
    for ($x_count = 1 ; $x_count <= $zone_width; $x_count++) { 
     $result = mysql_query("SELECT * FROM locations WHERE location_zone='$zone_id' AND x_location='$x_count' AND y_location='$y_count' "); 
     $current_location = mysql_fetch_array($result); 
     $current_location_id = $current_location['ID']; 
     $population_density = $_POST['$current_location_id']; 
     $result = mysql_query("UPDATE locations SET population_density='$population_density' WHERE ID='$current_location_id' "); 
    } 
} 

Est-il possible de mettre une variable à l'intérieur d'un $ _POST []? Si non, comment dois-je procéder pour mettre à jour les champs générés dynamiquement?

Répondre

1

Utilisez sans les guillemets simples:

$_POST[$current_location_id] 

maintenant la valeur de $current_location_id est utilisé comme clé au lieu de la chaîne $current_location_id. Vous pouvez également utiliser $current_location['ID'] directement:

$_POST[$current_location['ID']] 

Même dans votre requête:

for ($y_count = 1 ; $y_count <= $zone_height; $y_count++) { 
    for ($x_count = 1 ; $x_count <= $zone_width; $x_count++) { 
     $result = mysql_query("SELECT * FROM locations WHERE location_zone='$zone_id' AND x_location='$x_count' AND y_location='$y_count' "); 
     $current_location = mysql_fetch_array($result); 
     $result = mysql_query("UPDATE locations SET population_density='".$_POST[$current_location['ID']]."' WHERE ID='".$current_location['ID']."' "); 
    } 
} 
2
$_POST[$var] or $_POST["cst_$var"] 
0

guillemets simples inhibent l'interpolation de variables dans une chaîne; utilisez des guillemets doubles ou omettez-les complètement.

0

$ POST [ "cst $ var"] - cst_ var $ représentent une chaîne

La réponse corect est: $ POST [ 'cst' $ var.]

Questions connexes