Prev: php_warn
Next: Getting total quantities
From: Paul on 12 Feb 2010 14:26 Hi all, I'm currently having a problem correctly formatting a table within a while loop. I'm using an object to store the results of a query, and using the while to iterate through it each row to produce the output: $query = "SELECT * FROM foo WHERE UserID = " .$uID . " ORDER BY bar"; $result = mysql_query($query); while($obj = mysql_fetch_object($result)) { $obj->bar; } To properly format the table, I need to check the value of bar in the next iteration of the object (but have to do it on the current one). Using an array, I would do: next($obj); if($obj["bar"] == "something") { //do things } prev($obj); Is there an equivalent to object? I've tried the above method, but nothing happens. I've also tried type casting it to an array, without success. Is there anyway to iterate through this? Thanks, Paul
From: Eric Lee on 12 Feb 2010 18:25 On Sat, Feb 13, 2010 at 3:26 AM, Paul <devineman(a)msn.com> wrote: > Hi all, > > I'm currently having a problem correctly formatting a table within a while > loop. I'm using an object to store the results of a query, and using the > while to iterate through it each row to produce the output: > > $query = "SELECT * FROM foo WHERE UserID = " .$uID . " ORDER BY bar"; > $result = mysql_query($query); > > while($obj = mysql_fetch_object($result)) > { > $obj->bar; > } > > To properly format the table, I need to check the value of bar in the next > iteration of the object (but have to do it on the current one). Using an > array, I would do: > > next($obj); > if($obj["bar"] == "something") > { > //do things > } > prev($obj); > > Is there an equivalent to object? I've tried the above method, but nothing > happens. I've also tried type casting it to an array, without success. > > Is there anyway to iterate through this? > Paul Is this the one you want ? $sql = 'select id, name from test'; $result = mysql_query($sql); $rows = array(); $row = null; while ($row = mysql_fetch_object($result)) { $rows[] = $row; } reset($rows); for ($i = 0, $c = sizeof($rows) - 1; $i < $c; $i++) { next($rows); if (current($rows)->name) { // something to do } prev($rows); echo current($rows)->id, ' ', current($rows)->name, "\n"; next($rows); } if (current($rows)) { echo current($rows)->id, ' ', current($rows)->name, "\n"; } Regards, Eric, > Thanks, > Paul > > -- > PHP Database Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > >
From: Paul Hollingworth on 12 Feb 2010 18:46 Thanks for the code Eric, it seems to loosely provide the functionality that I'm after. Just out of interest though, is there no other way to find the next result row in an object apart from dumping it into an array? Thanks, Paul Eric Lee wrote: > On Sat, Feb 13, 2010 at 3:26 AM, Paul <devineman(a)msn.com> wrote: > >> Hi all, >> >> I'm currently having a problem correctly formatting a table within a while >> loop. I'm using an object to store the results of a query, and using the >> while to iterate through it each row to produce the output: >> >> $query = "SELECT * FROM foo WHERE UserID = " .$uID . " ORDER BY bar"; >> $result = mysql_query($query); >> >> while($obj = mysql_fetch_object($result)) >> { >> $obj->bar; >> } >> >> To properly format the table, I need to check the value of bar in the next >> iteration of the object (but have to do it on the current one). Using an >> array, I would do: >> >> next($obj); >> if($obj["bar"] == "something") >> { >> //do things >> } >> prev($obj); >> >> Is there an equivalent to object? I've tried the above method, but nothing >> happens. I've also tried type casting it to an array, without success. >> >> Is there anyway to iterate through this? >> > > Paul > > Is this the one you want ? > > $sql = 'select id, name from test'; > $result = mysql_query($sql); > $rows = array(); > $row = null; > while ($row = mysql_fetch_object($result)) > { > $rows[] = $row; > } > > reset($rows); > > for ($i = 0, $c = sizeof($rows) - 1; $i < $c; $i++) > { > next($rows); > if (current($rows)->name) > { > // something to do > } > prev($rows); > > echo current($rows)->id, ' ', current($rows)->name, "\n"; > > next($rows); > } > > if (current($rows)) > { > echo current($rows)->id, ' ', current($rows)->name, "\n"; > > } > > Regards, > Eric, > > >> Thanks, >> Paul >> >> -- >> PHP Database Mailing List (http://www.php.net/) >> To unsubscribe, visit: http://www.php.net/unsub.php >> >> >
From: Karl DeSaulniers on 12 Feb 2010 19:05 Hi Paul, Can't you just? $query = "SELECT DISTINCT bar FROM foo WHERE UserID = " .$uID; $result = mysql_query($query); while($obj = mysql_fetch_assoc($result) { $bar = $obj['bar']; if ($bar == "something") { //do this } } I'm some what a beginner, so sorry if this wastes your time. Karl On Feb 12, 2010, at 1:26 PM, Paul wrote: > Hi all, > > I'm currently having a problem correctly formatting a table within > a while loop. I'm using an object to store the results of a query, > and using the while to iterate through it each row to produce the > output: > > $query = "SELECT * FROM foo WHERE UserID = " .$uID . " ORDER BY bar"; > $result = mysql_query($query); > > while($obj = mysql_fetch_object($result)) > { > $obj->bar; > } > > To properly format the table, I need to check the value of bar in > the next iteration of the object (but have to do it on the current > one). Using an array, I would do: > > next($obj); > if($obj["bar"] == "something") > { > //do things > } > prev($obj); > > Is there an equivalent to object? I've tried the above method, but > nothing happens. I've also tried type casting it to an array, > without success. > > Is there anyway to iterate through this? > > Thanks, > Paul > > -- > PHP Database Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > Karl DeSaulniers Design Drumm http://designdrumm.com
From: Eric Lee on 12 Feb 2010 22:47
On Sat, Feb 13, 2010 at 7:46 AM, Paul Hollingworth <devineman(a)msn.com>wrote: > Thanks for the code Eric, it seems to loosely provide the functionality > that I'm after. > > Just out of interest though, is there no other way to find the next result > row in an object apart from dumping it into an array? > > Paul Apologize ! I think no. The resource returned by mysql_query acts like a pointer (or cursor on database side) that point to the current record in result set. Before it is able advanced to the next the record must retrieved first. Might some design patterns be help for your situation. And wait for some php pros that master in this area. Regards, Eric Thanks, > Paul > > > Eric Lee wrote: > >> On Sat, Feb 13, 2010 at 3:26 AM, Paul <devineman(a)msn.com> wrote: >> >> Hi all, >>> >>> I'm currently having a problem correctly formatting a table within a >>> while >>> loop. I'm using an object to store the results of a query, and using the >>> while to iterate through it each row to produce the output: >>> >>> $query = "SELECT * FROM foo WHERE UserID = " .$uID . " ORDER BY bar"; >>> $result = mysql_query($query); >>> >>> while($obj = mysql_fetch_object($result)) >>> { >>> $obj->bar; >>> } >>> >>> To properly format the table, I need to check the value of bar in the >>> next >>> iteration of the object (but have to do it on the current one). Using an >>> array, I would do: >>> >>> next($obj); >>> if($obj["bar"] == "something") >>> { >>> //do things >>> } >>> prev($obj); >>> >>> Is there an equivalent to object? I've tried the above method, but >>> nothing >>> happens. I've also tried type casting it to an array, without success. >>> >>> Is there anyway to iterate through this? >>> >>> >> Paul >> >> Is this the one you want ? >> >> $sql = 'select id, name from test'; >> $result = mysql_query($sql); >> $rows = array(); >> $row = null; >> while ($row = mysql_fetch_object($result)) >> { >> $rows[] = $row; >> } >> >> reset($rows); >> >> for ($i = 0, $c = sizeof($rows) - 1; $i < $c; $i++) >> { >> next($rows); >> if (current($rows)->name) >> { >> // something to do >> } >> prev($rows); >> >> echo current($rows)->id, ' ', current($rows)->name, "\n"; >> >> next($rows); >> } >> >> if (current($rows)) >> { >> echo current($rows)->id, ' ', current($rows)->name, "\n"; >> >> } >> >> Regards, >> Eric, >> >> >> Thanks, >>> Paul >>> >>> -- >>> PHP Database Mailing List (http://www.php.net/) >>> To unsubscribe, visit: http://www.php.net/unsub.php >>> >>> >>> >> > -- > PHP Database Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > |