Foros del Web » Programando para Internet » PHP »

Error con mysql_num_rows()

Estas en el tema de Error con mysql_num_rows() en el foro de PHP en Foros del Web. Buenas intento hacer un programita en que la gente ingrese su cedula y verificar si esta en la base de datos mediante PHP, tengo una ...
  #1 (permalink)  
Antiguo 04/09/2009, 17:36
 
Fecha de Ingreso: enero-2009
Mensajes: 40
Antigüedad: 15 años, 3 meses
Puntos: 1
Pregunta Error con mysql_num_rows()

Buenas intento hacer un programita en que la gente ingrese su cedula y verificar si esta en la base de datos mediante PHP, tengo una pagina HTML con el formulario y una en PHP que se encargar de todo el trabajo el codigo es el siguiente:

Código PHP:
<?PHP
    
include ("configuracion.php");
    
//El archivo que incluye las variables direccion, usuario, password y db
$user$_POST['datos'];
// Importamos el campo del HTML

// Obviamente conectamos 
mysql_connect($direccion$usuario$password); 
mysql_select_db($db); 
 
// Paso 2: Hacemos la consulta a la Tabla por el usuario 
$busquedamysql_query("SELECT usuario FROM tabla WHERE usuario='$user'"); 
 
 
// Paso 3: vemos si hubo coincidencias 
if(mysql_num_rows($busqueda)>0) {  
      
// Aqui va el texto si esta inscrito
      
echo "La cedula $user se no encuentra preinscrita. Por favor prosiga con el formulario.<br>"
      echo 
"<a href=\"javascript:history.back()\">Regresar</a>"
} else { 
      
// Aqui va el texto si no esta inscrito
echo "La cedula $user se encuentra preinscrita";
echo 
"<a href=\"javascript:history.back()\">Regresar</a>"


?>
Pero cada vez que lo ejecuto me manda el siguiente error :

Cita:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\registroeee\cedula\procesar.php on line 15
Y me carga loco no se que haccer. Gracias de antemano
  #2 (permalink)  
Antiguo 04/09/2009, 17:46
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Error con mysql_num_rows()

Siempre es bueno asegurarse de que el query este bien para eso usa
Código php:
Ver original
  1. $busqueda= mysql_query("SELECT usuario FROM tabla WHERE usuario='$user'") or die(mysql_error());
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 04/09/2009, 17:50
 
Fecha de Ingreso: enero-2009
Mensajes: 40
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: Error con mysql_num_rows()

Ahora me manda

Cita:
Table 'registroeee.tabla' doesn't exist
  #4 (permalink)  
Antiguo 04/09/2009, 17:51
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Error con mysql_num_rows()

ahi tienes verifica si existe esa tabla en la base de datos. Lo mas probable que lo hayas escrito mal
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 04/09/2009, 18:17
 
Fecha de Ingreso: enero-2009
Mensajes: 40
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: Error con mysql_num_rows()

Seguro estas confundido $db es el nombre de la base de datos, y en ningun lado dice para insertar en una variable u otro la tabla (ten en encuente este es mi primer script hecho desde cero por mi)
  #6 (permalink)  
Antiguo 04/09/2009, 19:08
Avatar de almagropaco_  
Fecha de Ingreso: marzo-2008
Ubicación: Mar del Plata
Mensajes: 854
Antigüedad: 16 años, 1 mes
Puntos: 25
Respuesta: Error con mysql_num_rows()

Verifica configuracion.php, para mi es un error de esa parte, algo mal en la coneccion.
  #7 (permalink)  
Antiguo 04/09/2009, 22:09
 
Fecha de Ingreso: enero-2009
Mensajes: 40
Antigüedad: 15 años, 3 meses
Puntos: 1
Pregunta Respuesta: Error con mysql_num_rows()

Esto es lo que contiene configuracion.php:

Código PHP:
<?PHP
// Diseñado por Daniel Fornez
// Archivo de configuracion de la busqueda de cedulas
$direccion 'localhost';
$usuario 'root';
$password 'pa****co';
$db 'registroeee';
?>
  #8 (permalink)  
Antiguo 04/09/2009, 22:11
 
Fecha de Ingreso: enero-2009
Mensajes: 40
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: Error con mysql_num_rows()

no le veo nada raro y tu?
  #9 (permalink)  
Antiguo 04/09/2009, 23:01
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años, 1 mes
Puntos: 16
Respuesta: Error con mysql_num_rows()

cambia tabla por el nombre de la tabla (cuack)
Código php:
Ver original
  1. $busqueda= mysql_query("SELECT usuario FROM tabla WHERE usuario='$user'");

lo que te dice

Cita:
Table 'registroeee.tabla' doesn't exist
es que dentro de la base registroeee no existe la tabla 'tabla'
  #10 (permalink)  
Antiguo 04/09/2009, 23:02
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años, 1 mes
Puntos: 16
Respuesta: Error con mysql_num_rows()

--- habia quedado repetiro. por favor borrar este mensaje ---
  #11 (permalink)  
Antiguo 05/09/2009, 00:23
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Error con mysql_num_rows()

Lo que te dice el error es que la Tabla tabla (valga la redundancia) no existe. Verifica primero que la base de datos registroeee este bien escrita y segundo verifica que dentro de esa base de datos tengas una tabla llamada tabla (y que vuelva a valer la redundancia).
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #12 (permalink)  
Antiguo 05/09/2009, 00:38
 
Fecha de Ingreso: enero-2009
Mensajes: 40
Antigüedad: 15 años, 3 meses
Puntos: 1
Exclamación Respuesta: Error con mysql_num_rows()

Me voy a volver loco , y disculpa mucho a molestia pero todavia me manda error ya le cree una columna asi quedo:

***p://img44.imageshack.us/img44/5022/phpmyadmin7894562149.png

Y mi codigo asi:
Código PHP:
<?PHP
    
include ("configuracion.php");
    
//El archivo que incluye las variables direccion, usuario, password y db
$user$_POST['datos'];
// Importamos el campo del HTML

// Obviamente conectamos 
mysql_connect($direccion$usuario$password); 
mysql_select_db($db); 
 
// Paso 2: Hacemos la consulta a la Tabla por el usuario 
$busquedamysql_query("SELECT usuario  FROM cedula WHERE usuario ='$user'") or die(mysql_error());
 
// Paso 3: vemos si hubo coincidencias 
if(mysql_num_rows($busqueda)>0) {  
      
// Aqui va el texto si esta inscrito
      
echo "La cedula $user se no encuentra preinscrita. Por favor prosiga con el formulario.<br>"
      echo 
"<a href=\"javascript:history.back()\">Regresar</a>"
} else { 
      
// Aqui va el texto si no esta inscrito
echo "La cedula $user se encuentra preinscrita";
echo 
"<a href=\"javascript:history.back()\">Regresar</a>"


?>
Pero todavia me manda error

Cita:
Unknown column 'usuario' in 'field list'
  #13 (permalink)  
Antiguo 05/09/2009, 00:54
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Error con mysql_num_rows()

Tiene que asegurarte que dentro de la tabla llamada cedula exista una columna llamada usuario
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #14 (permalink)  
Antiguo 05/09/2009, 06:41
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años, 1 mes
Puntos: 16
Respuesta: Error con mysql_num_rows()

Cita:
Iniciado por apolodanielf Ver Mensaje
Me voy a volver loco , y disculpa mucho a molestia pero todavia me manda error ya le cree una columna asi quedo:

***p://img44.imageshack.us/img44/5022/phpmyadmin7894562149.png

Y mi codigo asi:
Código PHP:
<?PHP
    
include ("configuracion.php");
    
//El archivo que incluye las variables direccion, usuario, password y db
$user$_POST['datos'];
// Importamos el campo del HTML

// Obviamente conectamos 
mysql_connect($direccion$usuario$password); 
mysql_select_db($db); 
 
// Paso 2: Hacemos la consulta a la Tabla por el usuario 
$busquedamysql_query("SELECT usuario  FROM cedula WHERE usuario ='$user'") or die(mysql_error());
 
// Paso 3: vemos si hubo coincidencias 
if(mysql_num_rows($busqueda)>0) {  
      
// Aqui va el texto si esta inscrito
      
echo "La cedula $user se no encuentra preinscrita. Por favor prosiga con el formulario.<br>"
      echo 
"<a href=\"javascript:history.back()\">Regresar</a>"
} else { 
      
// Aqui va el texto si no esta inscrito
echo "La cedula $user se encuentra preinscrita";
echo 
"<a href=\"javascript:history.back()\">Regresar</a>"


?>
Pero todavia me manda error
claro si no has puesto ese field en la tabla cedula, la misma por lo que veo en la imagen tiene los siguientes campos

23768751, 7979379, 7761248, 3560053
  #15 (permalink)  
Antiguo 05/09/2009, 07:49
Avatar de vb2005  
Fecha de Ingreso: noviembre-2005
Ubicación: Paderborn - Alemania
Mensajes: 566
Antigüedad: 18 años, 5 meses
Puntos: 24
Respuesta: Error con mysql_num_rows()

si ya hiciste el db_select. quitale el punto antes del nombre de la tabla.
__________________
www.marcher.com.uy - Web personal
Nerd's Corner - Desarrollo de software a medida
  #16 (permalink)  
Antiguo 05/09/2009, 17:29
 
Fecha de Ingreso: enero-2009
Mensajes: 40
Antigüedad: 15 años, 3 meses
Puntos: 1
Pregunta Respuesta: Error con mysql_num_rows()

Cita:
Iniciado por samu22 Ver Mensaje
claro si no has puesto ese field en la tabla cedula, la misma por lo que veo en la imagen tiene los siguientes campos

23768751, 7979379, 7761248, 3560053
Acual field te refieres??

PD: Ya hasta meda pena preguntar por todo!!
  #17 (permalink)  
Antiguo 05/09/2009, 20:57
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años, 1 mes
Puntos: 16
Respuesta: Error con mysql_num_rows()



12345678910
  #18 (permalink)  
Antiguo 05/09/2009, 21:27
 
Fecha de Ingreso: enero-2009
Mensajes: 40
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: Error con mysql_num_rows()

Primero que todo muchas gracias por darte a la molestia esplicarlo graficamente, segundo en que tabla hay que colocarlo??, no entiendo!
  #19 (permalink)  
Antiguo 05/09/2009, 21:33
Avatar de pipev25  
Fecha de Ingreso: septiembre-2009
Mensajes: 93
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Error con mysql_num_rows()

Ole apolodanielf, yo creo que lo mas prudente para explicarte bien es que postees el CREATE TABLE para poder reconocer tu error, lo mas probable en que en la tabla que le llamas cedula se llame usuario y el campo que buscas se llama cedula es decir tu select y el from pueden estar al reves saludos
  #20 (permalink)  
Antiguo 05/09/2009, 22:18
 
Fecha de Ingreso: enero-2009
Mensajes: 40
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: Error con mysql_num_rows()

-- phpMyAdmin SQL Dump
-- version 2.11.7
--
-- Servidor: localhost
-- Tiempo de generación: 06-09-2009 a las 12:41:55
-- Versión del servidor: 5.0.51
-- Versión de PHP: 5.2.6

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Base de datos: `registroeee`
--

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `cedula`
--

CREATE TABLE IF NOT EXISTS `cedula` (
`23768751` varchar(12) NOT NULL,
`7979379` varchar(12) NOT NULL,
`7761248` varchar(12) NOT NULL,
`3560053` varchar(12) NOT NULL,
FULLTEXT KEY `usuario` (`23768751`,`7979379`,`7761248`,`3560053`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

--
-- Volcar la base de datos para la tabla `cedula`
--
  #21 (permalink)  
Antiguo 05/09/2009, 23:10
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años, 1 mes
Puntos: 16
Respuesta: Error con mysql_num_rows()

lo que tenes agregado es una clave de texto completo (FULLTEXT KEY) con el nombre usuario, lo que no significa que tengas un campo llamado usuarios en la tabla.

No se realmente lo que tenes que hacer, que datos tenes que mostar, por lo que no te puedo decir que estructura deberias usar, pero supongamos que lo que necesitas en la tabla cedula se, guardar el id del usuario, la fecha de grabacion, numero de cedula, y estado, deberias hacer lo siguiente

Código:
CREATE TABLE IF NOT EXISTS `cedula` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `usuario_id` int(10) unsigned NOT NULL DEFAULT '0',
  `fecha_ini` DATETIME NOT NULL DEFAULT '',
  `numero_cedula` varchar(45) NOT NULL DEFAULT '',
`estado` varchar(2) NOT NULL DEFAULT ''
  PRIMARY KEY (`id`)
}
  #22 (permalink)  
Antiguo 05/09/2009, 23:19
 
Fecha de Ingreso: enero-2009
Mensajes: 40
Antigüedad: 15 años, 3 meses
Puntos: 1
Mensaje Respuesta: Error con mysql_num_rows()

Cita:
Iniciado por apolodanielf Ver Mensaje
Buenas noches, gracias por su respuetas.

En fin, lo cierto es que es un sistema de busquedas de cedulas de identidad para ver si estan preinscritas en un evento que voy a hacer el unico dato que debe estar en la Base de datos es la cedula, la cosa es que hasta haora tengo solo unas poquitas cedulas en la base de datos, pero dentro de poco podran ser cientos, y no se mucho de MySQL y quisiera saber como definir correctamente la estructura de la tabla para poner un ejemplo, supongamos que tengo las siguientes cedulas:

123
234
569
189


Y quisiera saber mediante PHP si estan en la DB (las cedulas de identidad) y si no que el programa me diga que no estan.
Esa es la frase clave.

Saludos,
Daniel
  #23 (permalink)  
Antiguo 06/09/2009, 01:01
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años, 1 mes
Puntos: 16
Respuesta: Error con mysql_num_rows()

Cita:
Iniciado por apolodanielf Ver Mensaje

Iniciado por apolodanielf Ver Mensaje
Buenas noches, gracias por su respuetas.

En fin, lo cierto es que es un sistema de busquedas de cedulas de identidad para ver si estan preinscritas en un evento que voy a hacer el unico dato que debe estar en la Base de datos es la cedula, la cosa es que hasta haora tengo solo unas poquitas cedulas en la base de datos, pero dentro de poco podran ser cientos, y no se mucho de MySQL y quisiera saber como definir correctamente la estructura de la tabla para poner un ejemplo, supongamos que tengo las siguientes cedulas:

123
234
569
189


Y quisiera saber mediante PHP si estan en la DB (las cedulas de identidad) y si no que el programa me diga que no estan. Esa es la frase clave.

Saludos,
Daniel
son los principios basicos de mysql, que si vas a trabajar con bases de datos es de muchisima importancia que los aprendas, ya que hoy podemos darte una solucion, pero eso solo no va a completar tu sistema y tendras que empezar a hacer procesos un poco mas complejos (no quiere decir difcil, sino con otros tipos de relaciones), la documentacion de mysql es bastante completa.

siempre que vayas a crear una tabla trata de tener en cuenta todos los datos que puedas a llegar a necesitar, ahora y en una posible eventualidad. si solamente guardas un dato y despues necesitas una informacion que no esta en la tabla, por ejemplo el nombre de la persona de la cedula, despues es muy tedioso actualizar la tabla con la cantidad de registros guardados.

Por otro lado, saber si la cedula esta en la base de datos solamente no te da un dato muy certero para la apliacion que pensas hacer, deberias controlar los eventos a travez de una tabla que registre uno, y una tabla que registre que cedulas se inscribieron o participaron al evento, de esa forma, el sistema se hace mas robusto al dar la posibilidad de no solo obtener que cedulas hay guardadas, sino tener un historial de actividades de la misma.

Lo que habias hecho con las tablas del principi era crear un campo por cada cedula que ingresaras, en vez de insertar un registro a la tabla.

un tabla solamente para guardar el numero de la cedula y nada mas seria asi
Código:
id
numCedula
al hacer un INSERT INTO cedulas (numCedula) VALUES ("$numCedulaObtenida")
la tabla quedaria asi (en el caso que numCedulaObtenida sea 123)
Código:
id |  numCedula 
1  | 123
hacemos 4 INSERT mas con diferentes cedulas y quedaria
Código:
id |  numCedula 
1  | 123
2  | 561
3  | 498
4  | 642
5  | 752

despues para saber si esta en la base de datos yo usaria esto
Código php:
Ver original
  1. //$numCedulaObtenida es la variable con el dato del formulario
  2. //hacemos un conteo de los datos con la siguiente condicion
  3. $sql = 'SELECT COUNT(id) AS NUM FROM cedula WHERE numCedula ='.$numCedulaObtenida;
  4. // esto nos va a devolver el total de registros que cumplan la funcion
  5.  
  6. $dat = mysql_fetch_array(mysql_querry($sql));
  7.  
  8. if($dat['NUM']==0){
  9.         $return = 'la cedula: <b>'.$numCedulaObtenida.'</b>, no se encuentra registrada en la base de datos';
  10. }else{
  11.         $return = 'cedula identificada correctamente';
  12. }
  13.  
  14. echo $return;

te dejo el link de un pdf muy completo de mysql, lo acabo de subir y lo estoy usando en la actualidad
http://www.mediafire.com/download.php?mnyqtommtmn

Última edición por samu22; 06/09/2009 a las 01:09
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 18:24.