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:
info.php<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>
Código:
conex.php<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>
Código:
Ojala y me puedan ayudar.<?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; } ?>
Saludos, cualquier aportacion es bienvenida :)