Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/08/2011, 21:08
Avatar de Gambinoh
Gambinoh
 
Fecha de Ingreso: diciembre-2010
Mensajes: 348
Antigüedad: 14 años
Puntos: 11
Simplificar código

Hola a todos, quiero simplificar un código pero no se me ocurre como.

El código está formado por dos bucles... el primero recorre un array devuelto por la función mysqli_fetch_array(query) imprimiendo 3 resultados y en cada iteración asigna un valor de este array a una variable distinta.

Código PHP:
Ver original
  1. for ($i = 1; $fila = mysqli_fetch_array($query); $i++) {
  2. echo $fila['titulo'];
  3.  
  4. if ($i == 1) {
  5. $variable1 = $fila['id'];
  6. } elseif ($i == 2) {
  7. $variable2 = $fila['id'];
  8. } elseif ($i == 3) {
  9. $variable3 = $fila['id'];
  10. }
  11. }

Luego hago un query usando las variables $variable1, $variable2 y $variable3 para a través de la cláusula WHERE indicar que no quiero que se repitan los valores del primer bucle.

Código PHP:
Ver original
  1. $consulta = mysqli_query($conexion, "SELECT * FROM tabla WHERE
  2. id <> '$variable1' && id <> '$variable2' && id <> '$variable3' campo = 'valor'
  3. ORDER BY id ASC LIMIT 3");

Finalmente viene el segundo bucle que imprime 3 resultados más.

Código PHP:
Ver original
  1. while ($fila = mysqli_fetch_array($consulta)) {
  2. echo $fila['titulo'];
  3. }

Se me ocurre que tiene que haber alguna manera de simplificar este código. Por ejemplo usando un array para recoger los valores del campo id en el primer bucle... Pero estoy poco inspirado y no llego a sacar mucho en limpio.

¿Cómo podría simplificar este código, tal vez con un bucle anidado?

Edito, al final he hecho esto:

Código PHP:
Ver original
  1. $id = array();
  2.  
  3. for ($i = 1; $fila = mysqli_fetch_array($query); $i++) {
  4. echo $fila['titulo'];
  5.      
  6. $id[] = $fila['id'];
  7.  
  8. if ($i == 3) {
  9. $consulta = mysqli_query($conexion, "SELECT * FROM tabla WHERE
  10. id <> '$id[0]' && id <> '$id[1]' && id <> '$id[2]' campo = 'valor'
  11. ORDER BY id ASC LIMIT 3");
  12. while ($fila = mysqli_fetch_array($consulta)) {
  13. echo $fila['titulo'];
  14. }
  15. }
  16.  
  17. }

¿Se os ocurre alguna manera de simplificarlo más?

Última edición por Gambinoh; 11/08/2011 a las 21:29