Autor Tema: variable  (Leído 4840 veces)

Desconectado Nikko

  • PHPerit@
  • *
  • Mensajes: 2
  • Karma: 0
  • Sexo: Masculino
    • Ver Perfil
Re: variable
« Respuesta #30 en: 06 de Junio de 2007, 21:57:09 pm »
Veo dos errores en tu código en la variable $ip y al momento de insertar los datos
La variable ip debe ser
$ip $_SERVER['REMOTE_ADDR'];
Y el mysql_query así
mysql_query("INSERT INTO usuarios (usuario,contra,correo,creditos,mensajes,publicidad,VIP_dia,VIP_mes,VIP_a,DJ_COM,MOD,REP,ADMIN,ip) VALUES ('".$usuario."','".$contra."','".$correo."','30','0','SI','".$vipdia."','".$vipmes."','".$vipa."','NO','NO','NO','NO','".$ip."')");
Esos errores lo he podido ver a simple vista, espero que se solucione el problema

Al respecto del color del código que haz puesto, eso tiene que ver con el sistema de coloreo del foro

Saludos.
<? echo "Nada es difícil"; ?>

Comunidad PHPeros

Re: variable
« Respuesta #30 en: 06 de Junio de 2007, 21:57:09 pm »

Desconectado G2K

  • Moderador de Programación General
  • PHPero Master
  • ****
  • Mensajes: 2.245
  • Karma: 76
  • Sexo: Masculino
  • Dame un punto de apoyo y moveré la Tierra
    • Ver Perfil
    • Cristian Torrijos
Re: variable
« Respuesta #31 en: 06 de Junio de 2007, 22:20:45 pm »
Muchas gracias pero el error persiste...: A ocurrido un error: El nombre de usuario y/o el correo electronico ya a sido registrado

Asi queda el codigo:

<?php

$conectar 
mysql_connect( &#39;localhost&#39;, &#39;usuario&#39;, &#39;************&#39;) or die(&#39;Could not connect to server.&#39; );
mysql_select_db(&#39;*********&#39;, $conectar) or die(&#39;Could not select database.&#39;);

if($_POST[&#39;registrar&#39;]){
 
	
if(
$_POST[contra]==$_POST[contra2]){
	

	
	
$query mysql_query("SELECT * FROM usuarios WHERE usuario=&#39;$POST[usuario]&#39; or correo=&#39;$_POST[correo]&#39;");
	
	
if(!
mysql_num_rows($query)==0){
	
	

	
	
	
if(!
$_POST[usuario]){
	
	
	
	
$error "Usted no nos a proporcionado un nombre de usuario";
	
	
	
}
	
	

	
	
	
if(!
$_POST[contra]){
	
	
	
	
$error "Usted no nos a proporcionado una contraseña";
	
	
	
}
	
	

	
	
	
if(!
$_POST[correo]){
	
	
	
	
$error "Usted se no nos a proporcionado un mail";
	
	
	
}
	
	

	
	
	
$usuario $_POST[usuario];
	
	
	
$contra md5($_POST[contra]);
	
	
	
$correo $_POST[correo];
	
	
	
$ip $_SERVER[&#39;REMOTE_ADDR&#39;];
	
	
	
$vipdia date("j");
	
	
	
$vipmes date("n");
	
	
	
$vipa date("Y");
	
	

	
	

	
	
} else {
	
	
	
$error "El nombre de usuario y/o el correo electronico ya a sido registrado";
	
	
}
	

	
} else {
	
	
$error "Las contraseñas que nos a proporcionado no coinciden";
	
}
}
if(
$error){
	
echo 
"A ocurrido un error: $error";

} else {
	
mysql_query("INSERT INTO usuarios (usuario,contra,correo,creditos,mensajes,publicidad,VIP_dia,VIP_mes,VIP_a,DJ_COM,MOD,REP,ADMIN,ip) VALUES (&#39;".$usuario."&#39;,&#39;".$contra."&#39;,&#39;".$correo."&#39;,&#39;30&#39;,&#39;0&#39;,&#39;SI&#39;,&#39;".$vipdia."&#39;,&#39;".$vipmes."&#39;,&#39;".$vipa."&#39;,&#39;NO&#39;,&#39;NO&#39;,&#39;NO&#39;,&#39;NO&#39;,&#39;".$ip."&#39;)");
}
?>
« Última modificación: 07 de Junio de 2007, 07:43:20 am por G2K »
Campeón del CatSkills de Webs (Enero 2011)
Campeón del SpainSkills de Webs (Abril 2011)
http://www.youtube.com/watch?v=1fBMG8F_hpM
Mejor representante catalan en SpainSkills 2011


Desconectado Nikko

  • PHPerit@
  • *
  • Mensajes: 2
  • Karma: 0
  • Sexo: Masculino
    • Ver Perfil
Re: variable
« Respuesta #32 en: 06 de Junio de 2007, 23:53:10 pm »
Cambia la línea 11 por esto
if(mysql_num_rows($query) != 0){
Le quite el signo de exclamación (!), y le cambia el "=="

Saludos.
« Última modificación: 06 de Junio de 2007, 23:56:31 pm por Nikko »
<? echo "Nada es difícil"; ?>

Desconectado G2K

  • Moderador de Programación General
  • PHPero Master
  • ****
  • Mensajes: 2.245
  • Karma: 76
  • Sexo: Masculino
  • Dame un punto de apoyo y moveré la Tierra
    • Ver Perfil
    • Cristian Torrijos
Re: variable
« Respuesta #33 en: 07 de Junio de 2007, 07:44:23 am »
Cambia la línea 11 por esto
if(mysql_num_rows($query) != 0){
Le quite el signo de exclamación (!), y le cambia el "=="

Saludos.
Nada... que el erro persiste... :( A ocurrido un error: El nombre de usuario y/o el correo electronico ya a sido registrado

El codigo ahora: <?php

$conectar 
mysql_connect( &#39;localhost&#39;, &#39;usuario&#39;, &#39;************&#39;) or die(&#39;Could not connect to server.&#39; );
mysql_select_db(&#39;*********&#39;, $conectar) or die(&#39;Could not select database.&#39;);

if($_POST[&#39;registrar&#39;]){
 
	
if(
$_POST[contra]==$_POST[contra2]){
	

	
	
$query mysql_query("SELECT * FROM usuarios WHERE usuario=&#39;$POST[usuario]&#39; or correo=&#39;$_POST[correo]&#39;");
	
	
if(
mysql_num_rows($query) != 0){
	
	

	
	
	
if(!
$_POST[usuario]){
	
	
	
	
$error "Usted no nos a proporcionado un nombre de usuario";
	
	
	
}
	
	

	
	
	
if(!
$_POST[contra]){
	
	
	
	
$error "Usted no nos a proporcionado una contraseña";
	
	
	
}
	
	

	
	
	
if(!
$_POST[correo]){
	
	
	
	
$error "Usted se no nos a proporcionado un mail";
	
	
	
}
	
	

	
	
	
$usuario $_POST[usuario];
	
	
	
$contra md5($_POST[contra]);
	
	
	
$correo $_POST[correo];
	
	
	
$ip $_SERVER[&#39;REMOTE_ADDR&#39;];
	
	
	
$vipdia date("j");
	
	
	
$vipmes date("n");
	
	
	
$vipa date("Y");
	
	

	
	

	
	
} else {
	
	
	
$error "El nombre de usuario y/o el correo electronico ya a sido registrado";
	
	
}
	

	
} else {
	
	
$error "Las contraseñas que nos a proporcionado no coinciden";
	
}
}
if(
$error){
	
echo 
"A ocurrido un error: $error";

} else {
	
mysql_query("INSERT INTO usuarios (usuario,contra,correo,creditos,mensajes,publicidad,VIP_dia,VIP_mes,VIP_a,DJ_COM,MOD,REP,ADMIN,ip) VALUES (&#39;".$usuario."&#39;,&#39;".$contra."&#39;,&#39;".$correo."&#39;,&#39;30&#39;,&#39;0&#39;,&#39;SI&#39;,&#39;".$vipdia."&#39;,&#39;".$vipmes."&#39;,&#39;".$vipa."&#39;,&#39;NO&#39;,&#39;NO&#39;,&#39;NO&#39;,&#39;NO&#39;,&#39;".$ip."&#39;)");
}
?>
« Última modificación: 07 de Junio de 2007, 07:45:58 am por G2K »
Campeón del CatSkills de Webs (Enero 2011)
Campeón del SpainSkills de Webs (Abril 2011)
http://www.youtube.com/watch?v=1fBMG8F_hpM
Mejor representante catalan en SpainSkills 2011


Desconectado Txapu

  • PHPerit@
  • *
  • Mensajes: 27
  • Karma: 6
  • Sexo: Masculino
    • Ver Perfil
Re: variable
« Respuesta #34 en: 07 de Junio de 2007, 18:03:04 pm »
Holas:

Me he fijado en otra cosa:

No tienes bien construida la query para ver si el usuario ya existe en la bdd: no está bien concatenado.
Deberia ser algo como esto:


$query 
mysql_query(&#39;SELECT * FROM usuarios WHERE usuario="&#39; . $_POST[&#39;usuario&#39;] . &#39;" or correo="&#39; . $_POST[&#39;correo&#39;] . &#39;"&#39;);

No has añadido las comillas que mysql quiere cuando envias cadenas...

De todos modos, para asegurarte de que la consulta esta bien construida haria lo siguiente:

$consulta 
= &#39;SELECT * FROM usuarios WHERE usuario="&#39; . $_POST[&#39;usuario&#39;] . &#39;" or correo="&#39; . $_POST[&#39;correo&#39;] . &#39;"&#39;;
echo $consulta;

$query mysql_query($consulta);


El "echo" te devolverá la consulta que estas haciendo, y te podras asegurar que funciona copiando y pegandola directamente a una sesion abierta de mysql. Así vas modificando aqui y allá hasta que tengas lo que buscas. Cuando funcione le quitas el "echo" y listo!

También puedes usar un debugger, pero esta manera es mas barata ;)

Otra cosa que tambien quitaría seria el "*" (el que hay delante del "SELECT"), pues te devolverá todos los campos, ralentizando así la consulta (No pasa nada cuando es solo 1, pero cuando haces bucles y tal... es pa tenerlo en cuenta). Yo pongo unicamente los campos que necesito: en este caso no necesitas ninguno en especial (pero al menos hay que poner 1), bastaría con hacer un "SELECT usuario FROM usuarios WHERE blah, blah......" y la respuesta seria mas corta (y por tanto, mas rápida). Pero bueno, solo un consejo que en este caso tiene poca importancia.

A ver si puedo probar el codigo cuando llegue a casa y te confirmo si esta ok...

Saludos,
M

Ah, se me olvidaban 3 cosillas:

- 1. Se te ha olvidado una "_" en la variable POST de la SELECT: $_POST[....]

- 2. La 3a condicion deberia empezar asi:  if(mysql_num_rows($query)==0){
......
"Si el numero de filas devueltas es igual a 0, insertar, de lo contrario, informa que ya existe el usuario en la bdd"

- 3. Es recomendable que en las variables $_POST, $_GET, $_SESSION y en todas sus amigas, entrecomilles (no se si existe esa palabra  :P , pero pal caso...) el valor del array, por ejemplo: $_POST['usuario']. En principio no pasa nada, pero los debuggers suelen dar warnings si pones una cadena sin que se pongan las respectivas comillas...

Saludos, M
« Última modificación: 07 de Junio de 2007, 21:46:39 pm por naveda »

Conectado naveda

  • Administrador General
  • PHPero Master
  • *****
  • Mensajes: 2.282
  • Karma: 165
  • Sexo: Masculino
    • Ver Perfil
    • naveda.me
Re: variable
« Respuesta #35 en: 07 de Junio de 2007, 21:47:54 pm »
Muy buena aportación Txapu! Karma +

Referente a lo de echo $consulta;, yo hago exactamente lo mismo para comprobar los errores e identificar las lineas que no funcionan como uno desea :P
Por favor, leete las Normas


Desconectado G2K

  • Moderador de Programación General
  • PHPero Master
  • ****
  • Mensajes: 2.245
  • Karma: 76
  • Sexo: Masculino
  • Dame un punto de apoyo y moveré la Tierra
    • Ver Perfil
    • Cristian Torrijos
Re: variable
« Respuesta #36 en: 07 de Junio de 2007, 21:55:01 pm »
Vale, gracias ahora estoy ocupado pero en cuanto pueda lo provare ;)

Muchas gracias... KARMA +
Campeón del CatSkills de Webs (Enero 2011)
Campeón del SpainSkills de Webs (Abril 2011)
http://www.youtube.com/watch?v=1fBMG8F_hpM
Mejor representante catalan en SpainSkills 2011


Desconectado G2K

  • Moderador de Programación General
  • PHPero Master
  • ****
  • Mensajes: 2.245
  • Karma: 76
  • Sexo: Masculino
  • Dame un punto de apoyo y moveré la Tierra
    • Ver Perfil
    • Cristian Torrijos
Re: variable
« Respuesta #37 en: 07 de Junio de 2007, 22:53:52 pm »
Lo siento por el doble post...

Perdona... pero podrias poner el codigo tal y como me dices que lo estoy arreglando y me estoy haciendo una pelota inmensa...

Muchas Gracias
Campeón del CatSkills de Webs (Enero 2011)
Campeón del SpainSkills de Webs (Abril 2011)
http://www.youtube.com/watch?v=1fBMG8F_hpM
Mejor representante catalan en SpainSkills 2011


Desconectado Txapu

  • PHPerit@
  • *
  • Mensajes: 27
  • Karma: 6
  • Sexo: Masculino
    • Ver Perfil
Re: variable
« Respuesta #38 en: 08 de Junio de 2007, 00:29:17 am »
Ahí va ;)

Código: [Seleccionar]
<?php
$conectar 
mysql_connect( &#39;localhost&#39;, &#39;usuario&#39;, &#39;************&#39;) or die(&#39;Could not connect to server.&#39; );
mysql_select_db(&#39;*********&#39;, $conectar) or die(&#39;Could not select database.&#39;);
if($_POST[&#39;registrar&#39;]){

if($_POST[&#39;contra&#39;]==$_POST[&#39;contra2&#39;]){
$consulta = &#39;SELECT usuario FROM usuarios WHERE usuario="&#39; . $_POST[&#39;usuario&#39;] . &#39;" or correo="&#39; . $_POST[&#39;correo&#39;] . &#39;"&#39;;

echo $consulta; // Quitar esta linea cuando veamos la sql bien construida

$query mysql_query($consulta);

if(mysql_num_rows($query) == 0){ // Si el numero de filas devueltas es igual a 0, insertar, de lo contrario, muestra error

if(!$_POST[usuario]){
$error "Usted no nos ha proporcionado un nombre de usuario</br>"; // Añado un salto de linea: Si hay mas errores, saldrán uno debajo del otro
}

if(!$_POST[contra]){
$error "Usted no nos ha proporcionado una contrase&#38;#241;a</br>"; // Anado un salto de linea
}

if(!$_POST[correo]){
$error "Usted se no nos ha proporcionado un mail</br>"; // Anado un salto de linea
}

$usuario $_POST[&#39;usuario&#39;];
$contra md5($_POST[&#39;contra&#39;]);
$correo $_POST[&#39;correo&#39;];
$ip $_SERVER[&#39;REMOTE_ADDR&#39;];
$vipdia date("j");
$vipmes date("n");
$vipa date("Y");

} else {
$error "El nombre de usuario y/o el correo electronico ya ha sido registrado</br>"; // Anado un salto de linea
}

} else {
$error "Las contrase&#38;#241;as que nos ha proporcionado no coinciden</br>"; // Añado un salto de linea
}
}

if(
$error){
echo "Ha ocurrido un error: $error";
} else {
mysql_query("INSERT INTO usuarios (usuario,contra,correo,creditos,mensajes,publicidad,VIP_dia,VIP_mes,VIP_a,DJ_COM,MOD,REP,ADMIN,ip) VALUES (&#39;".$usuario."&#39;,&#39;".$contra."&#39;,&#39;".$correo."&#39;,&#39;30&#39;,&#39;0&#39;,&#39;SI&#39;,&#39;".$vipdia."&#39;,&#39;".$vipmes."&#39;,&#39;".$vipa."&#39;,&#39;NO&#39;,&#39;NO&#39;,&#39;NO&#39;,&#39;NO&#39;,&#39;".$ip."&#39;)");
}
?>


Una pregunta:
Por qué tienes la condicion "if($_POST['registrar']){". Yo la quitaria (junto su correspondiente "}", el que hay encima de "if($error){", logicamente). Me explico: se supone que el cargar esta página es para registrar el usuario.

Creo que con esto ya debería funcionar, no veo mas errores... De todos modos, no puedo comprobarte si las sqls, tanto la select como el insert, estan bien: no conozco la estructura de tu bdd... Si sigues teniendo problemas, pasame, al menos, la estructura de la tabla usuarios.

Otra cosa que ahora recuerdo: mysql en linux es case-sensitive, MUY importante (a mi siempre se me olvida :P )

Cuentanos como te ha ido!!!

Saludos,
M

P.D. Gracias por los karmas de antes ;)

Desconectado G2K

  • Moderador de Programación General
  • PHPero Master
  • ****
  • Mensajes: 2.245
  • Karma: 76
  • Sexo: Masculino
  • Dame un punto de apoyo y moveré la Tierra
    • Ver Perfil
    • Cristian Torrijos
Re: variable
« Respuesta #39 en: 08 de Junio de 2007, 14:55:27 pm »
Denada ;)

Muchas gracias por el codigo... ahora no meda error alguno pero voy a examinar en la base de datos la tabla de usuarios y no hay nada... :S a que se puede deber eso?

PD: el echo consulta hace que se muestre:
SELECT usuario FROM usuarios WHERE usuario="G2K" or correo="cristiantorrijosreus@hotmail.com"
« Última modificación: 08 de Junio de 2007, 14:57:40 pm por G2K »
Campeón del CatSkills de Webs (Enero 2011)
Campeón del SpainSkills de Webs (Abril 2011)
http://www.youtube.com/watch?v=1fBMG8F_hpM
Mejor representante catalan en SpainSkills 2011


Desconectado Txapu

  • PHPerit@
  • *
  • Mensajes: 27
  • Karma: 6
  • Sexo: Masculino
    • Ver Perfil
Re: variable
« Respuesta #40 en: 08 de Junio de 2007, 15:26:48 pm »
Bueno, pues ahora iremos un poco mas alla:
Qué sql se crea para el INSERT?
Haz un "echo" de la query como te pongo a continuación (sustituye todo el bloque)

Código: [Seleccionar]
if($error){
echo "Ha ocurrido un error: $error";
} else {
        $sql = "INSERT INTO usuarios (usuario,contra,correo,creditos,mensajes,publicidad,VIP_dia,VIP_mes,VIP_a,DJ_COM,MOD,REP,ADMIN,ip) VALUES ('".$usuario."','".$contra."','".$correo."','30','0','SI','".$vipdia."','".$vipmes."','".$vipa."','NO','NO','NO','NO','".$ip."')";
        echo $sql;
mysql_query($sql);
}

La sql que te salga, ejecutala en una ventana de mysql (sesion interactiva) y mira que error da. Veremos que solucion podemos darle...

Otra cosa que se me ha pasado (pero no es critica) es que las 3 condiciones que hay despues de "if(mysql_num_rows($query) == 0){", no estan "comilladas" (no se como se pone :P), deben estar de esta manera: $_POST['usuario'], $_POST['contra'] y $_POST['correo']

Ah, y pasame la estructura de la tabla "usuarios", para ver si estamos haciendo el insert con los tipos de datos como tocan: las cadenas como cadenas, los enteros como enteros, etc...

Saludos,
M

Desconectado G2K

  • Moderador de Programación General
  • PHPero Master
  • ****
  • Mensajes: 2.245
  • Karma: 76
  • Sexo: Masculino
  • Dame un punto de apoyo y moveré la Tierra
    • Ver Perfil
    • Cristian Torrijos
Re: variable
« Respuesta #41 en: 08 de Junio de 2007, 15:46:27 pm »
Agregame al msn y lo solucionamos más facilmente ;)
Esta alli en la esquinita debajo de mi Avatar :P
Campeón del CatSkills de Webs (Enero 2011)
Campeón del SpainSkills de Webs (Abril 2011)
http://www.youtube.com/watch?v=1fBMG8F_hpM
Mejor representante catalan en SpainSkills 2011


Conectado naveda

  • Administrador General
  • PHPero Master
  • *****
  • Mensajes: 2.282
  • Karma: 165
  • Sexo: Masculino
    • Ver Perfil
    • naveda.me
Re: variable
« Respuesta #42 en: 08 de Junio de 2007, 16:48:30 pm »
G2K la ayuda se realiza mediante el foro... Parece mentira que seas Moderador de PHP...

Creo que todos queremos saber cual es el problema y donde está el fallo para futuras preguntas, ¿no?...
Por favor, leete las Normas


Desconectado G2K

  • Moderador de Programación General
  • PHPero Master
  • ****
  • Mensajes: 2.245
  • Karma: 76
  • Sexo: Masculino
  • Dame un punto de apoyo y moveré la Tierra
    • Ver Perfil
    • Cristian Torrijos
Re: variable
« Respuesta #43 en: 08 de Junio de 2007, 21:10:46 pm »
G2K la ayuda se realiza mediante el foro... Parece mentira que seas Moderador de PHP...

Creo que todos queremos saber cual es el problema y donde está el fallo para futuras preguntas, ¿no?...
Vale... lo siento nadeva ;)
Disculpenme todos.

Es que tengo muchas ganas de acabar con el registro para ir desarrollando más la Web.
Campeón del CatSkills de Webs (Enero 2011)
Campeón del SpainSkills de Webs (Abril 2011)
http://www.youtube.com/watch?v=1fBMG8F_hpM
Mejor representante catalan en SpainSkills 2011


Desconectado G2K

  • Moderador de Programación General
  • PHPero Master
  • ****
  • Mensajes: 2.245
  • Karma: 76
  • Sexo: Masculino
  • Dame un punto de apoyo y moveré la Tierra
    • Ver Perfil
    • Cristian Torrijos
Re: variable
« Respuesta #44 en: 08 de Junio de 2007, 21:12:54 pm »
Bueno, pues ahora iremos un poco mas alla:
Qué sql se crea para el INSERT?
Haz un "echo" de la query como te pongo a continuación (sustituye todo el bloque)

Código: [Seleccionar]
if($error){
echo "Ha ocurrido un error: $error";
} else {
        $sql = "INSERT INTO usuarios (usuario,contra,correo,creditos,mensajes,publicidad,VIP_dia,VIP_mes,VIP_a,DJ_COM,MOD,REP,ADMIN,ip) VALUES ('".$usuario."','".$contra."','".$correo."','30','0','SI','".$vipdia."','".$vipmes."','".$vipa."','NO','NO','NO','NO','".$ip."')";
        echo $sql;
mysql_query($sql);
}

La sql que te salga, ejecutala en una ventana de mysql (sesion interactiva) y mira que error da. Veremos que solucion podemos darle...

Otra cosa que se me ha pasado (pero no es critica) es que las 3 condiciones que hay despues de "if(mysql_num_rows($query) == 0){", no estan "comilladas" (no se como se pone :P), deben estar de esta manera: $_POST['usuario'], $_POST['contra'] y $_POST['correo']

Ah, y pasame la estructura de la tabla "usuarios", para ver si estamos haciendo el insert con los tipos de datos como tocan: las cadenas como cadenas, los enteros como enteros, etc...

Saludos,
M
Como te paso la estructura? :S

Como ejecuto la sql en una sesion intereactiva? :S
Campeón del CatSkills de Webs (Enero 2011)
Campeón del SpainSkills de Webs (Abril 2011)
http://www.youtube.com/watch?v=1fBMG8F_hpM
Mejor representante catalan en SpainSkills 2011