Tee Famakin
Tee Famakin

Reputation: 158

Pass values from for each loop to mysql where clause

I am creating a search form where I am supposed to be able to select names of various users using a check list and then get their information.

Basically I have started by collating and posting the names of this users using

 <?php do { ?>
      <label style="color:#000; " for="input Address"> <?php echo $row_marketer['Username']; ?> <input type="checkbox" name="multiagent[]" value="<?php echo $row_marketer['Username']; ?>" /></label>
      <?php } while ($row_marketer = mysql_fetch_assoc($marketer)); ?>

This is to populate my checklist with the names I can select from

Then I am trying to pass the names to my where clause in my sql statement using a for each loop.

foreach($_POST['multiagent'] as $idx => $studentname) {

$query_certs = sprintf("SELECT * FROM transactions WHERE Username IN ('". $studentname ."')", GetSQLValueString($colname3_certs, "text"),GetSQLValueString($colname_certs, "text"),GetSQLValueString($colname2_certs, "text"));

 }
$query_limit_certs = sprintf("%s LIMIT %d, %d", $query_certs, $startRow_certs, $maxRows_certs);
$certs = mysql_query($query_limit_certs, $kbl) or die(mysql_error());
$row_certs = mysql_fetch_assoc($certs);

Having done this, my problem is it only passes the last name on the for each loop.

Upvotes: 1

Views: 319

Answers (1)

Shailesh Chauhan
Shailesh Chauhan

Reputation: 570

As you have an array of value in post field you can use implode function instead of looping them.

 if ( isset($_POST['multiagent'] ) && is_array ( $_POST['multiagent']  ) ) {

    //implode user name in string 
    $studentname = implode("','",$_POST['multiagent']);

    //Write query string
    $query_certs = "SELECT * FROM transactions WHERE Username IN ('". $studentname ."')";

    //Add limit in query
    $query_limit_certs = sprintf("%s LIMIT %d, %d", $query_certs, $startRow_certs, $maxRows_certs);

    //Execute query
    $certs = mysql_query($query_limit_certs, $kbl) or die(mysql_error());

    //Get row
    $row_certs = mysql_fetch_assoc($certs);
}

Upvotes: 1

Related Questions