Consulta a base de datos mysql

Tengo la siguiente tabla en la base de datos.
# MySQL-Front Dump 1.22
#
# Host: localhost Database: personeria
#--------------------------------------------------------
# Server version 3.23.43-nt
#
# Table structure for table 'contrataciones'
#
CREATE TABLE /*!32300 IF NOT EXISTS*/ contrataciones (
codi_contrato varchar(5) NOT NULL DEFAULT '0' ,
tipo_proceso varchar(30) NOT NULL DEFAULT '0' ,
dependencia varchar(50) NOT NULL DEFAULT '0' ,
objeto varchar(60) NOT NULL DEFAULT '0' ,
estado varchar(40) NOT NULL DEFAULT '0' ,
etapa_contrato varchar(25) NOT NULL DEFAULT '0' ,
enlace1 varchar(50) NOT NULL DEFAULT '0' ,
enlace2 varchar(50) NOT NULL DEFAULT '0' ,
enlace3 varchar(50) NOT NULL DEFAULT '0' ,
enlace4 varchar(50) NOT NULL DEFAULT '0' ,
enlace5 varchar(50) NOT NULL DEFAULT '0' ,
enlace6 varchar(50) NOT NULL DEFAULT '0' ,
enlace7 varchar(50) NOT NULL DEFAULT '0' ,
PRIMARY KEY (codi_contrato)
);
#
# Dumping data for table 'contrataciones'
#
INSERT INTO contrataciones VALUES("001","licitacion","direccion administrativa","diseño de red","adjudicado","licitacion","diseño.doc","0","0","","","","");
INSERT INTO contrataciones VALUES("002","contratacion","despacho","mantenimiento de equipos","adjudicado","inicio","mantenimiento.doc","0","0","","","","");
INSERT INTO contrataciones VALUES("003","licitacion","juridica","tutelas","adjudicado","prepliego","tutelas.pdf","0","0","","","","");
Quiero realizar la consulta que si solo escribo el código del contrato y esta en la base de datos me muestre todo lo referente a ese código solamente, o que la búsqueda se realice por cualquier criterio y me muestre el o los resultados.
este es el formulario:
<form method="post" action="buscar_contratos.php">
<table width="100%" border="0">
<TR>
<td width="38%"><font color="#800000"><b> Código del Contrato</b></font></td>
<td colspan="3">
<font color="#800000"><b>
<input type="text" name="codigo" size="20">
</b></font>
</td>
</tr>
<tr>
<td width="38%"><font color="#800000"><b> Tipo de Proceso</b></font></td>
<td colspan="3">
<font color="#800000"><b>
<select name=tipo id=txtregion0>
<option value="" SELECTED></option>
<OPTION Value='LICITACION'>LICITACION</OPTION>
<OPTION Value='CONTRATACION DIRECTA'>CONTRATACION DIRECTA</OPTION>
</select>
</b></font>
</td>
</tr>
<tr>
<td width="38%"><font color="#800000"><b> Dependencia</b></font></td>
<td colspan="3">
<font color="#800000"><b>
<select name=secretaria id=txtregion0>
<option value="" SELECTED></option>
<OPTION Value='Despacho del Personero'>Despacho del Personero</OPTION>
<OPTION Value='Direccion Administrativa'>Direccion Administrativa</OPTION>
<OPTION Value='Secritaria Privada'>Secretaria Privada</OPTION>
<OPTION Value='Oficina de Juridica'>Oficina de Juridica</OPTION>
<OPTION Value='Vigilancia Administrativa'>Vigilancia Administrativa</OPTION>
<OPTION Value='Quejas y Reclamos'>Quejas y Reclamos</OPTION>
<OPTION Value='Bienes'>Bienes</OPTION>
<OPTION Value='Trabajo Social'>Trabajo Social</OPTION>
</select>
</b></font>
</td>
</tr>
<tr>
<td width="38%"><font color="#800000"><b> Objeto del Contrato</b></font></td>
<td colspan="3">
<font color="#800000"><b>
<input type="text" name="objeto" size="20">
</b></font>
</td>
</tr>
<tr>
<td width="38%"> <font color="#800000"><b>  Estado</b></font></td>
<td colspan="3">
<font color="#800000"><b>
<select name="estado1">
<option>En Proceso</option>
<option>Adjudicado</option>
</select>
</b></font>
</td>
</tr>
<tr>
<td width="38%"><font color="#800000"><b> Etapa del Contrato</b></font></td>
<td colspan="3">
<font color="#800000"><b>
<select name=estado id=txtregion0>
<option value="" SELECTED></option>
<OPTION Value='Pliegos'>Pliegos</OPTION>
<OPTION Value='Adendos'>Adendos</OPTION>
<OPTION Value='Prepliegos'>Prepliegos</OPTION>
<OPTION Value='Acta de Aclaracion'>Acta de Aclaracion</OPTION>
<OPTION Value='Acta de Selección'>Acta de Selección</OPTION>
<OPTION Value='Conformacion Dinamica'>Conformacion Dinamica</OPTION>
<OPTION Value='Acta de Adjudicacion'>Acta de Adjudicacion</OPTION>
<OPTION Value='Acta Menor Cuantia'>Acta Menor Cuantia</OPTION>
<OPTION Value='Informe de Evaluacion'>Informe de Evaluacion</OPTION>
<OPTION Value='Observaciones'>Observaciones</OPTION>
<OPTION Value='Inicial'>Inicial</OPTION>
</select>
</b></font>
</td>
</tr>
<tr>
<td colspan="4" align="center">
<font color="#800000"><b>
<input type="submit" value="Buscar">
</b></font>
</td>
</tr>
</table>
</form>
y aqui esta el codigo de buscar contratos:
<?php
# Aquí lo que hacemos es conectar al servidor de Bases de Datos
$link = mysql_connect("localhost","root","") or...

1 respuesta

Respuesta
1
De momento voy a suponer que el formulario está correcto y te funciona. Supongo que el problema está en el script que procesa los datos y realiza la consulta.
Si lo que quieres es obtener resultados dependiendo de los campos que se rellenen en el formulario, tienes que crear la consulta usando esos valores. Para crear la consulta usa el siguiente código:
$query = "SELECT * FROM contrataciones WHERE codi_contrato";
if (isset( $_POST['codigo'] )) {
$query += " = '" . $_POST['codigo'] . "'";
} else {
$query += " >= '0'";
}
if (isset( $_POST['tipo'] )) {
$query += " AND tipo = '" . $_POST['tipo'] ."'";
}
if (isset( $_POST['secretaria'] )) {
$query += " AND secretaria = '" . $_POST['secretaria'] . "'";
}
if (isset( $_POST['objeto'] )) {
$query += " AND objeto = '" . $_POST['objeto'] . "'";
}
if (isset( $_POST['estado1'] )) {
$query += " AND estado1 = '" . $_POST['estado1'] . "'";
}
if (isset( $_POST['estado'] )) {
$query += " AND estado = '" . $_POST['estado'] . "'";
}
$query += " ORDER BY codi_contrato DESC ";
Es resto de tu código te puede valer. La consulta creada será igual a la de tu código si no se rellena ningún campo del formulario. En el momento que se rellene algún campo, se busca por ese campo. Codi_contrato será siempre un código de contrato escrito en el formulario o todos los mayores de cero. El resto de los campos se usarán sólo si se rellenan antes de enviar el formulario.
Pruébalo de esta manera:
$query = "SELECT * FROM contrataciones WHERE codi_contrato";
if ($_POST['codigo'] != null) {
$query .= " = '" . $_POST['codigo'] . "'";
} else {
$query .= " >= '0'";
}
if ($_POST['tipo'] != null) {
$query .= " AND tipo = '" . $_POST['tipo'] ."'";
}
if ($_POST['secretaria'] != null) {
$query .= " AND secretaria = '" . $_POST['secretaria'] . "'";
}
if ($_POST['objeto'] != null) {
$query .= " AND objeto = '" . $_POST['objeto'] . "'";
}
if ($_POST['estado1'] != null) {
$query .= " AND estado1 = '" . $_POST['estado1'] . "'";
}
if ($_POST['estado'] != null) {
$query .= " AND estado = '" . $_POST['estado'] . "'";
}
$query .= " ORDER BY codi_contrato DESC ";
Este código tienes que ponerlo sustituyendo a tu consulta. Es decir, sustituyendo la línea:
$query = "SELECT * FROM contrataciones where (`codi_contrato` >= '0') ORDER BY `codi_contrato` DESC ";
Ahora si funciona. Lo que tiene que hacer esta consulta es ir creándose de forma que por valor que rellenes en el formulario se use para buscar en la base de datos. Si dejas todo el formulario vacío se realiza la consulta que tienes en tu código. De esta forma puedes realizar una búsqueda en base a los datos que se introduzcan en el formulario.
Disculpa que vuelva a preguntar pero en que parte debo colocar este código por que lo ingrese en la parte de consulta y me da error. Y si el formulario y la consulta están bien
Hola nuevamente, no me esta funcionando ahora me manda un error que dice:
Notice:Unknown column 'estado1'in'where clause'inc:\foxserv\www\buscar_contratos.php on line 75, y la linea 75 es:
$result = mysql_query($query) or die(trigger_error(mysql_error()));
Es cierto, los campos de la base de datos y los del formulario no coinciden todos, el código correcto es el siguiente:
$query = "SELECT * FROM contrataciones WHERE codi_contrato";
if ($_POST['codigo'] != null) {
$query .= " = '" . $_POST['codigo'] . "'";
} else {
$query .= " >= '0'";
}
if ($_POST['tipo'] != null) {
$query .= " AND tipo_proceso = '" . $_POST['tipo'] ."'";
}
if ($_POST['secretaria'] != null) {
$query .= " AND dependencia = '" . $_POST['secretaria'] . "'";
}
if ($_POST['objeto'] != null) {
$query .= " AND objeto = '" . $_POST['objeto'] . "'";
}
if ($_POST['estado1'] != null) {
$query .= " AND estado = '" . $_POST['estado1'] . "'";
}
if ($_POST['estado'] != null) {
$query .= " AND etapa_contrato = '" . $_POST['estado'] . "'";
}
$query .= " ORDER BY codi_contrato DESC ";
Disculpa que pregunte tanto.
Ahora no me muestra ningún resultado y en la tabla donde debe mostrarme los didtintos contratos me aparece que no se obtuvieron resultados.
He realizado pruebas con el código de tu formulario tal cual lo tienes y funciona perfectamente.
El código de buscar_contratos.php no lo puedo probar entero porque no tengo la base de datos. Pero si he probado la consulta. Si envío el formulario sin modificar ningún campo, la consulta creada es la siguiente:
SELECT * FROM contrataciones WHERE codi_contrato >= '0' AND estado1 = 'En Proceso' ORDER BY codi_contrato DESC
Si pongo algunos datos, la consutla es la siguiente:
SELECT * FROM contrataciones WHERE codi_contrato = 'UnContrato' AND tipo = 'CONTRATACION DIRECTA' AND objeto = 'EsteObjeto' AND estado1 = 'En Proceso' ORDER BY codi_contrato DESC
Comprueba que las consultas que tu obtienes son similares. Luego valídalas sobre la base de datos asegurándote que devuleven algún resultado. El resto del código parece estar correcto.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas