Dark King Rayleigh
Dark King Rayleigh

Reputation: 45

working with foreach in mysql and php

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

Answers (3)

Prix
Prix

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

Parfait
Parfait

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

Hamender
Hamender

Reputation: 85

Change this line:

mysql_query("UPDATE exam_questions 
                SET question_description = '$question' 
              WHERE question_id = '$enable' ")or die(mysql_error());

Upvotes: 0

Related Questions