Bueno, yo personalmente llamria los a los campos PRODUCTO[i] y CANTIDAD[i] en lugar de PRODUCTOi y CANTIDADi. Seria simplemente sustituir en el javascript esto:
document.writeln('<INPUT TYPE="hidden" NAME="PRODUCTO['+itemlist+']" VALUE="'+theitem+'" SIZE="20">');
document.writeln('<INPUT TYPE="hidden" NAME="CANTIDAD['+itemlist+']" VALUE="'+thequantity+'" SIZE="20">');
No se si en el resto de tu aplicacion deberias cambiar algo mas. Pero de esta forma en tu PHP simplemente haciendo:
Código PHP:
$productos=$variables['PRODUCTO'];
$cantidades=$variables['CANTIDAD'];
Tendrias el array con los productos y sus cantidades. Y para meterlo en el mensaje seria simplemente:
Código PHP:
foreach($productos as $clave => $valor) {
$msg.="PRODUCTO$clave: $valor \n";
$msg.="CANTIDAD$clave: ".$cantidades[$clave]." \n";
}
En caso de no poder cambiar el nombre de los campos, la forma de crear los arrays cambia un poco:
Código PHP:
$productos=array(); // inicializamos los arrays
$cantidades=array();
// recorremos todas las variables
foreach ($variables as $clave => $valor) {
if ('PRODUCTO'==substr($clave,0,8)) { // miramos si la variable empieza por 'PRODUCTO'
$indice=substr($clave,7); //usamos como indice el numero de despues de 'PRODUCTO'
$productos[$indice]=$valor;
} elseif ('CANTIDAD'==substr($clave,0,8)) { // miramos si empieza por 'CANTIDAD'
$indice=substr($clave,7); //usamos como indice el numero de despues de 'CANTIDAD'
$cantidades[$indice]=$valor;
}
}
Y luego para añadirlo al mensaje es lo mismo que antes.
Saludos.
PD: Revisa el codigo. Lo he hecho de cabeza.