Reputation: 45
I have two arrays the selected and questiondesc, I want to update it to the database but My code doesnt seem to work. Is it possible to do nested for each?
<?php do { ?>
<tr>
<th width="170" scope="col">
<input type="checkbox" name="selected[]"
value="<?php echo $row_Recordset1['question_id'];?>"/>
Description:
</th>
<td colspan="2" scope="col">old:
<?php echo $row_Recordset1['question_description']; ?>
new:<input name="questiondesc[]" type="text" size="50"/>/td>
<td width="549" colspan="2" scope="col">
<div align="left">
</td>
</tr>
<?php
} while ($row_Recordset2 = mysql_fetch_assoc($Recordset2));
if (isset($_POST['selected'])) {
$selected = $_POST['selected'];
$question = $_POST['questiondesc'];
foreach ($selected as $enable) {
mysql_query("
UPDATE exam_questions
SET question_description = '$question'
WHERE question_id = '$selected'
") or die(mysql_error());
}
}
Upvotes: 0
Views: 187
Reputation: 19528
You could use a for
instead and make sure to properly sanitize your data:
for ($i = 0; $i < sizeof($selected); $i++)
{
$sql = sprintf("UPDATE exam_questions
SET question_description = '%s'
WHERE question_id = '%s'",
mysql_real_escape_string($question[$i]),
mysql_real_escape_string($selected[$i]));
mysql_query($sql)or die(mysql_error());
}
Keep in mind that the above assumes that questions and selections are ordered the same.
Upvotes: 1
Reputation: 1750
<?
$i =0;
while ($row_Recordset2 = mysql_fetch_assoc($Recordset2)):
?>
<tr><th width="170" scope="col"><input type="checkbox" name="selected[]" value="<?php echo $row_Recordset1['question_id']; ?>" />
Description:</th><td colspan="2" scope="col">old:
<?php echo $row_Recordset1['question_description']; ?>
new:<input name="questiondesc_<?=$i?>" type="text" size="50" />/td>
<td width="549" colspan="2" scope="col"><div align="left"></td>
</tr>
<?
$i ++;
endwhile;
?>
if(isset($_POST['selected'])){
$selected = $_POST['selected'];
foreach($selected as $id){
$key = 'questiondesc_' . $id;
$question = $_POST[$key];
$sql = "UPDATE exam_questions SET question_description = '" . $question . "' WHERE question_id = '" . $id . "'";
mysql_query($sql)or die(mysql_error());
}
}
Upvotes: 0
Reputation: 85
Change this line:
mysql_query("UPDATE exam_questions
SET question_description = '$question'
WHERE question_id = '$enable' ")or die(mysql_error());
Upvotes: 0