Ver Mensaje Individual
  #6 (permalink)  
Antiguo 09/03/2014, 20:01
Avatar de pateketrueke
pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Listas dependientes, reducir código innecesario!

De entrada si haces esto ya vas mal:
Código PHP:
Ver original
  1. $consulta1 = 'SELECT * FROM paises WHERE categoria="America"';
  2.   $consulta2 = 'SELECT * FROM paises WHERE categoria="Europa"';
  3.   $consulta3 = 'SELECT * FROM paises WHERE categoria="Africa"';
  4.   $datos1    = mysql_query($consulta1);
  5.   $datos2    = mysql_query($consulta2);
  6.   $datos3    = mysql_query($consulta3);
  7.   $fila1     = mysql_fetch_array($datos1);
  8.   $fila2     = mysql_fetch_array($datos2);
  9.   $fila3     = mysql_fetch_array($datos3);

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 original
  1. function paises($de) {
  2.   $consulta1 = 'SELECT * FROM paises WHERE categoria="$de"';
  3.   $datos1    = mysql_query($consulta1);
  4.   $lista = array();
  5.  
  6.   while ($fila1     = mysql_fetch_array($datos1)) {
  7.     $lista []= $fila1;
  8.   }
  9.  
  10.   return $lista;
  11. }

Así, cuando necesites una lista en especifico no tienes que colocando if's para manejar cada uno.

Código PHP:
Ver original
  1. <?php foreach (paises($seleccion) as $pais) { ?>
  2.   <option><?php echo $pais->nombre; ?></option>
  3. <?php } ?>

¿Se entiende?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.