Ayuda con Buscador

rstory
09 de Junio del 2005
Saludos.

Tengo este codigo, el cual funciona casi perfecto lo unico que hace mal es que empieza a buscar en la tabla pero cuando localiza y resultado del primer campo ya empieza a buscar en el segundo campo y cuando localiza otro resultado deja de buscar y muestra el resultado, a fin de cuentas muestra solo 2 resultados cuando deberia mostrar todos los resultados que hay en la tabla que correspondan con la palabra requerida.

<form method = "POST" action = "prueba.php">
<table width="403" align="center">
<tr>
<td><div align="center">Buscar:
<input type="text" name="palabra" id="palabra" size="20">
<input type="submit" name="Submit" value="GO">
</div></td>
</tr>
</table>

<?PHP

//busca en una base de datos hecha en mysql
$campo = array("title", "short_desc");
//aqui ponemos los campos de la tabla en que queremos buscar
$numelentos = count($campo);//toma el numero de campos y lo guarda para usarla despues
$bandera = "si";//bandera para indicar si se encontro la palabra
for ($i=0; $i < $numelentos; $i++)
//realizaremos el recorrido de busqueda en cada campo que seleccionamos de nuestra tabla
{// inicio for
$campoac= $campo[$i];//guardamos el campo actual

$a= $_POST['palabra'];//Guardamos la palabra que se buscara

if ($a==false)// si no se ingreso una palabra nos avisa
{
echo "<p>Debe especificar la busqueda</p> n";
echo "</html></body> n";
exit;
}

$link = mysql_connect("localhost", "root", "");
//si se ingreso la palabra nos conectamos
mysql_select_db("buscador2", $link);
//que busque en el campo actual la palabra enviada y lo ordene por un campo especifica
$sql = "SELECT url, title, short_desc FROM sites WHERE title LIKE '%{$_POST['palabra']}%' ORDER BY title";
$result = mysql_query($sql, $link);

if ($row = mysql_fetch_array($result))// si se encontro la palabra
{
mysql_field_seek($result,0);
while ($field = mysql_fetch_field($result)){
$url = $row['url'];
echo "<td><b></b></td> n";
}
//imprimimos nustros resultados do
{
echo "<table width="431">
<tr> <td width="425"><tr>
<td><a href="$url"><b>".$row["title"]."</b></a></td></tr>
<tr><td>".$row["short_desc"]."</td></tr>
<tr><td><FONT class="url">".$row["url"]."</font></td></tr>
</table>";
echo "<p> </p> n";

$bandera = "no";//cambiamos la bandera para avisar que si se encontro la palabra
}
while ($row = mysql_fetch_array($result));
echo "</table> n";
}

}//fin for
if ($bandera == "si") //si la bandera sigue en si es que no encontro la palabra y avisamos
{ echo "<p>¡No se ha encontrado ningún registro!</p>n";
} ?> </form> </div>

Si alguien me pudiera decir como repararlo lo agradeceria, he intentado todo.

Mil gracias por su colaboracion.

Loop
09 de Junio del 2005
Por lo visto está sencillo el buscador, además que inservible ! :S

cuando haces el array();

$campo = array("title", "short_desc");
Estás indicando explícitamente a 2 elementos uno que es title, y otro que es shot_desc, por eso sólo son dos resultados ya que el bucle de control interante for se dentendrá justo cuando $i deje de ser menor que la cantidad de valores que existen en el array si por ejemplo hicieras
$campo = array("title", "short_desc","otra_cosa","una_mas");

entonces los resultados serían 4 y no dos, a decir verdad estas líneas son inservibles no tienen ninguna utilidad dentro del script, ni esta sirve

$campoac= $campo[$i];//guardamos el campo actual

no se necesitan, por ejemplo si quisieras que se mostraran 60 sería así

for ($i=0; $i < 60; $i++)

y obvio quitar todo lo que no sirve, como ejemplo el script está bien, pero no es un buscador, !!