entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Buscador con varios criterios MYSQL, PHP

Buenas desarrolladores, tengo un problema desde hace ya varios días y las búsquedas en Internet aun no me resuelven.

Necesito crear un formulario con 4 campos que funcione como buscador ya sea dando todos los parámetros o solo dos que son fecha inicial y fecha final.

Hasta ahora esto es lo que llevo, al parecer funciona ya que no manda ningún error pero al momento de enviar el formulario no arroja ninguna búsqueda.

Espero puedan ayudarme a resolverlo y agradecería también sus opiniones ya que soy nuevo en este mundo. Gracias de antemano!!

<?php
  require '../../../scripts/funciones.php';
  if(! haIniciadoSesion() )
  {
    header( 'Location: index.html');
  }
conectar();

    $trabajador = getNumTrab();
    $where = array();

  date_default_timezone_set('Mexico/General');
?>
<!DOCTYPE html>
<html lang="es">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Prodrecibo</title>

    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">

      <link href="../../../css/dashboard.css" rel="stylesheet">
  </head>

  <body>
    <?php include 'menu-superior-prodArea.php'; ?>

    <div class="container-fluid">
     <div class="row">
     <div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
       <h1 class="page-header" align=center>Recibo</h1>

        <h4 class="sub-header" align=center>Zona de captura</h4>

       <div class="row">
       <div class="col-sm-6 col-sm-offset-3">

    <div class="panel panel-default">
    <div class="panel-heading"><h3 class="panel-title">Captura de Equipos</h3></div>
              <div class="panel-body">
                <form action="prodrecibo.php" method="POST">
                  <div class="form-group">
                    <label for="txtFechainicial">Fecha inicial</label>
                    <input type="date" class="form-control" id="txtFechainicial"  name="txtFechainicial" value="<?php echo date("Y-m-d"); ?>" required>
                  </div>
                  <div class="form-group">
                    <label for="txtFechafinal">Fecha final</label>
                    <input type="date" class="form-control" id="txtFechafinal" name="txtFechafinal" value="<?php echo date("Y-m-d"); ?>" >  
                  </div>  
                  <div class="form-group">
                    <label for="txtTrabajador">Trabajador</label>
                    <select type="text" class="form-control" id="txtTrabajador" name="txtTrabajador" >

                        <?php foreach ($trabajador as $trabajador): ?> 
                         <option value="<?= $trabajador[3]?>"><?= $trabajador[3]?></option>
                        <?php endforeach?>
                    </select>
                  </div>
                  <div class="form-group">
                    <label for="txtSerie">Serie</label>
                    <input type="text" class="form-control" id="txtSerie" name="txtSerie" >
                  </div>
                <!--   <input type="button" value="Guardar" onclick="submit()"> -->
                  <input type="submit" name="submit" value="Buscar">
                </form>
              </div>
            </div>
          </div> 
        </div>
        </div>
      </div>
    </div>

<?php
if(isset($_POST['txtFechainicial']) && $_POST['txtFechainicial']!="")
{
$where[] = "fecha_recibo > ".$_POST['txtFechainicial']."";
}
if(isset($_POST['txtFechafinal']) && $_POST['txtFechafinal']!="")
{
$where[] = "fecha_recibo < ".$_POST['txtFechafinal']."";
}
if(isset($_POST['txtTrabajador']) && $_POST['txtTrabajador']!="")
{
$where[] = "trab_recibo = ".$_POST['txtTrabajador']."";
}
if(isset($_POST['txtSerie']) && $_POST['txtSerie']!="")
{
$where[] = "serie1 = ".$_POST['txtSerie']."";
}

$query = "SELECT * FROM recibo WHERE '".implode(" AND ",$where)."'";
$result = mysqli_query($conexion, $query) or die(mysqli_error($conexion));
?>

<table>
  <tr>
    <td>Fecha_recibo</td>
    <td>Hora_recibo</td>
    <td>Origen</td>
    <td>Modelo</td>
    <td>Serie1</td>
    <td>Serie2</td>
    <td>Serie3</td>
    <td>Serie4</td>
    <td>Trab_recibo</td>
  </tr>
</table>

<?php

while ($muestra = mysqli_fetch_assoc($result)) {
  echo '<table>';
  echo '<tr>';
    echo '<td>'.$muestra['fecha_recibo'].'</td>';
    echo '<td>'.$muestra['hora_recibo'].'</td>';
    echo '<td>'.$muestra['origen'].'</td>';
    echo '<td>'.$muestra['modelo'].'</td>';
    echo '<td>'.$muestra['serie1'].'</td>';
    echo '<td>'.$muestra['serie2'].'</td>';
    echo '<td>'.$muestra['serie3'].'</td>';
    echo '<td>'.$muestra['serie4'].'</td>';
    echo '<td>'.$muestra['trab_recibo'].'</td>';
  echo '</tr>';
  echo '</table>';

  }  
 desconectar(); 

?>

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
  </body>
</html> 

1 Respuesta

2votos

mchojrin Puntos2630

Pues lo primero que te sugiero es que antes de realizar el query efectivo imprimas el sql para ver que no haya un problema ahí:

$query = "SELECT * FROM recibo WHERE '".implode(" AND ",$where)."'";

echo $query."<br/>";

$result = mysqli_query($conexion, $query) or die(mysqli_error($conexion));

Luego, te recomendaría intentar darle algo más de estructura a tu código... intenta separar el HTML del PHP.

0voto

misaelrios comentado

Muchas gracias amigo!! Ya logré resolverlo, pero si me hace falta darle más estructura como mencionas, lo llevaré a cabo

Gracias!!!

0voto

Peter comentado

@misaelrios por favor comparte la solución en una nueva respuesta.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta