Foros del Web » Programando para Internet » PHP »

Simplificar código

Estas en el tema de Simplificar código en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 11/08/2011, 21:08
Avatar de 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
  #2 (permalink)  
Antiguo 12/08/2011, 03:35
danneg
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Simplificar código

Y si lo dejas correr todo?? poniendo en tu consulta un "LIMIT 5"

La verdad es que no entendi para que es tanta vuelta
  #3 (permalink)  
Antiguo 12/08/2011, 03:40
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 8 meses
Puntos: 326
Respuesta: Simplificar código

Código PHP:
if ($i == 3) {
$consulta mysqli_query($conexion"SELECT * FROM tabla WHERE
id <> '$id[0]' && id <> '$id[1]' && id <> '$id[2]' campo = 'valor'
ORDER BY id ASC LIMIT 3"
);
while (
$fila mysqli_fetch_array($consulta)) {
echo 
$fila['titulo'];
}

Yo esto lo sacaría fuera del "for"

Y quizás esto:
Código MySQL:
Ver original
  1. SELECT * FROM tabla WHERE
  2. id NOT IN($id[0], $id[1], $id[2]) AND campo = 'valor'

No sé como será en optimización... pero es más "claro" :)
__________________
>> Eleazan's Source
>> @Eleazan
  #4 (permalink)  
Antiguo 12/08/2011, 07:54
Avatar de Gambinoh  
Fecha de Ingreso: diciembre-2010
Mensajes: 348
Antigüedad: 14 años
Puntos: 11
Respuesta: Simplificar código

Cita:
Iniciado por danneg Ver Mensaje
Y si lo dejas correr todo?? poniendo en tu consulta un "LIMIT 5"

La verdad es que no entendi para que es tanta vuelta
Es innecesariamente rebuscado, lo reconozco, pero cuando lo ves funcionando lo entiendes.
  #5 (permalink)  
Antiguo 12/08/2011, 13:58
danneg
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Simplificar código

ok, para entenderlo, nececito ver que datos son los que sacas, si tienes algun intervalo, si los cas de tal linea a tal linea, o algun funcionamiento especifico... sigo entender que es lo que haces XD

Saludo!

Etiquetas: código, mysql, simplificar, tabla, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:36.