Foros del Web » Programando para Internet » PHP »

Modificar campos de base de datos y subir imagen

Estas en el tema de Modificar campos de base de datos y subir imagen en el foro de PHP en Foros del Web. Hola mis disculpas por molestar, soy nueva en esto del php y me gustaría saber si me pueden ayudar a resolver algunas dudas, estoy haciendo ...
  #1 (permalink)  
Antiguo 11/07/2013, 10:15
 
Fecha de Ingreso: julio-2013
Mensajes: 11
Antigüedad: 10 años, 9 meses
Puntos: 0
Modificar campos de base de datos y subir imagen

Hola mis disculpas por molestar, soy nueva en esto del php y me gustaría saber si me pueden ayudar a resolver algunas dudas, estoy haciendo una tarea para la prepa la cual consiste en un pequeño sistema de usuarios para actividades de una comunidad rural (que al final si esta bien podrían darle uso en un par de comunidades marginadas como premio al mejor proyecto) y me he estado basando en uno que encontré en internet el cual he poco a poco ajustando a mis necesidades que no son muchas realmente pero si indispensables para poder aprobar la materia y hacerlo lo mejor posible.

Mis dudas son las siguientes

Cree la siguiente tabla:

Código PHP:
CREATE TABLE `usuarios` ( 
    `
usuario_idint(4NOT NULL AUTO_INCREMENT
    `
usuario_nombrevarchar(15NOT NULL DEFAULT ''
    `
usuario_clavevarchar(32NOT NULL DEFAULT ''
    `
usuario_emailvarchar(50NOT NULL DEFAULT ''
    `
usuario_edadvarchar(2NOT NULL DEFAULT ''
    `
usuario_actividadesvarchar(250NOT NULL DEFAULT ''
    `
usuario_horariovarchar(50NOT NULL DEFAULT ''
    `
usuario_foto1varchar(50NOT NULL DEFAULT '',
    `
usuario_foto2varchar(50NOT NULL DEFAULT '',
    `
usuario_foto3varchar(50NOT NULL DEFAULT '',
    `
usuario_foto4varchar(50NOT NULL DEFAULT '',
    `
usuario_fregdatetime NOT NULL DEFAULT '0000-00-00 00:00:00'
    
PRIMARY KEY (`usuario_id`) 


Mi codigo para registrar usuarios es este:

Código PHP:
<?php 
    
include('acceso_db.php'); 
    if(isset(
$_POST['enviar'])) {

        function 
valida_email($correo) { 
            if (
preg_match('/^[A-Za-z0-9-_.+%]+@[A-Za-z0-9-.]+\.[A-Za-z]{2,4}$/'$correo)) return true
            else return 
false
        } 

        
$sin_espacios count_chars($_POST['usuario_nombre'], 1); 
        if(!empty(
$sin_espacios[32])) {
            echo 
"El campo <em>usuario_nombre</em> no debe contener espacios en blanco. <a href='javascript:history.back();'>Reintentar</a>"
        }elseif(empty(
$_POST['usuario_nombre'])) {
            echo 
"No haz ingresado tu usuario. <a href='javascript:history.back();'>Reintentar</a>"
        }elseif(empty(
$_POST['usuario_clave'])) {
            echo 
"No haz ingresado contraseña. <a href='javascript:history.back();'>Reintentar</a>"
        }elseif(
$_POST['usuario_clave'] != $_POST['usuario_clave_conf']) {
            echo 
"Las contraseñas ingresadas no coinciden. <a href='javascript:history.back();'>Reintentar</a>"
        }elseif(!
valida_email($_POST['usuario_email'])) {
            echo 
"El email ingresado no es válido. <a href='javascript:history.back();'>Reintentar</a>"
        }else { 
            
// "limpiamos" los campos del formulario de posibles códigos maliciosos 
            
$usuario_nombre mysql_real_escape_string($_POST['usuario_nombre']); 
            
$usuario_clave mysql_real_escape_string($_POST['usuario_clave']); 
            
$usuario_email mysql_real_escape_string($_POST['usuario_email']); 
            
$usuario_edad mysql_real_escape_string($_POST['usuario_edad']); 
            
$usuario_actividades mysql_real_escape_string($_POST['usuario_actividades']); 
            
$usuario_horario mysql_real_escape_string($_POST['usuario_horario']); 
            
$sql mysql_query("SELECT usuario_nombre FROM usuarios WHERE usuario_nombre='".$usuario_nombre."'"); 
            if(
mysql_num_rows($sql) > 0) { 
                echo 
"El nombre usuario elegido ya ha sido registrado anteriormente. <a href='javascript:history.back();'>Reintentar</a>"
            }else { 
                
$usuario_clave md5($usuario_clave);
                
$reg mysql_query("INSERT INTO usuarios (usuario_nombre, usuario_clave, usuario_email, usuario_edad, usuario_actividades, usuario_horario, usuario_freg) VALUES ('".$usuario_nombre."', '".$usuario_clave."', '".$usuario_email."', '".$usuario_edad."', '".$usuario_actividades."', '".$usuario_horario."', NOW())"); 
                if(
$reg) { 
                    echo 
"Datos ingresados correctamente."
                }else { 
                    echo 
"Ha ocurrido un error y no se registraron los datos."
                } 
            } 
        } 
    }else { 
?> 
    <form action="<?=$_SERVER['PHP_SELF']?>" method="post"> 
        <label>Usuario:</label><br /> 
        <input type="text" name="usuario_nombre" maxlength="15" /><br /> 
        <label>Contrasena:</label><br /> 
        <input type="password" name="usuario_clave" maxlength="15" /><br /> 
        <label>Confirmar Contrasena:</label><br /> 
        <input type="password" name="usuario_clave_conf" maxlength="15" /><br /> 
        <label>Email:</label><br /> 
        <input type="text" name="usuario_email" maxlength="50" /><br /> 
        <label>Edad:</label><br /> 
        <input type="text" name="usuario_edad" maxlength="50" /><br /> 
        <label>Actividades:</label><br /> 
        <input type="text" name="usuario_actividades" maxlength="250" /><br /> 
        <label>Horario:</label><br /> 
        <input type="text" name="usuario_horario" maxlength="50" /><br /> 
        <input type="submit" name="enviar" value="Registrar" /> 
        <input type="reset" value="Borrar" /> 
    </form> 
<?php 
    

?>
Hasta hay todo bien ya que se registran y todo genial, para acceder como usuario tengo el siguiente código (ambos funcionan bien lo que se me complica es que le quiero agregar ciertas funciones):

acceso.php
Código PHP:
<?php 
    session_start
(); 
    include(
'acceso_db.php'); 
    if(empty(
$_SESSION['usuario_nombre'])) {
?> 
        <form action="comprobar.php" method="post"> 
            <label>Usuario:</label><br /> 
            <input type="text" name="usuario_nombre" /><br /> 
            <label>Contrasena:</label><br /> 
            <input type="password" name="usuario_clave" /><br /> 
            <input type="submit" name="enviar" value="Ingresar" /> 
        </form>                     
<?php 
    
}else { 
?> 
        <p>Hola <strong><?=$_SESSION['usuario_nombre']?></strong> | <a href="logout.php">Salir</a></p> 
<?php 
    

?>
comprobar.php
Código PHP:
<?php 
    session_start
(); 
    include(
'acceso_db.php'); 
    if(isset(
$_POST['enviar'])) { 
        if(empty(
$_POST['usuario_nombre']) || empty($_POST['usuario_clave'])) { 
            echo 
"El usuario o la contraseña no han sido ingresados. <a href='javascript:history.back();'>Reintentar</a>"
        }else { 
            
$usuario_nombre mysql_real_escape_string($_POST['usuario_nombre']); 
            
$usuario_clave mysql_real_escape_string($_POST['usuario_clave']); 
            
$usuario_clave md5($usuario_clave); 
            
$sql mysql_query("SELECT usuario_id, usuario_nombre, usuario_clave FROM usuarios WHERE usuario_nombre='".$usuario_nombre."' AND usuario_clave='".$usuario_clave."'"); 
            if(
$row mysql_fetch_array($sql)) { 
                
$_SESSION['usuario_id'] = $row['usuario_id']; 
                
$_SESSION['usuario_nombre'] = $row["usuario_nombre"]; 
                
header("Location: acceso.php"); 
            }else { 
?> 
                Error, <a href="acceso.php">Reintentar</a> 
<?php 
            

        } 
    }else { 
        
header("Location: acceso.php"); 
    } 
?>
Lo que requiero hacer son dos cosas, una que al acceder ellos cuando sean redirigidos nuevamente a acceso.php ya estando logueados, les aparezca un formulario de los campos actividad y horarios de su usuario para que se puedan editar y actualizar en la base de datos (que aparezca en el input del formulario de cada campo el contenido que ya tienen y pueda ser modificable o actualizable) y lo otro que requiero es que cuando cree la base de datos cree para cada usuario 4 campos (usuario_foto1. usuario_foto2, etc) para que suban fotos de lo que serian las actividades diarias, lo que quiero ver es como crear un formulario para subir las fotos al servidor y guarde las ruta en la base de datos en los campos correspondientes al usuario activo (de preferencia que al subir el archivo el nombre cambie a algo asociado al nombre de usuario) y que si suben otras se sobreescriban las anteriores.

Espero me puedan ayudar, se los agradeceria mil.

Ahhh y si tienen alguna correccion o consejo para el codigo que aqui les puse tambien se los agradeceria.
  #2 (permalink)  
Antiguo 11/07/2013, 12:43
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: Modificar campos de base de datos y subir imagen

Cita:
Iniciado por anacarmona Ver Mensaje
Hola mis disculpas por molestar, soy nueva en esto del php y me gustaría saber si me pueden ayudar a resolver algunas dudas, estoy haciendo una tarea para la prepa la cual consiste en un pequeño sistema de usuarios para actividades de una comunidad rural (que al final si esta bien podrían darle uso en un par de comunidades marginadas como premio al mejor proyecto) y me he estado basando en uno que encontré en internet el cual he poco a poco ajustando a mis necesidades que no son muchas realmente pero si indispensables para poder aprobar la materia y hacerlo lo mejor posible.

Mis dudas son las siguientes

Cree la siguiente tabla:

Código PHP:
CREATE TABLE `usuarios` ( 
    `
usuario_idint(4NOT NULL AUTO_INCREMENT
    `
usuario_nombrevarchar(15NOT NULL DEFAULT ''
    `
usuario_clavevarchar(32NOT NULL DEFAULT ''
    `
usuario_emailvarchar(50NOT NULL DEFAULT ''
    `
usuario_edadvarchar(2NOT NULL DEFAULT ''
    `
usuario_actividadesvarchar(250NOT NULL DEFAULT ''
    `
usuario_horariovarchar(50NOT NULL DEFAULT ''
    `
usuario_foto1varchar(50NOT NULL DEFAULT '',
    `
usuario_foto2varchar(50NOT NULL DEFAULT '',
    `
usuario_foto3varchar(50NOT NULL DEFAULT '',
    `
usuario_foto4varchar(50NOT NULL DEFAULT '',
    `
usuario_fregdatetime NOT NULL DEFAULT '0000-00-00 00:00:00'
    
PRIMARY KEY (`usuario_id`) 


Mi codigo para registrar usuarios es este:

Código PHP:
<?php 
    
include('acceso_db.php'); 
    if(isset(
$_POST['enviar'])) {

        function 
valida_email($correo) { 
            if (
preg_match('/^[A-Za-z0-9-_.+%]+@[A-Za-z0-9-.]+\.[A-Za-z]{2,4}$/'$correo)) return true
            else return 
false
        } 

        
$sin_espacios count_chars($_POST['usuario_nombre'], 1); 
        if(!empty(
$sin_espacios[32])) {
            echo 
"El campo <em>usuario_nombre</em> no debe contener espacios en blanco. <a href='javascript:history.back();'>Reintentar</a>"
        }elseif(empty(
$_POST['usuario_nombre'])) {
            echo 
"No haz ingresado tu usuario. <a href='javascript:history.back();'>Reintentar</a>"
        }elseif(empty(
$_POST['usuario_clave'])) {
            echo 
"No haz ingresado contraseña. <a href='javascript:history.back();'>Reintentar</a>"
        }elseif(
$_POST['usuario_clave'] != $_POST['usuario_clave_conf']) {
            echo 
"Las contraseñas ingresadas no coinciden. <a href='javascript:history.back();'>Reintentar</a>"
        }elseif(!
valida_email($_POST['usuario_email'])) {
            echo 
"El email ingresado no es válido. <a href='javascript:history.back();'>Reintentar</a>"
        }else { 
            
// "limpiamos" los campos del formulario de posibles códigos maliciosos 
            
$usuario_nombre mysql_real_escape_string($_POST['usuario_nombre']); 
            
$usuario_clave mysql_real_escape_string($_POST['usuario_clave']); 
            
$usuario_email mysql_real_escape_string($_POST['usuario_email']); 
            
$usuario_edad mysql_real_escape_string($_POST['usuario_edad']); 
            
$usuario_actividades mysql_real_escape_string($_POST['usuario_actividades']); 
            
$usuario_horario mysql_real_escape_string($_POST['usuario_horario']); 
            
$sql mysql_query("SELECT usuario_nombre FROM usuarios WHERE usuario_nombre='".$usuario_nombre."'"); 
            if(
mysql_num_rows($sql) > 0) { 
                echo 
"El nombre usuario elegido ya ha sido registrado anteriormente. <a href='javascript:history.back();'>Reintentar</a>"
            }else { 
                
$usuario_clave md5($usuario_clave);
                
$reg mysql_query("INSERT INTO usuarios (usuario_nombre, usuario_clave, usuario_email, usuario_edad, usuario_actividades, usuario_horario, usuario_freg) VALUES ('".$usuario_nombre."', '".$usuario_clave."', '".$usuario_email."', '".$usuario_edad."', '".$usuario_actividades."', '".$usuario_horario."', NOW())"); 
                if(
$reg) { 
                    echo 
"Datos ingresados correctamente."
                }else { 
                    echo 
"Ha ocurrido un error y no se registraron los datos."
                } 
            } 
        } 
    }else { 
?> 
    <form action="<?=$_SERVER['PHP_SELF']?>" method="post"> 
        <label>Usuario:</label><br /> 
        <input type="text" name="usuario_nombre" maxlength="15" /><br /> 
        <label>Contrasena:</label><br /> 
        <input type="password" name="usuario_clave" maxlength="15" /><br /> 
        <label>Confirmar Contrasena:</label><br /> 
        <input type="password" name="usuario_clave_conf" maxlength="15" /><br /> 
        <label>Email:</label><br /> 
        <input type="text" name="usuario_email" maxlength="50" /><br /> 
        <label>Edad:</label><br /> 
        <input type="text" name="usuario_edad" maxlength="50" /><br /> 
        <label>Actividades:</label><br /> 
        <input type="text" name="usuario_actividades" maxlength="250" /><br /> 
        <label>Horario:</label><br /> 
        <input type="text" name="usuario_horario" maxlength="50" /><br /> 
        <input type="submit" name="enviar" value="Registrar" /> 
        <input type="reset" value="Borrar" /> 
    </form> 
<?php 
    

?>
Hasta hay todo bien ya que se registran y todo genial, para acceder como usuario tengo el siguiente código (ambos funcionan bien lo que se me complica es que le quiero agregar ciertas funciones):

acceso.php
Código PHP:
<?php 
    session_start
(); 
    include(
'acceso_db.php'); 
    if(empty(
$_SESSION['usuario_nombre'])) {
?> 
        <form action="comprobar.php" method="post"> 
            <label>Usuario:</label><br /> 
            <input type="text" name="usuario_nombre" /><br /> 
            <label>Contrasena:</label><br /> 
            <input type="password" name="usuario_clave" /><br /> 
            <input type="submit" name="enviar" value="Ingresar" /> 
        </form>                     
<?php 
    
}else { 
?> 
        <p>Hola <strong><?=$_SESSION['usuario_nombre']?></strong> | <a href="logout.php">Salir</a></p> 
<?php 
    

?>
comprobar.php
Código PHP:
<?php 
    session_start
(); 
    include(
'acceso_db.php'); 
    if(isset(
$_POST['enviar'])) { 
        if(empty(
$_POST['usuario_nombre']) || empty($_POST['usuario_clave'])) { 
            echo 
"El usuario o la contraseña no han sido ingresados. <a href='javascript:history.back();'>Reintentar</a>"
        }else { 
            
$usuario_nombre mysql_real_escape_string($_POST['usuario_nombre']); 
            
$usuario_clave mysql_real_escape_string($_POST['usuario_clave']); 
            
$usuario_clave md5($usuario_clave); 
            
$sql mysql_query("SELECT usuario_id, usuario_nombre, usuario_clave FROM usuarios WHERE usuario_nombre='".$usuario_nombre."' AND usuario_clave='".$usuario_clave."'"); 
            if(
$row mysql_fetch_array($sql)) { 
                
$_SESSION['usuario_id'] = $row['usuario_id']; 
                
$_SESSION['usuario_nombre'] = $row["usuario_nombre"]; 
                
header("Location: acceso.php"); 
            }else { 
?> 
                Error, <a href="acceso.php">Reintentar</a> 
<?php 
            

        } 
    }else { 
        
header("Location: acceso.php"); 
    } 
?>
Lo que requiero hacer son dos cosas, una que al acceder ellos cuando sean redirigidos nuevamente a acceso.php ya estando logueados, les aparezca un formulario de los campos actividad y horarios de su usuario para que se puedan editar y actualizar en la base de datos (que aparezca en el input del formulario de cada campo el contenido que ya tienen y pueda ser modificable o actualizable) y lo otro que requiero es que cuando cree la base de datos cree para cada usuario 4 campos (usuario_foto1. usuario_foto2, etc) para que suban fotos de lo que serian las actividades diarias, lo que quiero ver es como crear un formulario para subir las fotos al servidor y guarde las ruta en la base de datos en los campos correspondientes al usuario activo (de preferencia que al subir el archivo el nombre cambie a algo asociado al nombre de usuario) y que si suben otras se sobreescriban las anteriores.

Espero me puedan ayudar, se los agradeceria mil.

Ahhh y si tienen alguna correccion o consejo para el codigo que aqui les puse tambien se los agradeceria.
para cargar y editar los datos tienes que hacerlo en un nuevo formulario.

primero haces una lectura a la BD y el resultado lo imprimes en el formulario.

cuando pulse el boton enviar compruebas los datos y los guardas en la BD con un update.

para lo otro que necesitas creo que estás planteando mal el diseño de la base de datos. tú tienes que crear una sola tabla en la que guardas las rutas de las imágenes y un campo tiene que ser una clave foránea que apunte al nombre del usuario así luego relaciones con por ejemplo un inner join el id de un usuario que sería igual que la clave foránea pero imprimes el nombre del usuario.

no veo bien que crees una nueva tabla por cada usuario.
  #3 (permalink)  
Antiguo 11/07/2013, 12:55
 
Fecha de Ingreso: julio-2010
Mensajes: 275
Antigüedad: 13 años, 10 meses
Puntos: 21
Respuesta: Modificar campos de base de datos y subir imagen

No entendí mucho lo que quieres decir, pero puedes revisar los aportes del foro

http://www.forosdelweb.com/f18/aport...as-php-569025/

http://www.forosdelweb.com/f18/aport...on-php-568511/

Etiquetas: campos, formulario, modificar, mysql, select, sql, tabla, 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 20:34.