views:

25

answers:

1

I am triig to fill options list. I have 2 tables USERS and STREAMS I vant to get all streams and get names of users assigned to that streams.

Users consists of username and id

Streams consists of id, userID, streamID

I try such code:

<?php           
        global $connection;
        $query = "SELECT * 
        FROM streams ";
        $streams_set = mysql_query($query, $connection);
        confirm_query($streams_set);    
    $streams_count = mysql_num_rows($streams_set);
    while ($row = mysql_fetch_array($streams_set)){
            $userid = $row['userID'];
                global $connection;
        $query2 = "SELECT email, username ";
        $query2 .= "FROM users ";
        $query2 .= "WHERE id = '{$userid}' ";

        $qs = mysql_query($query2, $connection);
        confirm_query($qs); 
        $found_user = mysql_fetch_array($qs);


 echo ' <option value="'.$row['streamID'].'">'.$row['userID'].$found_user.'</option> ';
}
    ?>

But it does not return USER names from DB=( So what shall I do to this code to see usernames as "options" text?

+2  A: 

You can do this with one query containing a JOIN on streams.userID=users.id

$query = "
  SELECT
    s.streamId,
    s.userId,
    u.username
  FROM
    streams as s
  JOIN
    users as u
  ON
    s.userId=u.id
  ";
$result = mysql_query($query, $connection);
confirm_query($result);
echo '<option value="">Debug: #rows=', mysql_num_rows($row), '"</option>';

while ( false!==($row=mysql_fetch_array($result)) ) {
  sprintf('<option value="%s">id:%s name:%s</option>',
    $row['streamID'], // you probably should apply htmlspecialchars()
    $row['userID'], // on these two, too.
    htmlspecialchars($row['username'])
  );
}
VolkerK
BTW there are some errors in your code about beeg or small leters ( s.streamId -> $row['streamID'])
Blender
Most of the time I test the code I post, sometimes not ....like in this case ;-) sorry.
VolkerK