Hola,
Yo creo que se ejecutan los dos. Pero el segundo solo se ejecuta como quieres la primera vez.
Tal como lo tienes, por cada ciclo del while exterior, ejecuta todos los ciclos del while interior. Lo que pasa es que el while interior recorrer todo el recordset la primera iteraccion del while exterior. Por eso, cuando en la segunda iteracion del exterior, vuelve a ejecutar el interior, resulta que la llamada a mysql_fetch_array() devuelve false porque en la primera vez ya llego hasta el fin.
No se si me he explicado.
La solucion es resetear el recordset del while interior cada vez que se ejecutan cada ciclo del while exterior. Algo como:
Código PHP:
while($CONTAINER = mysql_fetch_array($containerq))
{
while($CHAR = mysql_fetch_array($charges))
{
if(${'chargepp' . $CHAR[0] . 'cont' . $CONTAINER[0]} == "on")
{
$idchar = mysql_query("SELECT id_charge, ch_type FROM `toctrack_charges` WHERE `ch_type` = '1' ORDER BY id_charge DESC LIMIT 1") or die("Invalid query: " . mysql_error());
$CHARGEID = mysql_fetch_array($idchar);
mysql_query("INSERT INTO `toctrack_chargein` (`id_charges`, `id_cat_charges`)
VALUES ('$CHARGEID[0]', '$CHAR[0]')") or die("Invalid query: " . mysql_error());
}
else if(${'chargesp' . $CHAR[0] . 'cont' . $CONTAINER[0]} == "on")
{
echo "asdfñjdsafñlñfjdfklñjdsa";
$idchar2 = mysql_query("SELECT id_charge, ch_type FROM `toctrack_charges` WHERE `ch_type` = '2' ORDER BY id_charge DESC LIMIT 1") or die("Invalid query: " . mysql_error());
$CHARGEID2 = mysql_fetch_array($idchar2);
mysql_query("INSERT INTO `toctrack_chargein` (`id_charges`, `id_cat_charges`)
VALUES ('$CHARGEID2[0]', '$CHAR[0]')") or die("Invalid query: " . mysql_error());
}
}
mysql_data_seek($charges,0);
}
(
www.php.net/mysql_data_seek)
Con esto conseguiras recorrer el recordset interior de principio a fin en para cada registro del recordset exterior.
Suerte.