Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: kakashi20 en 21 Enero 2014, 16:11 pm



Título: busqueda cuelga conexión pagina
Publicado por: kakashi20 en 21 Enero 2014, 16:11 pm
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
  1. <table border='0' width='348px'>
  2. <tr height="50px">
  3. <td colspan='2' align='center' style="font-size:14px; font-weight:bold">Busqueda Productos</td>
  4. </tr>
  5.  
  6. <tr>
  7. <td width='50%' align="right">Nombre:</td>
  8. <td>
  9.                   <input type="text" name="nom" id="nom" onkeyup="BuscarProducto()" />
  10.                </td>
  11. </tr>
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20. </table>
  21.  
  22.  
  23. </form>
  24.  
  25. <div id="result" style="border:0px solid #F00; width:1000px"></div>






Ajax:




Código
  1. function BuscarProducto(){
  2.  
  3.  
  4.  
  5.  
  6.  
  7. nom= $("#nom").val() ;
  8.  
  9.  
  10.  
  11. str = "nom="+nom;
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19. $.ajax({
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27. type: 'POST',
  28.  
  29.  
  30.  
  31. url: 'ListadoProductos2.php',
  32.  
  33.  
  34.  
  35. data: str,
  36.  
  37.  
  38.  
  39. success:function(msg){
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49. $("#result").html(msg)
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59. }
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67. });
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79. }




pagina ListadoProductos2.php:


Código
  1. <?
  2. include ('lib/claseBaseDatos.php');
  3. $conexion = new ConexionBaseDatos;
  4. $link = $conexion->Conectarse($conexion);
  5.  
  6.  
  7. ?>
  8.  
  9. <style type="text/css">
  10. .fila_0 { background-color: #3C80EE; color:#fff}
  11. .fila_1 { background-color: #FFF;}
  12.  
  13.  
  14.  
  15.  
  16. </style>
  17.  
  18. <form>
  19. <table border='0' width='348px'>
  20. <tr height="50px">
  21. <td colspan='2' align='center' style="font-size:14px; font-weight:bold">Busqueda Productos</td>
  22. </tr>
  23.  
  24. <tr>
  25. <td width='50%' align="right">Nombre:</td>
  26. <td>
  27.                   <input type="text" name="nom" id="nom" onkeyup="BuscarProducto()" />
  28.                </td>
  29. </tr>
  30.  
  31.            <tr height="50px">
  32. <td colspan='2' align='center' style="font-size:12px; font-weight:bold">Rango de Precios de Ventas</td>
  33. </tr>
  34.  
  35.            <tr>
  36.  
  37. <td colspan="2" align="center">
  38.                  Precio Menor: <input type="text" name="p1" id="p1" style="width:70px"  /> Precio Mayor:<input type="text" name="p2" id="p2" style="width:70px"  />
  39.                </td>
  40. </tr>
  41.  
  42.  
  43.  
  44.  
  45.            <tr>
  46.  
  47. <td colspan="2" align="center">
  48.                   <input type="button" value="Buscar por precio" onclick="BuscarProducto2()" />
  49.                </td>
  50. </tr>
  51.  
  52.  
  53.  
  54. </table>
  55.        <br />
  56.        <div id="result" style="border:0px solid #F00; width:1000px">
  57.  
  58.        <table border='0' width="100%">
  59. <tr>
  60. <td colspan='9' align='center' style="font-size:14px; font-weight:bold">Listado de productos</td>
  61. </tr>
  62.  
  63. <tr>
  64.  
  65. <td style="font-weight:bold">Producto</td>
  66. <td style="font-weight:bold">Precio Costo</td>
  67. <td style="font-weight:bold">Precio Venta</td>
  68. <td style="font-weight:bold">Cantidad</td>
  69. <td style="font-weight:bold">Garant&iacute;a</td>
  70. <td style="font-weight:bold">Fecha Ingreso</td>
  71. <td style="font-weight:bold">Descripci&oacute;n</td>
  72.                <td style="font-weight:bold"></td>
  73. </tr>
  74. <?
  75. $query = mysql_query("select producto, precio_costo, precio_venta, cantidad, garantia, fecha_ingreso, descripcion, id from productos order by producto");
  76. $i=0;
  77. while($row = mysql_fetch_assoc($query)){
  78. echo "<tr class='fila_".($i%2)."'>";
  79.  
  80. echo "<td> $row[producto] </td> ";
  81. echo "<td> $row[precio_costo] </td> ";
  82. echo "<td> $row[precio_venta] </td> ";
  83. echo "<td> $row[cantidad] </td> ";
  84. echo "<td> $row[garantia] </td> ";
  85. echo "<td> $row[fecha_ingreso] </td> ";
  86. echo "<td> $row[descripcion] </td> ";
  87. echo "<td><img src='img/edit.png' style='cursor:pointer' title='Editar' onclick='EditarProducto(".$row['id'].")'></td>";
  88. echo '</tr>';
  89. $i++;
  90. }
  91.  
  92.  
  93. ?>
  94. </table>
  95.  
  96.  
  97.        </div>
  98.  
  99. </form>



Título: Re: busqueda cuelga conexión pagina
Publicado por: el-brujo en 21 Enero 2014, 18:57 pm
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:

Código:
error_reporting(E_ALL);
ini_set('display_errors', 1);


Título: Re: busqueda cuelga conexión pagina
Publicado por: kakashi20 en 21 Enero 2014, 21:21 pm
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.


Título: Re: busqueda cuelga conexión pagina
Publicado por: kakashi20 en 21 Enero 2014, 23:30 pm
alguna sugerencia ?

alguien que me pueda ayudar por favor ?


Título: Re: busqueda cuelga conexión pagina
Publicado por: Shell Root en 21 Enero 2014, 23:53 pm
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
  1. $sql  = "SELECT producto, precio_costo, precio_venta, cantidad, garantia, fecha_ingreso, descripcion, id ";
  2. $sql .= "  FROM productos ";
  3. $sql .= " WHERE nombre = '".$_POST['nom']."' ";
  4. $sql .= "ORDER BY producto";
  5.  
  6. $query = mysql_query($sql);

2. Validar los datos a mostrar, es decir, hacer un ALERT(); a la variable que retorna.
Código
  1. // # Pon un comentario en la linea
  2. // $("#result").html(msg)
  3. // # y pon un alert así:
  4. 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.


Título: Re: busqueda cuelga conexión pagina
Publicado por: kakashi20 en 22 Enero 2014, 04:54 am
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.


Título: Re: busqueda cuelga conexión pagina
Publicado por: Shell Root en 22 Enero 2014, 05:14 am
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.


Título: Re: busqueda cuelga conexión pagina
Publicado por: kakashi20 en 22 Enero 2014, 14:52 pm
si si, me equivoque al escribir el codigo.

la consulta es

Código
  1. $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


Título: Re: busqueda cuelga conexión pagina
Publicado por: Shell Root en 22 Enero 2014, 20:21 pm
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é.


Título: Re: busqueda cuelga conexión pagina
Publicado por: kakashi20 en 22 Enero 2014, 22:10 pm
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..






Título: Re: busqueda cuelga conexión pagina
Publicado por: Shell Root en 22 Enero 2014, 22:21 pm
Pues debería de abrirse una sola vez, creo que deberías de reeplantear tu problema.


Título: Re: busqueda cuelga conexión pagina
Publicado por: #!drvy en 23 Enero 2014, 03:44 am
Citar
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..

cache.

Una vez la persona escriba mas de 3 letras, sacas los resultados de la base de datos y a partir de ahí vas procesado por el lado cliente.

Saludos