Form dentro while loop

di il
2 risposte

Form dentro while loop

Salve signori mi sono appena iscritto a questo sito, che mi sembra ben fatto e strutturato, complimenti.

Avrei bisogno di una mano, il quesito sicuramente risulterà banale per molti di voi, ma io purtroppo sono un principiante autodidatta :)

Nel mio server locale, ho delle directory di cui vorrei leggerne il contenuto.

Directories che io ho rinominato con nomi a caso:  555, 654, 7u...

Queste directories sono "listate" sul mio sito su una pagina che possiamo chiamare CARTELLE.PHP

<?php
function dir_list($directory = FALSE) {
  $dirs= array();
  
  if ($handle = opendir("./" . $directory))
  {
    while ($file = readdir($handle))
    {
      if (is_dir("./{$directory}/{$file}"))
      {
        if ($file != "." & $file != "..") $dirs[] = $file;
      }

    }
  }
  closedir($handle);



echo "<strong>Lista delle cartelle:</strong><br>
<div class='container'>

<ul id='myList'>";
  while(list($key, $value) = each($dirs))
  {
    echo "
    <li> 
    <form method='post' id='myForm' action='leggi_cartella.php'> <input type='hidden' name='nome_cartella' value='{$value}'> <a href='#' onclick='myForm.submit();'>{$value}</a> </form> 
    </li>";
  }
  echo "
</ul> 

</div>";
}
dir_list("formazione/files_vari/");

?>

Quello che intendevo fare io adesso, è che al click sul nome della cartella, ne vado a leggere il contenuto... al click sul nome della cartella, per leggerne il contenuto, pensavo di prendere il nome della cartella, e attraverso un form con metodo post, passare il nome della cartella su LEGGI_CARTELLA.PHP

Ho provato a farlo inserendo il FORM dentro il ciclo while.. il problema è che qualsiasi cartella io clicchi, 

$nome_cartella = $_POST['nome_cartella']; // Ottieni il nome della cartella
echo "$nome_cartella";

su LEGGI_CARTELLA.PHP, mi arriva sempre e soltanto "555" ovvero il nome della prima cartella. 

Quel form dentro quel ciclo while, come lo imposto per riuscire nell'intento? 

Grazie dell'attenzione, un saluto.

2 Risposte

  • Re: Form dentro while loop

    Nel tuo clic sul link hai scritto "myForm.submit()", quindi invocherai l'invio del form che ha come ID appunto "myForm".

    Nel tuo ciclo "while", ogni form che crei ha id='myForm'. In pratica, stai creando N form i quali avranno tutti un identificativo univoco (ossia diverso per ogni form) che vale invece "myForm" per tutti quanti.

    L'ID sarà valido quindi solo per il primo form.

    Devi trovare un modo per modificare l'ID, anche se io "aggredirei" il problema a monte: perché dover usare proprio necessariamente un Form? e perché metterne così tanti? perché non passare il valore direttamente nel "query string", visto che fondamentalmente stai facendo una lettura delle directory e non stai "scrivendo" nulla sul server?

  • Re: Form dentro while loop

     while(list($key, $value) = each($dirs))
      {
        echo "<li class='cartella'><a href='leggi_cartella.php?nome_cartella={$value}'>{$value}</a></li>";
      }

    e su leggi_cartella.php 

    $nome_cartella = $_GET['nome_cartella'];


    Mi ero letteralmente complicato la vita da solo, GRAZIE ALKA!!! 

    21/09/2025 - Alka ha scritto:

    Nel tuo clic sul link hai scritto "myForm.submit()", quindi invocherai l'invio del form che ha come ID appunto "myForm".

    Nel tuo ciclo "while", ogni form che crei ha id='myForm'. In pratica, stai creando N form i quali avranno tutti un identificativo univoco (ossia diverso per ogni form) che vale invece "myForm" per tutti quanti.

    L'ID sarà valido quindi solo per il primo form.

    Devi trovare un modo per modificare l'ID, anche se io "aggredirei" il problema a monte: perché dover usare proprio necessariamente un Form? e perché metterne così tanti? perché non passare il valore direttamente nel "query string", visto che fondamentalmente stai facendo una lettura delle directory e non stai "scrivendo" nulla sul server?

Devi accedere o registrarti per scrivere nel forum
2 risposte