in_array problem

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
vzwhaley
Forum Newbie
Posts: 5
Joined: Tue Oct 18, 2005 10:04 am

in_array problem

Post by vzwhaley »

I cannot get the following in_array to loop through all of the values of the $CuisineListS array. Does anyone know how to correctly loop through an in_array? In the following code, I should have 5 matches, but it only echoes one match. Any tips will be appreciated.

Code: Select all

$sql = "SELECT * FROM Restaurants WHERE ID = '6'"; 
	$Recordset = mysql_query($sql);
	$RS = mysql_fetch_assoc($Recordset);
	
	$sql1 = "SELECT * FROM RestaurantsCuisine ORDER BY CuisineType ASC";
	$Recordset1 = mysql_query($sql1);
	
$Cuisine = $RS['Cuisine'];
$CuisineListS = explode("|", $Cuisine);

while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)) {

	if(in_array($row_Recordset1['ID'], $CuisineListS)) {
	   echo "Match: " . $row_Recordset1['ID'] . "<br><br>";
	   }
}
User avatar
volka
DevNet Evangelist
Posts: 8391
Joined: Tue May 07, 2002 9:48 am
Location: Berlin, ger

Post by volka »

try

Code: Select all

error_reporting(E_ALL); ini_set('display_errors', true); // for debugging
$sql = "SELECT Cuisine FROM Restaurants WHERE ID = '6'";
$Recordset = mysql_query($sql) or die(mysql_errors().': '.$sql);
if ( false!== ($RS=mysql_fetch_array($Recordset, MYSQL_ASSOC)) ) {
	$CuisineList = array_map('intval', explode("|", $RS['Cuisine']));
	$CuisineList = join(',', $CuisineList);
	$sql = "SELECT
			ID
		FROM
			RestaurantsCuisine
		WHERE
			ID IN ( $CuisineList )
		ORDER BY
			CuisineType ASC";
       
	$result = mysql_query($sql) or die(mysql_errors().': '.$sql);
  while ( false!== ($row=mysql_fetch_array($result, MYSQL_ASSOC)) ) {
		echo 'Match: ' , $row['ID'] , "<br />\n";
	}
}
even better: don't store a all id in one file but normalize the tables. Then you can query all you need with one single sql statement. see http://en.wikipedia.org/wiki/Database_normalization
Post Reply