Foros del Web » Programando para Internet » PHP »

diseñando consulta

Estas en el tema de diseñando consulta en el foro de PHP en Foros del Web. Hola a todos mi problema es el siguiente. estoy construyendo una consulta ql con un form con vario campos, los cualese agregan a la conulta ...
  #1 (permalink)  
Antiguo 09/12/2006, 11:58
Avatar de Killerx_8937  
Fecha de Ingreso: noviembre-2006
Mensajes: 99
Antigüedad: 17 años, 4 meses
Puntos: 0
Exclamación diseñando consulta

Hola a todos mi problema es el siguiente.

estoy construyendo una consulta ql con un form con vario campos, los cualese agregan a la conulta a medida que tienen datos lo cual funciona muy bien pero cuando pongo dos valores en el form me da un error porque no tine l and etre cada campo.alguien me podria ayudar a olucionarlo.

este es el form:
<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</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</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>";

y este el el script que recive el form.

// query sql
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 Like '%$Obra%' ";
}
if($Mandante!='')
{
$q.="Mandante Like '%$Mandante%' ";
}
if($Cant!='')
{
$q.="Cant =".$Cant." ";
}
if($Probeta!='Seleccione')
{
$q.="Probeta ='$Probeta' ";
}
if($Dimension!='Seleccione')
{
$q.="Dimension ='$Dimension' ";
}
if($Resistencia!='')
{
$q.="Resistencia ='$Resistencia' ";
}
if($NumMuestra!='')
{
$q.="NumMuestra =".$NumMuestra." ";
}
if($FechaConfec!='')
{
$q.="FechaConfec =".$FechaConfec." ";
}
}

$result= mysql_query($q, $link) or die ("problema con query".mysql_error());
como ven recivo las variables primero y si estan definidas las agreo al query pero me falta el poder ponerle el and cuando estan mas de una definida.


se entiende

gracas .
  #2 (permalink)  
Antiguo 09/12/2006, 12:15
Avatar de holahola  
Fecha de Ingreso: mayo-2005
Ubicación: Móstoles - (Madrid)
Mensajes: 214
Antigüedad: 18 años, 10 meses
Puntos: 1
Re: diseñando consulta

Quizás lo podrías hacer así:

Código PHP:
$q "select * from $Tabla where "//ojo con el espacio al final
$criterio="";
if(
$CertNum!='')
{
     if (
$criterio=="")
     { 
        
$criterio.="CertNum =".$CertNum." ";
    } else {
        
$criterio.=" and CertNum =".$CertNum." ";
    }
}
if(
$Obra!='')
{
      if (
$criterio=="")
     { 
        
$criterio.="Obra Like '%$Obra%' ";
    } else {
        
$criterio.=" and Obra Like '%$Obra%' ";
    }
}
// para el resto hacer igual y al final

$q.=$criterio//le añades el criterio a tu select 
Como ves, se trata de añadir el " and " cuando ya hay algo en la variable $criterio. Si te funciona, yo te recomendaría sacar el "where" de donde lo tienes y meterlo en las asignaciones de criterior; así evitarías el probable error si no seleccionas ningún campo ;)

Un saludo

Última edición por holahola; 09/12/2006 a las 12:24 Razón: aclaración
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 06:06.