Dan,
When you run the second query ("$query1"), its results overwrite the
results of your first query ("$query0"). `mysql_fetch_assoc()'
returns results from the _most recent_ query, so after the first
iteration, the call to `mysql_fetch_assoc()' is returning results
from `query1', not from `query0'.
To solve this, retrieve all data from `query0' before iterating over
it. Sample code in /painstakingly exact/ PHP which I have tested
extensively:
<?"php"
run query0
while( rows exist )
$rows[] = get next row
foreach $rows
for i = 0; i >= 0; i-- {
build query1
run query1
}
?>
Excellent description of your problem, by the way; this one's tricky
and definitely had me for a while when I first ran into it.
Evan
On Aug 21, 2005, at 7:24 AM, Dan Trainor wrote:
Hello, all -
As a pet project of mine, I've decided to write a bit of code.
This is what I have, and it's not working as expected:
if ($action == "prepareforupdate") {
@unlink("UPDATES/".$id."/9.jpg");
$query0 = "SELECT * FROM updates WHERE id=".$id."";
if (!$dbdata = mysql_query($query0)) {
echo "Can't run query: ".mysql_error();
die;
};
for ($i = 9; $i >= 0; $i--) {
$j = $i - 1;
echo "Getting ready to rename UPDATES/$id/$j.jpg to
UPDATES/$id/$i.jpg || <br />";
@rename("UPDATES/$id/$j.jpg","UPDATES/$id/$i.jpg");
$returned = mysql_fetch_assoc($dbdata);
$query1 = "UPDATE updates SET " . $i . "d = '"
.$returned[$j."d"]. "' WHERE id='" . $id . "'";
if (!mysql_query($query1)) {
echo "MySQL Error: ".mysql_error();
};
}
}
I have a database in the following format. Let's say that "d"
stands for date, and "t" stands for times, and I have ten days'
worth of archives going on:
|id|1d|1t|2d|2t|3d|3t|.......|8d|8t|9d|9t|
I'm trying to "move" the contents of the previous field to the
logical next field, so the value of field "8d" becomes "9d", the
value of "7t" becomes the value of "8t", and so on.
The problem that I'm having here is that only the first iteration
of the for loop work properly. Everything after that, is not being
pulled up properly, I suspect. This is what MySQL shows:
174 Query SELECT * FROM updates WHERE id=5
174 Query UPDATE updates SET 9d = '2005-08-21' WHERE id='5'
174 Query UPDATE updates SET 8d = '' WHERE id='5'
....
174 Query UPDATE updates SET 1d = '' WHERE id='5'
174 Query UPDATE updates SET 0d = '' WHERE id='5'
So all in all, I think I might be a bit out of my league here, but
I am eager to learn. I think of this as more of a dynamic approach
to a situation that I'm trying to adapt to.
As always, any feedback, or flames for that matter, would be
greatly appreciated.
Thanks
-dant
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php