Foros del Web » Programando para Internet » PHP »

Ayuda con este buscador

Estas en el tema de Ayuda con este buscador en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 06/06/2005, 10:30
 
Fecha de Ingreso: junio-2003
Mensajes: 74
Antigüedad: 20 años, 10 meses
Puntos: 1
Ayuda con este buscador

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.
  #2 (permalink)  
Antiguo 06/06/2005, 14:53
 
Fecha de Ingreso: junio-2005
Mensajes: 1
Antigüedad: 18 años, 10 meses
Puntos: 0
bueno la verdad no entiendo bien el codigo, pero le hice unos cambios q ya ni se cuales fueron porq han sido varios (mayormente simplificar lineas para poder entenderlo mejor) y me funciona bien, o por lo menos me muestra todos los registros.
te paso el codigo q quedó, obviamente esta hecho con los datos de mi bd, espero q te sirva!!!
<?PHP
//busca en una base de datos hecha en mysql
//$campo = array("nombre", "especie");
//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", "user", "pass");
//si se ingreso la palabra nos conectamos
mysql_select_db("zoologico", $link);
//que busque en el campo actual la palabra enviada y lo ordene por un campo especifica
$sql = "SELECT * FROM mascotas WHERE nombre LIKE '%{$_POST['palabra']}%' ";
$result = mysql_query($sql, $link);
if ($row = mysql_fetch_array($result))// si se encontro la palabra
{
mysql_field_seek($result);
while ($field = mysql_fetch_field($result)){
$url = $row['nombre'];
echo "<td><b></b></td> \n";
}
//imprimimos nustros resultados
do {
echo "<table width=\"431\">
<tr> <td width=\"425\"><tr>
<td><a href=\"$nombre\"><b>".$row["nombre"]."</b></a></td></tr>
<tr><td>".$row["propietario"]."</td></tr>
<tr><td><FONT class=\"url\">".$row["especie"]."</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>
  #3 (permalink)  
Antiguo 06/06/2005, 17:00
 
Fecha de Ingreso: junio-2003
Mensajes: 74
Antigüedad: 20 años, 10 meses
Puntos: 1
Casi me funciona

Bueno asi quedo mi codigo finalmente

{
$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 '%".$query."%' or short_desc LIKE '%".$query."%' ORDER BY title";
$result = mysql_query($sql, $link);
if ($row = mysql_fetch_array($result))// si se encontro la palabra
{
mysql_field_seek($result);
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";
}
?>
</div>
</form> </div>


Me muestra bien los resultados pero me da este error:
Warning: Wrong parameter count for mysql_field_seek() in c:\appserv\www\buscador2\prueba2.php on line 35

el cual no se repararlo ya probe todo y nada,

Agradeceria un poco mas de ayuda
  #4 (permalink)  
Antiguo 07/06/2005, 01:17
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
... pués yo veo todo caótico... prueba con esto (procuren iluminar código):
Código PHP:
<form method = "POST" action = "<?=$_SERVER['PHP_SELF'?>">
<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
if (!isset($_POST['submit'])) {
    if(empty(
$_POST['palabra'])) {
        echo 
"<p>Debe especificar la busqueda</p> \n";
        echo 
"</html></body> \n";
    } else {
        
$link mysql_connect("localhost""root""");
        
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(
mysql_num_rows($result)>0) {
        while (
$row mysql_fetch_assoc($result)) {
            echo 
"<table width=\"431\"><tr> <td width=\"425\"><tr><td><a href=\"".$row['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";
        }
        echo 
"</table> \n";
        }
    } else echo 
"<p>¡No se ha encontrado ningún registro!</p>\n";
?> </form> </div>
Igual no menciono cambios pués los hice según iba viendo el código y fueron demasiados... espero sirva...


Agrego: ... entendí el script se llama a sí mismo ¿es correcto esto?... por ello cambié el "action" del formulario... igual hay que decir que todos los resultados los imprimes dentro del mismo formulario... ... de verdad caótico... ...
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 07/06/2005 a las 01:31
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:02.