Foros del Web » Programando para Internet » PHP »

Guardar datos usuario en fichero

Estas en el tema de Guardar datos usuario en fichero en el foro de PHP en Foros del Web. Buenas noches amigos! :) Tengo un formulario web que recoje varios datos de un usuario, y que cuando hace click en dar de alta, va ...
  #1 (permalink)  
Antiguo 28/01/2009, 15:12
 
Fecha de Ingreso: febrero-2008
Mensajes: 76
Antigüedad: 16 años, 2 meses
Puntos: 0
Guardar datos usuario en fichero

Buenas noches amigos! :)

Tengo un formulario web que recoje varios datos de un usuario, y que cuando hace click en dar de alta, va a "alta.php":

Código PHP:
<?php

    $usuari 
$_POST['usuari'];
    
$cognom1 $_POST['cognom1'];
    
$cognom2 $_POST['cognom2'];
    
$email $_POST['email'];
    
$contrasenya $_POST['contrasenya'];
    
    if (isset(
$usuari) && isset($cognom1) && isset($cognom2) && isset($email) && isset($contrasenya))
    {
        
$array = array($usuari$cognom1$cognom2$email$contrasenya);
        
        
$fitxer fopen("usuaris.dat""w");
    }
    else
    {
        echo 
"No estan todos los campos con datos";
    }

?>
...como puedo hacer porque me guarde cada vez en el final del archivo una línia con los datos del usuario (usuari:cognom1:cognom2:email:contrasenya)...con la función implode si le paso el array que he creado me devolvería un string con todos los datos en una linea...pero como lo guardo cada vez en el final del fichero (cada usuario es una línea, sin sobreescribir ninguna linea anterior, ni control de usuarios repetidos).

MUCHAS GRACIAS!!

PD: con el isset($usuari)...valida que el usuario haya entrado algo en el input text 'usuari'?? o sería mejor hacerlo con !empty?? saludos!!
  #2 (permalink)  
Antiguo 28/01/2009, 15:20
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Guardar datos usuario en fichero

supongo que ya has leído el manual de PHP, cierto??

primero, con implode/join unimos el array separado por dos puntos

Código PHP:
$linea join(':'$array); 
y luego, escribimos en el archivo abierto...

Código PHP:
fwrite($fitxer$linea); 
NOTA que debes abrir el archivo en modo "a" para agregar datos, lee el manual si no sabes de esto...

http://php.net/fopen

y no olvides cerrar el archivo con fclose()

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

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 28/01/2009, 15:44
 
Fecha de Ingreso: febrero-2008
Mensajes: 76
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Guardar datos usuario en fichero

muchas gracias pateketrueke por tu rápida y precisa respuesta! :)

ya he actualizado el código...lo que pasa ahora es que aunque no entre ningún dato en algun input text o en todos...nunca me muestra el echo con el mensaje de error...

cuando funcione correctamente todo, donde me creará el fichero resultante?? estoy trabajando con el 'xampp' desde la carpeta 'htdocs'

SALUDOS! :)
  #4 (permalink)  
Antiguo 28/01/2009, 15:56
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Guardar datos usuario en fichero

Cita:
Iniciado por bERTUZ Ver Mensaje
[..] ya he actualizado el código...lo que pasa ahora es que aunque no entre ningún dato en algun input text o en todos...nunca me muestra el echo con el mensaje de error [...]

[...] cuando funcione correctamente todo, donde me creará el fichero resultante?? estoy trabajando con el 'xampp' desde la carpeta 'htdocs' [...]
tu primer problema, se debe a que isset() devuelve true ya que es obvio, que las variables que compruebas existen... tu mismo las asignaste antes!!

la solución esta en empty() que comprueba, no que existan variables... si no que su valor no sea nulo o vacío...

Código PHP:
if ( ! empty($foo) && ! empty($bar/* ... */// ... 
tu segunda inquietud tiene solución propia, el manual de PHP para fopen() dice todo muy claro...

el primer parámetro es el archivo para abrir... si no existe (si fuera el caso) es creado usando la ruta y nombre proporcionado, si es posible...

http://php.net/fopen


en tu caso... usauris.dat se creara en el mismo lugar del script que lo ejecuta, puesto a que es una ruta relativa... realmente sin ruta, y por eso se toma en el mismo contexto o ubicación del script...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 28/01/2009, 17:11
 
Fecha de Ingreso: febrero-2008
Mensajes: 76
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Guardar datos usuario en fichero

gracias por tu respuesta! me gusta aprender cada día cosas nuevas de php! :)

ahora tengo el siguiente código:

Código PHP:
<?php

    $usuari 
$_POST['usuari'];
    
$cognom1 $_POST['cognom1'];
    
$cognom2 $_POST['cognom2'];
    
$email $_POST['email'];
    
$contrasenya $_POST['contrasenya'];
    
    if (!empty(
$usuari) && !empty($cognom1) && !empty($cognom2) && !empty($email) && !empty($contrasenya))
    {
        
$arrayUsuari = array($usuari$cognom1$cognom2$email$contrasenya);
        
$liniaUsuari implode(';'$arrayUsuari);
        
        
$fitxerUsuaris fopen("usuaris.dat""a"); //a = modo agregar datos
        
fwrite($fitxerUsuaris$liniaUsuari);
        
fclose();
        
        echo 
"Usuari donat d'alta!";
    }
    else
    {
        echo 
"No has emplenat tots els camps! (usuari no donat d'alta)";
    }

?>
...cuando hago click al botón dar de alta del formulario principal, me ejecuta sin errores esta pagina (alta.php), sin embargo, no me muestra ni el mensaje "se creo el usuario", ni el mensaje "no se pudo crear el usuario porque faltaban campos"...y por supesto, tampoco me crea el fichero "usuaris.dat"...no veo el problema :S

SALUDOS!
  #6 (permalink)  
Antiguo 28/01/2009, 18:21
 
Fecha de Ingreso: febrero-2008
Mensajes: 76
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Guardar datos usuario en fichero

hay algun error en el código que impida que para bien (crear fichero y añadir linea usuario y mostrar mensaje "usuario dado de alta") o para mal (mostrar mensaje "no se ha podido"), se ejecute correctamente?
  #7 (permalink)  
Antiguo 28/01/2009, 21:18
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años
Puntos: 33
Respuesta: Guardar datos usuario en fichero

bERTUZ:

Cita:
tampoco me crea el fichero "usuaris.dat"...no veo el problema :S
Prueba usando a+ para la apertura del archivo.
Tambien prueba utilizando un fichero .txt a ver que pasa.

Siempre debes ir al log de errores y al log de acceso de tu servidor
a ver que exactamente paso.
El php.ini puede tener multiples configuraciones para el tratamiento de errores.

Saludos
Franco
  #8 (permalink)  
Antiguo 29/01/2009, 06:44
 
Fecha de Ingreso: febrero-2008
Mensajes: 76
Antigüedad: 16 años, 2 meses
Puntos: 0
Cita:
Iniciado por franco190453 Ver Mensaje

Siempre debes ir al log de errores y al log de acceso de tu servidor
a ver que exactamente paso.
El php.ini puede tener multiples configuraciones para el tratamiento de errores.

Saludos
Franco
gracias por tu respuesta, cuando pueda voy a probar con a+, a ver si se arregla algo...nose si estará aquí el problema de que no me ejecute nada de lo que hay en el código.

dónde está el log de errores?? el otro día configuré los errores de php.ini para que fuera más sensible y me mostrara más mensajes. con este código que tengo no me muestra ningún error...a mi

GRACIAS! :)

como puede ser que no llegue a ejecutar los echo, ni me inserte nada en el fichero con el fwrite?

SOLUCIONADO!

...que sorpresa al reiniciar el ordenador y probar el código otra vez por si las moscas...y ver que...funciona! No entiendo porque antes no dió ningún resultado, y ahora lo hace bien.

Bueno...todo bien, excepto una pequeñísima cosita: ¿Cómo puedo hacer para que al final de cada linea de usuario haga salto de linea y se coloque a la linea de abajo, para que al escribir el siguiente usuario no me lo ponga seguido del primero, sino en la linea de abajo?

MUCHAS GRACIAS! saludos! :)

Última edición por GatorV; 31/01/2009 a las 20:06
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 22:04.