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;
?>