menu select che visualizza le cartelle di una cartella

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
Salve, volevo sapere come faccio popolare un menu select che mi visualizza solo le cartelle dentro alla cartella public/photo/??

grazie mille e buona notte.
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Salve, volevo sapere come faccio popolare un menu select che mi visualizza solo le cartelle dentro alla cartella public/photo/??

grazie mille e buona notte.
Intendi solamente i nomi delle cartelle?

es.
PHP:
function prendi_directory_sotto($dir){
    $return = array();
    foreach(glob($dir.'*',GLOB_ONLYDIR) as $dir) array_push($return,basename($dir));
    return $return;
}

echo "<select name=dirs>";
foreach(prendi_directory_sotto('public/photo/') as $dir) echo "<option name=$dir>$dir</option>";
echo "</select>";
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
si intendo solo le cartelle...

ora come faccio fare la modifica e fare che si autoseleziona il menu.

il campo mio del database è _dir

come devo fare?

grazie mille e buona giornata
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
si intendo solo le cartelle...

ora come faccio fare la modifica e fare che si autoseleziona il menu.

il campo mio del database è _dir

come devo fare?

grazie mille e buona giornata
Fai un select al database e controlli il campo nel foreach se corrisponde con la directory

PHP:
//$result è il fetch di una query eseguita prima
foreach(prendi_directory_sotto('public/photo/') as $dir) echo "<option name=$dir ".($result['dir']==$dir?"selected":"").">$dir</option>";
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
ciao ho fatto cosi.. ma mi ripete le cartelle due volte.
ecco il codice:
PHP:
<?php echo "<select name=\"dir_select\">";?>
        <option>Seleziona</option>
        <?php
	$result = $db->query("SELECT * FROM photo_categorie");
	$_dir = !empty($_POST['dir_select']) ? $_POST['dir_select'] : $dir; 
	while($row = $result->fetch_array())
	{
	$_dir= $row['_dir'];
	$dir = $row['_dir'];
	  if($_dir==$dir)
				{
				foreach(prendi_directory_sotto('../public/media/photo/') as $dir)
				{
				 echo "<option value=\"".$dir."\" selected='selected'>".$_dir."</option>";
				}
				}
				else
				 {
					 echo "<option value='".$id."'>".$_dir."</option>";
				}
		
			
	}
	 
?>
      </select>

e un po incasinato ma quando funziona lo faccio a modo.
idee?
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Scusami, ma che senso ha questa parte? Sarà sempre vera
PHP:
    $_dir= $row['_dir']; 
    $dir = $row['_dir']; 
      if($_dir==$dir)

Inoltre ti serve confrontare la directory da query o da una variabile post inviata? E togli il while anche


te l'ho un po riformulato
PHP:
    $result = $db->query("SELECT * FROM photo_categorie")->fetch_array(); 
    $directory_database = $result['_dir'];
                foreach(prendi_directory_sotto('../public/media/photo/') as $dir) 
                { 
                     if($directory_database==$dir) 
                         echo "<option value=\"".$dir."\" selected='selected'>".$dir."</option>"; 
                      else 
                          echo "<option value='".$dir."'>".$dir."</option>"; 
                }

E dove sarebbe $id?
 
Ultima modifica:

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
ciao, l'id non serve perché ho fatto copia/incolla di un altro codice.

ora ti posto la modifica:
perché mi seleziona la directory sbagliata?
PHP:
<?php echo "<select name=\"dir\">";?>
        <option>Seleziona</option>
        <?php
	$directory_database = !empty($_POST['dir']) ? $_POST['dir'] : $dir; 
	$result = $db->query("SELECT * FROM photo_categorie")->fetch_array(); 
    $directory_database = $result['_dir'];
                foreach(prendi_directory_sotto('../public/media/photo/') as $dir) 
                { 
                     if($directory_database==$dir) 
                         echo "<option value=\"".$dir."\" selected='selected'>".$dir."</option>"; 
                      else 
                          echo "<option value=\"".$dir."\">".$dir."</option>"; 
                }  
	 
?>
      </select>

ad esempio seleziona pirografia invece lui fa cosi:
output html:

PHP:
<tr>
	<td width="14%">Directory</td>
	<td width="86%">
	<select name="dir">        <option>Seleziona</option>
        <option value="pirografia">pirografia</option><option value="scaglie-di-marmo" selected='selected'>scaglie-di-marmo</option>      </select>
</tr>

invece deve selezionare la pirografia perché ho selezionato la categoria pirografia.

non so come mai.

ti ringrazio moltissimo .

buona serata.
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Ah ma allora non centra il database, ti basta fare cosi

PHP:
    $directory = !empty($_POST['dir']) ? $_POST['dir'] : "directory_default";  //qui metti la directory di base che dovrebbe essere selezionata
                foreach(prendi_directory_sotto('../public/media/photo/') as $dir)  
                {  
                     if($directory==$dir)  
                         echo "<option value=\"".$dir."\" selected='selected'>".$dir."</option>";  
                      else  
                          echo "<option value=\"".$dir."\">".$dir."</option>";  
                }

Ulteriore correzione(alla funzione che avevo fatto), sostituisci in prendi_directory_sotto
PHP:
array_push($return,basename($dir));

con
PHP:
$return[] = basename($dir);
perché è un po più veloce se non si deve aggiungere valori multipli
 
Ultima modifica:

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
invece si .. perché devo recuperare anche la cartella che è inserito nel campo _dir,
e visualizzarla nel menu select.
e poi l'utente potrebbe cambiarla e cosi via.

ma mi sono accorto che seleziona sempre l'ultima ovvero sempre "scaglie-di-marmo".

o provato ad fare un'altra cartella "prova" e lui mi seleziona sempre scaglie-di-marmo.

come mai?

grazie mille.
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
invece si .. perché devo recuperare anche la cartella che è inserito nel campo _dir,
e visualizzarla nel menu select.
e poi l'utente potrebbe cambiarla e cosi via.

ma mi sono accorto che seleziona sempre l'ultima ovvero sempre "scaglie-di-marmo".

o provato ad fare un'altra cartella "prova" e lui mi seleziona sempre scaglie-di-marmo.

come mai?

grazie mille.
Per caso quella cartella l'hai messa come predefinita? Comunque allora come dev'essere la comparazione?

-Se la variabile post corrisponde ad una delle directory ciclate questa viene selezionata?
-Se il risultato di una query ha il campo _dir corrispondente con una delle directory ciclate questa viene selezionata?
-Se.... ?
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
-Se il risultato di una query ha il campo _dir corrispondente con una delle directory ciclate questa viene selezionata?
questa.
ma non so come mai non vada.

come si può fare?

grazie mille.
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
-Se il risultato di una query ha il campo _dir corrispondente con una delle directory ciclate questa viene selezionata?
questa.
ma non so come mai non vada.

come si può fare?

grazie mille.
Allora a cosa ti serve l'altra variabile post? Questa era quella di prima cioè
PHP:
    $result = $db->query("SELECT * FROM photo_categorie")->fetch_array(); 
    $directory_database = $result['_dir'];
                foreach(prendi_directory_sotto('../public/media/photo/') as $dir) 
                { 
                     if($directory_database==$dir) 
                         echo "<option value=\"".$dir."\" selected='selected'>".$dir."</option>"; 
                      else 
                          echo "<option value='".$dir."'>".$dir."</option>"; 
                }

Per caso volevi controllare la sua esistenza nel database con la variabile post?
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
Allora a cosa ti serve l'altra variabile post? Questa era quella di prima cioè
PHP:
    $result = $db->query("SELECT * FROM photo_categorie")->fetch_array(); 
    $directory_database = $result['_dir'];
                foreach(prendi_directory_sotto('../public/media/photo/') as $dir) 
                { 
                     if($directory_database==$dir) 
                         echo "<option value=\"".$dir."\" selected='selected'>".$dir."</option>"; 
                      else 
                          echo "<option value='".$dir."'>".$dir."</option>"; 
                }

Per caso volevi controllare la sua esistenza nel database con la variabile post?

ciao,la variabile post mi serviva per rimanere in memoria il menu selezionato se l'utente deve ancora scrivere gli altri dati e per sabglio da invio.
ora provo questo codice.

ciao e buona serata.
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
ciao,la variabile post mi serviva per rimanere in memoria il menu selezionato se l'utente deve ancora scrivere gli altri dati e per sabglio da invio.
ora provo questo codice.

ciao e buona serata.

Ah ora ho capito, allora cosi dovrebbe andare

PHP:
$dir_post = !empty($_POST['dir']) ? $_POST['dir'] : null;
$result = $db->query("SELECT * FROM photo_categorie")->fetch_array();  
    $dir_database = $result['_dir']; 
                foreach(prendi_directory_sotto('../public/media/photo/') as $dir)  
                {  
                     if($dir_post==$dir)
                             echo "<option value=\"$dir\" selected='selected'>$dir</option>"; 
                     elseif($dir_database==$dir && $dir_post==null)  
                         echo "<option value=\"$dir\" selected='selected'>$dir</option>";  
                      else  
                          echo "<option value=\"$dir\">$dir</option>";  
                }
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
ok risolto problema questo va ad dovere:
PHP:
<tr>
	<td width="14%">Directory</td>
	<td width="86%">
	<?php echo "<select name=\"dir\">";?>
    <option>Seleziona</option>
<?php

	$result = $db->query("SELECT * FROM photo_categorie");
	$dir = !empty($_POST['dir']) ? $_POST['dir'] : $dir; 
	$row = $result->fetch_array();
	$db_dir = $row["_dir"];
	foreach(prendi_directory_sotto('../public/media/photo/') as $db_dir)
    {
            
	 if($db_dir==$dir)
                {
                 echo "<option value=\"".$db_dir."\" selected='selected'>".$db_dir."</option>\n";
                }
                else
                 {
                     echo "<option value='".$db_dir."'>".$db_dir."</option>\n";
                }
			
	}
?>
    </select>
</tr>

non so come funziona ma funziona vedendo l'output dell'html e le modfiiche nel db fa quello che volevo faccesse.

ti ringrazio molto.
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
ok risolto problema questo va ad dovere:
PHP:
<tr>
	<td width="14%">Directory</td>
	<td width="86%">
	<?php echo "<select name=\"dir\">";?>
    <option>Seleziona</option>
<?php

	$result = $db->query("SELECT * FROM photo_categorie");
	$dir = !empty($_POST['dir']) ? $_POST['dir'] : $dir; 
	$row = $result->fetch_array();
	$db_dir = $row["_dir"];
	foreach(prendi_directory_sotto('../public/media/photo/') as $db_dir)
    {
            
	 if($db_dir==$dir)
                {
                 echo "<option value=\"".$db_dir."\" selected='selected'>".$db_dir."</option>\n";
                }
                else
                 {
                     echo "<option value='".$db_dir."'>".$db_dir."</option>\n";
                }
			
	}
?>
    </select>
</tr>

non so come funziona ma funziona vedendo l'output dell'html e le modfiiche nel db fa quello che volevo faccesse.

ti ringrazio molto.
Quindi in pratica la query non ti serviva :), perché qui il risultato viene subito sovrascritto dall'elemento dell'array
PHP:
	$db_dir = $row["_dir"];
	foreach(prendi_directory_sotto('../public/media/photo/') as $db_dir)
    {
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
infatti non serviva.. perché doveva ciclare le cartelle nella cartella public/media/photo.
e nel menu a tendina selezionare quella che è stata inserita nel database e mettere selected alla cartella denrto public/media/photo.

però funziona lo stesso perché lo testata.

ti ringrazio molto. e buona giornata.
 
Discussioni simili
Autore Titolo Forum Risposte Data
G Colorare menu select attraverso ricerca php PHP 0
D Sono disperato: Menu select dinamici con Ajax e PHP PHP 1
D Sono disperato: Menu select dinamici con Ajax e PHP Ajax 2
L Modifica menu select PHP 6
pierantonio stampare dati richiamati da un menu tipo select Javascript 2
pierantonio stampare dati richiamati sa un menu tipo select PHP 4
C Roundec Corner Select ( Dropdown menu) HTML e CSS 1
M valore variabile contenuta in menu select Javascript 3
T problemi con dati menu a tendina HTML e CSS 2
A menu a tendina php PHP 1
M Accordion menu e posizione div HTML e CSS 0
F Menu responsive larghezza schermo HTML e CSS 2
M Creazione menu a tendina Javascript 3
D menu con submenu orizzontale HTML e CSS 0
Cosina Menu fisso copre i titoli quando cliccati nel sommario jQuery Javascript 4
G creazione menu a tendina e invio a pagina php PHP 1
P Sub menu con Collapse. Javascript 0
R abilitare menu a tendina tramite relativa chekbox PHP 17
L Aiuto creazione menu mancante WordPress 0
S spostare il pulsante menu dropdown HTML e CSS 8
F Dropdown menu con tabella PHP 33
Spown [WordPress] Problemi visualizzazione su più browser + voci menu in movimento WordPress 1
A [WordPress] Menu bar WordPress 0
W [WordPress] Non si vedono le categorie da aggiungerle al Top Menu WordPress 3
M Inviare variabili da menu a tendina a pagina php con post PHP 6
M [PHP] Selezione da menu a discesa con 2 variabili PHP 0
F [WordPress] [HTML] Aggiungere una pagina solo allo sticky menu WordPress 4
M [PHP] Creare un menu a tendina con pdo PHP 18
M [Javascript] Caricamento menu da file esterno Javascript 8
W [HTML] Animazione menu mobile HTML e CSS 0
P [HTML] Eliminare doppio menu in wordpress WordPress 2
andreas88 [PHP] menu PHP 15
K [ASP.Net] Realizzazione menu a tendina dipendenti ASP.NET 1
M [HTML] problema spazio aggiuntivo tra elementi <li> di menu a tendina HTML e CSS 1
L [css e html] destra e sinistra (menu navigazione) HTML e CSS 3
P [Gratuito][Cerco] qualcuno per fare menu a tendina ottimizzato per mobile-responsive con css e html Offerte e Richieste di Lavoro e/o Collaborazione 3
P [HTML] Problema con menu orizzontale a tendina per sito web HTML e CSS 17
P [Javascript] Voce del menu evidenziata in base alla pagina attiva Javascript 48
V [WordPress] Come modificare link in tasto menu css WordPress 21
S [Javascript] [CSS] Spazio Bianco tra Slider e Menu foto Javascript 6
P [Javascript] problema menu responsive su aruba, editor bk Javascript 1
Hellgrom90 Hamburger menu non si chiude jQuery 1
K [Javascript] Finestra menu Javascript 1
Selenio89 [HTML] creare menu di navigazione HTML e CSS 2
C [Javascript] [HTML] Problemi: Overlay, Banner, Menu Javascript 4
C 3 Bug CSS AND HTML: Overlay-Banner-Menu HTML e CSS 0
C 3 BUG CSS AND HTML: OVERLAY - BANNER- MENU HTML e CSS 0
M [PHP] Menu a tendina dinamico che non si aggiorna PHP 2
U [PHP] Selezione con menu a tendina e recupero selezione PHP 5
M Riadattamento funzioni per far scomparire un menu. jQuery 4

Discussioni simili