Guest Posted May 10, 2011 Share Posted May 10, 2011 I have a Mysql table with many fields however the two I am battling with are called Venues and Country. Country has over 300 names in it while Venues has listing of venues and one of the fileds is Country . i.e. where that particular venue is located. Now IN my search I have code that will search for venues where there is a venue that is in the Country Drop down list which the user will slect but I only wnat that list populated with contry names where there is in fact a venue listed....At the moment the Country Drop down list is listing ALL the countries from the country table but I ONLY want the drop down list to have those countries in it that are currently in the Venues table and to o ly list that Country name on once although there may be more than one venie in the same country listed. My code currently looks like this: <td width="40%">Country</td> <td width="60%"> <select name="country"> <option value="%" show="none">All</option> <?php $countries = dbGetRows("country", "name != ''"); while($country = mysql_fetch_array($countries, MYSQL_ASSOC) ) { echo "<option value=\"".$country['name']."\" ".($_POST['country'] == $country['name'] ? "selected" : "")."".($country['name'] == 'South Africa' ? "show=\"provinces\"" : "show=\"none\"").">".$country['name']."</option>\n"; The tables are listed as Country.id and Country.Name and Venues.Country Hope someone can help as been battling with this as a newbie... Quote Link to comment https://forums.phpfreaks.com/topic/236024-dbgetrows-from-two-tables/ Share on other sites More sharing options...
Psycho Posted May 10, 2011 Share Posted May 10, 2011 You don't state what Venues.Country is a foreign key reference for. It SHOULD be the Country.id field and NOT the Country.Name field. But, I have a feeling that isn't the case. Anyway, you just need a simple query to get the list of countries where there are existing venues SELECT Country.id, Country.name FROM Country RIGHT JOIN Venues ON Country.id = Venues.Country GROUP BY Country.id Quote Link to comment https://forums.phpfreaks.com/topic/236024-dbgetrows-from-two-tables/#findComment-1213405 Share on other sites More sharing options...
Guest Posted May 10, 2011 Share Posted May 10, 2011 Hi mjdamato, Many thanks for taking time out to help us newbies. I can get the results that I need on a pure sql query but my problem is getting it into the code I posted earlier. Sorry, I forgot to mention that I "inherted" this application in a half built state so the code I posted was not my own How would I alter the code I posted to give me the same results into a select list? Rgds Quote Link to comment https://forums.phpfreaks.com/topic/236024-dbgetrows-from-two-tables/#findComment-1213410 Share on other sites More sharing options...
Psycho Posted May 10, 2011 Share Posted May 10, 2011 I gave you the answer, I'm sorry if it doesn't fulfill your expectations. dbGetRows is not a PHP function. I can't alter what the function returns. Yes you could insert some inefficient code to keep countries from duplicating. But, you couldn't "remove" any values that don't have associated venues without running a separate query for each country. That just makes no sense. Replace this $countries = dbGetRows("country", "name != ''"); With something like this: $query = "SELECT Country.id, Country.name FROM Country RIGHT JOIN Venues ON Country.id = Venues.Country GROUP BY Country.id"; $countries = mysql_query($query); Quote Link to comment https://forums.phpfreaks.com/topic/236024-dbgetrows-from-two-tables/#findComment-1213414 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.