gestione menu a tendina con cartella

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
allora, ho quasi fatto da solo .. però quando apro la pagina la select si popola con i nomi delle cartelle? invece non deve fare cosi.
ecco il codice:
PHP:
<tr>
      <td>Seleziona Categoria</td>
      <td><?php echo "<select onchange=\"document.location.href = '" . $_SERVER['PHP_SELF'] . "?cat=' + this.value;\" name=\"cat\">";?>

        <option  selected="selected" value="">Seleziona</option>
        <?php
	$result = $db->query("SELECT * FROM foto_categorie");
	
	while($row = mysqli_fetch_array($result))
	{
	$_cat= $row['titolo'];
	$id = $row['id'];
  ?>
        <option value="<?php echo $id; ?>|<?php echo $_cat; ?>" ><?php echo $_cat; ?></option>
        <?php
  }
?>
      </select></td>
    </tr>
<tr><tr>
      <td>Seleziona Foto</td>
      <td><?php
// open the current directory
$pieces = explode("|", addslashes($_GET["cat"]));
$dhandle = opendir('../public/photo/'.$pieces[1].'');
// define an array to hold the files
$files = array();

if ($dhandle) {
   // loop through all of the files
   while (false !== ($fname = readdir($dhandle))) {
      // if the file is not this file, and does not start with a '.' or '..',
      // then store it for later display
      if (($fname != '.') && ($fname != '..') &&
          ($fname != basename($_SERVER['PHP_SELF']))) {
          // store the filename
          $files[] = (is_dir( "./$fname" )) ? "(Dir) {$fname}" : $fname;
      }
   }
   // close the directory
   closedir($dhandle);
}

echo "<select name=\"file\">\n";
// Now loop through the files, echoing out a new select option for each one
foreach( $files as $fname )
{
   echo "<option>{$fname}</option>\n";
}
echo "</select>\n";
?></td>
    </tr>

e poi mi dite come posso togliere il notice ad questa riga:
$pieces = explode("|", addslashes($_GET["cat"]));
$dhandle = opendir('../public/photo/'.$pieces[1].'');

che essendo non initializzato all'inizio mi salta fuori un notice.

mi date una mano?

grazie mille.
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Modifica questa porzione di codice:
PHP:
// open the current directory 
$pieces = explode("|", addslashes($_GET["cat"])); 
$dhandle = opendir('../public/photo/'.$pieces[1].''); 
// define an array to hold the files 
$files = array(); 

if ($dhandle) { 
   // loop through all of the files 
   while (false !== ($fname = readdir($dhandle))) { 
      // if the file is not this file, and does not start with a '.' or '..', 
      // then store it for later display 
      if (($fname != '.') && ($fname != '..') && 
          ($fname != basename($_SERVER['PHP_SELF']))) { 
          // store the filename 
          $files[] = (is_dir( "./$fname" )) ? "(Dir) {$fname}" : $fname; 
      } 
   } 
   // close the directory 
   closedir($dhandle); 
}
Così:
PHP:
if (isset($_GET['cat'])) {
    $files = array();
    $pieces = explode('|', addslashes($_GET['cat']));

    $dir = "../public/photo/{$pieces[1]}";

    if (is_dir($dir) && is_readable($dir)) {
        $files = glob("{$dir}/*");

        foreach ($files as $fname) {
            if ($fname == '.' || $fname == '..' || $fname == basename($_SERVER['PHP_SELF'])) {
                continue;
            }

            $files[] = is_dir($fname) ? "(Dir) {$fname}" : $fname;
        }
    }
}
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
ok, va quasi bene solo che vorrei solo il nome del file e non tutto il percorso..

poi un'altra cosa che mi si ripetono i file.
ecco il codice con la tua modifica.
PHP:
<tr>
      <td>Seleziona Foto</td>
      <td><?php
if (isset($_GET['cat'])) {
    $files = array();
    $pieces = explode('|', addslashes($_GET['cat']));

    $dir = "../public/photo/{$pieces[1]}";

    if (is_dir($dir) && is_readable($dir)) {
        $files = glob("{$dir}/*");

        foreach ($files as $fname) {
            if ($fname == '.' || $fname == '..' || $fname == basename($_SERVER['PHP_SELF'])) {
                continue;
            }

            $files[] = is_dir($fname) ? "(Dir) {$fname}" : $fname;
        }
    }
}  

echo "<select name=\"_url\">\n";
// Now loop through the files, echoing out a new select option for each one
foreach( $files as $fname )
{
   echo "<option>{$fname}</option>\n";
}
echo "</select>\n";
?></td>
    </tr>
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Modifica questa linea:
PHP:
$files[] = is_dir($fname) ? "(Dir) {$fname}" : $fname;
Così:
PHP:
$files[basename($fname)] = is_dir($fname) ? "(Dir) {$fname}" : $fname;
Questa:
PHP:
foreach ($files as $fname) {
Così:
PHP:
foreach ($files as $display_name => $fname) {
E questa:
PHP:
echo "<option>{$fname}</option>\n";
Così:
PHP:
echo "<option value=\"{$display_name}\">{$fname}</option>\n";
Per quanto riguarda il problema della ripetizione dei file, mi sembra strano... In che senso si ripetono?
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
ok, ho fatto cosi:
PHP:
<tr>
      <td>Seleziona Foto</td>
      <td><?php
if (isset($_GET['cat'])) {
    $files = array();
    $pieces = explode('|', addslashes($_GET['cat']));

    $dir = "../public/photo/{$pieces[1]}";

    if (is_dir($dir) && is_readable($dir)) {
        $files = glob("{$dir}/*");

        foreach ($files as $fname) {
            if ($fname == '.' || $fname == '..' || $fname == basename($_SERVER['PHP_SELF'])) {
                continue;
            }

           $files[basename($fname)] = is_dir($fname) ? "(Dir) {$fname}" : $fname;  
        }
    }
}  

echo "<select name=\"_url\">\n";
// Now loop through the files, echoing out a new select option for each one
foreach ($files as $display_name => $fname)  
{
  echo "<option value=\"{$display_name}\">{$fname}</option>\n";  
}
echo "</select>\n";
?></td>
    </tr>

ma è come prima e non so se ho fatto le modifiche giuste..

ti allego un'immagine per farti vedere quello che fa:
http://i51.tinypic.com/106k65l.jpg

Mi dici come mai?

grazie mille.
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
ha ecco perché

ho visto l'html e cosi:
PHP:
<option value="0">../public/photo/Pirografia/19102009305.jpg</option>
<option value="1">../public/photo/Pirografia/19102009306.jpg</option>
<option value="2">../public/photo/Pirografia/19102009307.jpg</option>
<option value="19102009305.jpg">../public/photo/Pirografia/19102009305.jpg</option>
<option value="19102009306.jpg">../public/photo/Pirografia/19102009306.jpg</option>
<option value="19102009307.jpg">../public/photo/Pirografia/19102009307.jpg</option>

come mai?

grazie mille.
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
Scusami, ho invertito i valori. Scrivi:
PHP:
echo "<option value=\"{$fname}\">{$display_name}</option>";
Dev'essere l'Alzheimer che avanza. :D

ok, cosi funziona..

ma solo che non so dove escono 1 2 3 4 5 etc.. poi i nomi delle foto vere..

ad esempio ci sono 14 foto prima ci stanno i numeri da 1 a 14 e poi ci stanno i nominativi delle foto...

e non so nemmeno io dove escono i numeri... hai qualche idea?

Hai visto l'immagine che ti ho allegato?

grazie mille.
buona giornata.
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
scusa, ma c'è un altro problema .. solo che lo stampa nell'html invece a video:


<td><select name="_url">
<br />
<b>Notice</b>: Undefined variable: files in <b>D:\xampp\htdocs\mc2\admin\ph_aggiungi.php</b> on line <b>140</b><br />
<br />
<b>Warning</b>: Invalid argument supplied for foreach() in <b>D:\xampp\htdocs\mc2\admin\ph_aggiungi.php</b> on line <b>140</b><br />
</select>

come si risolve?

grazie.
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
Così come, scusa? Mi sono perso qualcosa? :D

mi genera l'html cosi: e nel menu a tendina fa visualizzare prima i numeri e dopo i nomi veri propri delle foto.

PHP:
<option value="0">../public/photo/Pirografia/19102009305.jpg</option>
<option value="1">../public/photo/Pirografia/19102009306.jpg</option>
<option value="2">../public/photo/Pirografia/19102009307.jpg</option>
<option value="19102009305.jpg">../public/photo/Pirografia/19102009305.jpg</option>
<option value="19102009306.jpg">../public/photo/Pirografia/19102009306.jpg</option>
<option value="19102009307.jpg">../public/photo/Pirografia/19102009307.jpg</option>


e questo che dicevo.
per caso è l'array?
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Modifica lo script in questo modo:
PHP:
<tr>
    <td>Seleziona Foto</td>
    
    <td>
        <?php
        if (isset($_GET['cat'])) {
            $images = array();
            $pieces = explode('|', addslashes($_GET['cat']));

            $dir = "../public/photo/{$pieces[1]}";

            if (is_dir($dir) && is_readable($dir)) {
                $files = glob("{$dir}/*");

                foreach ($files as $fname) {
                    if (
                        $fname == '.' ||
                        $fname == '..' ||
                        $fname == basename($_SERVER['PHP_SELF'])
                    ) {
                        continue;
                    }

                    if (is_dir($fname)) {
                        $images[basename($fname)] = "(Dir) {$fname}";
                    }
                    else {
                        $images[basename($fname)] = $fname;
                    }
                }
            }
        }

        echo "<select name=\"_url\">\n";
        
        foreach ($images as $display_name => $fname) {
            echo "<option value=\"{$display_name}\">{$fname}</option>\n";
        }
        
        echo "</select>\n";
        ?>
    </td>
</tr>
Così dovrebbe funzionare.
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
ok funziona solo che quando non c'è nulla risalgono di nuovo i notice

<tr>
<td>Seleziona Foto</td>


<td>
<select name="_url">
<br />
<b>Notice</b>: Undefined variable: images in <b>D:\xampp\htdocs\mc2\admin\ph_aggiungi.php</b> on line <b>151</b><br />
<br />
<b>Warning</b>: Invalid argument supplied for foreach() in <b>D:\xampp\htdocs\mc2\admin\ph_aggiungi.php</b> on line <b>151</b><br />

</select>
</td>
</tr>

ti ringrazio molto per l'aiuto che mi stai dando..

grazie buona serata a domani mattina.

ciao.
 
Discussioni simili
Autore Titolo Forum Risposte Data
T Problema con gestione menu laterale HTML e CSS 6
A Gestione array multidimensionale PHP 6
andreas88 Gestione Profilo OnlyFans Leggi, Normative e Fisco 0
A Creazione cookie e gestione accessi PHP 0
B form gestione input PHP 2
sbolde91 Consiglio gestione Hosting Hosting 2
E Gestione profilo utente tramite Form PHP 3
S cerco esperto gestione ecommerce Offerte e Richieste di Lavoro e/o Collaborazione 0
P Curiosità su grandi aziende e la gestione delle grafiche. Discussioni Varie 1
M Consiglio sulla gestione di Gerarchie Database 0
A attributo "min" per input gestione date PHP 8
L Gestione DB ASP.NET 2
L Consiglio SEO gestione dominio + free hosting SEO e Posizionamento 6
avalon95 [WordPress] Gestione database annunci WordPress 0
G [PHP] gestione mouse PHP 2
B Gestione Prenotazioni con Mysql Database 21
D CREAZIONE E GESTIONE SITO E-COMMERCE Offerte e Richieste di Lavoro e/o Collaborazione 2
P (Cerco) Collaboratori per gestione social media Offerte e Richieste di Lavoro e/o Collaborazione 5
psicomia Gestione funzione in javascript in tabella richiamare"textarea" valori preimpostati in "select" Javascript 2
brasoft2019 [PHP] Sistema di gestione presenze PHP 29
W Preventivo gestione ecommerce Discussioni Varie 1
E Cerco partner / socio per gestione sito di annunci incontri Offerte e Richieste di Lavoro e/o Collaborazione 0
K e-commerce per distribuzione e dettaglio con gestione magazzino E-Commerce 0
G [MS Access] Gestione biglietti [RISOLTO] MS Access 2
Jonn [WordPress] Gestione categorie e tags per sito eventi WordPress 2
felino Gestione dispositivi e Altri dispositivi Windows e Software 4
D Software per gestione account facebook? Social Media Marketing 1
D Cero Software Facebook gestione account Vendere e Acquistare pubblicita' online 0
M Offro servizio Incremento Follower e Gestione Profili Istagram Offerte e Richieste di Lavoro e/o Collaborazione 0
S elementi statistici - Matrice e Gestione Array PHP o Javascript Javascript 0
J [offro] hosting / installazione certificati ssl / gestione server Offerte e Richieste di Lavoro e/o Collaborazione 0
F [PHP] gestione meteo manuale per un gioco di ruolo PHP 1
bianca_dimulescu Gestione tabella e MySQL PHP 4
T Servizio gestione pagina Instagram Offerte e Richieste di Lavoro e/o Collaborazione 0
G Gestione e/o vendita hosting come libero professionista Leggi, Normative e Fisco 4
MatMac System [PHP] Gestione dinamica select-option PHP 3
xone [Vendo] Script gestionale php-mysql gestione pratiche Altri Annunci 0
S [PHP] Gestione coupon PHP 3
lxella [PHP] Aree riservate e gestione utenti PHP 1
D Gestione punteggi php PHP 1
B Cercasi socio per gestione sito web Offerte e Richieste di Lavoro e/o Collaborazione 0
G gestione pagina facebook Social Media Marketing 0
Cavalinho08 [Offro gestione pagine instagram, prezzo bassissimo] Annunci servizi di Social Media Marketing 3
D [VENDO] Gestione account instagram Annunci servizi di Social Media Marketing 2
N [VENDO] Gestione pagine FB Annunci servizi di Social Media Marketing 2
ientii [PHP] Gestione CheckBox PHP 1
W Consiglio su gestione di un form con XMLHttpRequest Ajax 0
booklisa Compressione immagini e gestione media CMS (Content Management System) 1
T gestione livelli sessioni php msqli PHP 1
giuseppe_123 [PHP] Gestione corsi PHP 1

Discussioni simili