busqueda cuelga conexión pagina

Iniciado por kakashi20, 21 Enero 2014, 16:11 PM

0 Miembros y 1 Visitante están viendo este tema.

kakashi20

hola

tengo esta búsqueda de info de mysql por medio de ajax.

El problema es que al hacer esta búsqueda de manera exhaustiva, osea, cuando estoy buscando muchos productos y escribiendo muchos nombre, la conexión de la pagina se cuelga y aparece en el navegador google chrome que se ha perdido la conexión con la pagina.

no se porque pasa esto.

si alguien me pudiese ayudar se lo agradeceria.

Form Búsqueda:



Código (html4strict) [Seleccionar]

<table border='0' width='348px'>
<tr height="50px">
<td colspan='2' align='center' style="font-size:14px; font-weight:bold">Busqueda Productos</td>
</tr>

<tr>
<td width='50%' align="right">Nombre:</td>
<td>
                   <input type="text" name="nom" id="nom" onkeyup="BuscarProducto()" />
                </td>
</tr>
       
           
           
           
           

           
               
</table>
       
         
</form>

<div id="result" style="border:0px solid #F00; width:1000px"></div>







Ajax:




Código (javascript) [Seleccionar]

function BuscarProducto(){





nom= $("#nom").val() ;



str = "nom="+nom;







$.ajax({







type: 'POST',



url: 'ListadoProductos2.php',



data: str,



success:function(msg){









$("#result").html(msg)









}







});











}





pagina ListadoProductos2.php:


Código (php) [Seleccionar]

<?
session_start();
include ('lib/claseBaseDatos.php');
$conexion = new ConexionBaseDatos;
$link = $conexion->Conectarse($conexion);


?>

<style type="text/css">
.fila_0 { background-color: #3C80EE; color:#fff}
.fila_1 { background-color: #FFF;}




</style>

<form>
<table border='0' width='348px'>
<tr height="50px">
<td colspan='2' align='center' style="font-size:14px; font-weight:bold">Busqueda Productos</td>
</tr>

<tr>
<td width='50%' align="right">Nombre:</td>
<td>
                   <input type="text" name="nom" id="nom" onkeyup="BuscarProducto()" />
                </td>
</tr>
           
            <tr height="50px">
<td colspan='2' align='center' style="font-size:12px; font-weight:bold">Rango de Precios de Ventas</td>
</tr>
           
            <tr>

<td colspan="2" align="center">
                  Precio Menor: <input type="text" name="p1" id="p1" style="width:70px"  /> Precio Mayor:<input type="text" name="p2" id="p2" style="width:70px"  />
                </td>
</tr>
           
           
           
           
            <tr>

<td colspan="2" align="center">
                   <input type="button" value="Buscar por precio" onclick="BuscarProducto2()" />
                </td>
</tr>

           
               
</table>
        <br />
        <div id="result" style="border:0px solid #F00; width:1000px">
       
        <table border='0' width="100%">
<tr>
<td colspan='9' align='center' style="font-size:14px; font-weight:bold">Listado de productos</td>
</tr>

<tr>

<td style="font-weight:bold">Producto</td>
<td style="font-weight:bold">Precio Costo</td>
<td style="font-weight:bold">Precio Venta</td>
<td style="font-weight:bold">Cantidad</td>
<td style="font-weight:bold">Garant&iacute;a</td>
<td style="font-weight:bold">Fecha Ingreso</td>
<td style="font-weight:bold">Descripci&oacute;n</td>
                <td style="font-weight:bold"></td>
</tr>
<?
$query = mysql_query("select producto, precio_costo, precio_venta, cantidad, garantia, fecha_ingreso, descripcion, id from productos order by producto");
$i=0;
while($row = mysql_fetch_assoc($query)){
echo "<tr class='fila_".($i%2)."'>";

echo "<td> $row[producto] </td> ";
echo "<td> $row[precio_costo] </td> ";
echo "<td> $row[precio_venta] </td> ";
echo "<td> $row[cantidad] </td> ";
echo "<td> $row[garantia] </td> ";
echo "<td> $row[fecha_ingreso] </td> ";
echo "<td> $row[descripcion] </td> ";
echo "<td><img src='img/edit.png' style='cursor:pointer' title='Editar' onclick='EditarProducto(".$row['id'].")'></td>";
echo '</tr>';
$i++;
}


?>
</table>
       
       
        </div>
         
</form>



el-brujo

tienes que mostrar los errores del php por panatalla para poder ver el error exacto, si no es imposible adivinar lo que está fallando.

Seguramente sea un timeout del script php que si tarda más de x segundos (30 por defecto) pierde la conexión.

Añade a tu script php:

error_reporting(E_ALL);
ini_set('display_errors', 1);

kakashi20

no muestra ningun error colocando esa linea de codigo

ya que cuando estoy escribiendo el nombre del producto que deseo buscar en el text este deja de hacer el retorno por ajax de la info, y entonces es ahi cuando me doy cuenta que se bloquea ya que actualizo el navegador y me dice que se ha producido un error al carga la url.... eston en el navegador de google chrome.

kakashi20

alguna sugerencia ?

alguien que me pueda ayudar por favor ?

Shell Root

#4
Pues si no muestra ningun error, parece que todo estaba bien...  :silbar:
Sólo por curiosidad, -quizás sea error mio de vista-, para que envias el parametro nom si no lo usarás? Tambien creo que es la cantidad de HTML que recibes.

1. Ejecuta la query principal en el MySQL y verifica que no este fallando y que si sea los datos que necesitas, porque creo que debería ser así:
Código (php) [Seleccionar]

$sql  = "SELECT producto, precio_costo, precio_venta, cantidad, garantia, fecha_ingreso, descripcion, id ";
$sql .= "  FROM productos ";
$sql .= " WHERE nombre = '".$_POST['nom']."' ";
$sql .= "ORDER BY producto";

$query = mysql_query($sql);


2. Validar los datos a mostrar, es decir, hacer un ALERT(); a la variable que retorna.
Código (javascript) [Seleccionar]
// # Pon un comentario en la linea
// $("#result").html(msg)
// # y pon un alert así:
alert(msg);

Dudo que lo muestre completo ya que sería mucho texto para un alert

3. Se supone que realiza la busqueda y despues al actualizar el navegador, es donde se "cae la conexión", entonces, mira el código fuente y checas si se ha insertado algún contenido.
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

kakashi20

La idea de la búsqueda es que al ir escribiendo cada letra de la palabra que quiero buscar esta vaya buscando en la bd, por eso el sql  es con un like . Se pierde la conexión porque a medida que escribo la palabra está ya deja de retornar resultado y recargó el navegador para verificar que la conexión con el sitio esté bien, pero efectivamente esta se cae.

Shell Root

Estamos tratando de buscar el error, antes de ver la programación como tal.
1. Donde está es like?
2. Cuando escribes la primer letra, te muestra resultados? Pues dijistes que cuando después ya deja de retornar.
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

kakashi20

si si, me equivoque al escribir el codigo.

la consulta es

Código (php) [Seleccionar]
$query = mysql_query("select producto, precio_costo, precio_venta, cantidad, garantia, fecha_ingreso, descripcion, id from productos WHERE producto like '%".$nom."%'");

cuando escribo la primera letra el hace el retorno.

pero llega a cierto momento en estoy escribiendo las letras o palabras y deja de hacer el retorno.

y para confirmar que se haya caido la conexion actualizo el navegador y efectivamente dice que no se puede conectar al sitio

Shell Root

Supongo que entre más letras ingreses menos registros debería de mostrar! Entonces deberías de NO realización la petición por ajax, y hacerlo directamente en el archivo de ListadoProductos2.php, ingresas los mismos valores y verifica donde está fallando.

Lo otro que veo qué, por cada letra que escribres abres una conexión, no entiendo eso para qué.
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

kakashi20

tal vez el abrir una conexión por cada letra que escribo sature el sistema, pero como podría hacer para no hacer esto ? aunque yo creo que es necesario abrirla para buscar en la bd..