Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/01/2008, 05:16
crujikoki
 
Fecha de Ingreso: diciembre-2007
Ubicación: Barcelona
Mensajes: 289
Antigüedad: 17 años, 3 meses
Puntos: 8
Duda sobre consulta a BBDD

Hola,

Esta vez mi duda es sobre una consulta a una BBDD. El problema es que en una parte de mi sitio web dejo actualizar campos existentes en una BBDD. La tabla en cuestión contiene los datos de unos clientes con campos como Nombre, Apellido, Edad,..., ID cliente,... y en el momento en que dejo actualizar los datos de un cliente permito buscar al cliente por los siguientes campos:
Nombre
Apellido
Edad
Provincia
Población
ID cliente

No hace falta rellenar todos los campos, así que el buscador mostrará todas las coincidencias que haya encontrado ordenadas por el apellido.
Hasta aquí todo bien.

El primer problema que tengo es que si solo se rellena uno de los campos de texto realiza la búsqueda "perfecta". La única pega es que si yo pongo en Nombre la letra A me aparecen todos los nombres que la contienen y yo solo quisiera mostrar los que empiezan por la cadena introducida.

Y el segundo problema es que si relleno uno de los campos de texto y uno de los de numeros a la vez no hace la búsqueda bien, solo hace caso a la del número.

Muestro el código de la consulta a ver si alguien me pude decir que hago mal. Muchas gracias por adelantado!

Código PHP:
if (!empty($_POST['nombre']) || !empty($_POST['apellido']) || !empty($_POST['edad']) || !empty($_POST['profesion']) 
    || !empty(
$_POST['provincia']) || !empty($_POST['poblacion']) || !empty($_POST['ID']))
    {
        
$con mysql_connect("localhost","root","123456789");
    if (!
$con)
         die(
'Impossible connectar: ' mysql_error());
    
mysql_select_db("tfc"$con);
    
$sql "SELECT *FROM datos WHERE Nombre LIKE '%".$_POST'nombre']."%'
AND  Apellido LIKE '%"
.$_POST['apellido']."%'
AND Profesion LIKE '%"
.$_POST['profesion']."%'
AND Provincia LIKE '%"
.$_POST['provincia']."%'
AND Poblacion LIKE '%"
.$_POST['poblacion']."%'
AND ID =  '"
.$_POST['ID']."'
AND Edad = '"
.$_POST['ID']."' ORDER By Apellido";
    
$result mysql_query($sql,$con);
    if(
mysql_num_rows($result)>0)
    {
        echo 
"<h2><font color=\"#317082\">Selecciona el cliente que deseas actualizar</font></h2>";
        echo 
"<table bgcolor=\"#DDDDDD\" align=center style=\"border:2px outset black\">"
        for (
$i 0$i mysql_num_fields($result); $i++) 
            {  
                print 
"<th>".mysql_field_name($result$i)."</th>\n";  
            }  
        while (
$registro mysql_fetch_row($result)) 
            { 
                echo 
"<tr>"
                            foreach(
$registro  as $clave
            { 
                echo 
"<td bgcolor=\"#BBBBBB\"style=\"border:2px groove black\" align=\"center\">",$clave,"</td>"
            } 
            } 
                echo 
"</tr></table>";
                exit;
        }
        else
        {
            
$message "<h2><font color=\"red\">No hay coincidencias. Vuelve a realizar la búsqueda.</font></h2>";
            }
        }
else
    
$message"<h2><font color=\"#317082\">Que cliente deseas actualizar?</font></h2><br>";
    
echo 
$message;
?> 
PD: Si alguien ve algún otro fallo o alguna forma de optimizar el codigo siempre es bienvenido!!!