Reputation: 70
I have to echo a list in a loop and remove last comma, what Ive done so far works with comma issue but when I try to echo a href it gives me all the results in one href tag.
This is my code
$select_actors=mysql_query("SELECT * FROM actors_in_movies WHERE movie_ref='$movie_ref'");
if (mysql_num_rows($select_actors)>=1) {
while ($row=mysql_fetch_array($select_actors)) {
$actor_ref=$row['actor_ref'];
$select_actor_name=mysql_query("SELECT * FROM actors WHERE actors_ref='$actor_ref' AND active='1'");
while ($row_actor=mysql_fetch_array($select_actor_name)) {
$actor_name .= $row_actor['actors_name'] . ", ";
}
}
$actor_name = substr(trim($actor_name), 0, -1);
echo'<a href="../actors/index.php?name='.$actor_name.'">'.$actor_name.'</a>';
}
All I need to do is list it list name1, name2, name3 but each need to have their own url (href).
Upvotes: 0
Views: 416
Reputation: 12057
Instead of appending the comma and then chopping it off, try, prepending it if the actor is not the first:
$select_actors=mysql_query("SELECT * FROM actors_in_movies WHERE movie_ref='$movie_ref'");
if (mysql_num_rows($select_actors)>=1) {
while ($row=mysql_fetch_array($select_actors)) {
$actor_ref=$row['actor_ref'];
$select_actor_name=mysql_query("SELECT * FROM actors WHERE actors_ref='$actor_ref' AND active='1'");
$first = true;
while ($row_actor=mysql_fetch_array($select_actor_name)) {
if ($first) {
// no comma first time
$first = false;
} else {
// comma all other times
echo ", ";
}
echo'<a href="../actors/index.php?name='.$row_actor['actors_name'] .'">'.$row_actor['actors_name'] .'</a>';
}
}
}
Also, don't use mysql_*
, functions; they're deprecated. Use MySQLi or PDO instead.
Upvotes: 0
Reputation: 29168
I suggest using your loop to construct an array of links.
Then you can output the links using implode
.
Something like this:
$actor_links=array();
// build array of links from db result
while ($row_actor=mysql_fetch_array($select_actor_name)) {
$actor_links[]= '<a href="../actors/index.php?name='.
$row_actor['actors_name'].'">' .
$row_actor['actors_name'] .
'</a>';
}
// output each link inside a <p> tag
if (!empty($actor_links)) {
echo "<p>".implode("</p><p>",$actor_links)."</p>";
}
// alternatively, output links separated by commas
if (!empty($actor_links)) {
echo implode(",",$actor_links);
}
Upvotes: 1
Reputation: 783
try to move the lines
$actor_name = substr(trim($actor_name), 0, -1);
echo'<a href="../actors/index.php?name='.$actor_name.'">'.$actor_name.'</a>';
inside the while statement ...
I think it will works fine =)
Upvotes: 0