Foros del Web » Programando para Internet » PHP »

Busqueda Avanzada

Estas en el tema de Busqueda Avanzada en el foro de PHP en Foros del Web. Hola Amigos Nuevamente recurro a ustedes por lo siguiente. Tengo un formulario que es este: echo " <FORM ACTION=busqueda_hormigones.php METHOD=post> <table border='0' align='center'> <tbody> <tr> ...
  #1 (permalink)  
Antiguo 08/12/2006, 08:14
Avatar de Killerx_8937  
Fecha de Ingreso: noviembre-2006
Mensajes: 99
Antigüedad: 17 años, 4 meses
Puntos: 0
Sonrisa Busqueda Avanzada

Hola Amigos Nuevamente recurro a ustedes por lo siguiente.

Tengo un formulario que es este:

echo "
<FORM ACTION=busqueda_hormigones.php METHOD=post>
<table border='0' align='center'>
<tbody>
<tr>
<TD colspan='3'><b>I.- Antecedentes Generales<br></b></TD>
</tr>
<tr>
<td width='100' align='left'>Certificado<br>
<input maxlength='6' size='6' type='text' name='CertNum' >
</p></td>
<td width='250'>Obra<br>
<input maxlength='255' size='30' type='text' name='Obra'>
</p></td>
<td width='300'>Mandante<br>
<input maxlength='30' size='20' type='text' name='Mandante'>
</p></td>
</tr>
<tr><td width='100' align='left'>Cantidad<br>
<input maxlength='30' size='6' type='text' name='Cant'>
<td><p>Probeta<br><SELECT name='Probeta'><option SELECTED name='default'>Seleccione Probeta</option>
<OPTION value='Cubo'>Cubo</OPTION>
<OPTION value='Cilindro'>Cilindro</OPTION>
<OPTION value='Prisma'>Prisma</OPTION>
<OPTION value='Rilem'>Rilem</OPTION>
</p></SELECT></td>
<td><p>Dimensión<br>
<SELECT name='Dimension'><option SELECTED name='default'>Seleccione Dimención</option>
<OPTION value='15 X 15'>15 X 15</OPTION>
<OPTION value='20 X 20'>20 X 20</OPTION>
<OPTION value='15 X 30'>15 X 30</OPTION>
<OPTION value='53 x 15'>53 x 15</OPTION>
<OPTION value='4 X 16'>4 X 16</OPTION>
</p></SELECT></td></tr>
<tr>
<td width='100'>Resistencia<br>
<input maxlength='100' size='10' type='text' name='Resistencia'>
</p></td>
<td width='250'>Numero de Muestra<br>
<input maxlength='100' size='20' type='text' name='NumMuestra'>
</p></td><td><p>Fecha de Confección<br>
<input id='fecha' type='text' name='FechaConfec'/>
</td>
</tr>
<tr><td>Ver Todos</td><td><INPUT TYPE=\"checkbox\" NAME=\"Todo\"></td><td colspan='2' rowspan='1' align='center'> <p><br><br>
<input type='submit' name='Buscar' value='Buscar' onclick='return verifica(this.form)'></form>
</p><br></td></tr>

</tbody>
</table>
</FORM>";

Con este formulario pretendo hacer búsquedas avanzadas en una db mysql lo cual me ha causado varios dolores de cabeza .

Los campos CertNum, NumMuestra, FecaConfec. Son numéricos y únicos así que en la consulta para estos campos no debería usarse like, pero para el resto si e hecho esto.


$q = "select * from $Tabla WHERE CertNum = '$_POST[CertNum]' Or Obra = '$_POST[Obra]' Or Mandante = '$_POST[Mandante]' Or Cant = '$_POST[Cant]' Or Probeta = '$_POST[Probeta]' Or Dimension = '$_POST[Dimension]' Or Resistencia = '$_POST[Resistencia]' Or NumMuestra ='$_POST[NumMuestra]'Or FechaConfec = '$_POST[FechaConfec]' ORDER BY CertNum ASC";

Pero lo que me pasa es que si pongo un numero en CertNum y otro diferente en NumMuestra me encuentra los dos. Que no es lo deseado pienso que debo filtrar el formulario antes de hacer la conulta o no.


Bueno amigos espero que orienten con esto.
Saludos a todos.
  #2 (permalink)  
Antiguo 08/12/2006, 08:44
 
Fecha de Ingreso: agosto-2006
Mensajes: 50
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: Busqueda Avanzada

yo recogeria todas las variables antes de la consulta, y luego preguntaria por cada una para agregarla a la consulta, asi:
por ejemplo
Código PHP:

$CertNum 
$_POST[CertNum]; 
$Obra $_POST[Obra]; 

$q "select * from $Tabla where "//ojo con el espacio al final
       
if($CertNum!='')
{
$q.="CertNum =".$CertNum.""
}

if(
$Obra!='')
{
$q.="Obra=".$Obra.""

y asi seguiria con todas la variables, igual tendria algunas precauciones por ejemplo si viene activado el check "ver todos" en $q al final deberia no ir el where, o si vienen mas de una variable que salga un and entremedio y asi...

asi yo armaria la consulta

saludos
  #3 (permalink)  
Antiguo 08/12/2006, 11:31
Avatar de Killerx_8937  
Fecha de Ingreso: noviembre-2006
Mensajes: 99
Antigüedad: 17 años, 4 meses
Puntos: 0
Re: Busqueda Avanzada

Gracias pelu0
comensare a hacerlo.

despues te cuento como me va.
  #4 (permalink)  
Antiguo 08/12/2006, 12:06
Avatar de Killerx_8937  
Fecha de Ingreso: noviembre-2006
Mensajes: 99
Antigüedad: 17 años, 4 meses
Puntos: 0
Re: Busqueda Avanzada

ya resolvi lo del ver todos esto es lo que tengo pero la parte del and me esta complicando.


if ($_POST[Todo] == "on") {
$q = "select * from $Tabla ORDER BY CertNum ASC";
}else{
$CertNum = $_POST[CertNum];
$Obra = $_POST[Obra];
$Mandante = $_POST[Mandante];
$Cant = $_POST[Cant];
$Probeta = $_POST[Probeta];
$Dimension = $_POST[Dimension];
$Resistencia = $_POST[Resistencia];
$NumMuestra =$_POST[NumMuestra];
$FechaConfec = $_POST[FechaConfec];

$q = "select * from $Tabla where "; //ojo con el espacio al final
if($CertNum!='')
{
$q.="CertNum =".$CertNum."";
}
if($Obra!='')
{
$q.="Obra=".$Obra."";
}
if($Mandante!='')
{
$q.="Mandante=".$Mandante."";
}
if($Cant!='')
{
$q.="Cant=".$Cant."";
}
if($Probeta!='')
{
$q.="Probeta=".$Probeta."";
}
if($Dimension!='')
{
$q.="Dimension=".$Dimension."";
}
if($Resistencia!='')
{
$q.="Resistencia=".$Resistencia."";
}
if($NumMuestra!='')
{
$q.="NumMuestra=".$NumMuestra."";
}
if($FechaConfec!='')
{
$q.="FechaConfec=".$FechaConfec."";
}
}

alguna idea deveria verificar que venga mas de una varuiable definida . y ahí poner el and o no.
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




La zona horaria es GMT -6. Ahora son las 09:22.