webForumDet fria alternativet

Välja fil från lista i formulär

PHP

2 svar · 257 visningar · startad av ryssen

Medlem sedan juli 20042 inlägg
Frågan#1

Jag har snickrat ihop ett enkelt publiceringssystem för min hemsida, så att andra - t.o.m min mamma - enkelt ska kunna uppdatera den åt mig. Kort handlar det om att kunna lägga in, ändra och ta bort artiklar genom att fylla i ett formulär.

När man lägger in en artikel kan man välja om man vill illustrera med en bild. Man ska då skriva bildens URL, t.ex. "bilder/bild.jpg". Naturligtvis kan man ladda upp nya bilder, om så önskas.

Allt fungerar bra, men eftersom jag vill att det ska vara så enkelt som möjligt att lägga till artiklar saknar jag en funktion där man kan välja bland befintliga bilder (t.ex. i katalogen bilder/) utan att behöva förstå vad en "bild-URL" är för något. Man ska alltså slippa skriva bildens adress och istället kunna välja från en lista.

Enklast vore ju om bilderna i en katalog gick att lista i en rullgardinsmeny, men det skulle ju också kunna funka genom att klicka på "Browse".

Någon som har koll på hur jag ska lösa detta? (Det låter ju mkt enkelt, men jag får inte ihop det...)

Medlem sedan aug. 20002 975 inlägg
#2

Du kan testa något på det här hållet:

Först en funktion som hämtar filnamn ur en katalog

function get_files($dir) {

   $files = array();

   if ($handle = opendir($dir)) { 

      while (false !== ($file = readdir($handle))) { 
         if ($file != "." && $file != "..") { 
            $files[] = $file; 
         } 
      } 

      closedir($handle); 

   }
   
   return $files;

}

Sedan loopar du ut din array i formuläret. När du har ett ändringsformulär kan du lämpligtvis göra en jämförelse med tidigare sparat värde, så rätt fil markeras.

<?php

// Namn på bildkatalogen
$dir = 'bilder';

// Hämta filer i katalogen
$files = get_files($dir);

// Vid ändringsformulär tidigare vald fil
// Kommer då från databas eller liknande
$file_old = 'bild.jpg';

?>
<select name="bild">
<option value="">Ingen bild</option>
<?php

foreach ($files as $file) {
   $selected = $file == $file_old ? 'selected' : '';
   echo "<option value=\"$file\" $selected>$file</option>\n";
}

?>
</select>
Medlem sedan juli 20042 inlägg
#3

Fungerar utmärkt. Det tackar vi för.

261 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)