Avatar billede YoJonas Nybegynder
23. august 2012 - 10:22 Der er 16 kommentarer og
1 løsning

En filhenter i en form?

Jeg har en pain-in-the-ass af et problem. Jeg har lavet en form som sender information fint til databsen, men i koden herunder har jeg feltet "billede". I stedet for at man skal indtaste stien til billedet ville jeg egentlig gerne have lavet det ligesom "type="file"" men hvor den tager fra eksempelvis images-mappen. Om den så tager hele stien eller bare filnavnet er i og for sig lige meget, men helst bare filnavnet. Er der en måde det kan kan laves om på? Please hjælp mig!


<form name="create">
<div class="createbody">
<label for="overskrift" id="overskrift">Overskrift:</label>
<textarea type="text" name="overskrift" placeholder="Indtast overskriften på nyheden" /></textarea>
               
<br />
               
<label for="tekst" id="tekst">Tekst:</label>
<textarea type="text" name="tekst" placeholder="Indtast indholdet af nyhed" /></textarea>
               
<br />
               
<label for="billede" id="billede">Billede:</label>
<textarea type="text" name="billede" placeholder="Ændres til billede vælger" /></textarea>
               
<br />
               
<label for="dato" id="dato">Dato:</label>
<textarea type="text" name="dato" placeholder="Indtast dagens dato, hvor nyheden bliver lagt online" /><?php echo date("Y-m-d"); ?></textarea>
               
<br />
               
<label for="byline" id="byline">Byline:</label>
<textarea type="text" name="byline" placeholder="Indtast skribentens eller forfatterens navn" /><?php echo $_SESSION["username"]; ?></textarea>
               
<br />
               
<label for="fotocredit" id="fotocredit">Fotokeditering:</label>
<textarea type="text" name="fotocredit" placeholder="Indtast fotografens navn og/eller hvor billedet er kommet fra" /></textarea>
               
<div class="submit_container">
<input type="submit" name="skriv" value="Tilføj nyhed" id="submit" class="submit" />
</div>
</form>
         

<?php
if (isset($_GET['skriv'])) {
$db_con = mysql_connect('localhost','brugernavn','password');
if (!$db_con)
           
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("database", $db_con);

mysql_query("INSERT INTO nyheder (overskrift, tekst, billede, dato, byline, fotocredit)
VALUES ('".$_GET['overskrift']."', '".$_GET['tekst']."', '".$_GET['billede']."', '".$_GET['dato']."', '".$_GET['byline']."', '".$_GET['fotocredit']."')");

mysql_close($db_con);
}
?>
Avatar billede michael_stim Ekspert
23. august 2012 - 11:17 #1
Er der en grund til at du bruger textarea over hele linjen?
Avatar billede YoJonas Nybegynder
23. august 2012 - 11:33 #2
Det er umildbart det som jeg synes virker bedst. Men jeg, ingen specielt grund derudover.
Avatar billede michael_stim Ekspert
23. august 2012 - 11:42 #3
Hvorfor så ikke bruge en input type="file"?
Avatar billede YoJonas Nybegynder
23. august 2012 - 11:52 #4
Fordi jeg skal ikke uploade billede. Den skal bare kunne kigge i en mappe som eksempelvis /images og så skrive stien/filnavnet på den valgte fil.
Avatar billede YoJonas Nybegynder
24. august 2012 - 15:07 #5
Ingen der kender en løsning på mit problem?
Avatar billede michael_stim Ekspert
24. august 2012 - 15:34 #6
Jo, med input type="file". Der er jo ingen der siger du behøver uploade noget, men du får jo stien.
Avatar billede YoJonas Nybegynder
24. august 2012 - 16:17 #7
Du har ikke helt ret. Lige nu ser min kode ud som nedstående. Men det henter jo ikke fra serveren, men stadigvæk lokalt fra min computer?

<form name="create">
                <div class="createbody">
                    <label for="overskrift" id="overskrift">Overskrift:</label>
                    <textarea type="text" name="overskrift" placeholder="Indtast overskriften på nyheden" /></textarea>
               
                    <br />
               
                    <label for="tekst" id="tekst">Tekst:</label>
                    <textarea type="text" name="tekst" placeholder="Indtast indholdet af nyhed" /></textarea>
               
                    <br />

                    <label for="billede" id="billede">Billede:</label>
                    <input type="file" name="billede" />
                   
                    <br />
               
                    <label for="dato" id="dato">Dato:</label>
                    <textarea type="text" name="dato" placeholder="Indtast dagens dato, hvor nyheden bliver lagt online" /><?php echo date("Y-m-d"); ?></textarea>
               
                    <br />
               
                    <label for="byline" id="byline">Byline:</label>
                    <textarea type="text" name="byline" placeholder="Indtast skribentens eller forfatterens navn" /><?php echo $_SESSION["username"]; ?></textarea>
               
                    <br />
               
                    <label for="fotocredit" id="fotocredit">Fotokeditering:</label>
                    <textarea type="text" name="fotocredit" placeholder="Indtast fotografens navn og/eller hvor billedet er kommet fra" /></textarea>
               
                    <div class="submit_container">
                    <input type="submit" name="skriv" value="Tilføj nyhed" id="submit" class="submit" />
                    </div>
                </div>
            </form>
Avatar billede Slettet bruger
25. august 2012 - 13:46 #8
Der findes ingen HTML løsning til at vise mapper/filer der ligger på serveren.
Så skal du bruge din PHP til at finde de mapper du gerne vil have man skal kunne vælge imellem fra serveren og vise det til brugeren med HTML.
Avatar billede Slettet bruger
25. august 2012 - 13:48 #9
Og må jeg også lige spørge hvorfor du har oprettet tråden under MySQL? :)
Avatar billede YoJonas Nybegynder
25. august 2012 - 21:35 #10
Og kan du hjælpe med det?

Hmm, plejer som regel at oprette der når det har noget med databaser at gøre :)
Avatar billede michael_stim Ekspert
27. august 2012 - 12:31 #11
OK, det er på serveren du vil have filnavnet. Er det altid i samme mappe?
Avatar billede michael_stim Ekspert
27. august 2012 - 12:35 #12
Tror jeg ville løse det med smide alt ned i en dropdown, og så noget onchange på den. Er der flere mapper, kunne man bare bruge flere dropdowns.
Avatar billede YoJonas Nybegynder
27. august 2012 - 15:31 #13
Det hele ligger i samme mappe - ja :) Hvordan vil koden så se ud?
Avatar billede michael_stim Ekspert
27. august 2012 - 16:12 #14
<?php
$directory = "billeder/";

function getDirectoryList ($directory)
  {

    // create an array to hold directory list
    $results = array();

    // create a handler for the directory
    $handler = opendir($directory);

    // open directory and walk through the filenames
    while ($file = readdir($handler)) {

      // if file isn't this directory or its parent, add it to the results
      if ($file != "." && $file != "..") {
        $results[] = $file;
      }

    }

    // tidy up: close the handler
    closedir($handler);

    // done!
    return $results;

  }
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title>List</title>
</head>
<body>
    <select name="list" onchange="document.getElementById('pic').value=this.options[this.selectedIndex].value;">
        <option>Vælg billede</option>
        <?php
        foreach(getDirectoryList($directory) AS $billede){
            echo "<option name=\"".$billede."\">".$billede."</option>\n";
        }
        ?>
    </select>&nbsp;<input type="text" name="pic" id="pic"><br>
    <?php
        $i=0;
        foreach(getDirectoryList($directory) AS $billede2){
            if($i%4==0){
                echo "<br>";
            }
            echo "<img src=\"billeder/".$billede2."\" width=\"30px\" height=\"30px\" id=\"".$billede2."\" onclick=\"document.getElementById('pic2').value=document.getElementById('".$billede2."').id;\">\n";
            $i++;
        }
        ?>
    <br><input type="text" name="pic2" id="pic2"><br>
</body>
</html>


Dette er totalt basic, har både lavet en dropdown og en hvor man viser billeder. Du må selv styre sikkerhed osv.
Avatar billede YoJonas Nybegynder
28. august 2012 - 15:22 #15
Du er min helt - det virker lige præcis som det skal! :)

Laver du et svar så du kan få dine points? :)

Atter tusind, tusind tak!
Avatar billede michael_stim Ekspert
28. august 2012 - 15:39 #16
Samler ikke på point, læg selv et svar og accepter dit eget svar, så spørgsmålet bliver lukket.
Avatar billede YoJonas Nybegynder
28. august 2012 - 15:44 #17
Okay - tak for det :)
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

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