Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/12/2006, 22:54
zenky_1
 
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 :)