entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

3votos

como guardar datos de distintos formatos en el server

mas que una pregunta es una duda que no me deja tranquilo, se trata acerca del almacenamiento de datos, por ahi he leido que se pueden conservar en varios formatos.
para ser mas claro voy a partir con ejemplos. supongamos que quisiera guardar los datos que paso de mi formulario a mi script en formato xml o json, cual seria la manera de hacerlo.aparte esto tengo un problema cuando lo guardo en texto plano porque los datos se ven apegados, me gustaria poderlos separarlos en lineas

1 Respuesta

2votos

Leonardo-Tadei Puntos227320

Hola @algoritmico,

lo más confiable y eficiente para guardar datos en un servidor son las bases de datos.

Esto te permitiría recuperar la información y además poder agruparla y ordenarla por diferentes criterios, además de poder agregar información que no está en el formulario como la fecha y la IP de visitante, etc.

Tenés algún requerimiento particular que te obligue a guardar XML o JSON en vez de poder estructurar la información?

Incluso si además de la información estructurada de los campos del formulario tuvieras que guardar algún formato diferente, tanto XML cono JSON se pueden guardar en un campo de texto amplio sin problemas.

Saludos cordiales

1voto

steven comentado

estoy de acuerdo contigo en utilizar base de datos. no tengo ninguna necesidad de usar xml o json, solo queria hacer algunas pruebas y guardar los datos en un formato distinto del texto plano, porque como te mencionaba tengo un problema con los caracterese de escape, cuando guardo los datos se escriben todo junto.
nota que funciones existen para guardar los datos en xml o json, si puedes podrias ponerme un ejemplo sencillo para entenderlo mejor, gracias

1voto

Leonardo-Tadei comentado

Hola @algoritmico,

dado que tanto XML como JSON son texto plano (con algunas convenciones para poder leer automáticamente cada parte), el problema que tenés en los caracteres no cambiará.

Con json_encode() podés generar un texto en formato JSON

$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);

// Devuelve {"a":1,"b":2,"c":3,"d":4,"e":5}

Pero si el problema es una cuestión de cómo se ven los caracteres, seguro que te convendría más abrir una nueva pregunta poniendo tu código, el resultado que obtenés y el resultado que querés obtener, así podemos ver que pasa... es probable que sea una cuestión de codificación de caracteres o de fines de línea...

Saludos cordiales!

1voto

steven comentado

parece ser que es mas facil guardar datos en formatos json que xml, porque he leido que se necesita saber usar la clase domdocument.
a proposito de mi problema con los caracteres es debido a que faltan saltos de lineas, por ejemplo si tengo mi formulario html con dos campos de texto

<form method='post' action="script.php' enctype="multipart/etc"> 
<input type="text" name="nombre"> //aqui recibe el nombre steven
<input type="text" name="mes">  //diciembre
<input type="text" name="username"> //algoritmico
<input type="submit" value="procesar"> //diciembre
</form>
// en la linea de apertura del formulario no recordaba el valor del atributo enctype, en mi codigo si esta presente.

luego tenemos el codigo php

$dato1 = $_POST['nombre'];
$dato1 = $_POST['mes'];
$dato2 = $_POST['username'];
$archivo = fopen('file.txt', a+);
fwrite = ($archivo, $dato1);
fwrite = ($archivo, $dato2);
fclose($archivo);

al final obtengo el siguiente resultado en mi archivo de texto txt
stevenalgoritimicodiciembre

lo que quiero es que se escriba con espacios y saltos de linea
steven
algoritmico
diciembre

1voto

Leonardo-Tadei comentado

Generar XML es muy simple si armás vos el string, como por ejemplo

$xml = "<xml>
  <user>
    <name>$dato1</name>
    <month>$dato1</month>
    <user>$dato1</user>
  </user>
</xml>";

Al igual que para el JSON, se puede generar el string manualmente si se entiende cómo es el formato...

Volviendo a tu problema, simplemente te falta poner los enters:

$dato1 = $_POST['nombre'];
$dato2 = $_POST['mes'];
$dato3 = $_POST['username'];
$archivo = fopen('file.txt', a+);
fwrite = ($archivo, "$dato1\n");
fwrite = ($archivo, "$dato2\n");
fwrite = ($archivo, "$dato3\n");
fclose($archivo);

La función fwrite() escribe el contenido que le pases como parámetro, y si el contenido no tiene un fin de línea, no lo agregará (afortunadamente!) por si sola.

Saludos cordiales

1voto

steven comentado

ok resolvi mi problema con los saltos de linea, anteriormente habia probado algo similar pero no funcionaba, no me queda claro una cosa, porque no retorna un error si tratas las variables como cadenas.

aparte esto al respecto del xml creo que es necesario hacer un bucle while si deseo que guarde siempre los datos pasados por el form.

1voto

Leonardo-Tadei comentado

Me alegra que te funcionase.

fwrite() no da error porque, justamente, al escribir un archivo de texto, el segundo parámetro debe ser un string. Recordá que todo lo que llega por GET o POST de un formaulario siempre es un string, aunque el contenido tipeado sea un número. De todas formas, si le pasás un entero u otro tipo de dato, PHP lo convertirá automáticamente a sctring y tampoco dará error.

Para guardar un XML no hace falta un bucle, al igual que tampoco hace falta ahora, porque siempre escribís en el final del archivo: bastaría con borrar la última línea del archivo (o más de una, dependiendo de la estructura), escribir el nuevo dato al final igual que lo hacés ahora, poner el cierre del XML y cerrar.

Saludos cordiales

1voto

steven comentado

bueno mi idea era de almacenar los datos en un archivo xml para luego maquetarlos con css, pero lamentablemente los datos se sobreescriben.
en teoria lo que queria es que se genere dinamicamente las etiquetas nombre,mes y username.

1voto

Peter comentado

@algoritmico si esta respuesta soluciona tu pregunta, por favor selecconala como correcta.

Saludos.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta