Tengo una base de datos MySQL con dos campos: Clave y Valor. El usuario consulta por clave y se le devuelve Valor, el código completo, es este:
<?php
$hostname_global_con = "*******";
$database_global_con = "**";
$username_global_con = "*****";
$password_global_con = "******";
$global_con = mysql_connect($hostname_global_con, $username_global_con,
$password_global_con) or die(mysql_error());
mysql_select_db($database_global_con, $global_con);
//COMPRUEBO QUE SE HAYA ENVIADO EL FORMULARIO Y QUE EL CAMPO CLAVE TENGA ALGUN VALOR
if(isset($_POST['CLAVE']) && $_POST['CLAVE'] != ''){
//CREO LA CONSULTA, CON $_POST['tabla'] LE INDICO A QUE TABLA TIENE QUE HACER LA CONSULTA, EL VALOR VIENE DE UN CAMPO OCULTO
//QUE HAY EN CADA UNO DE LOS FORMULARIOS
$SQL = "SELECT * FROM ".$_POST['tabla']." WHERE clave LIKE '%".$_POST['CLAVE']."%'";
$result = mysql_query($SQL) or die (mysql_error.$SQL());
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>
www.lenguandina.org / Diccionario Aymara en línea</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#336699" text="#FFFFFF">
<div align="center">
<p> </p>
<p><font color="#333333" size="5" face="Courier New, Courier, mono"><strong><font color="#66CC33" size="6">
www.lenguandina.org</font></strong></font></p>
<p><font color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif">diccionario
Catellano Aymara / Aymara Castellano en línea</font></p>
<p><font color="#FFFFFF" face="Courier New, Courier, mono"><strong><font face="Verdana, Arial, Helvetica, sans-serif">[en
construcción]</font></strong></font></p>
<p> </p>
<table width="80%" border="2" cellpadding="0" cellspacing="0" bordercolor="#333333">
<tr>
<td width="50%" bgcolor="#336699">
<p align="center"><font color="#FFFFFF" size="2" face="Verdana, Arial, Helvetica, sans-serif">Castellano-Aymara</font></p>
<form name="form1" method="post" action="">
<font face="Verdana, Arial, Helvetica, sans-serif">
<input name="CLAVE" type="text" id="CLAVE">
<input name="consulta1" type="submit" id="consulta1" value="Consultar">
<input name="tabla" type="hidden" id="tabla" value="diccionario1">
</font>
</form>
</td>
<td width="50%"><p align="center"><font color="#FFFFFF" size="2" face="Verdana, Arial, Helvetica, sans-serif">Aymara-Castellano</font></p>
<form name="form2" method="post" action="">
<font face="Verdana, Arial, Helvetica, sans-serif">
<input name="CLAVE" type="text" id="CLAVE">
<input name="consulta2" type="submit" id="consulta2" value="Amajasäsiña">
<input name="tabla" type="hidden" id="tabla" value="diccionario2">
</font>
</form>
</td>
</tr>
<tr>
<td><div align="center">
<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Lista
de palabras castellanas disponibles</font></p>
<p><font face="Verdana, Arial, Helvetica, sans-serif">A B C D E F G
H I J K L M N Ñ O P Q R S T U V W X Y Z</font></p>
</div></td>
<td><div align="center">
<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Lista
de palabras aymaras disponibles</font></p>
<p><font face="Verdana, Arial, Helvetica, sans-serif">A CH CHH CH' I
J K KH K' L LL M N Ñ P PH P' Q QH Q' S T TH T' U W Y</font></p>
</div></td>
</tr>
</table>
<br>
<?php
//AQUI EMPIEZA EL BUSCADOR
if(isset($_POST['CLAVE']) && $_POST['CLAVE'] != ''){
//COMPRUEBO QUE HAYA ENCONTRADO ALGO, mysql_num_rows DEVUELVE EL NUMERO DE FILAS AFECTADAS POR LA CONSULTA
if(mysql_num_rows($result) > 0){
?>
<table width="80%" border="2" bordercolor="#333333">
<tr>
<td width="50%"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">RESULTADOS
DE BUSQUEDA</font></td>
<td width="50%"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">VALORES
ENCONTRADOS</font></td>
</tr>
<?php
//EMPIEZO A RECORRER LAS FILAS DEVUELTAS
while($row=mysql_fetch_assoc($result)){
?>
<tr>
<td><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><?php echo(str_replace($_POST['CLAVE'],'<B>'.$_POST['CLAVE'].'</B>',$row['CLAVE']))?></font></td>
<td><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><?php echo($row['VALOR'])?></font></td>
</tr>
<?php
//SOBRE str_replace, BUSCA UNA CADENA DE CARACTERES DENTRO DE OTRA Y LA SUSTITUYE POR UNA TERCERA, EL MECANISMO ES EL SIGUIENTE:
//str_replace ('cadena buscada', 'cadena_reemplazo', 'lugar en el que buscar')
}
?>
</table>
<?php
} else {
//ESTO ES POR SI NO ENCUENTRA NADA
echo('<font face="Verdana, Arial, Helvetica, sans-serif" size="2">NO SE HA ENCONTRADO NINGUNA COINCIDENCIA, POR FAVOR, VUELVA A INTENTARLO</font>');
}
//LIBERO MEMORIA
mysql_free_result($result);
}
//CIERRO LA CONEXION
mysql_close($global_con);
?>
</div>
</body>
</html>
Resulta que, en CLAVE no hay palabras, sino expresiones (pueden verlo en
www.lenguandina.org) y cuando un usuario pone "de", no se le devuelven las entradas donde dice "venir 'de' lejos" o "subir 'de' a poco" sino tooooodas las entradas que tengan "de": "demonio, dedo, debajo, dejar" etc, lo que confunde a cualquiera. Mi pregunta es: qué modificaciones debo hacer, y dónde, para que busque por palabras completas, y no cuando la palabra buscada forme parte de otra, pero que eso no signifique que solo salgan las entradas con el texto exacto, ¿se entiende la pregunta?, que si alguien pone "de" salga efectivamente "venir 'de' lejos", pero no "demonio"... No sé mucho de esto, agradeceré cualquier ayuda.