Foros del Web » Programando para Internet » PHP »

Meter dos for each juntos

Estas en el tema de Meter dos for each juntos en el foro de PHP en Foros del Web. Hola, vengo con un problema a pedir ayuda porque solo no logré superarlo. Luego de usar el comando readdir para ver los txt de una ...
  #1 (permalink)  
Antiguo 07/08/2012, 13:43
 
Fecha de Ingreso: agosto-2010
Mensajes: 7
Antigüedad: 14 años, 3 meses
Puntos: 0
Meter dos for each juntos

Hola, vengo con un problema a pedir ayuda porque solo no logré superarlo.

Luego de usar el comando readdir para ver los txt de una carpeta, y haber extraido su contenido y puesto en un array, creo dinamicamente formularios con ese contenido que deberían poder ser modificados dinamicamente.

La cuestion es que al modicarlos, para pretender guardar necesito indicar a php en cuál de los archivos de texto guardar la modificacion, mas para eso requiero pasar una variable con el nombre del archivo cuyo contenido se está modificando , y ahí radica mi problema.

Este es el código:

Código PHP:
<?php 
session_start
();
        
$carpeta opendir'textos/' );
$arraycontenido= array();
 
$arrayinverso=array();
 
 
$arraydecadanombredearchivo= array();
 
$arrayinversoarchivo=array();


//recorre cada archivo de la carpeta
while( $archivo readdir$carpeta ) ){
    if( ! 
is_dir$archivo ) ){ // solo muestra archivos, saltea las sub carpetas
    
$direccion2 'textos/';
$rutamasarchivo$direccion2.$archivo;

$contenido file_get_contents($rutamasarchivo);
 
 
$arraycontenido[]= $contenido;
  
$arraydecadanombredearchivo[]= $archivo;

 
$arrayinversoarray_reverse($arraycontenido);
 
$arrayinversoarchivoarray_reverse($arraydecadanombredearchivo);

 
              }
    }
          
/*foreach ($arrayinversoarchivo as $archivo){
                  $archivo= $_SESSION['nombrearchivo'];
              }*/
              
          
foreach ($arrayinverso as $contenido)
              { 

?>
Código HTML:
<br>
  <div id="derdoble">
  
<form name="form3" method="post" action="guardar_txt.php">
<p>
<label><span class="tresd">	COMENTARIO:</span><br/><br/>
<textarea name="contenido" id="contenido" cols="60" rows="5"> 
Código PHP:
<?php echo $contenido   ?>
Código HTML:
</textarea>
      </label>  
</p>

      
    <label> 
      <input name="botoncito" type="submit" class="botonadmin" id="botoncito" value="GUARDAR" />
    </label>
  </p>
    </form> 


Código PHP:
<?php

}
?>
Código HTML:
</div>
</div>
</body>
</html> 
Y aquí el código for each que pretendo insertar, buscando que la segunda línea del mismo opere como lo hace el echo $contenido que se encuentra en la etiqueta LABEL, para que de esta manera al estar en guardar_txt pueda acceder a la referencia del nombre :

Código PHP:
          foreach ($arrayinversoarchivo as $archivo){
                  
$archivo$_SESSION['nombrearchivo'];
              } 
Pero me es imposible.
Como puedo hacerlo?
Les pido su ayuda, temo haber explicado mal lo que pretendo realizar.
Ya que individualmente es posible, pero en conjunto no puedo las dos al mismo tiempo.


He visto el tema www.forosdelweb.com/f18/como-meter-foreach-dentro-otro-foreach-645582/ pero no he podido extraer soluciones para mi caso.

Soy bastante novato y todo lo que probé sigue sin darme un resultado.
desde ya, agradecido.
  #2 (permalink)  
Antiguo 07/08/2012, 13:47
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Meter dos for each juntos

No entiendo porque quieres pasar el archivo usando otro bucle.

Tan solo debes usar un <input/> de tipo hidden y ahí indicar la ruta del archivo, ya sólo te restaría recuperarla como cualquier otra variable del formulario.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 07/08/2012, 14:26
 
Fecha de Ingreso: agosto-2010
Mensajes: 7
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Meter dos for each juntos

No me dio resultado, señor.
Habrá algún error de parte mía?

Vuelvo a postear el código.

Código HTML:
<!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" xmlns:spry="http://ns.adobe.com/spry">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>pagina personal</title>
<link href="estilos.css" rel="stylesheet" type="text/css" />

</head>

<body>
<div id="contenedor">
  <div id="logo">
    <h1><a href="http://www.forosdelweb.com/f18/index.php">Pagina Personal</a></h1>
  </div> 
Código PHP:
<?php 
session_start
();
        
$carpeta opendir'textos/' );
$arraycontenido= array();
 
$arrayinverso=array();
 
 
$arraydecadanombredearchivo= array();
 
$arrayinversoarchivo=array();


//recorre cada archivo de la carpeta
while( $archivo readdir$carpeta ) ){
    if( ! 
is_dir$archivo ) ){ // solo muestra archivos, saltea las sub carpetas
    
$direccion2 'textos/';
$rutamasarchivo$direccion2.$archivo;

$contenido file_get_contents($rutamasarchivo);
 
 
$arraycontenido[]= $contenido;
  
$arraydecadanombredearchivo[]= $archivo;
 
$arrayinversoarray_reverse($arraycontenido);
 
$arrayinversoarchivoarray_reverse($arraydecadanombredearchivo);

 
              }
    }
          
/*foreach ($arrayinversoarchivo as $archivo){
                  $archivo= $_SESSION['nombrearchivo'];
              }*/
              
          
foreach ($arrayinverso as $contenido)
              { 

?>
Código HTML:
<br>
  <div id="derdoble">
  
<form name="form3" method="post" action="guardar_txt.php">
<p>
<label><span class="tresd">	COMENTARIO:</span><br/><br/>
<textarea name="contenido" id="contenido" cols="60" rows="5"> 
Código HTML:
<?php echo $contenido   ?> 
Código HTML:
</textarea>
      </label>  
</p>

      
    <label> 
      <input name="botoncito" type="submit" class="botonadmin" id="botoncito" value="GUARDAR" />
    </label>
    <label>
    <input type="hidden" name="nombrearchivo" id="nombrearchivo" value "$archivo" /> </label>
  </p>
    </form> 
Código PHP:
<?php
}
?>
Código HTML:
</div>
</div>
</body>
</html> 

Y este es el código que recoje lo que envio mediante el formulario.
(se llama guardar_txt.php)

Código PHP:
<?php
$contenido 
$_POST['contenido'];
$narchivo $_POST['nombrearchivo'];
$rutta 'textos/';

$dondesobrescribir $rutta.$narchivo;

// esto siempre reemplaza el contenido
file_put_contents'texto.txt' ,  $dondesobrescribir );

$salto "\n"// salto de linea para los archivos, si o si, debe estar entre comillas dobles
/* 
//EL FILE_APPEND EN VEZ DE SOBREESCRIBIR EL ARCHIVO, AGREGA AL FINAL
file_put_contents( 'post.txt' , $salto.$dato, FILE_APPEND );
*/


echo $narchivo;
echo 
$rutta;
echo 
'soylio';
?>
Tardé en contestarle porque seguí probando soluciones como pasarlo mediante una variable de session, pero no pude.
COmo podrá ver implemente el campo hidden, quizá con algún error de parte mia
  #4 (permalink)  
Antiguo 07/08/2012, 14:30
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Meter dos for each juntos

Me parece que el error lo cometes aquí:
Código PHP:
<input type="hidden" name="nombrearchivo" id="nombrearchivo" value "$archivo" /> </label
Ahí no estás imprimiendo la variable $archivo correctamente.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 07/08/2012, 14:42
 
Fecha de Ingreso: agosto-2010
Mensajes: 7
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Meter dos for each juntos

Cita:
Iniciado por pateketrueke Ver Mensaje
Me parece que el error lo cometes aquí:
Código PHP:
<input type="hidden" name="nombrearchivo" id="nombrearchivo" value "$archivo" /> </label
Ahí no estás imprimiendo la variable $archivo correctamente.
Entiendo que no puedo pretender de usted una solucion directa como si le estuviera pagando pero, a que se refiere usted exactamente??

La variable $archivo no vive más que dentro de mi While, que se termina más arriba-
Y aun trayendola , o trayendo el array, tendre una serie de nombres y no el nombre en particular de ese comentario que necesito.. no lo entiendo
  #6 (permalink)  
Antiguo 07/08/2012, 14:48
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Meter dos for each juntos

No entiendo como eres capaz de hacer otras cosas similares y aquí no te das cuenta.

Cuando estás fuera de <?php ... ?> la variable que tienes no se imprime, es mas, te reto a que veas el HTML que genera en tu navegador y se lee literalmente $archivo.

Evidentemente como lo haces en otras partes debes hacerlo aquí.
Código PHP:
MAL
<input type="hidden" name="nombrearchivo" id="nombrearchivo" value "$archivo" />

BIEN
<input type="hidden" name="nombrearchivo" id="nombrearchivo" value "<?php echo $archivo?>" />
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 07/08/2012, 15:16
 
Fecha de Ingreso: agosto-2010
Mensajes: 7
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Meter dos for each juntos

Si, disculpe, es que tantas horas buscandole la vuelta me marearon.

Lo hice bien esta vez, y tampoco me funciona pero, aunque funcionase no creo que me sirviera
pusto que yo no necesito los valores de $archivo en su totalidad, necesito solamente algunos dentro de ellos, el que corresponde segun el TXT levantado.
  #8 (permalink)  
Antiguo 07/08/2012, 15:28
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Meter dos for each juntos

Sigo confundido, parece como si no supieras lo que haces.

Si te das cuenta estás pasando con un textarea los contenidos, eso queda claro, y lo único que te hace falta es guardar su respectivo contenido en el archivo correspondiente.

De eso se trata el campo hidden, de la misma forma que el textarea sólo está pasando un valor a la vez y no todos porque ambos campos están dentro de un único formulario, ¿por que dices que estarías recibiendo todos?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: formulario, html, juntos, meter, variables
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 11:15.