OK, so, this may seem like a dumb question. I've looked through the other threads with this thing and I'm not finding QUITE what I'm looking for.
I get this error:
Warning: Invalid argument supplied for foreach() in entry.php on line 118
line 118 is the foreach that I'm using here:
<select id="Location" name="Location" class="text">
<option selected="selected"> - Choose Location - </option>
<?php
$locations = getLocationList();//this returns an array from separate function
foreach($locations as $location) {//<-Line 118
echo "<option value=". $location['locationID'] .">".$location['locationName']."</option> ";
}
?>
</select>
It's not populating, it's only throwing the error. Thoughts?
OK EDIT This is how I'm pulling the data in a separate function:
function getLocationList()
{
$mydb = new myDBC();//<-this calls my secure connection class
$table = "LocationTable";
$sql = "SELECT `locationID`, `locationName` FROM " .$table;
$rez = $mydb->runQuery($sql);//<-this connects runs my query
if(isset($rez))
{
$newRow = mysqli_fetch_array($rez);//<-is this not returning an array?
return $newRow;
}
}
When you have errors like
Warning: Invalid argument supplied for foreach()
it literally means that whatever variable you are using in yourforeach()
is not an array nor an object. Verify that$locations
is either an array or an object. One you fix that, it would work.Ok, after checking your update, try making these changes:
Change this:
To this:
OK, seems like your class/library is not a full library and because of this you have to add your own code to enhance it. In order to make this work how you would like it to, add this function somewhere in your DBClass.php
This will convert your results into an appropriate muilti dimensional array so that you can iterate and get your info.
Now you can use it like this:
Now you can iterate like you originally wanted to:
I would also highly recommend that you transition into an MVC framework. I recommend Codeigniter to start. You wouldnt need to worry about all this along with other problems that come along.