De entrada si haces esto ya vas mal:
Código PHP:
Ver original$consulta1 = 'SELECT * FROM paises WHERE categoria="America"';
$consulta2 = 'SELECT * FROM paises WHERE categoria="Europa"';
$consulta3 = 'SELECT * FROM paises WHERE categoria="Africa"';
Si al final sólo usas un conjunto de resultados, ¿para que cargar en memoria los conjuntos restantes?
Es un desperdicio de recursos, está muy claro que desde ahí comienza el problema.
Una solución para dicho problema es abstraer en una función la generación de la consulta:
Código PHP:
Ver originalfunction paises($de) {
$consulta1 = 'SELECT * FROM paises WHERE categoria="$de"';
$lista []= $fila1;
}
return $lista;
}
Así, cuando necesites una lista en especifico no tienes que colocando if's para manejar cada uno.
Código PHP:
Ver original<?php foreach (paises($seleccion) as $pais) { ?>
<option><?php echo $pais->nombre; ?></option>
<?php } ?>
¿Se entiende?