E construido un filtro para cionsulta echa dinamicamente bajo criterios pero cuando los valores que se incluyen la variable $criterios son numericos ejecuta el query bien pero cuando son string no lo hace bien.Si el query lo mando imprimir en pantalla, lo copio y pego en sql de phpmyadmin y le agrego comillas a los valores que no son numericos en la base de datos, ejecuta bien el query.
ejemplo query de la variable $consulta con comillas (como lo pongo en el ejecutor de sql phpmyadmin):
Código PHP:
SELECT *
FROM alumnos, creditos, cursos, examen_medca
WHERE alumnos.IdAlumno = creditos.IdAlumno && alumnos.IdAlumno = cursos.IdAlumno && alumnos.IdAlumno = examen_medca.IdAlumno && alumnos.ClaveLicenciatura =001 && alumnos.Turno = "Matutino" && alumnos.sexo = "Masculino"
ejemplo query de la variable $consulta sin comillas( como lo imprime el navegador si pongo :
echo $consulta;
en el codigo para ver la salida del query ):
Código PHP:
SELECT *
FROM alumnos, creditos, cursos, examen_medca
WHERE alumnos.IdAlumno = creditos.IdAlumno && alumnos.IdAlumno = cursos.IdAlumno && alumnos.IdAlumno = examen_medca.IdAlumno && alumnos.ClaveLicenciatura =001 && alumnos.Turno = Matutino && alumnos.sexo = Masculino
Este es el codigo del filtro:
Código PHP:
$Matricula = 0;
$Licenciatura = 0;
$Semestre = 0;
$Grupo = 0;
$Turno = 0;
$Sexo = 0;
if (isset($_POST["Matricula"]))
{
$Matricula = $_POST["Matricula"];
}
if (isset($_POST["Licenciatura"]))
{
$Licenciatura = $_POST["Licenciatura"];
}
if (isset($_POST["Semestre"]))
{
$Semestre = $_POST["Semestre"];
}
if (isset($_POST["Grupo"]))
{
$Grupo = $_POST["Grupo"];
}
if (isset($_POST["Turno"]))
{
$Turno = $_POST["Turno"];
}
if (isset($_POST["Sexo"]))
{
$Sexo = $_POST["Sexo"];
}
echo "<br>".$Licenciatura."<br> ".$Turno."<br> ".$Sexo." <br>";
$criterios = "";
if ($Matricula != 0)
{
$criterios .= "alumnos.IdAlumno = ".$Matricula." ";
}
if ($Licenciatura != 0)
{
$criterios .= "alumnos.ClaveLicenciatura = ".$Licenciatura." ";
}
if ($Grupo != 0)
{
$criterios .= " && alumnos.IdGrupo = ".$Grupo ." ";
}
if ($Semestre != 0)
{
$criterios .= " && alumnos.IdGrupo = ".$Semestre." ";
}
if ($Turno != 0)
{
if($Turno==1)$Turno = "Matutino";
if($Turno==2)$Turno = "Vespertino";
$criterios .= " && alumnos.Turno = ".$Turno." ";
}
if ($Sexo != 0)
{
if($Sexo==1)$Sexo = "Masculino";
if($Sexo==2)$Sexo = "Femenino";
$criterios .= " && alumnos.sexo = ".$Sexo." ";
}
@$consulta = 'SELECT * FROM alumnos, creditos, cursos, examen_medca WHERE alumnos.IdAlumno = creditos.IdAlumno && alumnos.IdAlumno = cursos.IdAlumno && alumnos.IdAlumno = examen_medca.IdAlumno && '.$criterios.'';
$datos = mysql_query($consulta,$conexion);
Que puedo hacer:
este es my formulario:
Código HTML:
<br>Ingrese los datos de busqueda<br><br>
<form action="MostrarC.php" method="POST" class="estiloformulario">
<br>
<input type="text" placeholder="Introduzca Matricula" name="Matricula" maxlength="35" class="button" /> Matricula
<br><br>
<select name="Licenciatura" class="button" >
<option>Seleccione una Opción...</option>
<option value="001">Informatica</option>
<option value="002">Contaduria</option>
<option value="003">Administracion</option>
<option value="004">Administracion a distancia</option>
</select> Licenciatura
<br /><br />
<select name="Grupo" class="button" >
<option >Seleccione una Opción...</option>
<option value="1">1 uli</option>
<option value="2">2 uli</option>
<option value="3">3 uli</option>
<option value="4">4 uli</option>
<option value="5">5 uli</option>
<option value="6">6 uli</option>
<option value="7">7 uli</option>
<option value="8">8 uli</option>
</select> Grupo
<br /><br />
<select name="Semestre" class="button" >
<option>Seleccione una Opción...</option>
<option value="1">1er</option>
<option value="2">2do</option>
<option value="3">3er</option>
<option value="4">4to</option>
<option value="5">5to</option>
<option value="6">6to</option>
<option value="7">7mo</option>
<option value="8">8vo</option>
<option value="9">9no</option>
<option value="10">10mo</option>
</select> Semestre
<br /><br />
<select name="Turno" class="button" >
<option>Seleccione una Opción...</option>
<option value="1">Matutino</option>
<option value="2">Vespertino</option>
</select> Turno
<br /><br />
<select name="Sexo" class="button" >
<option >Seleccione una Opción...</option>
<option value="1">Masculino</option>
<option value="2">Femenino</option>
</select> Sexo
<br /><br />
<input type="submit" value="Registrar"/>
</form>