RE: Assistance on Query

From: Date: Mon, 17 Jan 2005 14:18:14 +0000
Subject: RE: Assistance on Query
References: 1  Groups: php.db 
Request: Send a blank email to php-db+get-38173@lists.php.net to get a copy of this message
Hi People, I would like some assistance on the following scenario. I have to pull out all records for a particular userid (easy enough) and then only show those entries where the follwing occurs. These records from the table will contain either an entry in the services_type field or the non_services_type field. What I need to do is show only those where the number of consecutive records that contain an entry in the non_services_type field is greater than or equal to 3 so example:- record 1 contains an entry in non_services_type record 2 contains an entry in services_type record 3 contains an entry in non_services_type record 4 contains an entry in non_services_type record 5 contains an entry in non_services_type record 6 contains an entry in services_type so I would need to display records 3,4,5 only Can anyone assist me with this? Cheers, Shannon
When you do your while ($row = mysql_fetch_assoc($result)) { ... } you will need to keep a list of consecutive records. Try this: <?php $i = 0; $j = 0; while ($row = mysql_fetch_assoc($result)) { $current_string = ( !empty($row['non_services_type']) ) ? 'non_services_type' : 'services_type' ; if ($previous_string == $current_string) {
       $i++;
       if ($i >= 3) {
           $records[$j] = $row;
           $j++;
       }
} else {
       $i = 0;
       $previous_string = $current_string;
} } ?> Then simply echo $records. This may have some bugs to iron out, but this is a way to get the job done, please reply if you have found a better way.

« previous php.db (#38173) next »