Foros del Web » Programando para Internet » PHP »

Problema con buscador sencillo!!!

Estas en el tema de Problema con buscador sencillo!!! en el foro de PHP en Foros del Web. Hola a todos soy nuevo por aqui. Bueno resulta que me di a la tarea de modificar un buscador sencillo, a pesar de mi poco ...
  #1 (permalink)  
Antiguo 23/12/2006, 22:54
 
Fecha de Ingreso: diciembre-2005
Mensajes: 16
Antigüedad: 18 años, 4 meses
Puntos: 0
Problema con buscador sencillo!!!

Hola a todos soy nuevo por aqui.

Bueno resulta que me di a la tarea de modificar un buscador sencillo, a pesar de mi poco conocimiento, pero bueno no les quitare mucho tiempo y voy directo al grano.

Bueno el buscador que ahora ya esta modificado al principio me funcionaba bien, pero una vez que lo adapte a un db un poco robusta con unos 470 ids mas o menos primero me lanzaba este error:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\Aplicaciones\xampp\htdocs\proyecto\info.php on line 14

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in D:\Aplicaciones\xampp\htdocs\proyecto\info.php on line 29

Bueno resulta que me di a la tarea de buscar en internet cual era el problema y me encontre con un post que decia esto, que poniendoles una "@" a las funciones "mysql_fetch_array" y "mysql_num_rows" se solucionaria el problema que ya no marcaria error, y si de hecho ya no marco error, pero no me lanzo la informacion de la db, o sea me mandaba una pagina totalmente en blanco, y pues ya le di vueltas al codigo y es hora de que no encuentro cual es el problema sera que no soy muy experto en php, pero bueno por eso asisto a ustedes.

Bueno aqui les dejo el codigo de los tres archivos que tiene este buscador.

Ojala y puedan ayudarme cualquier aportacion es bienvenida.
Saludo

--------------------------------------------------------------------------------
Yeah, Answer is simple, the query used is not a true result as it's a query inside of a getrow so to speak..

Here is the fix:

Find all lines that look like this:

Code:
mysql_fetch_array(mysql_query("...snip..." );


And just add a "@" in front of it so it looks like this:

Code:
@mysql_fetch_array(mysql_query("...snip..." );


Then do the same thing for the following lines..

Code:
mysql_num_rows(mysql_query("...snip..." );


Perform the same steps as above by adding the "@" to it so it looks like this:

Code:
@mysql_num_rows(mysql_query("...snip..." );
--------------------------------------------------------------------------------

y que segun si funcionaba, lo cual ya no me mando el error, pero tampoco me mando el resultado que yo esperaba.

Bueno pues resulta que no encuentro el problema, auqne aqui les dejo el codigo de los archivos que utilizo, espero y me puedan ayudar. :)

buscar.php
Código:
<html>
<head>
<title>Buscador</title>
</head>
<body>
<form action="buscar.php" method="post">
Buscar: <input name="palabra">
<input type="submit" name="buscador" value="Buscar">
</form>
<?
if ($_POST['buscador'])
{
// Tomamos el valor ingresado
$buscar = $_POST['palabra'];

// Si está vacío, lo informamos, sino realizamos la búsqueda
if(empty($buscar))
{
echo "No se ha ingresado una cadena a buscar";
}else{
// Conexión a la base de datos y seleccion de registros
$con=mysql_connect("localhost","zenky","*******");
$sql = "SELECT * FROM item_db WHERE name_english like '%$buscar%' ORDER BY id DESC";
mysql_select_db("cards", $con);

$result = mysql_query($sql, $con);

// Tomamos el total de los resultados
$total = mysql_num_rows($result);

// Imprimimos los resultados
if ($row = mysql_fetch_array($result)){
echo "Resultados para: <b>$buscar</b>";
do {
?>
<p><b><a href="info.php?id=<?=$row['id'];?>"><?=$row['name_english'];?></a></b></p>
<?
} while ($row = mysql_fetch_array($result));
echo "<p>Resultados: $total</p>";
} else {
// En caso de no encontrar resultados
echo "No se encontraron resultados para: <b>$buscar</b>";
}
}
}
?>
</body>
</html>
info.php
Código:
<html>
<head>
        <title>Información</title>
</head>
<body>
<table border="1">
<?php
        include("conex.php");
        $id=$_GET[id];
        $link=Conectarse();
        $result=mysql_query("SELECT * FROM item_db WHERE id = '$id'",$link);
?>
<?php
        while($row = @mysql_fetch_array($result)) {
                printf("
<tr>
<td>ID: </td><td>%s</td>
<td>Nombre en Ingles: </td><td>%s</td>
<td>Nombre en Japones: </td><td>%s</td>
<td>Tipo: </td><td>%s</td>
<td>Venta: </td><td>%s</td>
<td>Peso: </td><td>%s</td>
<td>Localización: </td><td>%s</td>
<td>Información: </td><td>%s</td>
</tr>
", $row["id"], $row["name_english"], $row["name_japanese"], $row["type"]
 , $row["price_sell"], $row["weight"], $row["equip_locations"], $row["script"]);
        }
        @mysql_free_result($result);
        mysql_close($link);
?>
</table>
</body>
</html>
conex.php
Código:
<?php
function Conectarse()
{
	if (!($link=mysql_connect("localhost","zenky","********")))
	{
		echo "Error conectando a la base de datos.";
		exit();
	}
	if (!mysql_select_db("buscar",$link))
	{
		echo "Error seleccionando la base de datos.";
		exit();
	}
	return $link;
}
?>
Ojala y me puedan ayudar.

Saludos, cualquier aportacion es bienvenida :)
  #2 (permalink)  
Antiguo 24/12/2006, 00:27
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Re: Problema con buscador sencillo!!!

Hay un error en la consulta sql, usa $result = mysql_query($sql, $con) or die(mysql_error); para que te muestre el error en el navegador y puedas corregirlo
el @ lo unico que hace es que no muestre mensajes de error aunque ocurran
  #3 (permalink)  
Antiguo 25/12/2006, 02:43
Avatar de vevni  
Fecha de Ingreso: julio-2005
Ubicación: cancun mexico
Mensajes: 598
Antigüedad: 18 años, 9 meses
Puntos: 3
Re: Problema con buscador sencillo!!!

bueno, para empezar, debes de validar o corroborar siempre la procedencia y valor de un dato.
en este case, el id es importante, puesto que sin el no hacen mucho o nada.

entonces obtienes el id por get, pero, no estas asegurando que lo obtienes.
entonces usa un isset() algo basico, para ver si tiene un valor o esta definido.

veo que usas esto en la pag. anterior para mandar a llamar a info mediante un link.
<a href="info.php?id=<?=$row['id'];?>">
mira no estoy seguro, pero no recuerdo que php concatene variables asi directamente al html, kreo k deberias hacer un echo o print para que se concatenara, si estoy en un error diganlo, esk no recuerdo, pero igual verificalo. pork si es asi, pues nunca pasas un id. ala otra pag.

ahora los dos errores provienen de eso, si no tienes un id, entonces nunca tendras resultados, y obtendras errores subsecuentes... asegurate q' la consulta haya tenido exito.

con un if(!$result)
echo"error";
con eso vastaria o un simple die.

ahi te podrias dar cuenta, analiza esos puntos, y hayaras tu error.
__________________
Código PHP:
echo"hola mundo ver 1221332143.02";
echo
"cuantos usuarios habran impreso hola mundo en el mundo.!???"
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:53.