elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  [MySQL] Consulta con LIKE omite el primer elemento al momento de listar (solved)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [MySQL] Consulta con LIKE omite el primer elemento al momento de listar (solved)  (Leído 3,542 veces)
Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
[MySQL] Consulta con LIKE omite el primer elemento al momento de listar (solved)
« en: 11 Octubre 2013, 17:23 pm »

Buenas.

Estoy haciendo una consulta usando la variable LIKE '%muestra%' para buscar algo dentro de mi pagina, y que esto se asocie con la "muestra" de palabra que me haya proporcionado el usuario desde el INPUT de busqueda.

La busqueda se realiza con exito (consulta a mysql), la sintaxis esta bien y todo... el problema es que al momento de mostrar los resultados (mysql_fetch_array()) me omite el primer elemento de la consulta. Vaya, si la consulta a mysql me dio 4 resultados, me omite el primer elemento.

ejemplo:

Código
  1. <?php
  2. $q= "select * from NOTICIAS where TITULO LIKE '%piedra%' ORDER BY TITULO ASC;";
  3. $link= conectarmysql();
  4. $query= mysql_query( $q, $link ); # consultamos
  5.  
  6. # imprime "Resultados Encontrados: 4"
  7. echo 'Resultados Encontrados: '. mysql_num_rows($query);
  8.  
  9. # ahora a listar
  10. $c=0; # un contador
  11. while( $buf=mysql_fetch_array($query) )
  12.          {
  13.          echo $buf["TITULO"]. '<br><hr>';
  14.          $c++;
  15.          }
  16.  
  17. # imprime "Resultados Listados: 3"
  18. echo 'Resultados Listados: '. $c;
  19. ?>

En busca de ver cual era el problema, me tope conque omite el primer elemento encontrado ya que realice la sentencia de consulta exacta en PHPMyAdmin y me arroja los 4 resultados, pero el PRIMERO de la lista no lo imprime mi codigo.

Por ello digo que "omite el primer elemento de la busqueda".

Espero puedan ayudarme !

IMPORTANTE: esto solo ocurre con busquedas, ya que la operaciones normales como "ver una sección del blog"  o cualquier cosa que demande consultar a MySQL algo, si se encuentran 10 resultados, los 10 salen impresos... Repito: solo sucede cuando hago una busqueda.

Saludos !


« Última modificación: 14 Octubre 2013, 16:43 pm por Diabliyo » En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.723


<3


Ver Perfil WWW
Re: [MySQL] Consulta con LIKE omite el primer elemento al momento de listar !
« Respuesta #1 en: 11 Octubre 2013, 21:56 pm »

Sera porque el contador empieza desde 0  :silbar:, la verdad no entendi mucho


En línea

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: [MySQL] Consulta con LIKE omite el primer elemento al momento de listar !
« Respuesta #2 en: 11 Octubre 2013, 22:13 pm »

Sera porque el contador empieza desde 0  :silbar:, la verdad no entendi mucho
._.

@Diabliyo
comenta la siguiente línea y verifica que pasa ;)

echo 'Resultados Encontrados: '. mysql_num_rows($query);
En línea

abc
Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: [MySQL] Consulta con LIKE omite el primer elemento al momento de listar !
« Respuesta #3 en: 12 Octubre 2013, 07:22 am »

Alex Jurado por favor evita contestar al tema si no entiendes, creo que es muy claro, de los 4 resultados solo imprime los ultimos 3, el primero no sale listado.

Ejm: Esta es la Tabla en MySQL.

*----------------*
|   TITULO  |
*----------------*
| piedra1    |
| piedra2    |
| piedra3    |
| piedra4    |
*----------------*

El resultado del codigo que puse arriba da:

Código:
Resultados Encontrados: 4

piedra2
piedra3
piedra4

Resultados Listados: 3

Darhius pues es obvio, solo no sale el texto "Resultados Encontrados: 4". Eso obviamente no resuelve nada :S



Lo raro es que solo sucede cuando hago busquedas, osease, cuando se llama a la consulta con LIKE '%muestra%'. Si entro simplemente a ver las noticias del blog (sin busqueda), salen los 4 elementos impresos.

Saludos !
« Última modificación: 12 Octubre 2013, 07:36 am por Diabliyo » En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.723


<3


Ver Perfil WWW
Re: [MySQL] Consulta con LIKE omite el primer elemento al momento de listar !
« Respuesta #4 en: 12 Octubre 2013, 08:29 am »

Lo tengo exactamente como tú lo tienes, mira: -PASAME UN SCRIPT DE LA TABLA-

Código:
Código
  1.      $cnn = mysql_connect("127.0.0.1", "root", "");
  2.      mysql_select_db("dbPoC", $cnn);
  3.  
  4.      $sql = "SELECT * FROM usuarios WHERE nick LIKE '%piedra%'";
  5.      $query = mysql_query($sql, $cnn) or die("error:".mysql_error());
  6.      echo 'Resultados Encontrados: '. mysql_num_rows($query)."<br/>";
  7.  
  8.      $contador = 0;
  9.      while($row = mysql_fetch_array($query)):
  10.         echo $row["nick"]."<br/>";
  11.         $contador++;
  12.      endwhile;
  13.  
  14.      echo 'Resultados Listados: '. $contador;

Resultado:
Código
  1. Resultados Encontrados: 4
  2. piedra1
  3. piedra2
  4. piedra3
  5. piedra4
  6. Resultados Listados: 4

PD: jaja el comentario de ahora, es que estaba beodo :p
« Última modificación: 12 Octubre 2013, 08:40 am por Alex Jurado » En línea

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: [MySQL] Consulta con LIKE omite el primer elemento al momento de listar !
« Respuesta #5 en: 13 Octubre 2013, 17:59 pm »

Buen dia...

Gracias por tu respuesta Alex Jurado, pero me puse a analizar con lupa mi codigo y encontre algo que pues me tiene con la duda.... Antes explico algo importante.

La tabla donde guardo las noticias tiene estos tres campos mas:

TITULO --> donde se guarda el titulo del post.
VISTA --> su valor puede ser "post", "page", "gallery", "script".
MENU--> menu donde se coloca esta noticia.
sección--> sección dentro del menu.

En donde:

post --> se visualizara la pagina en forma de "blog".
page --> solo se muestra la ultima noticia.
gallery --> las noticia se muestran en forma de thumbnails (recuadros con foto de portada).
script --> la noticia carga un SCRIPT PHP que adjunto el usuario.

De modo que ANTES de meter la consulta al while() realizo esto:

Código
  1. $q= "select * from NOTICIAS where TITULO LIKE '%piedra%' ORDER BY TITULO ASC;";
  2. $link= conectarmysql();
  3. $query= mysql_query( $q, $link ); # consultamos
  4.  
  5. # imprime "Resultados Encontrados: 4"
  6. echo 'Resultados Encontrados: '. mysql_num_rows($query);
  7.  
  8. # consulto el primer dato
  9. $x= mysql_fetch_array($query);
  10.  
  11. if( !strcmp($x["VISTA"], "post") )
  12.          noticias_post($query); # mando la consulta
  13. else if( !strcmp($x["VISTA"], "page") )
  14.          noticias_pagina($query); # mando la consulta
  15. else if( !strcmp($x["VISTA"], "gallery") )
  16.          noticias_galeria($query); # mando la consulta
  17. else if( !strcmp($x["VISTA"], "script") )
  18.          noticias_script($query); # mando la consulta
  19. else echo 'Error';
  20.  
  21. unset($query);
  22.  
  23. #
  24. # Y digamos que es la funcion de noticias_post()
  25. #
  26. function noticias_post( $q )
  27. {
  28. if( mysql_num_rows($q) )
  29. {
  30. # ahora a listar
  31. $c=0; # un contador
  32. while( $buf=mysql_fetch_array($q) )
  33.          {
  34.          echo $buf["TITULO"]. '<br><hr>';
  35.          $c++;
  36.          }
  37.  
  38. # imprime "Resultados Listados: 3
  39. echo 'Resultados Listados: '. $c;
  40. }
  41. }

Me imagino que el mysq_fetch_array() de la linea 9 hace que pierda el primer elemento del conjunto encontrado, no ?

Saludos !
« Última modificación: 13 Octubre 2013, 18:03 pm por Diabliyo » En línea

xustyx

Desconectado Desconectado

Mensajes: 213


Ver Perfil
Re: [MySQL] Consulta con LIKE omite el primer elemento al momento de listar !
« Respuesta #6 en: 13 Octubre 2013, 18:41 pm »

No se mucho de php pero prueba de hacer la consulta otra vez antes de entrar en noticias_post.

Supongo que al hacer el fetch el cursor se adelanta una posición por eso te retorna 1 menos como tu dices.
En línea

Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: [MySQL] Consulta con LIKE omite el primer elemento al momento de listar !
« Respuesta #7 en: 14 Octubre 2013, 16:42 pm »

Buen dia...

Pues resuelto :D...

El detalle es que hacia una llamada a mysql_fetch_array() para verificar la forma en como se visualizaria el contenido, eso hacia que el puntero se fuera a la posición 2 y a partir de ahí continuaba imprimiendo, por ende el primer dato ya no era visible :S !....

La solución es regresar el punto al principio con:

Código
  1. mysql_data_seek( $query, 0 );

Saludos !
« Última modificación: 14 Octubre 2013, 16:44 pm por Diabliyo » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines