Reputation: 6324
I have this function:
function userPicBySkill($mainPassion){
$query = mysql_query("SELECT id, username, imagename FROM users WHERE mainpassion = '$mainPassion' ORDER BY RAND() LIMIT 5");
while ($row = mysql_fetch_array($query)) {
$uid = $row["id"];
$username = $row["username"];
$imagename = $row["imagename"];
echo "<a href='/$username'> <img src='image/$imagename' width='40' height='41' alt = '$username'></a>";
}
}
it works if I assign:
$mainpassion = 'some skill';
What I would like to do is randomly choose 5 'skills' from my table 'skills':
+----------+-----------+
|skill_id | skill_name|
+----------+-----------+
| 1 | guitar |
| 2 | cooking |
| 3 | math |
| 4 | plumbing|
| 5 | piano |
+----------+-----------+
and then get 5 users pictures for each skill. I tried this but it doesn't show anything:
function findRandomSkill(){
$skill_list = mysql_query("SELECT skill_name FROM skills ORDER BY RAND() LIMIT 5");
while($row = mysql_fetch_array($skill_list)){
$skill = $row['skill_name'];
echo '<div class="userBySkillDiv">
<h5>'.$skill.'</h5>';
userPicBySkill($skill);
echo'</div>';
}
Upvotes: 1
Views: 513
Reputation: 30488
use different $row
variable in function like this, this is causing problem.
function userPicBySkill($mainPassion){
$query = mysql_query("SELECT id, username, imagename FROM users WHERE mainpassion = '$mainPassion' ORDER BY RAND() LIMIT 5");
while ($row1 = mysql_fetch_array($query)) {
$uid = $row1["id"];
$username = $row1["username"];
$imagename = $row1["imagename"];
echo "<a href='/$username'> <img src='image/$imagename' width='40' height='41' alt = '$username'></a>";
}
}
Upvotes: 0
Reputation: 173572
It's better to apply joins instead of doing 25 queries:
SELECT id, username, imagename
FROM users
INNER JOIN (SELECT skill_name
FROM skills
ORDER BY RAND()
LIMIT 5
) userskills ON users.mainpassion = userskills.skill_name
ORDER BY RAND()
LIMIT 5
Upvotes: 3
Reputation: 4185
What do you mean by 'doesn't show anything'? Is the list of 5 skill names being returned?
To get 5 random skills,
try $skill_list = mysql_query("SELECT DISTINCT(skill_name) FROM skills ORDER BY RAND() LIMIT 5");
Upvotes: 0