Willy Gelin
Willy Gelin

Reputation: 1

Check a check box if it's value is in DB. PHP

I have a loop of checkboxes from a MySql table "exercise" in a form as shown below:

<form id="form1" name="form1" method="POST" action="insertDrills.php">

  <table width="100%" border="1" cellspacing="0" cellpadding="0">
    <?php do { ?>
      <tr>
        <td>


<input type="checkbox" name="drillSelect[]" value="<?php echo $row_Recordset1['drillID']; ?>" id="drillSelect" />

        <?php echo $row_Recordset1['rubrik']; ?>


        </td>
      </tr>
      <?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>
    <tr>
      <td colspan="2">



      <input name="spelarID" type="hidden" id="spelarID" value="<?php echo $row_rsSpelare['id']; ?>" />
      <input name="date" type="hidden" id="date" value="<? print date("Y-m-d h:i:s"); ?>" />
  <input type="submit" name="submit" id="submit" value="Välj övningar" />
  <input type="button" value="Avbryt" onclick="window.close();"></button>



      </td>
    </tr>
  </table>
</form>

The value from the hidden fied "spelarID" along with the value from the checkbox array are inserted to a look-up table "exercise_spelare_ref" with this:

<?php
$id = $_POST['spelarID']; 
$drills = $_POST['drillSelect'];
$date = $_POST['date']; 

$inserts = array(); 
foreach ($drills as $drills)
    $inserts[] = "('$id','$drills','','$date')"; 


$query = "REPLACE INTO exercise_spelare_ref VALUES ". implode(", ", $inserts);

//echo "query = $query"; // for debugging purposes, remove this once it is working 
mysql_query($query) or die(mysql_error()); 
?>

How can I make values that are in the look-up table marked as "checked" in the form?

There are a solution here https://stackoverflow.com/a/4069477 written by Martin Bean but I cant get it to work?

I have been stuck here for ever, hope anyone can help me out here!

I tried Martin Beans script like:

$uid = $row_rsSpelare['id']; // your logged in user's ID

$exercise = array();

// get an array of exercise
$sql = "SELECT drillID FROM exercise";
$res = mysql_query($sql);
while ($row = mysql_fetch_object($res)) {
    $exercise[$row->id] = $row->drillID;
}

// get an array of exercise user has checked
$sql = "SELECT DISTINCT drillID FROM exercise_spelare_ref WHERE id = '$uid'";
$res = mysql_query($sql);
while ($row = mysql_fetch_object($res)) {
    $checked[] = $row->drillID;
}

// this would be templated in a real world situation
foreach ($exercise as $id => $drillID) {
    $checked = "";
    // check box if user has selected this exercise
    if (in_array($checked, $id)) {
        $checked = 'checked="checked" ';
    }
    echo '<input type="checkbox" name="drillSelect[]" value="'.$id.'" '.$checked.'/>';
}

But getting a warning:

Warning: in_array() expects parameter 2 to be array, string given in /customers/b/d/e/teeview.se/httpd.www/analys_kund/selectDrills.php on line 158

Line 158 is:

 if (in_array($checked, $id)) {

Upvotes: 0

Views: 752

Answers (1)

Madara&#39;s Ghost
Madara&#39;s Ghost

Reputation: 174967

Well, you will need to SELECT the items from the table, store them into an array, and if the current checkbox's ID matches something in the array, add the checked attribute to it in the HTML.

Upvotes: 2

Related Questions