Foros del Web » Programando para Internet » PHP »

Nuevo en PHP

Estas en el tema de Nuevo en PHP en el foro de PHP en Foros del Web. Saludos. He programado antes en java (hace mucho), visual basic y había hecho mis pinitos hace algunos años con PHP y quiero volver a ponerme ...
  #1 (permalink)  
Antiguo 12/01/2009, 10:31
 
Fecha de Ingreso: mayo-2007
Mensajes: 256
Antigüedad: 16 años, 11 meses
Puntos: 3
Busqueda Nuevo en PHP

Saludos.

He programado antes en java (hace mucho), visual basic y había hecho mis pinitos hace algunos años con PHP y quiero volver a ponerme con ello. Lo que pasa es que me veo abrumado por la cantidad de información que hay, las funciones, variables etc.
He retomado codigos mios que ya hice en aquella otra ocasión y lo que quiero hacer en estos primeros pasos es una pagina simple con formulario con el cual crear un usuario y una entrada de login que se mantenga entre diferentes páginas. He conseguido crear un formulario básico de registro de usuario pero intento hacer una comprobación antes para ver si dicho nick ya existe y esa comprobación no funciona bien. Este es el código PHP:

<?
mysql_connect("localhost","usuario","password");
mysql_select_db("base_de_datos");
$new_user=$_POST[new_user];
$new_pass=$_POST[new_pass];
$new_mail=$_POST[new_mail];
$new_nombre=$_POST[new_nombre];
$new_apellidos=$_POST[new_apellidos];
$result=mysql_query("select * from users where user='$new_user'");
if (!$result){
mysql_query("insert into users (user,pass,mail,nombre,apellidos) values ('$new_user','$new_pass','$new_mail','$new_nombre' ,'$new_apellidos')");
echo 'Registro insertado';}
else{echo 'Ese nombre de usuario no esta disponible';}
?>

Lo que hago es comparar el nick que ha introducido la persona que se va a registrar con los que hay en la base de datos y si no está pues introducir los datos nuevos. Uso if (!$result) para saber si el resultado de la busqueda es nulo pero no funciona. En cambio si me limito a meter el usuario tal cual quitando las condiciones y la comparación se introduce el usuario perfectamente (aunque ya este en la bd)
Agradecería que me podais echar una mano con esto y de paso me deis cualquier consejo que estimeis oportuno. Gracias.
  #2 (permalink)  
Antiguo 12/01/2009, 10:40
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Nuevo en PHP

Hola, probate con algo asi !!!
Código PHP:
if($new_user==0// Si el usuario no esta repetido ...
/// insert etc etc etc !!!
}
else 
         {
         
$mensaje "<b>El Usuario ya existe</b><br>";
         print 
$mensaje
         } 
Que alguien me corrija si esto esta mal !!!

Saludos, Ricardo !!!
__________________
Mail: [email protected]
  #3 (permalink)  
Antiguo 12/01/2009, 10:52
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Nuevo en PHP

mmm... el error radica en la confusión de $result

ya que sin importar el resultado de la mysql_query, siempre devolverá un #resource po lo tanto... nunca será false, o vacío...

mejor, usa mysql_num_rows y ademas... procura depurar tu SQL

Código PHP:
mysql_query(/* CONSULTA */) or die(mysql_error()); 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 12/01/2009, 10:53
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Nuevo en PHP

Cita:
Iniciado por colote Ver Mensaje
[...] Que alguien me corrija si esto esta mal !!! [...]
¿¿porque $new_user va a ser cero ???

__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 12/01/2009, 10:59
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Nuevo en PHP

A ver, en realidad le pifie, porque aca lo que hago es esto , lo quice modificar una parte y le mande cualquiercosa, a ver si esta bien asi !!!
Código PHP:
$consulta=mysql_query("select cod_pieza from piezas where cod_pieza=$_POST[cod_pieza]",$conexion);
$variable mysql_num_rows($consulta);

if (empty(
$_POST['cod_pieza'])) // Si el codigo esta vacio
{
    
$mensaje1 "<b>El Codigo de la Pieza no puede ser 0, Ingreselo</b><br>";
    print 
$mensaje1
}
else 
    {
        if(
$variable==0// Si el codigo no esta repetido
         
{
        
/////Guardar Datos en Piezas de las Alicuotas/////
        
mysql_query("insert into 
        piezas(cod_pieza,nombre, alic_carga_soc, alic_gg_fund, alic_gg_mec, alic_imp,alic_utilidad) values
        ('$_POST[cod_pieza]','$_POST[nombre]', '$_POST[porc_carga]', '$_POST[porc_fund]', '$_POST[porc_mec]', '$_POST[porc_imp]', '$_POST[porc_util]' )"
$conexion) or
        die(
"Problemas en el select".mysql_error());
        }
         else 
         {
         
$mensaje "<b>El Codigo de Pieza ya existe, Ingrese Nuevamente</b><br>";
         print 
$mensaje
         }
    } 
Gracias por la correcion !!!

Saludos !!!
__________________
Mail: [email protected]
  #6 (permalink)  
Antiguo 12/01/2009, 11:17
 
Fecha de Ingreso: mayo-2007
Mensajes: 256
Antigüedad: 16 años, 11 meses
Puntos: 3
Respuesta: Nuevo en PHP

Cita:
Iniciado por pateketrueke Ver Mensaje
mmm... el error radica en la confusión de $result

ya que sin importar el resultado de la mysql_query, siempre devolverá un #resource po lo tanto... nunca será false, o vacío...

mejor, usa mysql_num_rows y ademas... procura depurar tu SQL

Código PHP:
mysql_query(/* CONSULTA */) or die(mysql_error()); 
Bien... pero como digo estoy empezando con esto y no se que hace mysql_num_rows y tampoco la linea php que pusiste... :S
  #7 (permalink)  
Antiguo 12/01/2009, 11:54
 
Fecha de Ingreso: mayo-2007
Mensajes: 256
Antigüedad: 16 años, 11 meses
Puntos: 3
Respuesta: Nuevo en PHP

He cambiado if (!$result) por if (!mysql_num_rows) en cuyo caso no me deja meter ningun registro y luego por if (mysql_num_rows==0) en el cual se los traga todos aunque tengan el user repetido.

Por otro lado la correción del sql iría asi $result=mysql_query("select * from users where user='$new_user'") or die(mysql_error()); ??
  #8 (permalink)  
Antiguo 12/01/2009, 11:58
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Nuevo en PHP

Vas a tener que leer un poco y aprender el uso de las funciones !!!
mysql_num_rows

Saludos, Ricardo !!!
__________________
Mail: [email protected]
  #9 (permalink)  
Antiguo 12/01/2009, 12:28
 
Fecha de Ingreso: mayo-2007
Mensajes: 256
Antigüedad: 16 años, 11 meses
Puntos: 3
Respuesta: Nuevo en PHP

Lo cambie por if (mysql_num_rows($result)==0) y funcionaba perfectamente... pero luego he borrado la tabla para recrearla a continuación y ya no funciona... y no entiendo el porqué. La tabla la he vuelto a crear con;

CREATE TABLE `base_de_datos`.`users` (
`id` int(30) NOT NULL auto_increment,
`user` varchar(30) NOT NULL,
`pass` varchar(30) NOT NULL,
`email` varchar(30) NOT NULL,
`nombre` varchar(30) NOT NULL,
`apellidos` varchar(30) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
  #10 (permalink)  
Antiguo 12/01/2009, 12:42
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Nuevo en PHP

Estas guardando mail y en la tabla nueva le pusiste de nombre email ... !!!
Código PHP:
mysql_query("insert into users (user,pass,mail,nombre,apellidos) values ('$new_user','$new_pass','$new_mail','$new_nombre' ,'$new_apellidos')"); 
Verifica que los datos que estas guardando sean del mismo nombre que los que estan en la BDD

Saludos !!!
__________________
Mail: [email protected]
  #11 (permalink)  
Antiguo 12/01/2009, 20:33
 
Fecha de Ingreso: mayo-2007
Mensajes: 256
Antigüedad: 16 años, 11 meses
Puntos: 3
Respuesta: Nuevo en PHP

Vaya despiste el mio :S. Muchas gracias.
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:55.