Re: [PHP] Foreach



If you are trying to keep the names and orders in "parallel" you need
to do something not unlike:

while (list($key, $name) = each($names)){
$order = $orders[$key];
$query = "update whatever set order = $order where name = '$name'";
}

This completely ignores security and error checking in the name of
simplicity, which means it's missing about 20 more lines of code to
make it safe...

On Fri, January 18, 2008 10:17 am, Pastor Steve wrote:
Yes, each variable is an array. foreach works individually with no
problems.
The problem I am having is getting both to update the table in MySQL.
It
will update $i three times with no problem, however, it will only
update $t
with the last value in the array.

Name is a checkbox and contains the name of the record from the db.
Order is
a select menu with a number. (which is the number drawn from the
number of
records in the db). I would like to see both values come across and
update
the table however many times necessary. Name would update the name and
order
would update order. Order is the order in which each record will
appear on
the page.

I hope this makes more sense. I wish I knew more, and then I would be
able
to formulate my questions better. Thank you so much for your help.

Steve M.

on 1/17/08 10:07 PM David Giragosian (dgiragosian@xxxxxxxxx) wrote:

On 1/17/08, mike <mike503@xxxxxxxxx> wrote:
On 1/17/08, Nathan Nobbe < quickshiftin@xxxxxxxxx
<mailto:quickshiftin@xxxxxxxxx> > wrote:

$name = $_POST['name'];
if ($name) {
foreach ($name as $t) {

echo "$t";
}

$order = $_POST['order'];
if ($order) {
foreach ($order as $i) {


there are a few different issues here; first of all; are you sure
$_POST['name']
and $_POST['order'] are even arrays?

hint:

if(isset($_POST['name']) && is_array($_POST['name']))

Steve,

// Do you have several html form elements such as <input type="text"
name="name[]"> in your html?
// Mike's suggestion...
if( isset( $_POST['name'] ) && is_array( $_POST['name'] ) ) {

// you'll never get in here if you don't...
$name = $_POST['name'];

// foreach expects an array, as Nathan states. Even if $name
is an
array, $t
// will hold only the last value in the array when the
foreach loop is
exited
// because $t is being overwritten with each iteration.
foreach ($name as $t) {

echo "$t";

} // end foreach ($name)

$order = $_POST['order'];

if ($order) {

// see above about arrays and foreach
foreach ($order as $i) {

//Update the table in MySQL

$i = mysql_real_escape_string($i, $cnx); //
One of
Eric's suggestions

$update_data = "UPDATE sections SET `order` =
'$i' WHERE
name = '$t'";

$response = mysql_query( $update_data, $cnx );

if(mysql_error()) die ('database error<br>'.
mysql_error());

echo "$i";

} //end foreach ($order)

}

}

Assuming both $_POST['name'] and $_POST['order'] are arrays, the way
your code
is now structured, the table `sections` will have the record(s)
where name
equals the last value in the $names array updated multiple times,
once for
each value in the $order array, but all you will see is that the
record(s)
will have the last value in the $order array.

See if this makes any sense and then ask more questions.

David


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




--
Some people have a "gift" link here.
Know what I want?
I want you to buy a CD from some indie artist.
http://cdbaby.com/from/lynch
Yeah, I get a buck. So?
.



Relevant Pages

  • Re: [PHP] foreach() using current() strange beahvior
    ... that's expected as foreach moves the internal array pointer, ... When using the internal pointer just by calling current(so not moving ... Unless the array is referenced, foreach operates on a copy of the ...
    (php.general)
  • Re: [PHP] Foreach
    ... each variable is an array. ... foreach works individually with no problems. ... The problem I am having is getting both to update the table in MySQL. ... echo "$t"; ...
    (php.general)
  • Re: a question about for and foreach
    ... foreach (@array) { ... why @array are changed after this foreach loop!!! ... The "foreach" loop iterates over a normal list value and sets the ... If any element of LIST is an lvalue, you can modify it by modifying ...
    (perl.beginners)
  • Re: foreach and destroying variables for memory saving
    ... I read somewhere that foreach actually uses a copy of $ar ... instead of the array itself by reference. ... echo $val."\n"; ... i take there is no garbage collection in php? ...
    (php.general)
  • Re: safe to delete elements of array in foreach
    ... I agree with Jon on this one. ... I make it a habit not to delete entries in a foreach() loop. ... build an array of keys I want to delete, and after the loop ends, delete ... I don't know whether an operation like this is guaranteed to work in PHP ...
    (comp.lang.php)