Foros del Web » Programando para Internet » PHP »

Com resolver error de registro en base de datos con MySql

Estas en el tema de Com resolver error de registro en base de datos con MySql en el foro de PHP en Foros del Web. Hola a todos. Hace unos días empecé a hacer el formulario y la base de datos para la inscripcion a un boletín. El formulario funciona ...
  #1 (permalink)  
Antiguo 16/02/2010, 17:04
 
Fecha de Ingreso: septiembre-2009
Mensajes: 86
Antigüedad: 14 años, 7 meses
Puntos: 0
Pregunta Com resolver error de registro en base de datos con MySql

Hola a todos. Hace unos días empecé a hacer el formulario y la base de datos para la inscripcion a un boletín. El formulario funciona perfecto y envia las variables a "inscripcion.php" que es el de abajo. Sin embargo me da el sigueinte error:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/.../public_html/inscripcion.php on line 14


La línea 14 es la que está en negrita. He visto aqui mismo en el foro y en otros sobre otras personas que tienen este error y lo han resuelto al acomodar las mayusculas o algun otro error con las variables;pero al pareceer no es el caso pues nunca uso mayusculas para evitar problemas y de todas formas he chequeado una y otra vez el confing, la base de datos, etc...

La tabla se llama "email" y tiene los campos id, nombre, mail, fecha (Sería la fecha de inscripcion).

He buscado y leido pero no he encontrado la solucion a esto. A penas me defiendo con php asi que no sé si hay algun otro error que no noto..

Si no es molestia espero puedan ayudarme..!


Código:
<?

include("config.php");

$mail = $_POST['mail'];
$nombre = $_POST['nombre'];

$query="  SELECT * FROM email WHERE mail='$mail'  ";

$link=mysql_connect($server,$dbuser,$dbpass);

$result=mysql_db_query($database,$query,$link);

if(mysql_num_rows($result)){

@header ("location: mail-registrado.php");

}else{

$query="INSERT INTO email (nombre, mail, fecha) VALUES ('$nombre','$mail',NOW())";

$result=mysql_db_query($database,$query,$link);

if(mysql_affected_rows($link)){

@header ("location: respuestas/registro-exitoso");

} else {

echo "Error introduciendo la direccion de correo electronico";

}
}
?>


Saludos
  #2 (permalink)  
Antiguo 16/02/2010, 21:07
 
Fecha de Ingreso: enero-2004
Mensajes: 431
Antigüedad: 20 años, 2 meses
Puntos: 6
Respuesta: Com resolver error de registro en base de datos con MySql

Si te fijas en el if no estas comprobando nada deberia ser algo como


if(mysql_num_rows($result) == 1){


Asi comprobarias si existen los datos
__________________
El que teme preguntar, se averguenza de aprender.
  #3 (permalink)  
Antiguo 17/02/2010, 07:01
 
Fecha de Ingreso: septiembre-2009
Mensajes: 86
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Com resolver error de registro en base de datos con MySql

Hola kez0, gracias por responder. Por las dudas.. he coocado algo asi como me has dicho. Es extraño pues, hace un tiempo yo tenia problemas con otro registro de usuarios y de hecho por aqui mismo me ayudaron, este es el link . Y allí se ve que usé el if if(mysql_num_rows($result)){ y todo le fue bien. De hecho yo agarré ese mismo codigo y lo simplifique para este, pues necesita menos campos y no requiere comprobacion de contraseñas.

¿Que otra cora podría ser? Que rollo con esto .. y lo peor es que debo terminar esta pagina esta semana..
  #4 (permalink)  
Antiguo 17/02/2010, 10:50
 
Fecha de Ingreso: enero-2004
Mensajes: 431
Antigüedad: 20 años, 2 meses
Puntos: 6
Respuesta: Com resolver error de registro en base de datos con MySql

Que tal, prueba hacer eso

Código PHP:


$registros_encontrados 
mysql_num_rows($result);

if(
$registros_encontrados  != 0) { 


// Accion si existe el correo
} else
 {

// No Existe



__________________
El que teme preguntar, se averguenza de aprender.
  #5 (permalink)  
Antiguo 17/02/2010, 10:53
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Com resolver error de registro en base de datos con MySql

¿Qué tal si haces esto?

Código PHP:
Ver original
  1. $result=mysql_query($query);
  2.  
  3. if(mysql_num_rows($result)>0){
  4. //...
  5. }

PD : Si buscas en php.net, te darás cuenta que mysql_db_query está obsoleta desde la versión 4.0.6. Usa en cambio mysql_query.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #6 (permalink)  
Antiguo 17/02/2010, 14:51
 
Fecha de Ingreso: septiembre-2009
Mensajes: 86
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Com resolver error de registro en base de datos con MySql

He intentado ambas pero me sigue presentando el mismo error..!! Ya no se que hacer.. tendrán algun otro codigo sencillo para 2 campos?? No soy muy esperto.. por esto pido ayuda. He buscado pero la mayoria tiene mas de 5 campos y comprobacion de contraseña... Disculpen las molestias.. Saludos.
  #7 (permalink)  
Antiguo 17/02/2010, 15:07
 
Fecha de Ingreso: febrero-2010
Mensajes: 818
Antigüedad: 14 años, 2 meses
Puntos: 55
Respuesta: Com resolver error de registro en base de datos con MySql

prueba este, verificaste si recibes las variables ?
Código PHP:
<?php

include("config.php");
//para verificar si recibes las variables
//echo $_POST['mail'] . " - " . $_POST['nombre'];

$mail $_POST['mail'];
$nombre $_POST['nombre'];

//Conexion a la BD
$link=mysql_connect($server,$dbuser,$dbpass);
mysql_select_db($database,$link);

//consulta a la BD
$query="SELECT * FROM email WHERE mail='$mail'";
$result=mysql_query($query,$link);

if(
mysql_num_rows($result)>0){

@
header ("location: mail-registrado.php");

}else{

//consulta a la BD
$query="INSERT INTO email (nombre, mail, fecha) VALUES ('$nombre','$mail',".date('Y/m/d').")";
$result=mysql_query($query,$link);

if(
mysql_affected_rows($result)>0){

@
header ("location: respuestas/registro-exitoso");

} else {

echo 
"Error introduciendo la direccion de correo electronico";

}
}
?>

Última edición por Death_Empire; 19/02/2010 a las 12:38
  #8 (permalink)  
Antiguo 18/02/2010, 08:15
 
Fecha de Ingreso: septiembre-2009
Mensajes: 86
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Com resolver error de registro en base de datos con MySql

Hola Death_Empire, muchas gracias por el código. Sí, hecomprobado las variables y llegan perfectamente, justo ahora he ingresado de nuevo a la base de datos y chequeado los nombres y minusculas, sin embargo sigue saliendo el error en la linea if(mysql_num_rows($result)>0){ ¿Que otra cosa puede causar este error? Generalmente es por el error en el nombre de los campos o mayusculas. Pero no es el caso. ¿Como algo tan sencillo se vuelve tan dificil? jeje! Ah y gracias por lo de la fecha..! No sabía que con date('Y/m/d') se podia obtener sin las horas.
  #9 (permalink)  
Antiguo 18/02/2010, 18:47
 
Fecha de Ingreso: septiembre-2009
Mensajes: 86
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Com resolver error de registro en base de datos con MySql

Wao..! Pueden creer que tengo todo el dia en esto sin lograr nada, que impotencia.. jeje
  #10 (permalink)  
Antiguo 19/02/2010, 12:13
 
Fecha de Ingreso: septiembre-2009
Mensajes: 86
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Com resolver error de registro en base de datos con MySql

Hola!! He probado un código muy parecido a los que se han colocado arriba en otro servidor de otro hoting, y me ha servido perfectamente. Supongo que esto significa que tiene que ver con la configuracion del servidor.. que debo hacer? Hay algo que debo pedir que cambien? Por favor si es posoble respondan pronto pues debo entregar la pag. hoy..
  #11 (permalink)  
Antiguo 19/02/2010, 12:45
 
Fecha de Ingreso: febrero-2010
Mensajes: 818
Antigüedad: 14 años, 2 meses
Puntos: 55
Respuesta: Com resolver error de registro en base de datos con MySql

lo otro puede ser que en el archivo config tienes mal configurada la variable $database ?
  #12 (permalink)  
Antiguo 19/02/2010, 14:03
 
Fecha de Ingreso: septiembre-2009
Mensajes: 86
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Com resolver error de registro en base de datos con MySql

Hola Death.. he revisado y todo esta bien, el nombre de la base de datos y el server estan como deben..! Quiere decir que no tiene nada que ver con la configuracion del servidor?
  #13 (permalink)  
Antiguo 19/02/2010, 14:19
 
Fecha de Ingreso: febrero-2010
Mensajes: 818
Antigüedad: 14 años, 2 meses
Puntos: 55
Respuesta: Com resolver error de registro en base de datos con MySql

no se si la configuración del servidor influirá, si puedes probar ese mismo código en otro server o de manera local hacelo para ver si es eso.

el error supuestamente esta en $result que no es un argumento valido
entonces el problema tendria que estar en $link o en $query.
en $link si estuvieran malos los datos de conexión te saldría otro error por eso se me ocurrió que podría ser al seleccionar la base de datos estaba mal escrita o estabas eligiendo otra base de datos en la variable $database.
lo otro que podría ser es que la tabla o el campo no se llamen como lo pusiste en la consulta y por eso el error.

prueba en la consulta solo un select * de la tabla sin condición ...en una de esas......
  #14 (permalink)  
Antiguo 19/02/2010, 15:00
 
Fecha de Ingreso: septiembre-2009
Mensajes: 86
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Com resolver error de registro en base de datos con MySql

Esaes la cuestion.. ya he probado el codigo en otro servidor y funciona sin problemas..! por esto pienso que puede haber algo en la configuracion del servidor..
  #15 (permalink)  
Antiguo 21/02/2010, 14:06
 
Fecha de Ingreso: septiembre-2009
Mensajes: 86
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Com resolver error de registro en base de datos con MySql

Listooooo!!! Hey! los que tengan este error deben estar muy pendientes de todo..! No van a creer porque me lo daba..! Era porque en el cpanel, aunque habia creado el usuario, no lo habia establecido como predetermiado para la base de datos que habia creado.. eso era todo el rollo. Muchas gracias a todos por tratar de resolver mi problema. Han sido muy amables. Saludos.

Etiquetas: mysql, registro
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 06:15.