Digis
Digis

Reputation: 70

Loop and Comma in HREF PHP

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

Answers (3)

daiscog
daiscog

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

showdev
showdev

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

Marcio Barroso
Marcio Barroso

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

Related Questions