Foros del Web » Programando para Internet » PHP »

Generar archivos TXT diferentes en el servidor

Estas en el tema de Generar archivos TXT diferentes en el servidor en el foro de PHP en Foros del Web. Hola. Necesito crear un formulario de pedidos en el cual, cuando se envie una consulta el TXT que se genera se grabe en el servidor ...
  #1 (permalink)  
Antiguo 03/11/2008, 13:06
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 15 años, 5 meses
Puntos: 12
Generar archivos TXT diferentes en el servidor

Hola. Necesito crear un formulario de pedidos en el cual, cuando se envie una consulta el TXT que se genera se grabe en el servidor en lugar de enviarse por mail. Con ayuda de otros post de este foro he logrado hacerlo de la siguiente manera:
Primero el codigo del archivo que contiene el formulario de contacto:

Código HTML:
<html>
<body>
   <form name="form1" method="post" action="despliega.php">
       Nombre:<input type="text" name="nombre" />	
        <input type="submit" value="enviar"/>

</form>
</body>
</html> 
Y luego el codigo de la pagina que se despliega y guarda el TXT en el hosting:
Código PHP:
<?php  
    $nombre 
$_POST["nombre"]; 
    echo 
"Nombre: ".$nombre
     
$nombre_archivo 'prueba2.txt'
$contenido $nombre
fopen($nombre_archivo'a+'); 

// Asegurarse primero de que el archivo existe y puede escribirse sobre el. 
if (is_writable($nombre_archivo)) { 

   
// En nuestro ejemplo estamos abriendo $nombre_archivo en modo de adicion. 
   // El apuntador de archivo se encuentra al final del archivo, asi que 
   // alli es donde ira $contenido cuando llamemos fwrite(). 
   
if (!$gestor fopen($nombre_archivo'a')) { 
         echo 
"No se puede abrir el archivo ($nombre_archivo)"
         exit; 
   } 

   
// Escribir $contenido a nuestro arcivo abierto. 
   
if (fwrite($gestor$contenido) === FALSE) { 
       echo 
"No se puede escribir al archivo ($nombre_archivo)"
       exit; 
   } 
    
   echo 
"&Eacute;xito, se escribi&oacute; ($contenido) al archivo ($nombre_archivo)"
    
   
fclose($gestor); 

} else { 
   echo 
"No se puede escribir sobre el archivo $nombre_archivo"

?>
En este caso el archivo que se genera es "prueba2.txt" y ahi se va guardando toda la informacion que las diferentes personas envian mediante el formulario.
Lo que yo preciso es que en lugar de guardarse todos en el mismo archivo, cada consulta genere un archivo nuevo. Por ejemplo, entra el cliente A envia una consulta y se genera "prueba34.txt", luego entra el cliente B envia una consulta y se genera "prueba35.txt" y asi siguiendo de manera correlativa. No es necesario que el archivo tenga ese nombre exacto, alcanza con que cada uno que se genere sea un archivo diferente. Alguien me puede ayudar?

Muchas Gracias y Saludos
  #2 (permalink)  
Antiguo 03/11/2008, 13:23
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Respuesta: Generar archivos TXT diferentes en el servidor

Suponiendo que el código funcione bien... deberías sustituir esto:

$nombre_archivo = 'prueba2.txt';

por el nombre del archivo que quieras. La duda aquí es qué número ponerle... Si tienes los txt sólos en un directorio, puedes usar las funciones de manejo del sistema de ficheros para abrir el directorio, contar el número de elementos y sumarle uno....
  #3 (permalink)  
Antiguo 03/11/2008, 14:27
Avatar de pato12  
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 16 años, 6 meses
Puntos: 101
Respuesta: Generar archivos TXT diferentes en el servidor

Hola,
Prueba este codigo que te hice:
Código PHP:
<form id="form1" name="form1" method="post" action="">
  Tu nombre:<br />
  <input name="name" type="text" id="name" /> 
  <br />
Tu comentario:<br />
<input name="coment" type="text" id="coment" />
<br />
<input type="submit" name="Submit" value="Enviar" /> 
</form>
<?php
/* .......................................
   :Codigo por Pato12 de forosdelweb.com :
 .:         www.halfmusic.com.ar          :.
*/
///////////// - CREAMOS UNAS FUNCIONES - ////////////////////
function crear_archivo($a){
  
$abre =@fopen($a"a+"); 
  @
fclose($abre); 
  return 
$abre;
}
function 
escribir_archivo($a,$t,$f "w+"){
 
$abre = @fopen($a$f); 
 
$escribir = @fwrite($abre$t); 
 
fclose($abre);
 return 
$escribir;
}
function 
ver_archivo($a){
  
$abre =@fopen($a"r+");
  
$total=@fread($abrefilesize($a)); 
  
fclose($abre); 
  return 
$total;
}
function 
filtrar($texto){
return 
trim(nl2br(addslashes(htmlentities(strip_tags($texto)))));
}
/////////////////////////////////
if($_POST){
/////////////////////////////////
$informacion="info.dat"// NOMBRE DEL ARCHIVO DE INFORMACION
$archivos="clientes-%s.txt"// NOMBRE DE LOS ARCHIVOS. PONER %s DONDE VA EL NUMERO
$contenido="Nombre: ".filtrar($_POST['name'])." | Comentario: ".filtrar($_POST['coment']); // CONTENIDO A ESCRIBIR
if(!file_exists($informacion))
crear_archivo($informacion);
$datos=ver_archivo($informacion);
/////////////////////////////////
$sep=explode("\n",$datos);
$total=(ver_archivo($informacion)=="")? : (count($sep))+1;
/////////////////////////////////
foreach($sep as $se){
$sub=split(":",$se);
$ip=$sub[0];
$numero=$sub[1];
if(
$_SERVER['REMOTE_ADDR']==$ip){
$nombre=sprintf($archivos,$numero);
escribir_archivo($nombre,"\n".$contenido,"a+");
break;
}else{
$nombre=sprintf($archivos,$total);
crear_archivo($nombre);
escribir_archivo($nombre,"\n".$contenido,"a+");
$salto=(ver_archivo($informacion)!="")? "\n" "";
escribir_archivo($informacion,$salto.$_SERVER['REMOTE_ADDR'].":".$total,"a+");
break;
}
}
/////////////////////////////////
}
?>
Te lo hice facil.
Te recomiendo guardar los datos en una BD y despues sacarlos. Es mas facil.
Despues abres el archivo y separalos. Tambien lo puedes paginar con algun paginador de array.
Suerte
Salu2
__________________
Half Music - www.halfmusic.com
  #4 (permalink)  
Antiguo 03/11/2008, 16:58
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 15 años, 5 meses
Puntos: 12
Respuesta: Generar archivos TXT diferentes en el servidor

Muchas Gracias a los dos por sus respuestas.
Keysher no comprendi bien lo que me sugerias. No existe un nombre de archivo predeterminado ya que ese formulario recibira alrededor de 30 consultas diarias (sera utilizado como un formulario de pedidos) y cada uno debe tener un nombre diferente. En el codigo que yo copie de este foro, no es necesario crear el bloc de notas llamado prueba2.txt. El mismo se crea automaticamente al enviar la consulta. Eso mismo necesitaria yo pero con un archivo diferente cada vez. Disculpa si no te comprendi, gracias por tu respuesta.
Pato12 gracias por tomarte la molestia de armar ese codigo. Ahora lo voy a probar y te comento que tal funciona. Muchas Gracias
Saludos
  #5 (permalink)  
Antiguo 03/11/2008, 17:10
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Respuesta: Generar archivos TXT diferentes en el servidor

Supuse que querías algo como archivo1.txt archivo2.txt archivo3.txt etc... en ese caso "archivo" sería lo predeterminado y el número lo sacarías de contar cuantos .txt hay en el directorio en cuestión y sumarle uno.
  #6 (permalink)  
Antiguo 03/11/2008, 17:23
Avatar de pato12  
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 16 años, 6 meses
Puntos: 101
Respuesta: Generar archivos TXT diferentes en el servidor

Hola,
Me olvide de decir que el codigo tambien lo que hace es que:
El cliente A envia una consulta se crear el archivo "cliente-1.txt"
y si el cliente B envi otra consulta se crea el archivo "cliente-2.txt"
y si el A vuelve a enviar otra consulta, no se crea uno nuevo, usa el que ya creo es decir ek "cliente-1.txt".
Si ya consulto, usa el archivo que ya creo con anterioridad.
Te vuelvo a decir que es recomendable usar BD para estos casos. Es mas facil.
Suerte
Salu2
__________________
Half Music - www.halfmusic.com
  #7 (permalink)  
Antiguo 04/11/2008, 10:22
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 15 años, 5 meses
Puntos: 12
Respuesta: Generar archivos TXT diferentes en el servidor

Hola Pato. Lo he probado y funciona tal como decis. Me surge la siguiente duda:
En tu explicacion dices que cuando el cliente 1 envia una consulta se genera clientes-1.txt, con el 2 clientes-2.txt. Mi pregunta es...como diferencia el servidor si el cliente es el 1 o el 2? Debo crear un formulario de contacto diferente para cada cliente o hay algo que ahorre mas pasos?
Por supuesto que este formulario estara protegido por un usuario y contraseña diferente para cada cliente. Pero es eso suficiente para que me cree archivos diferentes? O debo crear tantos formularios de contacto como clientes haya?
Muchas Gracias por tu ayuda
Saludos
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 15:13.