Foros del Web » Programando para Internet » PHP »

No me funciona buscador a una bd de MySQL...

Estas en el tema de No me funciona buscador a una bd de MySQL... en el foro de PHP en Foros del Web. Hola, he estado probando este codigo de busqueda en una bd de Mysql y no me funciona, lo que me pasa es que no me ...
  #1 (permalink)  
Antiguo 07/07/2005, 12:51
 
Fecha de Ingreso: julio-2003
Mensajes: 10
Antigüedad: 14 años, 4 meses
Puntos: 0
No me funciona buscador a una bd de MySQL...

Hola,
he estado probando este codigo de busqueda en una bd de Mysql y no me funciona, lo que me pasa es que no me pasa del primer if y me sale lo de debe especificar una cadena a buscar..Estoy trabajando con php 4 y no veo bien
el salto del primer if a otros.. me podrias echar una pequeña mano...
dejo codigo... gracias por anticipado...

Formulario:
<HTML><HEAD>
</HEAD>
<BODY>
<form method="POST" action="buscador.php">
<strong>Palabra clave:</strong>
<input type="text" name="buscar" size="20"><br><br>
<input type="submit" value="Buscar">
</form>
</BODY>
</HTML>

Script de busqueda:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<TITLE> buscador</TITLE>

</HEAD>

<BODY>
<?php
$link=mysql_connect("localhost","root");
mysql_select_db("agenda",$link);
$sql="SELECT * FROM misamigos WHERE nombre LIKE '%$buscar%' ORDER BY nombre";
$result=mysql_query($sql,$link);

if(!isset($buscar)) {

echo "<p>Debe especificar una cadena a buscar</p>\n";
echo "<p><a href=formulario.htm>Volver</p>\n";
echo "</html></body>\n";
exit;
}

if ($row=mysql_fetch_array ($result)){
echo "<table border=1>\n";
//Mostramos los nombres de las tablas
echo "<tr style='margin-left:50'>";
echo"</tr>\n";
mysql_field_seek($result,0);

while ($field=mysql_fetch_field($result)){
echo "<td><b>$mysql_field_name</b></td>\n";
}

echo "</tr>\n";

do{
echo "<tr>\n";
echo "<td>" .$row["idamigos"]."</td>\n";
echo "<td>" .$row["nombre"]."</td>\n";
echo "<td>" .$row["apellido"]."</td>\n";
echo "<td>" .$row["phone"]."</td>\n";
//echo "<td><a href='mailto:".$row["email"]."'>".$row["email"]."</a></td>\n";
echo "</tr>\n";
}
while($row=mysql_fetch_array($result));
echo "<p><a href=formulario.htm>Volver</p>\n";
echo "</table>\n";
}
else{
echo "<p>¡No se ha encontrado ningún registro!</p>\n";
echo "<p><a href=formulario.htm>Volver</p>\n";
}

?>
</BODY>
</HTML>
  #2 (permalink)  
Antiguo 07/07/2005, 14:16
 
Fecha de Ingreso: noviembre-2003
Mensajes: 383
Antigüedad: 14 años
Puntos: 2
pon ...

Código PHP:
print_r ($_POST);exit; 
...esto antes del ...

Código PHP:
if(!isset($buscar)) { ... 
Te sacará en pantalla las variables que esta recibiendo el script desde tu formulario.
Luego nos dices.
  #3 (permalink)  
Antiguo 07/07/2005, 14:48
 
Fecha de Ingreso: julio-2003
Mensajes: 10
Antigüedad: 14 años, 4 meses
Puntos: 0
Hola..de nuevo..
al poner esa linea me sale lo siguiente (el hola es la cadena que puse de busqueda y que existe en la bd:
Array ( [buscar] => hola )

a que se debe?
gracias
  #4 (permalink)  
Antiguo 07/07/2005, 14:52
 
Fecha de Ingreso: julio-2003
Mensajes: 10
Antigüedad: 14 años, 4 meses
Puntos: 0
se me olvidaba

Y cuando no pongo esa linea q me comenta pellagofio me sale:
Debe especificar una cadena a buscar
  #5 (permalink)  
Antiguo 07/07/2005, 16:52
 
Fecha de Ingreso: julio-2005
Mensajes: 4
Antigüedad: 12 años, 5 meses
Puntos: 0
me functiono

Hola yo pude hacer que functionara, asi que te digo como hacerlos
yo cambie esto esto :

while ($field=mysql_fetch_field($result)){
echo "<td><b>$mysql_field_name</b></td>\n";
}

echo "</tr>\n";

do{
echo "<tr>\n";
echo "<td>" .$row["idamigos"]."</td>\n";
echo "<td>" .$row["nombre"]."</td>\n";
echo "<td>" .$row["apellido"]."</td>\n";
echo "<td>" .$row["phone"]."</td>\n";
//echo "<td><a href='mailto:".$row["email"]."'>".$row["email"]."</a></td>\n";


Por esto

while($row = mysql_fetch_array($result)) {
printf("<tr><td>&nbsp;%s</td>
<td>&nbsp;%s</td>
<td>&nbsp;%s</td>
<td>&nbsp;%s</td>
<td>&nbsp;%s&nbsp;</td>
<td><a href=\"borra.php?id=%d\">Borra</a></td></tr>", $row["idamigos"],$row["nombre"], $row["apellido"], $row["phone"]);
}


Claro que teni que cambiar algunas cosas , como el borra y agregarle el coso de el email, no te podria ayudar mas por que no chacho casi na de esto, pero a mi me funciono y ahora puedo busca los registro, lo unico malo que sale solo el primero, o sea si hay dos registros con el mismo nombre sale el primero.
  #6 (permalink)  
Antiguo 07/07/2005, 17:19
 
Fecha de Ingreso: julio-2003
Mensajes: 10
Antigüedad: 14 años, 4 meses
Puntos: 0
no entiendo mucho el final

Hola solofu,
no entiendo mucho la parte en la que pones borrar.php, yo la verdad es que no tengo el fichero borrar.php, para que sirve, tb hay mas tds que que recorridos de las filas con row.
Con todo esto lo resumo en que me sale un error del tipo Parser error en la linea 65 al final del todo que sera por todo por el fichero borrar.php..etc
gracias de todas las maneras por tu ayuda
lernys
  #7 (permalink)  
Antiguo 08/07/2005, 02:15
 
Fecha de Ingreso: noviembre-2003
Mensajes: 383
Antigüedad: 14 años
Puntos: 2
Hola Lernys:

Cuando pusistes ...

Código PHP:
print_r ($_POST);exit; 
... lo que hicistes fue decirla al script que te mostrase el contenido COMPLETO del array $_POST (que como sabras es donde se guardan la variables que se reciben desde el formulario).
Entonces si el script te muestra ...

Código PHP:
Array ( [buscar] => hola 
... es que esta recibiendo la variable buscar con el valor hola.


Entonces prueba ha sustituir ...

Código PHP:
if(!isset($buscar)) { 

... por esto otro ...

Código PHP:
if(!isset($_POST['buscar'])) { 
  #8 (permalink)  
Antiguo 08/07/2005, 03:14
 
Fecha de Ingreso: julio-2003
Mensajes: 10
Antigüedad: 14 años, 4 meses
Puntos: 0
sigue sin funcionar...

Hola pellagofio,
te agradezco tu ayuda...la verdad que lo comentas ya lo he hecho asi y me sigue igual diciendo que no ha encontrado ningún registro, aparte de algún Notice,
pero eso es lo de menos...el caso es que no encuentra nada...
Código PHP:
if(!isset($_POST['buscar'])) 
por otro lado he puesto el select de mil maneras...una de ellas es esta y nada:
Código PHP:
$sql="SELECT * FROM misamgigos WHERE {$_POST['nombre']} LIKE '%{$_POST['buscar']}%'"
gracias y un saludo..
lernys
  #9 (permalink)  
Antiguo 08/07/2005, 04:58
 
Fecha de Ingreso: noviembre-2003
Mensajes: 383
Antigüedad: 14 años
Puntos: 2
Dos cosas:

1º.- En tu formulario NO tienes ningún <input ... con el name="nombre".
Entonces en el:

$sql="SELECT ...

NO puedes poner:

... WHERE $_POST['nombre'] ...

2º.- la sentencia correcta del $sql="... creo que debería ser:

$sql="SELECT * FROM misamgigos WHERE ".
$_POST['nombre'].
" LIKE '%".
$_POST['buscar'] .
"%' "; // Lo he tabulado para que sea más comodo leerlo.

3º.- Pon después de esta sentencia un

echo $sql; exit;

para que veas que es lo que esta realmente consultando al MySql.

Ya me dices.
  #10 (permalink)  
Antiguo 08/07/2005, 04:59
 
Fecha de Ingreso: noviembre-2003
Mensajes: 383
Antigüedad: 14 años
Puntos: 2
Otra cosa que se me paso por alto.
El nombre de la tabla debería ser:

misamigos

¿NO?
  #11 (permalink)  
Antiguo 08/07/2005, 05:41
 
Fecha de Ingreso: julio-2003
Mensajes: 10
Antigüedad: 14 años, 4 meses
Puntos: 0
gracias..de verdad..
lo de amigos la tabla ya lo habia corregido. Si es misamigos...
pero la verdad es que estoy desesperaooo...se que es como dices pero no va..
sigue diceindo que:
Cita:
Notice: Undefined index: nombre in c:......\buscador.php on line 22
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\......\buscador.php on line 29

¡No se ha encontrado ningún registro!
quiza deba cambiar mysql_fecth_array por otra funcion como la de assoc u alguna otra??
pero deberia funciona, selo he pasado a alguien y me ha dicho que en su pc
le funciona...a veces te ves como un imbecil...
venga gracias pellagofio
  #12 (permalink)  
Antiguo 08/07/2005, 05:58
 
Fecha de Ingreso: noviembre-2003
Mensajes: 383
Antigüedad: 14 años
Puntos: 2
Vale, ¿Pero no me has dicho de donde viene la variable $_POST['nombre'].
Si no tienes un ...

<input name="nombre" ...

... en el formulario no puedes usar $_POST['nombre'] en el query.

Otra idea, crea el $sql tu mismo, sin variables y pruebalo con valores que saber que existen en la tabla. Ejemplo:

si en tu tabla tienes un campo que se llama nombreAmigo y tienes los siguientes registros ...

Carlos
Luis
Pepe

... pues sustituye tu linea $sql="lo que sea" por..

$sql="select * from misamigos where nombreAmigos = 'Carlos'";

pruebalo y me dices.

Otra cosa, dime que campos componen la tabla nombreAmigos.
  #13 (permalink)  
Antiguo 08/07/2005, 06:48
 
Fecha de Ingreso: julio-2003
Mensajes: 10
Antigüedad: 14 años, 4 meses
Puntos: 0
lo de 'nombre' viene del nombre del campo de la tabla...y es donde quisiera que buscara
la tabla misamigos tiene los sigueintes campos:
idamigos,nombre,apellido,phone,cumple,otros

bien ya pruebo lo que me dices..ahora tengo q ir a comer..
gracias...
  #14 (permalink)  
Antiguo 08/07/2005, 06:58
 
Fecha de Ingreso: noviembre-2003
Mensajes: 383
Antigüedad: 14 años
Puntos: 2
Entonces el query tiene que ser este:

$sql="Select * from misamigos where nombre = '$buscar'";
  #15 (permalink)  
Antiguo 09/07/2005, 12:22
 
Fecha de Ingreso: julio-2005
Mensajes: 4
Antigüedad: 12 años, 5 meses
Puntos: 0
yo tengo esto

$result = mysql_query("SELECT * FROM jugadores WHERE nombres LIKE '%$buscar%' ORDER BY nombres", $link);

if (!isset($buscar)){
echo "Debe especificar una cadena a bucar";
echo "</html></body> \n";
exit;
}

if ($row = mysql_fetch_array($result)){

echo "<table border = '2'> \n";

echo "<tr> \n";

echo "<td><b>Nombres</b></td> \n";

echo "<td><b>apellidos</b></td> \n";

echo "<td><b>club</b></td> \n";

echo "</tr> \n";

do {

echo "<tr> \n";

echo "<td>".$row["nombres"]."</td> \n";

echo "<td>".$row["apellidos"]."</td>\n";

echo "<td>".$row["club"]."</td>\n";

echo "</tr> \n";

} while ($row = mysql_fetch_array($result));

echo "</table> \n";

} else {

echo "¡ No se encontro a $buscar en la base de datos !";

}

echo "<p><a href=formulario.htm>Volver</p>\n";

?>

</body>

</html>

Cuando ingreso un nombre que no hay en la base de datos , me dice que no eta, y cuando ingreso un nombre que hay me sale el espacio en blanco,
como no cacho mucho no puedo arreglar el problema, si me pueden ayudar muchas gracias
  #16 (permalink)  
Antiguo 09/07/2005, 21:11
 
Fecha de Ingreso: julio-2005
Mensajes: 4
Antigüedad: 12 años, 5 meses
Puntos: 0
ya ......

Ya encontre lo questaba malo y me functiono ,ahora si probado . te lo voy a poner para que lo modifiques tu,


$result = mysql_query("SELECT * FROM jugadores WHERE nombres like '%$buscar%' ORDER BY nombres", $link);

if (!isset($buscar)){
echo "Debe especificar una cadena a bucar";
echo "</html></body> \n";
exit;
}

if ($row = mysql_fetch_array($result)){

echo "<table border = '2'> \n";

echo "<tr> \n";

echo "<td><b>Nombres</b></td> \n";

echo "<td><b>apellidos</b></td> \n";

echo "<td><b>club</b></td> \n";

echo "</tr> \n";

do {

echo "<tr> \n";

echo "<td>".$row["Nombres"]."</td> \n";

echo "<td>".$row["Apellidos"]."</td>\n";

echo "<td>".$row["Club"]."</td>\n";

echo "</tr> \n";

} while ($row = mysql_fetch_array($result));

echo "</table> \n";

} else {

echo "¡ No se encontro a $buscar en la base de datos !";

}

echo "<p><a href=formulario.htm>Volver</p>\n";

?>

</body>

</html>
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 11:29.