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


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  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 4,616 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.724


<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

Te vendería mi talento por poder dormir tranquilo.
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.724


<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

Te vendería mi talento por poder dormir tranquilo.
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