Recursive Directory Listing e Menu a tendina...

Salve, ho questo codice trovato su un tutorial.

Mi dite come faccio ad fare in modo per visualizzare in un menu a tendina...

ecco il codice:

<?php

function getDirectory( $path = '.', $level = 0 ){

    $ignore = array( 'cgi-bin', '.', '..' );
    // Directories to ignore when listing output. Many hosts
    // will deny PHP access to the cgi-bin.

    $dh = @opendir( $path );
    // Open the directory to the handle $dh
    
    while( false !== ( $file = readdir( $dh ) ) ){
    // Loop through the directory
    
        if( !in_array( $file, $ignore ) ){
        // Check that this file is not to be ignored
            
            $spaces = str_repeat( '&nbsp;', ( $level * 4 ) );
            // Just to add spacing to the list, to better
            // show the directory tree.
            
            if( is_dir( "$path/$file" ) ){
            // Its a directory, so we need to keep reading down...
            
                echo "<strong>$spaces $file</strong><br />";
                getDirectory( "$path/$file", ($level+1) );
                // Re-call this same function but on a new directory.
                // this is what makes function recursive.
            
            } else {
            
                echo "$spaces $file<br />";
                // Just print out the filename
            
            }
        
        }
    
    }
    
    closedir( $dh );
    // Close the directory handle

}
getDirectory( "./public/photo/atleti/img_small/" ); 
?>

il menu a tendina è cosi:

<select name="picurl" >

   <option value="0" selected>Seleziona</option>

<option value="<?php echo $file; ?>" ><?php echo $file; ?></option>

</select>

La variabile $file , ci deve stare il percorso.

Mi dite come fare?.

grazie.

inviato 7 anni fa
luigi
X 0 X

nessuno? :)

risposto 7 anni fa
luigi
X 0 X
nessuno? :)

Per quale ragione hai fatto questa domanda? Un po' di pazienza no?

Ora analizzando il codice della funzione che hai trovato: essa stampa il contenuto di una directory:

                echo "<strong>$spaces $file</strong><br />";

Ti basterebbe cambiare l'output come più ti piace per avere l'elenco.

In più nel forum già è stato discusso poco tempo fa qualcosa inerente alla lettura dei file in una directory, prova a dare una letta a questa discussione:

http://www.phpnews.it/forum/programmazione-php/oop-syntax-error/

risposto 7 anni fa
Mario Santagiuliana
X 0 X

allora, mi hanno aiutato nei vari forum e ho scritto questo qui:

<?php

function getDirectory( $path = '.', $level = 0 ){

    $ignore = array( 'cgi-bin', '.', '..' );
    // Directories to ignore when listing output. Many hosts
    // will deny PHP access to the cgi-bin.

    $dh = @opendir( $path );
    // Open the directory to the handle $dh
    
    while( false !== ( $file = readdir( $dh ) ) ){
    // Loop through the directory
    
        if( !in_array( $file, $ignore ) ){
        // Check that this file is not to be ignored
            
            $spaces = str_repeat( '&nbsp;', ( $level * 4 ) );
            // Just to add spacing to the list, to better
            // show the directory tree.
            
            if( is_dir( "$path/$file" ) ){
            // Its a directory, so we need to keep reading down...
                 
                //echo "<strong>$spaces $file</strong><br />";
                getDirectory( "$path/$file", ($level+1) );
                
            print '<option class="dir" value="'.$path.'/'.$file.'" >'.$path.' '.$file.'</option>';
                // Re-call this same function but on a new directory.
                // this is what makes function recursive.
            
            } else {
            
                // echo "$spaces $file<br />";
                // Just print out the filename
            print '<option class="file" value="'.$path.'/'.$file.'" >'.$path.'/'.$file.'</option>';
            
            }
        
        }
    
    }
    
    closedir( $dh );
    // Close the directory handle

}
print '<select name="picurl">';
print '<option value="0" selected>Seleziona</option>';
getDirectory( "../../public/photo/atleti/img_small");
print '</select>';
?>

però io nel db devo salvare in questo modo /public/photo/atleti/img_small/prova.jpg o

/public/photo/atleti/img_small/provacartella/pippo.jpg

nel campo picurl.

Ora chiedo come faccio ad ignorare i .. / .. / nella lista generata del menu a tendina?.

grazie vi chiedo questo piccolo aiuto.

grazie mille.

risposto 7 anni fa
luigi
X 0 X

ad esempio mi stampa l'output in questo modo

<option class="file" value="../../public/photo/atleti/img_small/5209.jpg" >../../public/photo/atleti/img_small/5209.jpg</option

io nel value vorrei value="/public/photo/atleti/img_small/5209.jpg">

o ansi value="5209.jpg">

cosi dopo salvo nel db solo il nome giusto.

Mi dite come fare?

grazie.

risposto 7 anni fa
luigi
X 0 X

Scusa una domanda: in quali altri forum? Mi sembrava una modifica veramente banale...

Potresti anche indicare i link in modo da evitare crossposting!!!

Poi, la tua domanda è di facile risoluzione, tu hai l'output nella funzione così:

            print '<option class="dir" value="'.$path.'/'.$file.'" >'.$path.' '.$file.'</option>';

se vuoi avere solo il nome del file nel value basta solo che stampi il nome del file e non anche la variabile path:

            print '<option class="dir" value="'.$file.'" >'.$path.' '.$file.'</option>';

Hai una ragione particolare per usare print invece di echo?

risposto 7 anni fa
Mario Santagiuliana
X 0 X

ciao. eccoti:come mi hanno risolto il problema:

<?php

function getDirectory( $path = '.', $level = 0 ){

    $ignore = array( 'cgi-bin', '.', '..' );

    // Directories to ignore when listing output. Many hosts

    // will deny PHP access to the cgi-bin.

    $dh = @opendir( $path );

    // Open the directory to the handle $dh

    

    while( false !== ( $file = readdir( $dh ) ) ){

    // Loop through the directory

    

        if( !in_array( $file, $ignore ) ){

        // Check that this file is not to be ignored

            

            $spaces = str_repeat( '&nbsp;', ( $level * 4 ) );

            // Just to add spacing to the list, to better

            // show the directory tree.

            

            if( is_dir( "$path/$file" ) ){

            // Its a directory, so we need to keep reading down...

                 

                //echo "<strong>$spaces $file</strong><br />";

                getDirectory( "$path/$file", ($level+1) );

                

            print '<option class="dir" value="/'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.'" >/'.substr('../'.$path, strrpos('../'.$path, '../')+3).' '.$file.'</option><br>';

                // Re-call this same function but on a new directory.

                // this is what makes function recursive.

            

            } else {

            

                // echo "$spaces $file<br />";

                // Just print out the filename

            print '<option class="file" value="/'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.'" >/'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.'</option><br>';

            

            }

        

        }

    

    }

    

    closedir( $dh );

    // Close the directory handle

}

print '<select name="picurl">';

print '<option value="0" selected>Seleziona</option>';

getDirectory( "../../public/photo/atleti/img_small");

print '</select>';

?>
risposto 7 anni fa
luigi
X 0 X

Scusa...non credevo che la mia soluzione ti desse così tanti problemi da richiedere l'aiuto su un altro forum...che tutt'ora non ci hai indicato...

Comunque chiedevi solo il nome del file:

o ansi value="5209.jpg">

E' quello che ti avevo suggerito...

Tutte queste operazioni sono operazioni basilari di manipolazione di stringhe...

risposto 7 anni fa
Mario Santagiuliana
X 0 X

un'altra cosa, ora sono ad fare la parte della modifica:

dovrei aggiungere queste rige di codice:

<?php if($picurl=="".$file."") echo 'selected'?>

esempio codice:

       <option value="<?php echo $file; ?>" <?php if($picurl=="".$file."") echo 'selected'?>><?php echo $file; ?></option>

$picurl = $r["_picUrl"]; <-- questo lo ricava nel db.

dove devo mettere quel pezzo di codice in questo:

<?php

function getDirectory( $path = '.', $level = 0 ){

    $ignore = array( 'cgi-bin', '.', '..' );

    // Directories to ignore when listing output. Many hosts

    // will deny PHP access to the cgi-bin.

    $dh = @opendir( $path );

    // Open the directory to the handle $dh

    

    while( false !== ( $file = readdir( $dh ) ) ){

    // Loop through the directory

    

        if( !in_array( $file, $ignore ) ){

        // Check that this file is not to be ignored

            

            $spaces = str_repeat( '&nbsp;', ( $level * 4 ) );

            // Just to add spacing to the list, to better

            // show the directory tree.

            

            if( is_dir( "$path/$file" ) ){

            // Its a directory, so we need to keep reading down...

                 

                //echo "<strong>$spaces $file</strong><br />";

                getDirectory( "$path/$file", ($level+1) );

                

            print '<option class="dir" value="/'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.'" >/'.substr('../'.$path, strrpos('../'.$path, '../')+3).' '.$file.'</option><br>';

                // Re-call this same function but on a new directory.

                // this is what makes function recursive.

            

            } else {

            

                // echo "$spaces $file<br />";

                // Just print out the filename

            print '<option class="file" value="/'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.'" >/'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.'</option><br>';

            

            }

        

        }

    

    }

    

    closedir( $dh );

    // Close the directory handle

}

print '<select name="picurl">';

print '<option value="0" selected>Seleziona</option>';

getDirectory( "../../public/photo/atleti/img_small");

print '</select>';

?>

grazie mille e buona giornata.

risposto 7 anni fa
luigi
X 0 X

un'altra cosa, ora sono ad fare la parte della modifica:

dovrei aggiungere queste rige di codice:

<?php if($picurl=="".$file."") echo 'selected'?>

esempio codice:

       <option value="<?php echo $file; ?>" <?php if($picurl=="".$file."") echo 'selected'?>><?php echo $file; ?></option>

$picurl = $r["_picUrl"]; <-- questo lo ricava nel db.

dove devo mettere quel pezzo di codice in questo:

 :o :o :o :o :o :o

Ma lo hai detto te dove inserire quel pezzo di codice...dove sta il problema?

Insomma, senza offesa, ma sembra stai prendendo per il sedere il forum...non capisco se è così o se proprio non riesci a capire il php...

risposto 7 anni fa
Mario Santagiuliana
modificato 7 anni fa
X 0 X

ok,

ma non capisco come si deve inserire l'if:

if($picurl=="".$file."") echo 'selected'?>

Perchè non so la sintassi giusta per inserirlo nelle print.

hai qualche idea?.

risposto 7 anni fa
luigi
X 0 X

Ok, ora è una richiesta più sensata...

Potresti fare così:

            if($picurl == $file)
               $_selected = "selected";
            else
               $_selected = "";

            if( is_dir( "$path/$file" ) ){
            // Its a directory, so we need to keep reading down...
                 
                //echo "<strong>$spaces $file</strong><br />";
                getDirectory( "$path/$file", ($level+1) );
                
            print '<option class="dir" value="/'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.' '.$_selected.'" >/'.substr('../'.$path, strrpos('../'.$path, '../')+3).' '.$file.'</option><br>';
                // Re-call this same function but on a new directory.
                // this is what makes function recursive.
            
            } else {
            
                // echo "$spaces $file<br />";
                // Just print out the filename
            print '<option class="file" value="/'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.' '.$_selected.'" >/'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.'</option><br>';
risposto 7 anni fa
Mario Santagiuliana
X 0 X

non riesco a capire come mai non funziona:

ora ti posto tutta la pagina.

ecco

mi vedi perchè non funziona , non mi seleziona la fotografia

<?php 

require_once(dirname(__FILE__) . '/../auth.php');

require_once(dirname(__FILE__) . '/../../include.php');

require_once(dirname(__FILE__) . '/../header.php');?>

<?

?><script type="text/javascript" src="/jscripts/tiny_mce/tiny_mce.js"></script><script type="text/javascript">

        tinyMCE.init({

            // General options

            mode: "textareas",

            theme: "advanced",

            plugins: "safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",

            // Theme options

            theme_advanced_buttons1: "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect",

            theme_advanced_buttons2: "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",

            theme_advanced_buttons3: "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",

            theme_advanced_buttons4: "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak",

            theme_advanced_toolbar_location: "top",

            theme_advanced_toolbar_align: "left",

            theme_advanced_statusbar_location: "bottom",

            theme_advanced_resizing: true,

            // Example content CSS (should be your site CSS)

            content_css: "css/content.css",

            // Drop lists for link/image/media/template dialogs

            template_external_list_url: "lists/template_list.js",

            external_link_list_url: "lists/link_list.js",

            external_image_list_url: "lists/image_list.js",

            media_external_list_url: "lists/media_list.js",

            // Replace values for the template plugin

            template_replace_values: {

                username: "Some User",

                staffid: "991234"

            }

        });

</script>

<ul id="maintab">

<li  ><a href="/admin/default/">Home</a></li>

<li ><a href="/admin/news/">Post</a></li>

<li><a href="/admin/photo/">Photo</a></li>

<li class="selected"><a href="/admin/atleti/">Atleti</a></li>

<li><a href="/admin/logout.php">Logout</a></li>

</ul>

<div id="tabcontent" class="clearfix">

<ul class="selected">

<li><a href="add.php">Aggiungi</a></li>

<li><a href="edit_list.php">Elementi da modificare</a></li>

<li><a href="list_cat.php">Lista Categorie</a></li>

<li><a href="upload.php">Upload</a></li>

</ul>

</div>

<?php

if($_POST)

{

$categoria = mysql_codifica($_POST["categoria"]);

$title = mysql_codifica($_POST["title"]);

$author = mysql_codifica($_POST["autore"]);

$news = mysql_codifica($_POST["news"]);

$data = mysql_codifica($_POST["data"]);

$attivita = mysql_codifica($_POST["attivita"]);

$id = mysql_codifica((int)$_GET["Id"]);

$picurl= mysql_codifica($_POST["picurl"]);

if($categoria =="seleziona")

{

$error = "Non Hai inserito la notizia";

}

elseif($data =="")

{

$error = "Non Hai inserito la data";

}elseif($picurl =="seleziona")

{

$error = "Non Hai inserito la notizia";

}else

{

$query = "UPDATE atleti_images SET iCatId=$categoria, _subject='$title', _picUrl='$picurl',_picDesc='$news' , _picData='$data', _picStatus='$attivita' WHERE atletiId = $id";

$result = mysql_query($query);

$error =  "<p style=\"background-color:red;color:black;\" align=\"center\">News salvata. Attendere prego..</p>";

redirect("index.php",5);

}

}

$id = mysql_codifica((int)$_GET["Id"]);

$query = "SELECT * FROM atleti_images WHERE atletiId = $id";

$result = mysql_query($query);

if(empty($id)) {

echo  "ID non specificato";

}

elseif (mysql_num_rows($result) == 0) { echo "Record non trovato"; }

else

{

while($r=mysql_fetch_array($result))

{   

/* Questo inizializza i dati di ogni riga come variabile, per rendere semplice la visualizzazione */

$title=$r["_subject"];

$news=$r["_picDesc"];

$categoria=$r["iCatId"];

$attivita=$r["_picStatus"];

$data=$r["_picData"];

$picurl = $r["_picUrl"];

/* Ora visualizziamo la form per le modifiche */

echo "".$error."";

?>

    <form name="edit_process.php" method="post" action="edit.php?Id=<?php echo mysql_codifica($_GET["Id"]); ?>">

  <table width="100%" border="0" cellspacing="2" cellpadding="2">

    <tr>

      <td>Inserire il titolo</td>

      <td><input type="text" name="title" value="<?php echo $title; ?>" /></td>

    </tr>

    <tr>

      <td>Seleziona Categoria</td>

      <td><select name="categoria" >

        <option value="0">Seleziona</option>

        <?php

   $result = mysql_query("SELECT * FROM atleti");

   

   while($row = mysql_fetch_array($result))

   {

   $nome= $row['cName'];

   $idc = $row['atletiId'];

  ?>

        <option value="<?php echo $idc; ?>" <?php if($categoria=="".$idc."") echo 'selected'?>><?php echo $nome; ?></option>

        <?php

  }

?>

      </select></td>

    </tr>

    <tr>

      <td>Seleziona Fotografia</td>

      <td>

     <?php

function getDirectory( $path = '.', $level = 0 ){

    $ignore = array( 'cgi-bin', '.', '..' );

    // Directories to ignore when listing output. Many hosts

    // will deny PHP access to the cgi-bin.

    $dh = @opendir( $path );

    // Open the directory to the handle $dh

    

    while( false !== ( $file = readdir( $dh ) ) ){

    // Loop through the directory

    

        if( !in_array( $file, $ignore ) ){

        // Check that this file is not to be ignored

            

            $spaces = str_repeat( '&nbsp;', ( $level * 4 ) );

            // Just to add spacing to the list, to better

            // show the directory tree.

            

              if($picurl == $file)

               $_selected = "selected";

            else

               $_selected = "";

            if( is_dir( "$path/$file" ) ){

            // Its a directory, so we need to keep reading down...

                 

                //echo "<strong>$spaces $file</strong><br />";

                getDirectory( "$path/$file", ($level+1) );

                

            print '<option class="dir" value="/'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.' '.$_selected.'" >/'.substr('../'.$path, strrpos('../'.$path, '../')+3).' '.$file.'</option><br>';

                // Re-call this same function but on a new directory.

                // this is what makes function recursive.

            

            } else {

            

                // echo "$spaces $file<br />";

                // Just print out the filename

            print '<option class="file" value="/'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.' '.$_selected.'" >/'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.'</option><br>';  }

        

        }

    

    }

    

    closedir( $dh );

    // Close the directory handle

}

print '<select name="picurl">';

print '<option value="0" selected>Seleziona</option>';

getDirectory( "../../public/photo/atleti/img_small");

print '</select>';

?> 

     

    </td>

    </tr>

    <tr>

      <td>Data</td>

      <td><input type="text" name="data" value="<?php echo $data ?>" /></td>

    </tr>

    <tr>

      <td>Descrizione</td>

      <td><textarea name="news" cols="40" rows="6"><?php echo $news;?></textarea></td>

    </tr>

    <tr>

      <td>Pubblicazione</td>

      <td><select name="attivita">

        <option value="0">:: seleziona ::</option>

        <option value="0" selected="selected" <?php if($attivita==0) echo 'selected="selected"'?>>Dissativato</option>

        <option value="1" <?php if($attivita==1) echo 'selected="selected"'?>>Pubblicato</option>

      </select></td>

    </tr>

    <tr>

      <td>&nbsp;</td>

      <td><input type="submit" name="Submit" value="Save" /></td>

    </tr>

  </table>

</form>

<?php

}

}

mysql_close($db);

?>
risposto 7 anni fa
luigi
X 0 X

$picurl non è una variabile globale, la devi passare nella funzione o definirla come variabile globale.

Passarla alla funzione mi sembra il sistema migliore.

Ciao

risposto 7 anni fa
Mario Santagiuliana
X 0 X

$picurl non è una variabile globale, la devi passare nella funzione o definirla come variabile globale.

Passarla alla funzione mi sembra il sistema migliore.

Ciao

è come si fà , però la picurl è un campo del database come faccio diventare una variabile globale?,

grazie mille.

risposto 7 anni fa
luigi
X 0 X

Fai prima a passarla come variabile:

getDirectory( "../../public/photo/atleti/img_small");

la fa diventare:

getDirectory( "../../public/photo/atleti/img_small", $picurl);

e nella funzione cambi così la testata:

function getDirectory( $path = '.', $picurl, $level = 0 ){
risposto 7 anni fa
Mario Santagiuliana
X 0 X

niente , non funziona o meglio funziona ma mi seleziona una foto diversa da quella che c'è dentro il db:

ad esempio c'è questa :

/public/photo/atleti/img_small/jpg/enrica-alfredo/4966_1.jpg

ma mi seleziona un'altra come mai?

ecco il codice:

<?php 

require_once(dirname(__FILE__) . '/../auth.php');

require_once(dirname(__FILE__) . '/../../include.php');

require_once(dirname(__FILE__) . '/../header.php');?>

<?

?><script type="text/javascript" src="/jscripts/tiny_mce/tiny_mce.js"></script><script type="text/javascript">

        tinyMCE.init({

            // General options

            mode: "textareas",

            theme: "advanced",

            plugins: "safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",

            // Theme options

            theme_advanced_buttons1: "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect",

            theme_advanced_buttons2: "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",

            theme_advanced_buttons3: "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",

            theme_advanced_buttons4: "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak",

            theme_advanced_toolbar_location: "top",

            theme_advanced_toolbar_align: "left",

            theme_advanced_statusbar_location: "bottom",

            theme_advanced_resizing: true,

            // Example content CSS (should be your site CSS)

            content_css: "css/content.css",

            // Drop lists for link/image/media/template dialogs

            template_external_list_url: "lists/template_list.js",

            external_link_list_url: "lists/link_list.js",

            external_image_list_url: "lists/image_list.js",

            media_external_list_url: "lists/media_list.js",

            // Replace values for the template plugin

            template_replace_values: {

                username: "Some User",

                staffid: "991234"

            }

        });

</script>

<ul id="maintab">

<li  ><a href="/admin/default/">Home</a></li>

<li ><a href="/admin/news/">Post</a></li>

<li><a href="/admin/photo/">Photo</a></li>

<li class="selected"><a href="/admin/atleti/">Atleti</a></li>

<li><a href="/admin/logout.php">Logout</a></li>

</ul>

<div id="tabcontent" class="clearfix">

<ul class="selected">

<li><a href="add.php">Aggiungi</a></li>

<li><a href="edit_list.php">Elementi da modificare</a></li>

<li><a href="list_cat.php">Lista Categorie</a></li>

<li><a href="upload.php">Upload</a></li>

</ul>

</div>

<?php

if($_POST)

{

$categoria = mysql_codifica($_POST["categoria"]);

$title = mysql_codifica($_POST["title"]);

$author = mysql_codifica($_POST["autore"]);

$news = mysql_codifica($_POST["news"]);

$data = mysql_codifica($_POST["data"]);

$attivita = mysql_codifica($_POST["attivita"]);

$id = mysql_codifica((int)$_GET["Id"]);

$picurl= mysql_codifica($_POST["picurl"]);

if($categoria =="seleziona")

{

$error = "Non Hai inserito la notizia";

}

elseif($data =="")

{

$error = "Non Hai inserito la data";

}elseif($picurl =="seleziona")

{

$error = "Non Hai inserito la notizia";

}else

{

$query = "UPDATE atleti_images SET iCatId=$categoria, _subject='$title', _picUrl='$picurl',_picDesc='$news' , _picData='$data', _picStatus='$attivita' WHERE atletiId = $id";

$result = mysql_query($query);

$error =  "<p style=\"background-color:red;color:black;\" align=\"center\">News salvata. Attendere prego..</p>";

redirect("index.php",5);

}

}

$id = mysql_codifica((int)$_GET["Id"]);

$query = "SELECT * FROM atleti_images WHERE atletiId = $id";

$result = mysql_query($query);

if(empty($id)) {

echo  "ID non specificato";

}

elseif (mysql_num_rows($result) == 0) { echo "Record non trovato"; }

else

{

while($r=mysql_fetch_array($result))

{   

/* Questo inizializza i dati di ogni riga come variabile, per rendere semplice la visualizzazione */

$title=$r["_subject"];

$news=$r["_picDesc"];

$categoria=$r["iCatId"];

$attivita=$r["_picStatus"];

$data=$r["_picData"];

$picurl = $r["_picUrl"];

/* Ora visualizziamo la form per le modifiche */

echo "".$error."";

?>

    <form name="edit_process.php" method="post" action="edit.php?Id=<?php echo mysql_codifica($_GET["Id"]); ?>">

  <table width="100%" border="0" cellspacing="2" cellpadding="2">

    <tr>

      <td>Inserire il titolo</td>

      <td><input type="text" name="title" value="<?php echo $title; ?>" /></td>

    </tr>

    <tr>

      <td>Seleziona Categoria</td>

      <td><select name="categoria" >

        <option value="0">Seleziona</option>

        <?php

   $result = mysql_query("SELECT * FROM atleti");

   

   while($row = mysql_fetch_array($result))

   {

   $nome= $row['cName'];

   $idc = $row['atletiId'];

  ?>

        <option value="<?php echo $idc; ?>" <?php if($categoria=="".$idc."") echo 'selected'?>><?php echo $nome; ?></option>

        <?php

  }

?>

      </select></td>

    </tr>

    <tr>

      <td>Seleziona Fotografia</td>

      <td>

     <?php

function getDirectory( $path = '.', $picurl, $level = 0 ){

    $ignore = array( 'cgi-bin', '.', '..' );

    // Directories to ignore when listing output. Many hosts

    // will deny PHP access to the cgi-bin.

    $dh = @opendir( $path );

    // Open the directory to the handle $dh

    

    while( false !== ( $file = readdir( $dh ) ) ){

    // Loop through the directory

    

        if( !in_array( $file, $ignore ) ){

        // Check that this file is not to be ignored

            

            $spaces = str_repeat( '&nbsp;', ( $level * 4 ) );

            // Just to add spacing to the list, to better

            // show the directory tree.

          

              if($picurl == $file)

               $_selected = "selected";

            else

               $_selected = "";

            if( is_dir( "$path/$file" ) ){

            // Its a directory, so we need to keep reading down...

                 

                //echo "<strong>$spaces $file</strong><br />";

                getDirectory( "$path/$file", ($level+1) );

                

            print '<option class="dir" value="/'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.' "'.$_selected.' >/'.substr('../'.$path, strrpos('../'.$path, '../')+3).' '.$file.'</option><br>';

                // Re-call this same function but on a new directory.

                // this is what makes function recursive.

            

            } else {

            

                // echo "$spaces $file<br />";

                // Just print out the filename

///

///

// QUI AVEVI SBALGIATO AD METTERE IL COSO SELECTED dove va essere furoi da " selected>

            print '<option class="file" value="/'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.' " '.$_selected.'>/'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.'</option><br>';  }

        

        }

    

    }

    

    closedir( $dh );

    // Close the directory handle

}

print '<select name="picurl">';

print '<option value="0" selected>Seleziona</option>';

getDirectory( "../../public/photo/atleti/img_small", $picurl);

print '</select>';

?>  

     

    </td>

    </tr>

    <tr>

      <td>Data</td>

      <td><input type="text" name="data" value="<?php echo $data ?>" /></td>

    </tr>

    <tr>

      <td>Descrizione</td>

      <td><textarea name="news" cols="40" rows="6"><?php echo $news;?></textarea></td>

    </tr>

    <tr>

      <td>Pubblicazione</td>

      <td><select name="attivita">

        <option value="0">:: seleziona ::</option>

        <option value="0" selected="selected" <?php if($attivita==0) echo 'selected="selected"'?>>Dissativato</option>

        <option value="1" <?php if($attivita==1) echo 'selected="selected"'?>>Pubblicato</option>

      </select></td>

    </tr>

    <tr>

      <td>&nbsp;</td>

      <td><input type="submit" name="Submit" value="Save" /></td>

    </tr>

  </table>

</form>

<?php

}

}

mysql_close($db);

?>
risposto 7 anni fa
luigi
X 0 X

Dopo aver dato il print prova a far ritornare la variabile "nulla" cioè:

              if($picurl == $file)
               $_selected = "selected";
            else
               $_selected = "";

            if( is_dir( "$path/$file" ) ){
            // Its a directory, so we need to keep reading down...
                 
                //echo "<strong>$spaces $file</strong><br />";
                getDirectory( "$path/$file", ($level+1) );
                
            print '<option class="dir" value="/'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.' "'.$_selected.' >/'.substr('../'.$path, strrpos('../'.$path, '../')+3).' '.$file.'</option><br>';
                // Re-call this same function but on a new directory.
                // this is what makes function recursive.
            
            } else {
            
                // echo "$spaces $file<br />";
                // Just print out the filename

///

///
// QUI AVEVI SBALGIATO AD METTERE IL COSO SELECTED dove va essere furoi da " selected>
            print '<option class="file" value="/'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.' " '.$_selected.'>/'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.'</option><br>';  
             }
             $_selected = "";
risposto 7 anni fa
Mario Santagiuliana
X 0 X

niente, mi seleziona tutto altro che quello dentro al database.

come mai?.

risposto 7 anni fa
luigi
X 0 X

niente, mi seleziona tutto altro che quello dentro al database.

come mai?.

Non lo so, cosa seleziona esattamente? L'ultimo della lista?

Puoi far vedere il codice com'è in questo momento?

risposto 7 anni fa
Mario Santagiuliana
X 0 X

allora,

 mi seleziona quello che gli pare ma non quello che c'è dentro al db, ad esempio:

c'è questo nel db all'ID 36 = /public/photo/atleti/img_small/jpg/enrica-alfredo/4966_1.jpg

e il menu a tendina mi visualizza questo:

/public/photo/atleti/img_small/jpg/lino-silvana/0001.jpg

comunque vedento l'output html , vedo che inserisce la selected nel posto giusto ma mi visualizza

 a video un'altra cosa che non ci stà nel db.

come mai?

ecco il codice:

   

  <?php

function getDirectory( $path = '.', $picurl, $level = 0 ){

    $ignore = array( 'cgi-bin', '.', '..' );

    // Directories to ignore when listing output. Many hosts

    // will deny PHP access to the cgi-bin.

    $dh = @opendir( $path );

    // Open the directory to the handle $dh

    

    while( false !== ( $file = readdir( $dh ) ) ){

    // Loop through the directory

    

        if( !in_array( $file, $ignore ) ){

        // Check that this file is not to be ignored

            

            $spaces = str_repeat( '&nbsp;', ( $level * 4 ) );

            // Just to add spacing to the list, to better

            // show the directory tree.

          

              if($picurl == $file)

               $_selected = "selected";

            else

               $_selected = "";

            if( is_dir( "$path/$file" ) ){

            // Its a directory, so we need to keep reading down...

                 

                //echo "<strong>$spaces $file</strong><br />";

                getDirectory( "$path/$file", ($level+1) );

                

            print '<option class="dir" value="/'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.' "'.$_selected.' >/'.substr('../'.$path, strrpos('../'.$path, '../')+3).' '.$file.'</option><br>';

                // Re-call this same function but on a new directory.

                // this is what makes function recursive.

            

            } else {

            

                // echo "$spaces $file<br />";

                // Just print out the filename

            print '<option class="file" value="/'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.' " '.$_selected.'>/'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.'</option><br>';  }

        

        }

    

    }

    

    closedir( $dh );

    // Close the directory handle

}

print '<select name="picurl">';

print '<option value="0" selected>Seleziona</option>';

getDirectory( "../../public/photo/atleti/img_small", $picurl);

print '</select>';

?>
risposto 7 anni fa
luigi
X 0 X

comunque vedento l'output html , vedo che inserisce la selected nel posto giusto ma mi visualizza

 a video un'altra cosa che non ci stà nel db.

come mai?

Attenzione, puoi confermare che il selected capita nell'html al posto giusto? Se è così lo script php funziona a dovere.

Quello che è sbagliato è il codice html, non è conforme agli standard.

risposto 7 anni fa
Mario Santagiuliana
X 0 X

comunque vedento l'output html , vedo che inserisce la selected nel posto giusto ma mi visualizza

 a video un'altra cosa che non ci stà nel db.

come mai?

Attenzione, puoi confermare che il selected capita nell'html al posto giusto? Se è così lo script php funziona a dovere.

Quello che è sbagliato è il codice html, non è conforme agli standard.

è quindi come si risolve il problema ?

grazie.

risposto 7 anni fa
luigi
X 0 X

L'output html deve assomigliare a un qualche cosa del genere:

  <select name="picurl" >
   <option value="1" selected="selected">1 </option>
   <option value="2">2 </option>
   <option value="3">f3  </option>
  </select>

Per qui devi modificare i tuoi output in modo che generino un tag html conforme agli standard del w3c...in particolar modo conforme allo standard html che usi nella tua pagina html (html4 o xhtml transitional o strict).

Inoltre ti faccio notare che già inserisci un tag con il selected:

print '<select name="picurl">';

print '<option value="0" selected>Seleziona</option>';

getDirectory( "../../public/photo/atleti/img_small", $picurl);

print '</select>';

Ciao

risposto 7 anni fa
Mario Santagiuliana
X 0 X

niente, non mi visualizza quello giusto come  mai?

ecco il codice:

 <?php

function getDirectory( $path = '.', $picurl, $level = 0 ){

    $ignore = array( 'cgi-bin', '.', '..' );

    // Directories to ignore when listing output. Many hosts

    // will deny PHP access to the cgi-bin.

    $dh = @opendir( $path );

    // Open the directory to the handle $dh

    

    while( false !== ( $file = readdir( $dh ) ) ){

    // Loop through the directory

    

        if( !in_array( $file, $ignore ) ){

        // Check that this file is not to be ignored

            

            $spaces = str_repeat( '&nbsp;', ( $level * 4 ) );

            // Just to add spacing to the list, to better

            // show the directory tree.

          

              if($picurl == $file)

               $_selected = "selected";

            else

               $_selected = "";

            if( is_dir( "$path/$file" ) ){

            // Its a directory, so we need to keep reading down...

                 

                //echo "<strong>$spaces $file</strong><br />";

                getDirectory( "$path/$file", ($level+1) );

                

                   print '<option class="file" value="'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.'" selected="'.$_selected.'">/'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.'</option><br>';  

                // this is what makes function recursive.

         

                  

            } else {

            

                // echo "$spaces $file<br />";

                // Just print out the filename

//'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'

          print '<option class="file" value="'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.' " selected="'.$_selected.'">/'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.'</option><br>';  }

        

        }

    

    }

    

    closedir( $dh );

    // Close the directory handle

}

print '<select name="picurl">';

print '<option value="0" selected="selected">Seleziona</option><br>';

getDirectory( "../../public/photo/atleti/img_small", $picurl);

print '</select>';

?>
risposto 7 anni fa
luigi
X 0 X

Ma se già imposti il selected qua:

print '<option value="0" selected="selected">Seleziona</option><br>';

Come fa a venire fuori quello giusto?

P.S. Facci vedere anche lo spezzone html generato.

risposto 7 anni fa
Mario Santagiuliana
X 0 X

scusa, ora che te lo posto cosi come l'output , ma non so perchè viene in una riga sola..

Comunque ora riguardanto mi scrive selected="" a tutti come mai?.

eccolo l'html generato :

PS: ci sono i nomi dei ballerini ...

http://w w w .7 -l a b.o r g/edit.txt

ho dovuto uploadarlo perchè superavo il numero di righe.

risposto 7 anni fa
luigi
X 0 X

Allora ti viene fuori selected="" perchè hai questo print:

                    print '<option class="file" value="'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.'" selected="'.$_selected.'">/'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.'</option><br>'; 

o questo:

          print '<option class="file" value="'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.' " selected="'.$_selected.'">/'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.'</option><br>';  }

Riporta i due output allo stato originario e cambia solamente la stringa $_selected qua:

               if($picurl == $file)

               $_selected = "selected";

            else

               $_selected = "";

Così:

              if($picurl == $file)
               $_selected = 'selected="selected"';
            else
               $_selected = "";
risposto 7 anni fa
Mario Santagiuliana
modificato 7 anni fa
X 0 X

OLLLA!!!!! FUNZIONA!!!..... ora funziona regolamente...

ho dovuto cancellare i vecchi dati del db e metterli nuovi e dopo le tue ultime modifiche ha funzionato.

e aggiungere questo: '.substr('../'.$path, strrpos('../'.$path, '../')+3).' nel value.

Ora ecco il codice funzionante:

      <td>Seleziona Fotografia</td>

      <td>

 <?php

function getDirectory( $path = '.', $picurl, $level = 0 ){

    $ignore = array( 'cgi-bin', '.', '..' );

    // Directories to ignore when listing output. Many hosts

    // will deny PHP access to the cgi-bin.

    $dh = @opendir( $path );

    // Open the directory to the handle $dh

    

    while( false !== ( $file = readdir( $dh ) ) ){

    // Loop through the directory

    

        if( !in_array( $file, $ignore ) ){

        // Check that this file is not to be ignored

            

            $spaces = str_repeat( '&nbsp;', ( $level * 4 ) );

            // Just to add spacing to the list, to better

            // show the directory tree.

          

                if($picurl == substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file)

               $_selected = 'selected="selected"';

            else

               $_selected = '';

            if( is_dir( "$path/$file" ) ){

            // Its a directory, so we need to keep reading down...

                 

                //echo "<strong>$spaces $file</strong><br />";

                getDirectory( "$path/$file", ($level+1) );

                

                   print '<option class="file" value="'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.'" '.$_selected.'>/'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.'</option><br>';  

                // this is what makes function recursive.

         

                  

            } else {

            

                // echo "$spaces $file<br />";

                // Just print out the filename

          print '<option class="file" value="'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.' " '.$_selected.'>/'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.'</option><br>';  }

        

        }

    

    }

    

    closedir( $dh );

    // Close the directory handle

}

print '<select name="picurl">';

print '<option value="0" >Seleziona</option><br>';

getDirectory( "../../public/photo/atleti/img_small", $picurl);

print '</select>';

?>  </td>

EDIT - ho scoperto il perchè , non vede le sotto cartelle,

mi funziona solo i file che stanno ad questo indirizzo: ../../public/photo/atleti/img_small/foto1.jpg etc.

ma quelle ../../public/photo/atleti/img_small/jpg/etc..

no!?

come mai?

risposto 7 anni fa
luigi
modificato 7 anni fa
X 0 X

EDIT - ho scoperto il perchè , non vede le sotto cartelle,

mi funziona solo i file che stanno ad questo indirizzo: ../../public/photo/atleti/img_small/foto1.jpg etc.

ma quelle ../../public/photo/atleti/img_small/jpg/etc..

no!?

come mai?

Non ho capito...Controlla il valore che assumono le varie variabili...

Comunque se ora funziona è ottimo  :D

risposto 7 anni fa
Mario Santagiuliana
X 0 X

si, ma mi vede solo i file che stanno nella cartella principale.

Ma le sotto cartelle nisba.

come mai?

è per quello che mi funziona solo con i file che stanno nella root di quella cartella,

ma quelle che sono sotto niente.

risposto 7 anni fa
luigi
X 0 X

niente, ora il codice  è cosi:

<td>Seleziona Fotografia</td>
      <td>
 <?php
function getDirectory( $path = '.', $picurl, $level = 0 ){

    $ignore = array( 'cgi-bin', '.', '..' );
    // Directories to ignore when listing output. Many hosts
    // will deny PHP access to the cgi-bin.

    $dh = @opendir( $path );
    // Open the directory to the handle $dh
    
    while( false !== ( $file = readdir( $dh ) ) ){
    // Loop through the directory
    
        if( !in_array( $file, $ignore ) ){
        // Check that this file is not to be ignored
            
            $spaces = str_repeat( '&nbsp;', ( $level * 4 ) );
            // Just to add spacing to the list, to better
            // show the directory tree.
          
                if($picurl == substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file)
               $_selected = 'selected="selected"';
            else
               $_selected = '';

            if( is_dir( "$path/$file" ) ){
            // Its a directory, so we need to keep reading down...
                 
                //echo "<strong>$spaces $file</strong><br />";
                getDirectory( "$path/$file", ($level+1) );
                
                   print '<option class="file" value="'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.'" '.$_selected.'>/'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.'</option><br>';  
                // this is what makes function recursive.
         
                  
            } else {
            
                // echo "$spaces $file<br />";
                // Just print out the filename



          print '<option class="file" value="'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.' " '.$_selected.'>/'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.'</option><br>';  }

        
        }
    
    }
    
    closedir( $dh );
    // Close the directory handle

}
print '<select name="picurl">';
print '<option value="0" >Seleziona</option><br>';
getDirectory( "../../public/photo/atleti/img_small", $picurl);
print '</select>';
?>  </td>
    </tr>

niente non mi funziona ancora regolamente, mi funziona solo le foto che stanno in questa cartella

../../public/photo/atleti/img_small/

Ma le sotto cartelle no!?.

come mai?

grazie.

risposto 7 anni fa
luigi
X 0 X

Allora il problema sta qui:

if($picurl == substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file)

Come salvi le path nel database e come fai il controllo?

risposto 7 anni fa
Mario Santagiuliana
X 0 X

allo stesso modo:

eccoti il codice:

 <tr>

      <td>Seleziona Fotografia</td>

      <td><?php

function getDirectory( $path = '.', $level = 0 ){

    $ignore = array( 'cgi-bin', '.', '..' );

    // Directories to ignore when listing output. Many hosts

    // will deny PHP access to the cgi-bin.

    $dh = @opendir( $path );

    // Open the directory to the handle $dh

    

    while( false !== ( $file = readdir( $dh ) ) ){

    // Loop through the directory

    

        if( !in_array( $file, $ignore ) ){

        // Check that this file is not to be ignored

            

            $spaces = str_repeat( '&nbsp;', ( $level * 4 ) );

            // Just to add spacing to the list, to better

            // show the directory tree.

            

            if( is_dir( "$path/$file" ) ){

            // Its a directory, so we need to keep reading down...

                 

                //echo "<strong>$spaces $file</strong><br />";

                getDirectory( "$path/$file", ($level+1) );

                

            print '<option class="dir" value="'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.'" >'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.'</option><br>';

                // Re-call this same function but on a new directory.

                // this is what makes function recursive.

//            substr('../'.$path, strrpos('../'.$path, '../')+3).'/'

//'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'

            } else {

            

                // echo "$spaces $file<br />";

                // Just print out the filename

            print '<option class="file" value="'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.'" >'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.'</option><br>';

            

            }

        

        }

    

    }

    

    closedir( $dh );

    // Close the directory handle

}

print '<select name="picurl">';

print '<option value="0" selected>Seleziona</option>';

getDirectory( "../../public/photo/atleti/img_small");

print '</select>';

?> </td>

quindi ?.

risposto 7 anni fa
luigi
X 0 X

Ancora hai questa riga errata:

print '<option value="0" selected>Seleziona</option>';

Inoltre puoi mica fornirci meglio indicazioni su come sono salvati i dati nel database?

Alcuni valori che assumo le variabili?

risposto 7 anni fa
Mario Santagiuliana
X 0 X

questo è il db:

CREATE Table atleti_images(

atletiId BIGINT AUTO_INCREMENT,

iCatId varchar(20),

_subject varchar(255),

_picUrl varchar(255),

_picDesc longtext,

_picData varchar(50),

_picStatus enum('0','1'),

_picF TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

PRIMARY KEY (atletiId))TYPE=MyISAM;

e questa è la insert di add:

if($_POST)

{

$title = mysql_codifica($_POST["title"]);

$author = mysql_codifica($_POST["author"]);

$news = mysql_codifica($_POST["news"]);

$categoria = mysql_codifica($_POST["categoria"]);

$attivita = mysql_codifica($_POST["attivita"]);

$picurl = mysql_codifica($_POST["picurl"]);

$data = $_POST["data"];

if($author =="")

{

$error = "Non Hai inserito l'autore";

}elseif($picurl=="")

{

$error = "Non hai inserito la foto";

}

elseif($attivita=="")

{

$error = "Non hai inserito lo stato di pubblicazione";

}elseif($data=="")

{

$error = "Non hai inserito la data";

}

else{

$query = "INSERT INTO atleti_images(iCatId, _subject, _picUrl, _picDesc, _picData,_picStatus)

VALUES($categoria,'$title','$picurl','$news','$data','$attivita')";

mysql_query($query);

echo "inserita!";

}}

?>

idee?.

grazie mille per gli aiuti.

risposto 7 anni fa
luigi
X 0 X

ho notato una cosa:

che quando faccio edit per visualizzare la foto da modificare quelle che hanno il percorso cosi:

getDirectory( "../../public/photo/atleti/img_small", $picurl);

funzionano ,

ma quelle sotto cartelle non funzionano... non è che il problema sta qui: getDirectory( "../../public/photo/atleti/img_small", $picurl);

grazie?

idee?.

risposto 7 anni fa
luigi
X 0 X

ho risolto ora funziona bene, bastava mettere come avevi detto tu. la global $picurl.

eccoti il coidce:

 <?php

function getDirectory( $path = '.', $level = 0 ){

 global $picurl;

    $ignore = array( 'cgi-bin', '.', '..' );

    // Directories to ignore when listing output. Many hosts

    // will deny PHP access to the cgi-bin.

    $dh = @opendir( $path );

    // Open the directory to the handle $dh

    

    while( false !== ( $file = readdir( $dh ) ) ){

    // Loop through the directory

    

        if( !in_array( $file, $ignore ) ){

        // Check that this file is not to be ignored

            

            $spaces = str_repeat( '&nbsp;', ( $level * 4 ) );

            // Just to add spacing to the list, to better

            // show the directory tree.

          

                if($picurl == substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file)

               $_selected = 'selected="selected"';

            else

               $_selected = '';

            if( is_dir( "$path/$file" ) ){

            // Its a directory, so we need to keep reading down...

                 

                //echo "<strong>$spaces $file</strong><br />";

                getDirectory( "$path/$file", ($level+1) );

                

                   print '<option class="file" value="'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.'" '.$_selected.'>/'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.'</option><br>';  

                // this is what makes function recursive.

         

                  

            } else {

            

                // echo "$spaces $file<br />";

                // Just print out the filename

          print '<option class="file" value="'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.' " '.$_selected.'>'.substr('../'.$path, strrpos('../'.$path, '../')+3).'/'.$file.'</option><br>';  }

        

        }

    

    }

    

    closedir( $dh );

    // Close the directory handle

}

print '<select name="picurl">';

print '<option value="0" selected="selected >Seleziona</option><br>';

getDirectory( "../../public/photo/atleti/img_small");

print '</select>';

?>

Grazieeeeeeeeeeeeeeeeeeeeeee Mileeeeeeeeeeeeeeeeeee.

risposto 7 anni fa
luigi
X 0 X

Aiuto Mario. sono nel casino................. sul server mi visualizza solo le cartelle ma i file no. ed invece in locale visualizza i file e le cartelle con i file dentro.

come posso fare?.

sto piangendo..........

grazie mille , se mi risolvi anche questo il server è aurba con php 5.2.10.

Mi dici come risolvere?

grazie.

risposto 7 anni fa
luigi
X 0 X

per capirci ti allego l'immagine:

e vedi ignazio non visualizza i file dentro ma visualizza la cartella. come mai?

ultima voce del menu a tendina:

risposto 7 anni fa
luigi
X 0 X

retifico ora funziona ho dovuto solo togliere @ ad  $dh = opendir( $path );

ciao, e grazie.

risposto 7 anni fa
luigi
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda