PHP - Consulta multiple a tabla Mysql

 
Vista:
Imágen de perfil de Andres

Consulta multiple a tabla Mysql

Publicado por Andres (10 intervenciones) el 22/01/2017 19:23:48
Hola buen dia,

Quisiera consultarles ya que soy nuevo en esto del mundo de la programacion PHP, lo siguiente:

Preciso hacer un formulario con 2 o mas campos en los que al llenar uno o todos se ejecute la consulta a la base de datos y muestre el valor almacenado en la misma.

Hasta el momento cuento con el siguiente codigo el cual para que me muestre los resultados correctamente debo rellenar ambos campos en el formulario de consulta.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
/******** CONECTAR CON BASE DE DATOS **************** */
   $con = mysql_connect("localhost","usuario","pass");
   if (!$con){die('ERROR DE CONEXION CON MYSQL: ' . mysql_error());}
/* ********************************************** */
 
/********* CONECTA CON LA BASE DE DATOS  **************** */
   $database = mysql_select_db("db",$con);
   if (!$database){die('ERROR CONEXION CON BD: '.mysql_error());}
/* ********************************************** */
 
//ejecutamos la consulta
$sql = "SELECT * FROM facturacion WHERE OrdenCompra='".$_POST['ordencompra']."'AND CodBoc='".$_POST['codboc']."')";
$result = mysql_query ($sql);
$numero = 0;
// verificamos que no haya error 
if (! $result){
   echo "La consulta SQL contiene errores.".mysql_error();
   exit();
}else {
    echo "<table border='1'><tr><td>Razon Social</td><td>Comprobante</td><td>Localidad</td><td>Orden de Compra</td><td>Cod Boc</td>
         </tr><tr>";
//obtenemos los datos resultado de la consulta 
while($row = mysql_fetch_array($result))
  {
	echo "<tr><td><font face=\"verdana\">" .
	    $row["RazonSocial"] . "</font></td>";
    echo "<td><font face=\"verdana\">" .
	    $row["Comprobante"] . "</font></td>";
    echo "<td><font face=\"verdana\">" .
	    $row["Localidad"] . "</font></td>";
    echo "<td><font face=\"verdana\">" .
	    $row["OrdenCompra"]. "</font></td>";
    echo "<td><font face=\"verdana\">" .
	    $row["CodBoc"]. "</font></td></tr>";
    }
    echo "</tr></table>";
 }
   mysql_free_result($result);
  mysql_close($link);
?>  </table>

Yo lo que quiero es que si dejo alguno de los dos campos vacios no lo tenga en cuenta para arrojar el resultado de la consulta.

Desde ya muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Consulta multiple a tabla Mysql

Publicado por xve (6935 intervenciones) el 22/01/2017 20:42:05
Hola Andres, entiendo que tu problema esta aquí:
1
"... WHERE OrdenCompra='".$_POST['ordencompra']."'AND CodBoc='".$_POST['codboc']."')";
ya que en la consulta seleccionas los dos campos del formulario, no?

Segun entiendo, tendrias que hacer un condicional para hacer una consulta con uno u otro valor del formulario si alguno de ellos esta vacio, no? algo así:
1
2
3
4
5
6
7
8
if($_POST['ordencompra'] && $_POST['codboc'])
{
	$sql = "SELECT * FROM facturacion WHERE OrdenCompra='".$_POST['ordencompra']."'AND CodBoc='".$_POST['codboc']."')";
}elseif($_POST['ordencompra']){
	$sql = "SELECT * FROM facturacion WHERE OrdenCompra='".$_POST['ordencompra']."')";
}else{
	$sql = "SELECT * FROM facturacion WHERE CodBoc='".$_POST['codboc']."')";
}

Es esto lo que buscas?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Andres

Consulta multiple a tabla Mysql

Publicado por Andres (10 intervenciones) el 22/01/2017 20:54:09
Gracias xve por tu respuesta.

Efectivamente es eso lo que me estaba faltando, ahora realiza la consulta correctamente. Ya para terminar y abusar un poco de tu buena voluntad quisiera preguntarte.. En caso que quiera agregar un campo de consulta mas al formulario.. por ejemplo el campo: "comprobante" tendria que seguir agregando la condicion else a la consulta o ya tendria que agregar un codigo diferente?

Desde ya muchas gracias me sirvio de mucho tu ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar