PHP - Crear archivo cada vez que presione el boton guardar

 
Vista:

Crear archivo cada vez que presione el boton guardar

Publicado por estefani (1 intervención) el 21/05/2017 02:28:10
Deseo crear un archivo de texto cada vez que de click en el boton guardar, y que dentro de este se guarde lo que escriba en un textarea.

Osea si presiono 3 veces el boton guardar se debe de crear un nuevo archivo asi:

archivo1.txt al dar el primer click

archivo2.txt al dar el segundo click

archivo3.txt al dar el tercer click, etc, etc.


Gracias por su ayuda de antemano!!

Tengo las sigueintes lineas de codigo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if(isset($_POST["txtareainst"]))
 
 
         if($_POST["txtareainst"])
         {
             $contenido=$_POST["txtareainst"];
             $archivo='D:instruccion.txt';
             $file = fopen($archivo, 'ab') or die ();
             fwrite ($file, $contenido.PHP_EOL);
             fclose($file);
             echo "He recibido en el archivo.php: ".$_POST["txtareainst"];
         }
         else
         {echo "He recibido un campo vacio";}
 }
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Crear archivo cada vez que presione el boton guardar

Publicado por kip (877 intervenciones) el 21/05/2017 04:13:56
Hola, se me ocurre que obtengas los nombres de los archivos existentes en el directorio y con ellos obtener el numero que deberia ir en el nuevo fichero a crear, algo sencillo seria asi:

1
2
3
4
5
6
7
8
<?php
$num = 1;
foreach (glob('archivo*.txt') as $file) {
    preg_match('/archivo(\d+)\.txt$/', $file, $match);
    $num = max($num, $match[1]) + 1;
}
$nombreFichero = sprintf('archivo%d.txt', $num);
echo $nombreFichero;

Por ejemplo si yo en el directorio tengo un unico archivo llamado archivo1.txt, el echo me mostrara archivo2.txt y asi con los siguientes archivos si existen, si no tengo ningun archivo pues mostrara archivo1.txt de esa manera se inicializaria la creacion de los archivos.

El problema que veo es que si la cantidad de archivos aumenta, es posible que se vea algo afectada el tiempo de ejecucion de este, ya que estoy iterando sobre cada uno para tomar el numero dentro del nombre de este, lo que se me ocurre es que simplemente con el valor que retorna glob() tomes el elemento final de este array, algo asi tal vez:

1
2
3
4
5
6
7
8
<?php
$num = 1;
if ($list = glob('archivo*.txt')) {
    preg_match('/(\d+)\.txt$/', end($list), $match);
    $num = max($num, $match[1]) + 1;
}
$nombreFichero = sprintf('archivo%d.txt', $num);
echo $nombreFichero;

Si te das cuenta no estoy iterando simplemente obtengo el elemento final del array que retorna glob y recupero el valor entero que se encuentra en el nombre del fichero.

Prueba el codigo y nos avisas si es lo que buscas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar