Ver Mensaje Individual
  #10  
Antiguo 23-10-2015
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por AgustinOrtu Ver Mensaje
Primero pregunta por Apellido, como mande nada, sige
Despues pregunta por Nombre, como mande Juan, agrega la sentencia SQL y el parametro
Despues hace lo del grupo, como le pedi los Casados, agrega la sentencia, pero me falta un AND en el medio, quien lo pone?

Si lo pongo despues de poner "Juan", como me aseguro que despues alguien va a poner algo despues de mi AND?

Y si antes de agregar lo del grupo, pongo un AND, como me aseguro que antes habia una condicion?

Yo lo termine solucionando a lo bestia, poniendo siempre el AND (u OR) al final, y despues sacandoselo a la ultima linea. A lo bestia si, pero hacer algo generico como decis vos, es bastante molesto
Quizá no estoy entendiendo el punto, pero a mi entender, el problema aquí está en querer construir el texto de la sentencia SQL secuencialmente sobre la marcha.

En lugar de tratar de ver si hay condiciones antes o después, mejor junta todas y, al final, armas la cláusula, si es que quedó algo. Por ejemplo,

Código PHP:
$condiciones = array(); // en este arreglo vamos a almacenar las posibles condiciones

if (!empty($nombre)) {
  
$condiciones[] = "nombre like $nombre"// agregamos la condicón del nombre
}

if (!empty(
$grupos)) {
  
$condiciones[] = "grupo in $grupos"// agregamos la condición de grupos
}

if (!empty(
$edad)) {
  
$condiciones[] = "edad > $edad"// agregamos la condición de edad

Cada condición se agrega sin necesidad de saber si antes o después hay otra. Entonces, al final, sólo miramos si el arreglo de condiciones está vacío y, si no lo está, aglutinamos los elementos del arreglo con un AND:

Código PHP:
$whereStr "";

if (!
$empty($condiciones)) {
  
$whereStr ' WHERE ' implode(' AND '$condiciones); // cláusula where + las condiciones aglutinadas

El ejemplo está en PHP para fastidiar un poco a Mario, , pero puede adaptarse. Lo esencial es:
  • Recabar las condiciones de forma independiente
  • Armar la consulta una vez que todas las condiciones estén recabadas.

// Saludos

Última edición por roman fecha: 23-10-2015 a las 17:31:33.
Responder Con Cita