Foros del Web » Programando para Internet » PHP »

sacar numero de registro siempre sale uno

Estas en el tema de sacar numero de registro siempre sale uno en el foro de PHP en Foros del Web. que tal gente, acá mi duda: estoy tratando de sacar el numero de registros dependiendo de lo que el usuario seleccione, por ejemplo categoría 1 ...
  #1 (permalink)  
Antiguo 27/01/2012, 18:43
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años, 6 meses
Puntos: 23
sacar numero de registro siempre sale uno

que tal gente, acá mi duda:

estoy tratando de sacar el numero de registros dependiendo de lo que el usuario seleccione, por ejemplo categoría 1 - tiene 1 registro y categorìa 2 tiene 3 registros, pero siempre me sale uno

este es el código que estoy utilizando:

Código PHP:
$no="SELECT id_categoria FROM categorias WHERE id_categoria='$id_cat_view'";
$NroReg=mysql_query($no);
$NroRegistros=mysql_num_rows($NroReg);
echo 
"registros ".$NroRegistros
donde la variable $id_cat_view es el id de la categoría que selecciono el usuario
la tabla categorias nada más tiene id_categoria y nombre_categoria

no se si estoy mal en el código php o en la consulta mysql

les agradeceré sus correcciones

saludos
  #2 (permalink)  
Antiguo 27/01/2012, 19:01
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: sacar numero de registro siempre sale uno

Tu problema no es de código php, es mas bien tema de base de datos.

Al hacer el SELECT estás pidiendo que te devuelve al id_categoria, no el total de registros bajo ese ID.

Para eso necesitas usar COUNT(*)
Cita:
SELECT COUNT(*) FROM tabla WHERE id = ?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 27/01/2012, 19:20
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: sacar numero de registro siempre sale uno

Es cierto que usar COUNT(*) es mejor, pero como lo tienes te debe funcionar igual ya que ese es el trabajo de mysql_num_rows, si encuentra 3 filas en ese select 3 filas te muestra... Revisa el valor de $id_cat_view (es cadena o número) y que la tabla tenga realmente esos registros.

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #4 (permalink)  
Antiguo 27/01/2012, 19:36
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 19 años, 5 meses
Puntos: 88
Respuesta: sacar numero de registro siempre sale uno

no le veo lógica a lo que planteas, sea con count() o de la forma como lo realizas en este momento, no le veo el sentido, tienes la tabla categoria, el cual me imagino que es para registrar diferentes tipos de categorias y por ende no debe repetirse y siempre dará 1 si hay o 0 si no por ejemplo:

id_categoria nombre
1 peliculas
2 videojuegos
y asi, sucesivamente, no creo que te sirva de esta otra forma

id_categoria nombre
1 peliculas
1 videojuegos

creo que estas confundiendo la tabla.

saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #5 (permalink)  
Antiguo 27/01/2012, 19:41
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: sacar numero de registro siempre sale uno

Cita:
Iniciado por andresdzphp Ver Mensaje
Es cierto que usar COUNT(*) es mejor, pero como lo tienes te debe funcionar igual [...]
De hecho estás equivocado, pues la consulta es algo así:
Cita:
SELECT ID FROM tabla WHERE ID = 99
Se está seleccionando el ID de la tabla, que corresponda únicamente al ID 99.

¿Cuantos registros pueden existir con dicho ID suponiendo que es único?

Si lo piensas dos veces sólo puede existir un registro a la vez con tal ID, de ahí el error.

Y si hacemos esto:
Cita:
SELECT ID FROM tabla
Ahí si funcionará mysql_num_rows() pero es absurdo obtener todos los IDs de la tabla sólo por saber la cantidad.

De ahí que COUNT(*) siempre es y será la opción para contar los registros, de ahí su nombre.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 27/01/2012, 19:51
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: sacar numero de registro siempre sale uno

Pues si tienes razón, si estuviera seleccionando de la tabla productos por ejemplo tendría sentido esa consulta... Pero está seleccionando de la tabla categorias.

Cita:
SELECT ID FROM tabla WHERE ID = 99
puede que se esté refiriendo a un id relacionado con otra tabla y pueden haber varios id iguales. (Igual no hay nada que discutir, es lo mismo del principio)

...o estamos en un caso de mal diseño de una tabla.

En resumen hay que revisar esa consulta y usar count(*). Pasarse por el foro de mysql.

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #7 (permalink)  
Antiguo 27/01/2012, 22:33
 
Fecha de Ingreso: julio-2007
Mensajes: 109
Antigüedad: 17 años, 4 meses
Puntos: 1
Respuesta: sacar numero de registro siempre sale uno

No hay duda q se equivoco el usser, lo que ha querido hacer es:

$no="SELECT id_categoria FROM productos WHERE id_categoria='$id_cat_view'";

si es asi, con las 2 formas funcionaria perfecto, count(*) y mysql_num_rows().

Saludos,
  #8 (permalink)  
Antiguo 28/01/2012, 06:49
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 16 años, 1 mes
Puntos: 175
Respuesta: sacar numero de registro siempre sale uno

El problema esta como se dijo arriba en la formulacion de la consulta.. o sea.. si consulto a la BD de categoria, donde la estructura es

id_categoria | categoria
--------------------------------
1 | autos
2 | motos
3 | lanchas

es obvio que si envias la variable id=3 te traiga solo LANCHAS, porque le pides que traiga todos los ID de la tabla categoria que sean igual a 3.. se cae de obvio, nunca el numero de columas de NUM ROWS traera otro resultado que no sea 1 o NULL... espero se entienda...

deberias replantear tu consulta algo parecido a lo que te indica TheM4aster

o bien relacionar la tabla categorias con la de usuarios o la tabla que sea..

select *
from categorias as c, usuarios as u
where c.id_categoria=u.id_categoria
and c.id_categoria='$id_cat_view'

algo asi
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #9 (permalink)  
Antiguo 28/01/2012, 09:53
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años, 6 meses
Puntos: 23
Respuesta: sacar numero de registro siempre sale uno

ok gracias a todos por sus respuestas, me han sevido mucho ya que todos tiene razon

pateketrueke

Cita:
De hecho estás equivocado, pues la consulta es algo así:
Cita:
SELECT ID FROM tabla WHERE ID = 99
Se está seleccionando el ID de la tabla, que corresponda únicamente al ID 99.

¿Cuantos registros pueden existir con dicho ID suponiendo que es único?

Si lo piensas dos veces sólo puede existir un registro a la vez con tal ID, de ahí el error.
cierto

eits

Cita:
creo que estas confundiendo la tabla.


asi es, me confundi de tabla y de hecho probando las dos formas funciona, el problema era que no lo estaba haciendo con la tabla correcta

que es la de comentarios, saber cuantos comentario hay de cierta categoria, no saber cuantas categorias hay de cierta categoria ya que siempre sera 1

gracias, sin todas sus observaciones no me hubiera llegado a esa conclusion

aca dejo las dos opciones, que funcionan ok:

Código PHP:
$registros_query="SELECT count(*) FROM comentarios WHERE id_categoria='$id_cat_view'";
$res_reg=mysql_query($registros_query);
$NroRegistros=mysql_result($res_reg,0,0);

//o

$registros_query="SELECT id_categoria FROM comentarios WHERE id_categoria='$id_cat_view'";
$res_reg=mysql_query($registros_query);
$NroRegistros=mysql_num_rows($res_reg); 
Saludos!

Etiquetas: mysql, numero, registro, siempre, sql, tabla, variables, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:11.