Editar y guardar ficheros [Solucionado]

Iniciado por i-Charlie, 6 Octubre 2009, 17:52 PM

0 Miembros y 3 Visitantes están viendo este tema.

i-Charlie

Hola

Mi idea es hacer un pequeño script en php que me permite elegir entre 3 ficheros del server, leerlos y posteriormente volver a guardarlos.

Fichero html para elegir el fichero a editar:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Prueba para mi script</title>
</head>

<body>

<center>
<form id="form2" name="form2" method="post" action="index.php">
 <label>
 <select name="opcion" id="opcion">
   <option value="menu1">fich1</option>
   <option value="menu2">fich2</option>
   <option value="menu3">fich3</option>
 </select>
 </label>
<br />
 <input name="enviar" type="submit" value="enviar" />
</form>
</center>

</body>
</html>


Fichero2, recibe la opción anterior con POST y dependiendo del valor elegido carga un fichero u otro y posteriormente (con el submit) llamada a index3.php que es quien se encarga de guardarlo:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Prueba para mi script</title>
</head>

<body>

<form name="area" method="post" action="index3.php">
<textarea name="area1" id="area1" cols="60" rows="20">
<?  
$variable = $_POST[opcion];

if ($variable == "menu1")
$fichero = "archivo.txt";

if ($variable == "menu2")
$fichero = "archivo2.txt";

if ($variable == "menu3")
$fichero = "archivo3.txt";

$fp = fopen($fichero,"r");
fpassthru($fp);
fclose($fp);

?>

 </textarea><br />
     <textarea name="menux" id="menux" cols="10" rows="1">
<?  
echo $variable;
?>
     </textarea>
<input name="enviar" type="submit" value="enviar" />
</form>
</body>
</html>


Aqui en el index3.php he probado de todo, pero no sale. Lo último fue cargar el valor del menú a editar en otro textarea (que luego ya lo ocultaría con css) pero esto es muy chapuza. He intentado comparar con condiciones if y strcmp ($var1, $var2) pero tampoco tiraba.

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Prueba para mi script</title>
</head>

<body>

<?
$menu2 = $_POST["menux"];
echo $menu2;

switch($menu2){
case ("menu1"):
$fp = fopen("archivo.txt","w+");
fwrite($fp,$_POST["area1"]);
fclose($fp);
break;
case ("menu2"):
$fp = fopen("archivo2.txt","w+");
fwrite($fp,$_POST["area1"]);
fclose($fp);
break;
case ("menu3"):
$fp = fopen("archivo3.txt","w+");
fwrite($fp,$_POST["area1"]);
fclose($fp);
break;
default:
echo "tus padres son hermanos, esto dá error";
break;
}

?>

</body>
</html>


Alguna ayuda? Sugerencia? Otra forma de plantear mi problema?

Gracias de antemano
Un saludo! ;-)
ExDiseñador de www.Estudio-Digital.net

дٳŦ٭



Con sangre andaluza :)


WHK

#2
Citar<form id="form2" name="form2" method="post" action="index.php">
Te estás enviando la petición al mismo archivo 1 y se supone que lo deberías enviar hacia el archivo 2 no?

además...
Código (php) [Seleccionar]

.....
<textarea name="area1" id="area1" cols="60" rows="20">
<?
$variable = $_POST
......
[opcion];


Decir <? no es lo mismo a decir <?php ya que lo que haces tu es una forma de abreviar el tag de apertura y eso es opcional en una configuración de php desde php.ini y no todos lo soportan por lo tanto ese script puede que se ejecute en algunos servidores webs como puede que no se ejecute y no verás su código... vee el código fuente desde tu explorador del archivo y fijate si te aparece el código fuente del php (si usas firefox de ve de color rosa), si no te aparece entonces todo bién pero te recomiendo que te acostumbres a usar <?php en ves de <?

saludos.

i-Charlie

Gracias por vuestas respuestas.

Cita de: дٳŦ٭ en  6 Octubre 2009, 19:21 PM
Tus archivos tienen permisos?
Si los tienen.

Cita de: WHK en  6 Octubre 2009, 20:12 PM
Citar<form id="form2" name="form2" method="post" action="index.php">
Te estás enviando la petición al mismo archivo 1 y se supone que lo deberías enviar hacia el archivo 2 no?
Es que el segundo fichero se llama index.php

Mi servidor lee la etiqueta jeje

El caso es que cuando lo hago con un solo menú y en el tercer y último archivo solamente pongo:
$fp = fopen("archivo.txt","w+");
fwrite($fp,$_POST["area1"]);
fclose($fp);

Me funciona correctamente. Por tanto mi problema está en que el segundo fichero le tiene que pasar al index3.php que menú está editando y dependiendo de eso index3.php deberá sobreescribir en un fichero o en otro.


Gracias!
ExDiseñador de www.Estudio-Digital.net

WHK

porque no haces un solo php donde le des las tres rutas y abra tres textareas? despues le das en guardar y guarde los tres archivos

i-Charlie

Si es una posibilidad, de hecho esa me funciona sin problemas pero me resulta una solución poco estética porque ¿qué pasaría si tuviera 10 ficheros? pongo 10 textarea...

ExDiseñador de www.Estudio-Digital.net

i-Charlie

#6
index.php: se elige el fichero a editar
index2.php: abre el fichero y llama a index3.php para guardarlo
index3.php: compara los valores del input y guarda el fichero correspondiente

SOLUCIÓN:

index.php:
Código (PHP) [Seleccionar]

<form name="menu_fich" method="post" action="index2.php">
 <select name="opcion">
   <option value="menu1">fichero1</option>
   <option value="menu2">fichero2</option>
   <option value="menu3">fichero3</option>
 </select>
 <input name="enviar" type="submit" value="enviar" />
</form>


index2.php:
Código (PHP) [Seleccionar]

<form name="area_editar" method="post" action="index3.php">
<textarea name="area1" id="area1" cols="60" rows="20">
 
<?PHP  
$variable = $_POST[opcion];
$bba = "";

if ($variable == "menu1"){
$fichero = "archivo.txt";
$bba = "menuuno";
}
if ($variable == "menu2"){
$fichero = "archivo2.txt";
$bba = "menudos";
}
if ($variable == "menu3"){
$fichero = "archivo3.txt";
}

$fp = fopen($fichero,"r");
fpassthru($fp);
fclose($fp);
?>
 </textarea>
<input type="hidden" name="menux" maxlength="6" value="<?php echo $bba?>" />
 <input name="enviar" type="submit" value="enviar" />
</form>


index3.php:
Código (PHP) [Seleccionar]

<?PHP
$menu22 = $_POST[menux];
$menu = (string) $menu22;

if (strcmp($menu, 'menuuno') == 0){
$fp = fopen("archivo.txt","w+");
fwrite($fp,$_POST["area1"]);
fclose($fp);
}elseif (strcmp($menu, 'menudos') == 0){
$fp = fopen("archivo2.txt","w+");
fwrite($fp,$_POST["area1"]);
fclose($fp);
}else{
$fp = fopen("archivo3.txt","w+");
fwrite($fp,$_POST["area1"]);
fclose($fp);
}
?>


Es muy fácil añadir o quitarle ficheros y bastante limpio.

Gracias por vuestros comentarios/ayudas

Un saludo!
ExDiseñador de www.Estudio-Digital.net

дٳŦ٭

Gracias por compartir la solución. Saludos


Con sangre andaluza :)