If you are querying the Score >= 75 how are you ging to
take the "Consecutive" requirement into the account.
--- Martin Towell <[EMAIL PROTECTED]> wrote:
> could you change this
>
> $query2 = ("SELECT Month, Score FROM scores WHERE
> Username =
> '$Username'");
>
> to
>
> $query2 = ("SELECT count(*) FROM scores WHERE
> Username = '$Username' and
> Score >= 75 and Month in ('January', 'December',
> 'November', 'October')");
> $result2 = mysql_query($query2) or die ("Cannot
> execute query" .
> mysql_error ());
> $tally = mysql_fetch_row($result2);
>
> take out the while loop (the one with all the if's in it)
> and, if I haven't
> stuffed up somewhere, all will be okay - (btw, I haven't
> had experience
> using mysql, but I'm assuming that it's sql is compatable
> with interbase and
> oracle)
>
> Hope that helps
> Martin
>
> -----Original Message-----
> From: Brian Tully [mailto:[EMAIL PROTECTED]]
> Sent: Thursday, January 10, 2002 8:59 AM
> To: PHP DB; PHP
> Subject: [PHP] need help looping through each record with
> a query -
> stumped
>
>
> hey folks -
>
> i'm stumped. been working on what i thought would be a
> simple script to
> cycle through users' records and perform a query. But I
> can't get the loops
> right, it seems like only one or two records get updated.
>
> Using MySQL, we have about 2000 students enrolled. each
> month they take a
> test. if they pass the most recent 3 tests
> (consecutively) they earn
> "Certified" status and get a few perks.
>
> Somehow the certification status' got messed up. So I'm
> trying to create a
> script that will look through each user's test records to
> see if they've
> passed the last 3 tests, and if so, change their
> certification status in the
> database.
>
> Not very elegant since there are so many records in the
> database (2000
> users), but I don't think i have a choice.
>
> Anyways, I've tried to loop through each user, and for
> each user loop
> through their scores. But the loops aren't working. I'm
> sure it's something
> simple and obvious I'm missing but my brain is fried!
>
> I'd appreciate it if someone could take a look and offer
> any advice. It's
> about 65 lines of code (with comments).
>
> thanks in advance!
> brian
>
> ________________________________________
>
> <?php
>
> include("/home/includes/.connect.inc");
>
> // Select each Username and start a loop of queries for
> each user
>
> $query = ("SELECT Username, Certification FROM users");
>
> $result = mysql_query($query)
> or die ("Cannot execute query" . mysql_error ());
>
> /*
> here starts the loop - for each user in the database we
> look at their test
> records and try to establish if they have passed the last
> 3 tests
> consecutively
> */
>
> while (list($Username, $Certification) =
> mysql_fetch_row($result)) {
>
> $query2 = ("SELECT Month, Score FROM scores WHERE
> Username =
> '$Username'");
>
> $result2 = mysql_query($query2) or die ("Cannot
> execute query" .
> mysql_error ());
>
>
> /*
> for each score record the user has, check to see if
> they've passed the last
> 3 tests
> */
>
> while (list($Month, $Score) =
> mysql_fetch_row($result2)) {
>
>
> /*
> here we initialize a counter which we'll use to tally how
> many tests the
> user has passed over the past 3 months
> */
>
> $tally = 0;
>
> if (($Month == 'January') && ($Score >= 75)) {
>
> $tally++;
> }
>
> if (($Month == 'December') && ($Score >= 75)) {
>
> $tally++;
> }
>
> if (($Month == 'November') && ($Score >= 75)) {
>
> $tally++;
> }
>
> if (($Month == 'October') && ($Score >= 75)) {
>
> $tally++;
> }
>
> }
>
> /*
> the concept is that if a user has taken and passed the
> last 3 tests, they
> become certified. so we look at the current month first
> and go back 3
> months, since it may be the beginning of the month and
> they may not have
> taken the current months test yet. Since we increase the
> counter for each
> passed test, if the counter equals 3 or more this means
> they have passed 3
> tests and are thereby certified. So we update their
> certification status in
> the database.
> */
>
>
> if ($tally >= 3) {
>
> $query1 = ("UPDATE users SET Certification = 'Y'
> WHERE Username =
> '$Username'");
>
> $result1 = mysql_query($query1) or die ("Cannot
> update user to
> Certified" . mysql_error ());
>
> }
> }
>
> print ("Update complete!");
>
> ?>
>
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, e-mail:
> [EMAIL PROTECTED]
> For additional commands, e-mail:
> [EMAIL PROTECTED]
> To contact the list administrators, e-mail:
> [EMAIL PROTECTED]
>
=====
Mehmet Erisen
http://www.erisen.com
__________________________________________________
Do You Yahoo!?
Send FREE video emails in Yahoo! Mail!
http://promo.yahoo.com/videomail/
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]