Ver Mensaje Individual
  #4 (permalink)  
Antiguo 04/02/2012, 16:39
caperutxa
 
Fecha de Ingreso: febrero-2012
Mensajes: 75
Antigüedad: 12 años, 3 meses
Puntos: 6
Respuesta: generar sql por medio de php

Yo veo una solución definiendo la consulta con variables, Esto es en lugar de esto:

SELECT * FROM actividad,volcanes,fenomenos WHERE fec_ini_actividad=:fec_ini_actividad AND (vol_actividad=:vol_actividad1 OR vol_actividad=:vol_actividad2 OR vol_actividad=:vol_actividad3 OR vol_actividad=:vol_actividad4 OR vol_actividad=:vol_actividad5)AND(actividad.vol_ac tividad=:vol_actividad1 AND volcanes.cod_volcan=:vol_actividad1 OR actividad.vol_actividad=:vol_actividad2 AND volcanes.cod_volcan=:vol_actividad2

pones esto:

$seleccionar = "SELECT * FROM ".$tablas." WHERE ".$inicio." AND ".$volcanes; (puede que tengas que meter unas comillas simples al inicio o al final, pero creo que así está bien)

Así conseguimos que la consulta "siempre se haga de la misma manera" y ya no tendremos que cambiarla.

Antes inicializamos
$tablas = "actividad,volcanes,fenomenos";
$inicio = "fec_ini_actividad=:fec_ini_actividad";

Y el rollo llega para volcanes:
Primero miras cuantos volcanes te pasa: $nvolcanes
Hace un for o un while con un contador (i) donde:
$volcanes += "vol_actividad=".$vol_actividad1;
if (i!= $nvolcanes){$volcanes += " OR ";}


Yo probaría con eso. El hecho de declarar la consulta con variables te permite cambiar la consulta dinamicamente, otra cosa es que consigas los cambios dinámicos satisfactorios.

Otra cosa, no entiendo porqué repites tantas condiciones:
WHERE fec_ini_actividad=:fec_ini_actividad AND (vol_actividad=:vol_actividad1 OR vol_actividad=:vol_actividad2 OR vol_actividad=:vol_actividad3 OR vol_actividad=:vol_actividad4 OR vol_actividad=:vol_actividad5)AND(actividad.vol_ac tividad=:vol_actividad1 AND volcanes.cod_volcan=:vol_actividad1 OR actividad.vol_actividad=:vol_actividad2 AND volcanes.cod_volcan=:vol_actividad2

Si son campos de diferentes tablas y siempre usas esos criterios cambia la consulta:
WHERE ".$inicio." AND ".$volcanes. " AND ".$actividad. " AND ".$codigo;
__________________
Si quieres conseguir resultados diferentes no hagas siempre lo mismo.

Mejora tu entorno. MestralCadiz con su comunidad.