He hecho un formulario en php para consultar información que tengo en mi base de datos.
El formulario consta de dos input y un boton.
Todo me funcionaba muy bien hasta que decidí crear un %comodin% para el primer input y asi el SELECT me seleccionaba un dato aunque no estuviera completo. Por ejemplo: Si queria seleccionar un Nombre que tuviera almenos la palabra "sangri" entonces me seleccionaba todo nombre que tuviera esa palabra, como "sangriento".
Y funcionaba pero me hacia una clase de conflicto con un OR que venia despues, el cual dejaba de funcionar como antes.
Os dejo una copia del codigo cuando funcionaba BIEN y ahora que funciona MAL.
Código:
AHORA:if ($nombre or $id>0){ $connect = mysql_connect("localhost","root","xxxx") or die ("No hemos podido acceder al servidor"); mysql_select_db ("bdaleyda",$connect); $query = mysql_query("SELECT joyas.ID,Nombre,Precio,Peso,Quilates,Sexo,Estado,Estante,Marca,Material,FechaEntrada,Descripcion,FechaSalida FROM joyas,marcas,estantes,estados,sexos,materiales WHERE Nombre='".$nombre."' AND joyas.idMarca=marcas.ID AND joyas.idEstante=estantes.ID AND joyas.idEstado=estados.ID AND joyas.idSexo=sexos.ID AND joyas.idMaterial=materiales.ID OR joyas.ID='".$id."' AND joyas.idMarca=marcas.ID AND joyas.idEstante=estantes.ID AND joyas.idEstado=estados.ID AND joyas.idSexo=sexos.ID AND joyas.idMaterial=materiales.ID ORDER BY joyas.ID ASC",$connect); //extraer datos $archivos = mysql_num_rows($query); if ($archivos>0) { echo "<center><table border='1'>"; echo "<tr>"; echo "<th class='serie'>N Serie</th>"; echo "<th class='nom'>Nombre</th>"; echo "<th>Peso</th>"; echo "<th>Precio</th>"; echo "<th class='qui'>Quilates</th>"; echo "<th>Sexo</th>"; echo "<th>Estado</th>"; echo "<th>Material</th>"; echo "<th>Marca</th>"; echo "<th>Estante</th>"; echo "<th>Fecha de Entrada</th>"; echo "<th class='descrip'>Descripcion</th>"; echo "<th>Fecha de Salida</th>"; echo "</tr>"; for ($i=0; $i<$archivos; $i++) { $columna = mysql_fetch_array($query); echo "<tr>"; //Empiezan las columnas echo "<td>".$columna["ID"]."</td>"; echo "<td>".$columna["Nombre"]."</td>"; etc
Código:
El asunto está en la linea del CONVERT y despues OR.if ($nombre or $id>0){ $connect = mysql_connect("localhost","root","xxxx") or die ("No hemos podido acceder al servidor"); mysql_select_db ("bdaleyda",$connect); $query = mysql_query("SELECT joyas.ID,Nombre,Precio,Peso,Quilates,Sexo,Estado,Estante,Marca,Material,FechaEntrada,Descripcion,FechaSalida FROM joyas,marcas,estantes,estados,sexos,materiales WHERE (CONVERT(Nombre USING utf8) LIKE '%$nombre%') AND joyas.idMarca=marcas.ID AND joyas.idEstante=estantes.ID AND joyas.idEstado=estados.ID AND joyas.idSexo=sexos.ID AND joyas.idMaterial=materiales.ID OR joyas.ID='".$id."' AND joyas.idMarca=marcas.ID AND joyas.idEstante=estantes.ID AND joyas.idEstado=estados.ID AND joyas.idSexo=sexos.ID AND joyas.idMaterial=materiales.ID ORDER BY joyas.ID ASC",$connect); //extraer datos $archivos = mysql_num_rows($query); if ($archivos>0) { echo "<center><table border='1'>"; echo "<tr>"; echo "<th class='serie'>N Serie</th>"; echo "<th class='nom'>Nombre</th>"; echo "<th>Peso</th>"; echo "<th>Precio</th>"; echo "<th class='qui'>Quilates</th>"; echo "<th>Sexo</th>"; echo "<th>Estado</th>"; echo "<th>Material</th>"; echo "<th>Marca</th>"; echo "<th>Estante</th>"; echo "<th>Fecha de Entrada</th>"; echo "<th class='descrip'>Descripcion</th>"; echo "<th>Fecha de Salida</th>"; echo "</tr>"; for ($i=0; $i<$archivos; $i++) { $columna = mysql_fetch_array($query); echo "<tr>"; //Empiezan las columnas echo "<td>".$columna["ID"]."</td>"; echo "<td>".$columna["Nombre"]."</td>"; ETC
No se si me he explicado bien y ojala me puedan ayudar, le he echado cabeza pero no logró saber donde fallo. Lo mas seguro es que sea un fallo de sintaxis pero mis conocimientos no me permiten saber que debo poner.
Gracias por leerme, si no me he explicado bien por favor decirmelo e intento hacerlo mejor. :)