Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/09/2014, 14:10
jchaux12
 
Fecha de Ingreso: septiembre-2014
Ubicación: Valencia
Mensajes: 12
Antigüedad: 10 años, 2 meses
Puntos: 0
Problema con Sintaxis de PHP y MYSQL

Buenas, intentaré resumir mi problema lo más corto posible.

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:
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
AHORA:

Código:
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
El asunto está en la linea del CONVERT y despues OR.
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. :)