Avatar billede mibu Nybegynder
04. oktober 2007 - 16:22 Der er 19 kommentarer og
1 løsning

Dir oversigt i selectbox?

Jeg skal bruge en selectbox hvor man kan vælge imellem nogle subdir.

(images/mappe1 - images/mappe2 - osv)

Hvordan gør man lige det?
Avatar billede nielle Nybegynder
04. oktober 2007 - 17:07 #1
Kunne du være lidt mere specifik? Det er ingen sag at lave en select, hvor man kan vælge fra:

<select name="subDir">
<option>images/mappe1</option>
<option>images/mappe2</option>
<option>osv</option>
</select>

Men der må være noget mere til dit spørgsmål end det?
Avatar billede mibu Nybegynder
04. oktober 2007 - 17:17 #2
Jo!
Jeg kan godt lave boxen, men på adminsiden af sitet er det muligt at oprette ny mapper i "images/billeder/ditvalg" derfor vil jeg gerne have en selectbox på uploadsiden, så man bare får liste de mulige valg.

Min form ser sådan her ud:

echo " <h3>Vælg filen der skal oploades.</h3>
          Max fil størrelse = ". $size_bytes / 1024/1000 ." MB";
    echo " <form method=\"post\" action=\"admin_menu.php?side=nyefoto\" enctype=\"multipart/form-data\">";
          // show the file input field based on($num_files).
          for ($i = 1; $i <= $num_files; $i++) {
              echo "File $i: <input type=\"file\" name=\"file". $i ."\"><br>";
          }
    echo " <input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"$size_bytes\">
Vælg mappe hvor billeder skal gemmes -
        <select size=\"1\" name=\"mappe\">
          <option>
          HER SKAL MAPPERNE LISTES!
          </option></select><br>
          <input type=\"submit\" name=\"upload_form\" value=\"Send!\">
          </form>";
Avatar billede mibu Nybegynder
04. oktober 2007 - 17:21 #3
Jeg har på et andet site, denne her som lister tabeller fra en MySql.:

echo '<select name="tabel">';
    while($tabel = mysql_fetch_row($tables))
    {
        if(in_array($tabel[0], $vis_ikke))
        {
            continue;
        }
        echo '<option value="'.$tabel[0].'">'.$tabel[0].'</option>';

    }
    echo '</select>';

Jeg prøvede skrive noget af det sammen - TOTAL HAT OG BRILLER! - Så nogle kvalificerede bud?
Avatar billede nielle Nybegynder
04. oktober 2007 - 17:28 #4
Har du prøvet at kigge på scandir() og dens famillie:

http://dk2.php.net/manual/da/function.scandir.php

Den kan bruges til at finde alle filer og biblioteker på et bestemt sted.
Avatar billede mibu Nybegynder
04. oktober 2007 - 17:53 #5
Det tager nok lidt tid at tygge sig igennem :-)
Men jeg prøver.
Avatar billede nielle Nybegynder
04. oktober 2007 - 17:58 #6
Cool :^)
Avatar billede mibu Nybegynder
04. oktober 2007 - 18:09 #7
AaHH!

Opdager lige af scandir kræver PHP5 har kun PHP4.etellerandet
Avatar billede nielle Nybegynder
04. oktober 2007 - 18:21 #8
Så kig på opendir og de andre i stedet:

http://dk2.php.net/manual/da/function.opendir.php
Avatar billede mibu Nybegynder
04. oktober 2007 - 18:33 #9
Jep Jeg er igang! :-)
Avatar billede mibu Nybegynder
04. oktober 2007 - 18:38 #10
Jeg har fundet denne her, tror du den kan "ombygges" til at liste op i selectboxen "one by one" Og så skulle den gerne udelade filer og kun vise dir.

<?php
if ($handle = opendir('images/billeder/')) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
            echo "$file\n";
        }
    }
    closedir($handle);
}
?>
Avatar billede nielle Nybegynder
04. oktober 2007 - 18:43 #11
Med is_dir() tjekker du om noget er et dir:

http://dk2.php.net/manual/da/function.is-dir.php

Den med at udskrove dem i <select>'en er rimeligt lige til:

<select>
<?php
if ($handle = opendir('images/billeder/')) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != ".." && is_dir($file)) {
            echo "<option>$file</option>\n";
        }
    }
    closedir($handle);
}
?>
</select>
Avatar billede mibu Nybegynder
04. oktober 2007 - 21:13 #12
Okay! så har jeg skruet noget sammen, jeg få vist mine mapper, + lidt til men itedet for at lave en pæn dropdown select, så gentager den hele min form for hver option?
Den kan jeg ikke lige greje!

Komplet kode:
<center><br><br>
Opload af ny billeder.<br>
<?php
$up_dir = $_SERVER['DOCUMENT_ROOT'] . '/images/billeder/';
chdir( "$up_dir" );
$rep=opendir('.');
while (false != ($file = readdir($rep))){
  if (is_dir($file))


        $mappe = $_REQUEST["mappe"];
       
$upload_dir = $_SERVER['DOCUMENT_ROOT'] . '/images/billeder/'.$mappe.'/';
//Antal filer der kan uploades pr. gang.
$num_files = 3;
//filstørelse.
$size_bytes =4096000; //51200 bytes = 50KB.
//Extensions: Her vil jeg gerne have tilføjet exe, doc, txt.
$limitedext = array('.jpg','.JPG','.png','.PNG','.gif','.GIF','.jpeg','.JPEG');

  //check if the directory exists or not.
  if (!is_dir("$upload_dir")) {
      die ("Error: Mappen <b>($upload_dir)</b> findes ikke!");
  }
  //check if the directory is writable.
  if (!is_writeable("$upload_dir")){
      die ("Error: Mappen <b>($upload_dir)</b> ikke skrivebar (777)");
  }


//if the form has been submitted, then do the upload process
//infact, if you clicked on (Upload Now!) button.
if (isset($_POST['upload_form'])){

      echo "<h3>Upload resultat:</h3>";

      //do a loop for uploading files based on ($num_files) number of files.
      for ($i = 1; $i <= $num_files; $i++) {

          //define variables to hold the values.
          $new_file = $_FILES['file'.$i];
          $file_name = $new_file['name'];
          //to remove spaces from file name we have to replace it with "_".
          $file_name = str_replace(' ', '_', $file_name);
          $file_tmp = $new_file['tmp_name'];
          $file_size = $new_file['size'];

          #-----------------------------------------------------------#
          # this code will check if the files was selected or not.    #
          #-----------------------------------------------------------#

          if (!is_uploaded_file($file_tmp)) {
              //print error message and file number.
              echo "Filen $i: er ikke valgt.<br>";
          }else{
                #-----------------------------------------------------------#
                # this code will check file extension                      #
                #-----------------------------------------------------------#

                $ext = strrchr($file_name,'.');
                if (!in_array(strtolower($ext),$limitedext)) {
                    echo "Filen $i: ($file_name) har forkert endenavn.<br>Du kan kun sende png, jpg, PDF og gif.<br>";
                }else{
                      #-----------------------------------------------------------#
                      # this code will check file size is correct                #
                      #-----------------------------------------------------------#

                      if ($file_size > $size_bytes){
                          echo "Filen $i: ($file_name) blev ikke sendt. Filen skal være under <b>". $size_bytes / 1024 ."</b> KB. <br>";
                      }else{
                            #-----------------------------------------------------------#
                            # this code check if file is Already EXISTS.                #
                            #-----------------------------------------------------------#

                            if(file_exists($upload_dir.$file_name)){
                                echo "Filen $i: ($file_name) findes allerede.<br>";
                            }else{
                                  #-----------------------------------------------------------#
                                  # this function will upload the files.  :) ;) cool          #
                                  #-----------------------------------------------------------#
                                  if (move_uploaded_file($file_tmp,$upload_dir.$file_name)) {
                                      echo "Filen $i: ($file_name) er sendt.<br><br>";
                                  }else{
                                        echo "Filen $i: kunne ikke sendes.<br>";
                                  }#end of (move_uploaded_file).

                            }#end of (file_exists).

                      }#end of (file_size).

                }#end of (limitedext).

          }#end of (!is_uploaded_file).

      }#end of (for loop).
      # print back button.
      echo "";
////////////////////////////////////////////////////////////////////////////////
//else if the form didn't submitted then show it.
}else{
    echo " <h3>Vælg filen der skal oploades.</h3>
          Max fil størrelse = ". $size_bytes / 1024/1000 ." MB";
    echo " <form method=\"post\" action=\"admin_menu.php?side=nyefoto\" enctype=\"multipart/form-data\">";
          // show the file input field based on($num_files).
          for ($i = 1; $i <= $num_files; $i++) {
              echo "File $i: <input type=\"file\" name=\"file". $i ."\"><br>";
          }
    echo " <input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"$size_bytes\">
Vælg mappe hvor billeder skal gemmes -
        <select size=\"1\" name=\"mappe\">
  <option>$file</option>
</select><br>
          <input type=\"submit\" name=\"upload_form\" value=\"Send!\">
          </form>";
}
}
?>
</center>
Avatar billede nielle Nybegynder
04. oktober 2007 - 21:30 #13
Jaaae, du har jo placeret den kode som udskriver din form inden i den løkke som løber biblioteket igennem:

<center><br><br>
Opload af ny billeder.<br>
<?php
$up_dir = $_SERVER['DOCUMENT_ROOT'] . '/images/billeder/';
chdir( "$up_dir" );
$rep = opendir('.');
while (false != ($file = readdir($rep))) {
    if (is_dir($file))
        $mappe = $_REQUEST["mappe"];
       
        $upload_dir = $_SERVER['DOCUMENT_ROOT'] . '/images/billeder/'.$mappe.'/';

        //Antal filer der kan uploades pr. gang.
        $num_files = 3;

        //filstørelse.
        $size_bytes = 4096000; //51200 bytes = 50KB.

        //Extensions: Her vil jeg gerne have tilføjet exe, doc, txt.
        $limitedext = array('.jpg','.JPG','.png','.PNG','.gif','.GIF','.jpeg','.JPEG');

        //check if the directory exists or not.
        if (!is_dir("$upload_dir")) {
            die ("Error: Mappen <b>($upload_dir)</b> findes ikke!");
        }

        //check if the directory is writable.
        if (!is_writeable("$upload_dir")) {
            die ("Error: Mappen <b>($upload_dir)</b> ikke skrivebar (777)");
        }

        //if the form has been submitted, then do the upload process
        //infact, if you clicked on (Upload Now!) button.
        if (isset($_POST['upload_form'])) {
            echo "<h3>Upload resultat:</h3>";

            //do a loop for uploading files based on ($num_files) number of files.
        for ($i = 1; $i <= $num_files; $i++) {
            //define variables to hold the values.
            $new_file = $_FILES['file'.$i];
            $file_name = $new_file['name'];

            //to remove spaces from file name we have to replace it with "_".
            $file_name = str_replace(' ', '_', $file_name);
            $file_tmp = $new_file['tmp_name'];
            $file_size = $new_file['size'];

            #-----------------------------------------------------------#
            # this code will check if the files was selected or not.    #
            #-----------------------------------------------------------#

            if (!is_uploaded_file($file_tmp)) {
                //print error message and file number.
                echo "Filen $i: er ikke valgt.<br>";
            } else {
                #-----------------------------------------------------------#
                # this code will check file extension                      #
                #-----------------------------------------------------------#

                $ext = strrchr($file_name,'.');
                if (!in_array(strtolower($ext),$limitedext)) {
                    echo "Filen $i: ($file_name) har forkert endenavn.<br>Du kan kun sende png, jpg, PDF og gif.<br>";
                } else {
                    #-----------------------------------------------------------#
                    # this code will check file size is correct                #
                    #-----------------------------------------------------------#

                    if ($file_size > $size_bytes) {
                        echo "Filen $i: ($file_name) blev ikke sendt. Filen skal være under <b>". $size_bytes / 1024 ."</b> KB. <br>";
                    } else {
                        #-----------------------------------------------------------#
                        # this code check if file is Already EXISTS.                #
                        #-----------------------------------------------------------#

                        if (file_exists($upload_dir.$file_name)) {
                            echo "Filen $i: ($file_name) findes allerede.<br>";
                        } else {
                            #-----------------------------------------------------------#
                            # this function will upload the files.  :) ;) cool          #
                            #-----------------------------------------------------------#

                            if (move_uploaded_file($file_tmp,$upload_dir.$file_name)) {
                                echo "Filen $i: ($file_name) er sendt.<br><br>";
                            } else {
                                echo "Filen $i: kunne ikke sendes.<br>";
                            } #end of (move_uploaded_file).
                        } #end of (file_exists).
                    } #end of (file_size).
                } #end of (limitedext).
            } #end of (!is_uploaded_file).
        } #end of (for loop).

        # print back button.
        echo "";

        ////////////////////////////////////////////////////////////////////////////////
        //else if the form didn't submitted then show it.
    } else {
        echo " <h3>Vælg filen der skal oploades.</h3>
            Max fil størrelse = ". $size_bytes / 1024/1000 ." MB";
        echo " <form method=\"post\" action=\"admin_menu.php?side=nyefoto\" enctype=\"multipart/form-data\">";
            // show the file input field based on($num_files).

        for ($i = 1; $i <= $num_files; $i++) {
            echo "File $i: <input type=\"file\" name=\"file". $i ."\"><br>";
        }

        echo " <input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"$size_bytes\">
            Vælg mappe hvor billeder skal gemmes -
            <select size=\"1\" name=\"mappe\">
            <option>$file</option>
            </select><br>
            <input type=\"submit\" name=\"upload_form\" value=\"Send!\">
            </form>";
    }
}
?>
</center>
Avatar billede mibu Nybegynder
04. oktober 2007 - 21:49 #14
Som gammel (tryk på gammel:-) autodiak vil vil jeg gerne tro dig, men hvordan er det så lige at jeg piller formen ud af løkken. Der er såvidt jeg kan se er der ingen ændring på din og min. (ud over at du har cuttet nogle mellerum :-)
Avatar billede nielle Nybegynder
04. oktober 2007 - 21:59 #15
Jeg har heller ikke ændret i din kode - kun formateret den lidt for at det er letter at se hvad der sker.

Nu er det jo doig selv som har puttet løkken ind - du har bare sat den på et forkerst sted. Den skal være her i stedet:

    echo " <input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"$size_bytes\">
        Vælg mappe hvor billeder skal gemmes -
        <select size=\"1\" name=\"mappe\">";

LØKKE
    echo "<option>$file</option>";
LØKKE

    echo "</select><br>
        <input type=\"submit\" name=\"upload_form\" value=\"Send!\">
        </form>";
Avatar billede mibu Nybegynder
04. oktober 2007 - 22:27 #16
Ja det er rigtigt - bare gi´ et gammelt fjols skylden :-) Men Jeg fik det til at virke med din hjælp - Takker!

jeg skulle dog lige den stump kode der viser dir, den endelige version kommer her til gælde og gavn for andre dummernikker :-)

Kode:

<center><br><br>
Opload af ny billeder.<br>
<?php
        $mappe = $_REQUEST["mappe"];
       
        $upload_dir = $_SERVER['DOCUMENT_ROOT'] . '/images/billeder/'.$mappe.'/';

        //Antal filer der kan uploades pr. gang.
        $num_files = 3;

        //filstørelse.
        $size_bytes = 4096000; //51200 bytes = 50KB.

        //Extensions: Her vil jeg gerne have tilføjet exe, doc, txt.
        $limitedext = array('.jpg','.JPG','.png','.PNG','.gif','.GIF','.jpeg','.JPEG');

        //check if the directory exists or not.
        if (!is_dir("$upload_dir")) {
            die ("Error: Mappen <b>($upload_dir)</b> findes ikke!");
        }

        //check if the directory is writable.
        if (!is_writeable("$upload_dir")) {
            die ("Error: Mappen <b>($upload_dir)</b> ikke skrivebar (777)");
        }

        //if the form has been submitted, then do the upload process
        //infact, if you clicked on (Upload Now!) button.
        if (isset($_POST['upload_form'])) {
            echo "<h3>Upload resultat:</h3>";

            //do a loop for uploading files based on ($num_files) number of files.
        for ($i = 1; $i <= $num_files; $i++) {
            //define variables to hold the values.
            $new_file = $_FILES['file'.$i];
            $file_name = $new_file['name'];

            //to remove spaces from file name we have to replace it with "_".
            $file_name = str_replace(' ', '_', $file_name);
            $file_tmp = $new_file['tmp_name'];
            $file_size = $new_file['size'];

            #-----------------------------------------------------------#
            # this code will check if the files was selected or not.    #
            #-----------------------------------------------------------#

            if (!is_uploaded_file($file_tmp)) {
                //print error message and file number.
                echo "Filen $i: er ikke valgt.<br>";
            } else {
                #-----------------------------------------------------------#
                # this code will check file extension                      #
                #-----------------------------------------------------------#

                $ext = strrchr($file_name,'.');
                if (!in_array(strtolower($ext),$limitedext)) {
                    echo "Filen $i: ($file_name) har forkert endenavn.<br>Du kan kun sende png, jpg, PDF og gif.<br>";
                } else {
                    #-----------------------------------------------------------#
                    # this code will check file size is correct                #
                    #-----------------------------------------------------------#

                    if ($file_size > $size_bytes) {
                        echo "Filen $i: ($file_name) blev ikke sendt. Filen skal være under <b>". $size_bytes / 1024 ."</b> KB. <br>";
                    } else {
                        #-----------------------------------------------------------#
                        # this code check if file is Already EXISTS.                #
                        #-----------------------------------------------------------#

                        if (file_exists($upload_dir.$file_name)) {
                            echo "Filen $i: ($file_name) findes allerede.<br>";
                        } else {
                            #-----------------------------------------------------------#
                            # this function will upload the files.  :) ;) cool          #
                            #-----------------------------------------------------------#

                            if (move_uploaded_file($file_tmp,$upload_dir.$file_name)) {
                                echo "Filen $i: ($file_name) er sendt.<br><br>";
                            } else {
                                echo "Filen $i: kunne ikke sendes.<br>";
                            } #end of (move_uploaded_file).
                        } #end of (file_exists).
                    } #end of (file_size).
                } #end of (limitedext).
            } #end of (!is_uploaded_file).
        } #end of (for loop).

        # print back button.
        echo "";

        ////////////////////////////////////////////////////////////////////////////////
        //else if the form didn't submitted then show it.
    } else {
        echo " <h3>Vælg filen der skal oploades.</h3>
            Max fil størrelse = ". $size_bytes / 1024/1000 ." MB";
        echo " <form method=\"post\" action=\"admin_menu.php?side=nyefoto\" enctype=\"multipart/form-data\">";
            // show the file input field based on($num_files).

        for ($i = 1; $i <= $num_files; $i++) {
            echo "File $i: <input type=\"file\" name=\"file". $i ."\"><br>";
        }

        echo "<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"$size_bytes\">
            Vælg mappe hvor billeder skal gemmes -
            <select size=\"1\" name=\"mappe\">";
           
            $up_dir = $_SERVER['DOCUMENT_ROOT'] . '/images/billeder/';
            chdir( "$up_dir" );
            $rep = opendir('.');
            while (false != ($file = readdir($rep)))    
            if (is_dir($file))
          {
            echo"<option>$file</option>";
            }

            echo"</select><br>
            <input type=\"submit\" name=\"upload_form\" value=\"Send!\">
            </form>";
    }

?>
</center>

PS. hvis der er nogen kender et trylle ord der kan fjerne de to første dir (. og ..) i dir oversigten hører jeg gerne om det.

Og igen tak for hjælpen nielle, læg et venligst svar!
Avatar billede nielle Nybegynder
05. oktober 2007 - 06:51 #17
Svar :^)
Avatar billede styrk Nybegynder
05. oktober 2007 - 12:02 #18
if (is_dir($file))
{
  echo"<option>$file</option>";
}

skal være

if (is_dir($file) && $file != "." && $file != "..")
{
  echo"<option>$file</option>";
}
Avatar billede mibu Nybegynder
05. oktober 2007 - 12:07 #19
Tak!
Så er det ved at være perfekt!
Avatar billede styrk Nybegynder
05. oktober 2007 - 12:14 #20
så lidt. :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester