RE: Problem With Inner Loop

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> Hi,
> 
> The following code is attempting to display a list of work types for all
> the
> users in my database. However it only loops through the inner loop once
> and
> I can't work out why, can anyone help here please?
> 
> Thanks for your help
> 
> <table>
> <?php
> include('application.php');
> $staff_qid = mysql_query('SELECT
>       U.User_ID,
>       CONCAT_WS(" ", U.user_Firstname, U.User_Lastname) AS "User_Name"
>       FROM Users U, Allocations A, Projects P
>       WHERE U.User_ID = A.User_ID
>       AND A.Project_ID = P.Project_ID
>       AND P.Project_ID = 38
>       AND (U.User_Type = "Staff"
>        OR U.User_Type = "Manager"
>        OR U.User_Type = "Administrator")
>       ORDER By User_Name');
> $work_type_qid = mysql_query('SELECT
>        Work_Type_ID,
>        Work_Type
>        FROM Work_Types
>        WHERE Project_ID = 38
>        ORDER BY Day_Type');
> ?>
> <table>
> <?php while( $staff_r = mysql_fetch_object( $staff_qid ) ) { ?>
>  <tr>
>  <?php while( $work_type_r = mysql_fetch_object( $work_type_qid ) ) { ?>
>   <td><?php echo $work_type_r->Work_Type; ?></td>
>  <?php } ?>
>  </tr>
> <?php } ?>
> </table>

Hi Shaun,

Looking at your code, it doesn't appear that there's an actual relationship
between your two queries? Ie the select statement for the 'inner' query
doesn't reference any value returned by the select statement from the
'outer' query.

This means that for every record returned by the outer query, the same
record or records will be returned by the inner query, which doesn't seem to
match the intention of the summary you gave at the top of your email. This
could be an error of interpretation on my part. It may well be that every
record returned by the inner query is relevant to each and every record
returned by the outer query. It's hard to tell from the details you've
included.

Having said which, I'm personally more used to situations where the
following occurs (warning, pseudo-code alert!):

$outerrs = select_query;
while ($outerdata = get_result_from_outerrs){
	$innerrs = select_query_using_value_in_where_clause_from_$outerdata;
	while ($innerdata = get_result_from_innerrs){
		display_information_from_outerdata_and_or_innerdata;
	}
}

In the above situation, the inner query is called for each record in the
outer query, indicating a relationship between the two resultsets.

As another thought, have you run the inner select statement against your db
(ie using PHPMyAdmin / MySQL Query Browser / etc) to confirm that under
normal circumstances that query actually returns more than one record?

Regards,

Murray
---
"Lost in thought..."
http://www.planetthoughtful.org

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux