Avatar billede ppb Nybegynder
03. marts 2007 - 22:19 Der er 24 kommentarer og
1 løsning

Upload af billede

Jeg bruger nedenstående script som nyhedsscript på min hjemmeside.
Vil gerne have mulighed for at uploade et billede ved ny nyhed.

Scriptet til det er:

<?php
session_start();

$host="???";
$user="???";
$pass="???";
$db="???";

mysql_connect($host,$user,$pass);
mysql_select_db($db);


    if (isset($_POST[submit])) {

        if ($_POST[overskrift] == "" || $_POST[nyhed] == ""){
            echo "<b>Alle felter <u>skal</u> udfyldes!</b><br>";
        }else{

            $overskrift = mysql_real_escape_string($_POST['overskrift']);
            $nyhed = mysql_real_escape_string($_POST['nyhed']);
            $dato = date('d/m/Y H:i:s');

            mysql_query("INSERT INTO nyhedssystem (overskrift, nyhed, dato) VALUES ('$overskrift', '$nyhed', '$dato')") or die(mysql_error());

            header("Location: index.php");
        }
    }
?>

    <form action="" method="POST">
      <table border="0">
        <tr>
        <td>Overskrift: </td>
        <td><input type="text" name="overskrift"></td>
        <tr>

        <tr>
        <td>Besked: </td>
        <td><textarea rows="10" cols="60" name="nyhed"></textarea></td>
        </tr>
 
        <tr>
        <td colspan="2"><input type="submit" value="Opret" name="submit"></td>
        <tr>
      </table>
    </form>
Avatar billede jakobdo Ekspert
03. marts 2007 - 22:59 #1
Skal billedet gemmes i databasen eller i en mappe på din server?
Avatar billede ppb Nybegynder
03. marts 2007 - 23:03 #2
Ja, det har jeg ikke tænkt på.
Men det skal vel være i databasen, da teksten til nyheden bliver gemt der.
Avatar billede jakobdo Ekspert
03. marts 2007 - 23:06 #3
Ikke nødvendigvis!
Det er nemmeste at gemme det i en mapp.
Avatar billede ppb Nybegynder
03. marts 2007 - 23:10 #4
Kan det så klares via en tilføjelse på mit script?
Avatar billede jakobdo Ekspert
03. marts 2007 - 23:21 #5
Start med at ret:
<form action="" method="POST">
til:
<form action="" method="POST" enctype="multipart/form-data">

Så tilføjer du dette før eller efter besked:

<tr>
<td>Billede: </td>
<td><input type="file" name="billede"></td>
<tr>
Avatar billede jakobdo Ekspert
03. marts 2007 - 23:30 #6
Og din top bør se ud i stil med:

$uploadDir = getcwd() . '/billeder/'; //Husk at chmod til 777

if (isset($_POST['submit']))
{
    if(empty($_POST['overskrift']) || empty($_POST['nyhed']))
    {
        echo "<b>Alle felter <u>skal</u> udfyldes!</b><br>";
    }
    else
    {
        $overskrift = mysql_real_escape_string($_POST['overskrift']);
        $nyhed = mysql_real_escape_string($_POST['nyhed']);
        $dato = date('d/m/Y H:i:s');
       
        //Har vi et billede?
        if($_FILES['billede']['size'] > 0)
        {
            move_uploaded_file($_FILES['billede']['tmp_name'],$uploadDir . $_FILES['billede']['name']);
        }

        mysql_query("INSERT INTO nyhedssystem (overskrift, nyhed, dato, billede) VALUES ('".$overskrift."', '".$nyhed."', '".$dato."', '".$_FILES['billede']['name']."')") or die(mysql_error());

        header("Location: index.php");
        exit();
    }
}

Bemærk dog der ikke er noget sikkerhed på filen som uploades!
Avatar billede ppb Nybegynder
03. marts 2007 - 23:30 #7
...og hvad så?
Jeg får så mulighed for at tilføje et billede, men det kommer ikke med i min tekst.
Avatar billede ppb Nybegynder
03. marts 2007 - 23:31 #8
Så ikke du havde skrevet...
Avatar billede ppb Nybegynder
03. marts 2007 - 23:45 #9
Jeg får denne besked når jeg prøver, at lave en ny nyhed.

Unknown column 'billede' in 'field list'
Avatar billede jakobdo Ekspert
03. marts 2007 - 23:49 #10
Ja, du skal tilføje et felt i din database, som du kalder billede, type = varchar, længde 255
Avatar billede ppb Nybegynder
04. marts 2007 - 00:01 #11
Nu kommer der ingen fejl, men billedet kan ikke ses på min side.
Men jeg kan se, at billedet er kommet i min database.
Avatar billede jakobdo Ekspert
04. marts 2007 - 00:20 #12
ok har du oprettet mappen billeder?
Avatar billede ppb Nybegynder
04. marts 2007 - 00:28 #13
ja
Avatar billede jakobdo Ekspert
04. marts 2007 - 00:32 #14
Har du chmod'et den til 777 ?
Avatar billede ppb Nybegynder
04. marts 2007 - 00:38 #15
ja.
men hvad skal den mappe bruges til?
foregår det ikke på databasen?
Avatar billede jakobdo Ekspert
04. marts 2007 - 09:22 #16
Billedet bliver gemt i mappen og i databasen bliver navnet på filen gemt.
Avatar billede ppb Nybegynder
04. marts 2007 - 11:03 #17
Hmmm...så ved jeg ikke hvad der er galt. Det er kun navnet på billedet som kommer frem.
Kan man ikke gemme billedet i databasen også?
Avatar billede jakobdo Ekspert
04. marts 2007 - 15:58 #18
Jo, men det var jo det jeg skrev tidligere, at det er nemmere at gemme det i en mappe, og så kun gemme navnet i databasen.
Avatar billede ppb Nybegynder
04. marts 2007 - 16:17 #19
Ok. Nu tror jeg, at jeg er med.
Navnet kommer i databasen, og billedet ligger i mappen billeder.
Så må det jo være mit script til at kalde nyheder/billeder med, den er gal med.
Kan ikke lige selv se hvordan billedet skal kaldes fra mappen, men her er scriptet, hvis du gider kigge.

<?php
    $host="???";
    $user="???";
    $pass="???";
    $db="???";

    mysql_connect($host,$user,$pass);
    mysql_select_db($db);

    $nyhed = mysql_query("SELECT * FROM nyhedssystem ORDER BY id DESC") or die(mysql_error());

    if(mysql_num_rows($nyhed) > 0) {

            while ($nyheden=mysql_fetch_array($nyhed)) {
            echo "<div style=\"font-size: 18px;\"><b>".$nyheden['overskrift']."</b></div>";
            echo "<div style=\"margin: 5px; padding: 5px; border: 1px solid black; width: 600px;\">".$nyheden['nyhed']."</div>";
            echo "<div style=\"padding-left: 10px;\"><i>  ".$nyheden['dato']."</i></div><br>";
            }

    } else {
        echo "Ingen nyheder endnu.";

    }
    ?>
Avatar billede jakobdo Ekspert
04. marts 2007 - 16:28 #20
Kan du se billedet i mappen?
Avatar billede ppb Nybegynder
04. marts 2007 - 16:34 #21
ja, og navnet i databasen.
Avatar billede jakobdo Ekspert
04. marts 2007 - 16:46 #22
test her:

<?php
    $host="???";
    $user="???";
    $pass="???";
    $db="???";
   
    $billedeDir = '/billede/';

    mysql_connect($host,$user,$pass);
    mysql_select_db($db);

    $nyhed = mysql_query("SELECT * FROM nyhedssystem ORDER BY id DESC") or die(mysql_error());

    if(mysql_num_rows($nyhed) > 0) {

            while ($nyheden=mysql_fetch_array($nyhed)) {
            echo "<div style=\"font-size: 18px;\"><b>".$nyheden['overskrift']."</b></div>";
            echo "<div style=\"margin: 5px; padding: 5px; border: 1px solid black; width: 600px;\">".$nyheden['nyhed']."</div>";
            echo "<div style=\"margin: 5px; padding: 5px; border: 1px solid black; width: 600px;\"><img src='".$billedeDir.$nyheden['billede']."' alt='billede' /></div>";
            echo "<div style=\"padding-left: 10px;\"><i>  ".$nyheden['dato']."</i></div><br>";
            }

    } else {
        echo "Ingen nyheder endnu.";

    }
    ?>

ved ikke hvad du har kaldt mappen, jeg har sat det til billede i toppen.
Avatar billede ppb Nybegynder
04. marts 2007 - 16:54 #23
Hov...nu virker det jo.

Smid et svar, og mange tak for hjælpen.
Avatar billede jakobdo Ekspert
04. marts 2007 - 16:59 #24
Du får et svar!
Avatar billede jakobdo Ekspert
04. marts 2007 - 17:28 #25
Takker for point.
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