Jump to content

Warning: Invalid argument supplied for foreach() in ...


Recommended Posts

Warning: Invalid argument supplied for foreach() in ...

<?php 
session_start();
include 'conn.php';
$post = $_GET['post'];

if(isset($_POST['checkb'])){
    if(count($_POST['$iqid']) > 0){            
        foreach($_POST['$iqid'] as $awr) {
        $result = mysql_query("UPDATE ctable SET updated='yes' WHERE id='$awr'") or die(mysql_error());
        
            }        
    }            
} else{

?>   
<form method="post" name="formk" action="<?= $_SERVER['PHP_SELF']. '?' . $_SERVER['QUERY_STRING'] ?>">
<?php
$result = mysql_query("SELECT cid, iqid, cost, usersid FROM ctable WHERE post=$post");
while ($row = mysql_fetch_array($result))
{
  $arr[$row['iqid']][$row['usersid']] = $row['cost'];
  $arr2[$row['iqid']][$row['usersid']] = $row['cid'];
  $uid[] = $row['usersid'];
}
$uid = array_unique($uid);
$qid = array_keys($arr);

echo '<table><tr><td></td>';
foreach($uid as $userid) echo "<td>$userid</td>";
echo '</tr>';
foreach($qid as $iqid)
{
  echo "<tr><td>$iqid</td>";
  foreach($uid as $userid)
  {
    if (isset($arr[$iqid][$userid]))
    {       
        echo "<td>".$arr[$iqid][$userid]."<input type='radio' name='$iqid' value='{$arr2[$iqid][$userid]}'></td>";    
    }
    else echo "<td></td>";    
  }
  echo "</tr>";
}
echo '</table>';
echo '<input type="submit" name="checkb" />';
echo'</form>';    

}
?> 

thanks, please check...

Crayon Violent,

the name of the radio button is $iqid

I don't want to use checkbox

 

vbnullchar, don't I need to change

foreach($_POST['$iqid'] as $awr) ??

 

could you please help me?

 

if $_POST['$iqid'] is an array just leave it that way.. just add an array check before that

 

okay...so you want a radio button.  But that's the point.  Your form has a bunch of radio buttons. Only one will be selected.  So $_POST['iqid'] will never be an array.  It will always be just a variable with one of those radio button values.  Therefore, your foreach loop will never work.  There's no point in even having your query inside a loop at all.  You're getting a single value from your form and updating your database with that value.  No foreach loop or any loop at all required.

 

If you do what vbnullchar says, your query will never be executed because it will never be an array.

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.