Foros del Web » Programando para Internet » PHP »

Insertar código PHP dentro de una consulta MySQL

Estas en el tema de Insertar código PHP dentro de una consulta MySQL en el foro de PHP en Foros del Web. Hola estimados, Les escribo porque tengo la siguiente duda: Tengo un formulario que contiene 6 input para realizar una búsqueda en una tabla, y lo ...
  #1 (permalink)  
Antiguo 09/09/2015, 17:01
 
Fecha de Ingreso: agosto-2014
Mensajes: 12
Antigüedad: 5 años, 4 meses
Puntos: 0
Pregunta Insertar código PHP dentro de una consulta MySQL

Hola estimados,

Les escribo porque tengo la siguiente duda:

Tengo un formulario que contiene 6 input para realizar una búsqueda en una tabla, y lo que necesito hacer es que según la cantidad de input que se llenaron (puede llenar de 1 a 6) me haga la consulta. Para ello quiero colocar dentro de la consulta un if en php, cosa que si no ingresó nada en un input, la consulta no busque en ese campo. Así me evito realizar una consulta para cada tipo de combinatoria de llenado de input

Algo así de ejemplo:

$sql="SELECT * FROM tabla WHERE if($campo1!=" "){echo CAMPO1 LIKE '%$campo1%'} if($campo2=" "){echo AND CAMPO2 LIKE '%$campo2%'} if($campo2!=" "){echo AND CAMPO2 LIKE '%$campo2%'}..."

Saludos!
  #2 (permalink)  
Antiguo 09/09/2015, 19:12
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.978
Antigüedad: 11 años, 3 meses
Puntos: 2191
Respuesta: Insertar código PHP dentro de una consulta MySQL

Si usaras el buscador podrías haber encontrado algo como esto: http://www.forosdelweb.com/f18/busca...7/#post4736633
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 10/09/2015, 07:08
Avatar de gogupe  
Fecha de Ingreso: octubre-2006
Ubicación: Mallorca
Mensajes: 873
Antigüedad: 13 años, 1 mes
Puntos: 32
Respuesta: Insertar código PHP dentro de una consulta MySQL

Lo que no entiendo es porque no hace la comprobación de $campo1 antes de escribir la consulta ????
__________________
Somos una serie de acontecimiento que puede venir al caso en un momento dado.
  #4 (permalink)  
Antiguo 10/09/2015, 07:13
 
Fecha de Ingreso: agosto-2014
Mensajes: 12
Antigüedad: 5 años, 4 meses
Puntos: 0
Respuesta: Insertar código PHP dentro de una consulta MySQL

Porque tendría que hacer miles de comprobaciones de todas las combinatorias mediante if de todos los campos, ya que el usuario puede llenar los input al azar (dependiendo de lo que quiere consultar)
  #5 (permalink)  
Antiguo 10/09/2015, 07:16
Avatar de gogupe  
Fecha de Ingreso: octubre-2006
Ubicación: Mallorca
Mensajes: 873
Antigüedad: 13 años, 1 mes
Puntos: 32
Respuesta: Insertar código PHP dentro de una consulta MySQL

Si pusieras un poco mas de código se entendería mejor...

¿$campo1 que es una variable de PHP o un campo de la base de datos?
__________________
Somos una serie de acontecimiento que puede venir al caso en un momento dado.
  #6 (permalink)  
Antiguo 10/09/2015, 07:17
 
Fecha de Ingreso: agosto-2014
Mensajes: 12
Antigüedad: 5 años, 4 meses
Puntos: 0
Respuesta: Insertar código PHP dentro de una consulta MySQL

Estimado,

Gracias por ayudar pero su respuesta no me sirve, ya que en ninguna parte de dicho tema responden a mi consulta de poder ingresar código php dentro de la consulta.
Lo que quiero es que si la variable viene "vacía" ese campo no aparezca en el WHERE de la consulta.

Cita:
Iniciado por Triby Ver Mensaje
Si usaras el buscador podrías haber encontrado algo como esto: [url]http://www.forosdelweb.com/f18/buscador-avanzado-duda-consulta-sql-1135347/#post4736633[/url]
  #7 (permalink)  
Antiguo 10/09/2015, 07:26
Avatar de gogupe  
Fecha de Ingreso: octubre-2006
Ubicación: Mallorca
Mensajes: 873
Antigüedad: 13 años, 1 mes
Puntos: 32
Respuesta: Insertar código PHP dentro de una consulta MySQL

Mira si te puede servir esto:

http://www.forosdelweb.com/f86/condi...mysql-1132864/
__________________
Somos una serie de acontecimiento que puede venir al caso en un momento dado.
  #8 (permalink)  
Antiguo 10/09/2015, 08:08
 
Fecha de Ingreso: agosto-2014
Mensajes: 12
Antigüedad: 5 años, 4 meses
Puntos: 0
Respuesta: Insertar código PHP dentro de una consulta MySQL

Esto es lo que tengo, como verás tengo un formulario y en el archivo que proceso ese formulario tengo que verificar TODAS las combinaciones posibles de los campos que puede llenar el usuario.

Formulario.html
Código HTML:
<label>Fecha Inicio:</label>
<input name="fecha_inicio" data-provide="datepicker" type="text"  placeholder="Ingrese una fecha">
<label>Km/Lugar:</label>
<input name="km_lugar" type="text" placeholder="Ingrese un km o lugar">
<label>Categoría:</label>
<input name="categoria" type="text" placeholder="Ingrese categoría">
<label>DEN/DES:</label>
<input name="den_des" type="text" placeholder="Ingrese DEN/DES">
<button name="buscar_criterios" type="submit">Buscar</button> 
Procesa_formulario.php
Código PHP:
$fecha_inicio $_POST["fecha_inicio"];

$categorias $_POST["categorias"];

$km_lugar strtoupper($_POST["km_lugar"]);
$km_lugar_2 strtr($km_lugar"ñáéíóú""ÑÁÉÍÓÚ");

$den_des strtoupper($_POST["den_des"]);

$descripcion strtoupper($_POST["descripcion"]);
$descripcion_2 strtr($descripcion"ñáéíóú""ÑÁÉÍÓÚ");

$notificador strtoupper($_POST["notificador"]);
$notificador_2 strtr($notificador"ñáéíóú""ÑÁÉÍÓÚ");

//SOLO FECHA_INICIO Y CATEGORIA
//--------------------
if ($km_lugar=="" AND $den_des=="" AND $descripcion=="" AND $notificador=="")
{
    
$sql=mysqli_query($link"SELECT * FROM despacho_libro_acta WHERE fecha_inicio='$fecha_inicio' AND categoria='$categorias' ORDER BY fecha_hora DESC");
    
$row=mysqli_fetch_array($sql);
}
//--------------------

//SOLO FECHA_INICIO Y KM/LUGAR
//--------------------
if ($categorias=="" AND $den_des=="" AND $descripcion=="" AND $notificador=="")
{
    
$sql=mysqli_query($link"SELECT * FROM despacho_libro_acta WHERE fecha_inicio='$fecha_inicio' AND km_lugar LIKE '%$km_lugar_2%' ORDER BY fecha_hora DESC");
    
$row=mysqli_fetch_array($sql);
}
//--------------------
ETC
ETC
ETC 
  #9 (permalink)  
Antiguo 11/09/2015, 01:26
Avatar de gogupe  
Fecha de Ingreso: octubre-2006
Ubicación: Mallorca
Mensajes: 873
Antigüedad: 13 años, 1 mes
Puntos: 32
Respuesta: Insertar código PHP dentro de una consulta MySQL

Pues yo sigo pensando en que tienes mal planteado el "asunto".

Yo tengo hecho un portal inmobiliario hecho, y te puedo decir que el filtro tiene muchisimas posibilidades distintas, pero voy construyendo por cada filtro la cadena del SQL, asi por ejemplo si la fecha no está vacia, le pongo fecha='$_POST[fecha]' y si está vacía simplemente no se lo paso, al final del todo ese "where" se lo paso en una sola consulta a la BD y me muestra según los criterios que he marcado.

Como tu lo estás haciendo, hay muchas posibilidades y debes de pensar en que la programación, cuanto mas resumido y menos lineas tenga el código, mas depurado lo tendrá, y mas rápido se ejecutará.

Un saludo.
__________________
Somos una serie de acontecimiento que puede venir al caso en un momento dado.
  #10 (permalink)  
Antiguo 11/09/2015, 08:20
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 626
Antigüedad: 15 años, 9 meses
Puntos: 69
Respuesta: Insertar código PHP dentro de una consulta MySQL

Yo haría algo así. Es sólo un ejemplo, tienes que adaptarlo a tu código:

Código PHP:
Ver original
  1. $fecha_inicio = $_POST["fecha_inicio"];
  2.  
  3.     $categorias = $_POST["categorias"];
  4.  
  5.     $km_lugar = strtoupper($_POST["km_lugar"]);
  6.     $km_lugar_2 = strtr($km_lugar, "ñáéíóú", "ÑÁÉÍÓÚ");
  7.  
  8.     $den_des = strtoupper($_POST["den_des"]);
  9.  
  10.     $descripcion = strtoupper($_POST["descripcion"]);
  11.     $descripcion_2 = strtr($descripcion, "ñáéíóú", "ÑÁÉÍÓÚ");
  12.  
  13.     $notificador = strtoupper($_POST["notificador"]);
  14.     $notificador_2 = strtr($notificador, "ñáéíóú", "ÑÁÉÍÓÚ");
  15.    
  16.     $swhere = "";
  17.     if ($fecha_inicio != "")
  18.     {
  19.         $swhere .= "fecha_inicio='$fecha_inicio'";
  20.     }
  21.  
  22.     if ($km_lugar != "")
  23.     {
  24.         if ($swhere != "")
  25.         {
  26.             $swhere .= " AND km_lugar LIKE '%$km_lugar_2%'";   
  27.         }
  28.         else
  29.         {
  30.             $swhere .= "km_lugar LIKE '%$km_lugar_2%'";
  31.         }
  32.        
  33.     }
  34.     //Asi sucesivamente
  35.     if ($otra_variable != "")
  36.     {
  37.         if ($swhere != "")
  38.         {
  39.             $swhere .= " AND campo_bd = '$otra_variable'"; 
  40.         }
  41.         else
  42.         {
  43.             $swhere .= "campo_bd = '$otra_variable'";  
  44.         }
  45.        
  46.     }
  47.     //Al final construyes la sentencia SQL
  48.     $sql = "SELECT * FROM despacho_libro_acta WHERE ".$swhere;
  49.     $consulta = mysqli_query($link, $sql);
  50.     $row = mysqli_fetch_array($consulta);
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]
  #11 (permalink)  
Antiguo 11/09/2015, 10:51
 
Fecha de Ingreso: mayo-2015
Ubicación: flux
Mensajes: 8
Antigüedad: 4 años, 6 meses
Puntos: 0
Respuesta: Insertar código PHP dentro de una consulta MySQL

Que te parece esto?

Código PHP:
//$campo1 = $_POST["campo1"];
//$campo2 = $_POST["campo2"];

$campo1="";
$campo2="2";

//------------------------------------------------------------

$sql="SELECT * FROM tabla WHERE ";
if(!empty(
$campo1)){$sqlq=$sql."CAMPO1 LIKE '%".$campo1."%'"$and=" and ";} else {$sqlq$sql." "$and=" "; } 
if(!empty(
$campo2)){$sqlq=$sqlq.$and"CAMPO2 LIKE '%".$campo2."%'";} 
echo 
$sqlq
  #12 (permalink)  
Antiguo 11/09/2015, 12:26
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.321
Antigüedad: 12 años
Puntos: 2653
Respuesta: Insertar código PHP dentro de una consulta MySQL

Cita:
Iniciado por dardo123 Ver Mensaje
Porque tendría que hacer miles de comprobaciones de todas las combinatorias mediante if de todos los campos, ya que el usuario puede llenar los input al azar (dependiendo de lo que quiere consultar)
Como ya habrás notado a través de las dos ultimas soluciones propuestas (que en realidad son lo mismo), estás completamente errado al suponer que debes hacer todas las combinatorias de condiciones. Sólo necesitas agregar dinamicamente una condición adicional por cada parámetro que llega.
Infortunadamente no existe otro camino: Si tienes N parametros posibles, y quieres consultar sólo por los que se ingresen, pues tendrás que verificar uno por uno cuales entraron y sólo poner lo necesario para ESE.
Todos los sofwares que conoces usan la misma lógica.

La unica otra alternativa práctica se da si y sólo si se trata de texto, o se va a comparar como texto. En ese caso puedes crear un indice FULLTEXT sobre todas las columnas que se pueden consultar, y usar MATCH() AGAINST() en la query.
Pero eso tiene ciertas condiciones, como por ejemplo, no sirve para palabras de menos de cinco caracteres, y no permite buscar patrones, solo palabras.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: formulario, mysql, select, sql, tabla
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 07:44.