Avatar billede jehomi Nybegynder
25. juni 2003 - 00:33 Der er 39 kommentarer

uploade billede

hej.
Jeg har en kode som gerne skulle give brugeren mulighed for at uploade et billede og lægge stien til filen i en database, men det melder fejl hvor jeg har markeret det :

<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post" enctype="multipart/form-data">
<fieldset>
  Upload fil<br />
  <input type="file" name="upfil" size="30" /><br />
  <input type="submit" name="sendknap" value="Upload" />
</fieldset>
</form>

<?php

/* Funktioner der benyttes */

function upload_fil($fil, $max_stoerrelse = 100, $bibliotek = "default", $filtyper_tilladt = "default") {

    if ($bibliotek == "default") {
        $bibliotek = "upload";
    }

    if ($filtyper_tilladt == "default") {
        $filtyper_tilladt = array("image/bmp", "image/jpeg", "image/pjpeg", "image/tiff", "image/png", "image/gif", "application/pdf", "application/zip", "application/arj", "application/x-zip-compressed", "application/octet-stream");
    }

    if ($fil["size"] > 0) {
       
        $filnavn = strtolower(ereg_replace(" ", "_", $fil["name"]));
        $fra = $fil["tmp_name"];
        $til = $bibliotek . "/" . $filnavn;
        $fil_stoerrelse = filesize($fra)/1024;
        $filtype = $fil["type"];
        $fejl = 0;

        if (!in_array($filtype, $filtyper_tilladt)) {
            echo "<p>Filtypen '$filtype' er ikke tilladt. De tilladte filtyper er '" . implode("', '", $filtyper_tilladt) . "'. Filen '$filnavn' kan derfor ikke uploades!</p>";
            $fejl = 1;
        }
        if ($fil_stoerrelse > $max_stoerrelse) {
            echo "<p>Filen '$filnavn' er for stor og kan ikke uploades. Den fylder " . ceil($fil_stoerrelse) . " kb og der kan maximalt uploades $max_stoerrelse kb!</p>";
            $fejl = 1;
        }
        if ($fejl == 0) {
            if (file_exists($til)) {
               
                $pos = strrpos($filnavn, ".");
                $foerpos = substr($filnavn, 0, $pos);
                $efterpos = substr($filnavn, $pos + 1, strlen($filnavn) - ($pos + 1));
                $i = 2;
               
                echo "<p>Filen '$filnavn' eksisterer allerede i '" . $bibliotek . "' og filen omdøbes derfor til ";
               
                while (file_exists($til)) {
                    $filnavn = $foerpos . "(" . $i . ")." . $efterpos;
                    $til = $bibliotek . "/" . $filnavn;
                    $i++;
                }
                echo "'$filnavn'</p>";
            }

            if (move_uploaded_file($fra, $til)) {
                echo "<p>Filen '$filnavn' er uploadet!</p>";
                return "/" . $til;
            } else {
                echo "<p>Desværre, filen '$filnavn' kunne ikke uploades!</p>";
                return false;
            }
        }
    } else {
        echo "<p>Der er ikke vedhæftet nogen fil!</p>";
    }
}  HEEEEEEEEEEEEEEEEEEEEEER er der fejlllllllllllll




/* Siden starter */

if ($_POST[sendknap]) {

    $fil = $_FILES["upfil"];
$(stien_til_filen) = upload_fil($fil);
  $db = mysql_connect("localhost","root");
mysql_select_db("registrering",$db);

  $sql="INSERT INTO annonce(stien_til_filen)
    VALUES('$HTTP_POST_FILES[stien_til_filen]')";

$result = mysql_query($sql) or die(mysql_error());
// upload_fil($fil);
   

   



}

?>

og meddelsen er følgende :

Parse error: parse error, unexpected '(', expecting T_VARIABLE or '$' in c:\apache\apache\htdocs\registrering\sendvidere1.php on line 76
Avatar billede erikjacobsen Ekspert
25. juni 2003 - 00:37 #1
Jeg tror nu det er her:

$(stien_til_filen) = upload_fil($fil);
Avatar billede jehomi Nybegynder
25. juni 2003 - 00:38 #2
okay, det kan man måske ikke ??
Avatar billede Slettet bruger
25. juni 2003 - 00:40 #3
Jeg har et script som virker og ligne det meget. I denne version er der dog nogle flere felter, men dem sletter du bare

<?php



$IPnr = getenv('REMOTE_ADDR'); # Henter brugerens aktuelle IP

echo "$IPnr";

if($_POST['up']){
    $files = $_FILES['upfil']['name'];
    $file = $_FILES['upfil']['tmp_name'];
    $fil_stoerrelse = filesize($file)/1024;
    if($fil_stoerrelse > "100") {
        echo "Det billede du prøver at uploade er <b>ikke</b> gyldigt - max 100 kb
        <a href=java script:history.back(-1)>Tilbage</a>";
        exit;
    }
    $billedewh = @GetImageSize($file);
    if ($billedewh['0'] > 90 || $billedewh['1'] > 90) {
        echo "Det billede du prøver at uploade er <b>ikke</b> gyldigt - max 90x90
        <a href=java script:history.back(-1)>Tilbage</a>";
        exit;
    }
    $sti = "/test/";
    $dist = $_SERVER["DOCUMENT_ROOT"] ."$sti";
    $temparr = explode(".", $files);
    $temparr[count($temparr)-2] = time();
    $files = implode(".", $temparr);
    move_uploaded_file($_FILES['upfil']['tmp_name'], $dist . $files);
    $connection = mysql_pconnect("localhost","Brugernavn","password");
    mysql_select_db("database");
    mysql_query("insert into tabel (navn, user, mail, type, kate, over, besk, pris, tekst, filnavn, height, width, ip, dato) values ('$_POST[navn]', '$_POST[user]', '$_POST[mail]', '$_POST[type]', '$_POST[kate]', '$_POST[over]', '$_POST[besk]', '$_POST[pris]', '$_POST[tekst]', '$files', '$billedewh[0]', '$billedewh[1]',  '$IPnr', now())");
    echo "Din fil er nu uploadet<br><br>";
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">


<BODY><table bgcolor="#FFFFFF" width="500" align="center">
<tr>
        <td width="120"><b>Navn:</b></td>
        <td><input type="text" name="navn" value="<?php echo "$navn"; ?>"></td>
</tr>

<tr>
        <td width="120"><b>E-mail:</b></td>
        <td><input type="text" name="mail" value="<?php echo "$mail"; ?>"></td></td>
</tr>

<tr>
        <td><br></td>
        <td><br></td>
</tr>

<tr>
        <td width="120"><b>Type:</b></td>
        <td><select name="type">
                    <option value="salg">Salg</option>
                    <option value="koeb">Koeb</option>
        </select></td>
</tr>

<tr>
        <td width="180"><b>Kategori:</b></td>
        <td><select name="kate" value="<?php echo "$kate"; ?>">>
                    <option value="book"> Boeger</option>
                    <option value="cd">CD'er</option>
                    <option value="computer">Computer</option>
                    <option value="diverse">Diverse</option>
                    <option value="film">DVD- og videofilm</option>
                    <option value="lommeregner">Lommeregner</option>
                    <option value="mobil">Mobiltelefoner</option>
        </select></td>
</tr>



<tr>
        <td width="120"><b>Overskrift:</b></td>
        <td><input type="text" name="over"></td>
</tr>

<tr>
        <td width="120"><b>Beskrivelse:</b></td>
        <td><textarea cols="35" rows="7" name="besk" maxlength="400"></textarea></td>
</tr>

<tr>
        <td width="120"></td>
        <td>Max 400 tegn</td>
</tr>

<tr>
        <td width="120"><input type="hidden" name="user"></td><br></td>
        <td><br></td>
</tr>


<tr>
        <td width="120"><b>Pris:</b></td>
        <td><input type="text" name="pris"></td>
</tr>

<tr>
        <td width="120"></td>
        <td>Pris i hele kroner</td>
</tr>

<tr>
        <td width="120"><br></td>
        <td><br></td>
</tr>

<tr>
        <td width="120"><b>Upload billede:</b></td>
        <td><input type="file" name="upfil"></td>
</tr>

<tr>
        <td width="120"><b>Tekst til billede:</b></td>
        <td><input type="text" name="tekst"></td>   
</tr>
<tr>
        <td width="120"></td>
        <td align="center"><input type="submit" value="upload" name="up"></td>
</tr>

</table>
</form>
Avatar billede erikjacobsen Ekspert
25. juni 2003 - 00:40 #4
Hvad skulle det betyde? Mener du ikke bare

$stien_til_filen = upload_fil($fil);
Avatar billede jehomi Nybegynder
25. juni 2003 - 00:46 #5
prøver det lige hansen.dk ..
Avatar billede jehomi Nybegynder
25. juni 2003 - 00:49 #6
hansen.dk, problemet er mere at få lagt stien til filen i databasen.., men din formular ser da fin ud!!
Avatar billede jehomi Nybegynder
25. juni 2003 - 00:50 #7
erikjacobsen, jo men er det ikke det jeg har ??
Avatar billede jehomi Nybegynder
25. juni 2003 - 00:51 #8
øh uden paranteser, sorry
Avatar billede erikjacobsen Ekspert
25. juni 2003 - 00:53 #9
Du skal nok også ændre din insert-sætning nedenunder
Avatar billede jehomi Nybegynder
25. juni 2003 - 01:12 #10
Nu vil jeg gerne hente det igen fra data basen hvordan gør jeg det´, altså noget med

$foresp = mysql_query("SELECT stien_til_filen FROM registrering");
echo "et eller andet" ???

Man skal vel angive noget med image ???
Avatar billede jehomi Nybegynder
25. juni 2003 - 01:35 #11
er lidt i vildrede her ??
Avatar billede erikjacobsen Ekspert
25. juni 2003 - 08:47 #12
Måske:

$foresp = mysql_query("SELECT stien_til_filen FROM registrering") or die(mysql_error());
while ($r = mysql_fetch_array($foresp)) {
  print "<img src=\"$r[stien_til_filen]\">";
}
mysql_free_result($foresp);
Avatar billede Slettet bruger
25. juni 2003 - 11:44 #13
Der bliver ikke lagt en sti fra SQL-databasen og ud til filen. Der bliver bare lagt et fil navn. Og alle filerne bliver upload til den mappe, som står i php scriptet :-D Det virker. Jeg bruger det. DU kan se det på www.adminzone.dk/salg/test.php

og her henter den så billede ud
http://www.adminzone.dk/salg/visalle.php

Ikke lige pænt, men det er bare lidt test
Avatar billede jehomi Nybegynder
25. juni 2003 - 13:02 #14
hansen.dk vil det sige at du ligger selve billed filen i databasen sammen med de andre oplysninger ??

Er det disse to '$billedewh[0]', '$billedewh[1]' ??

Og til sidst, så henter du billederne frem som normalt med select from osv... ????
Avatar billede jehomi Nybegynder
25. juni 2003 - 13:25 #15
erik jacobsen, når jeg gør det du skriver, så melder den at table registrering.registrering doesnt exist !!
Avatar billede erikjacobsen Ekspert
25. juni 2003 - 13:34 #16
Det er jo heller ikke det tabellen hedder. Du skriver bare det navn i stedet for
Avatar billede jehomi Nybegynder
25. juni 2003 - 13:38 #17
Måske det er en for stor mundfuld jeg er røget ud i her...
Kan du sige hvad jeg skal ændre for at undgå denne fejlmeddelelse..
Avatar billede erikjacobsen Ekspert
25. juni 2003 - 13:41 #18
tabelnavnet i stedet for 'registrering'
Avatar billede jehomi Nybegynder
25. juni 2003 - 13:46 #19
har jeg nu gjort således :

("SELECT stien_til_filen FROM annonce")

og nu melder den ikke fejl.
Men der hvor billederne skulle være er der istedet nogle rammer med et lille rødt kryds i ??
Avatar billede erikjacobsen Ekspert
25. juni 2003 - 13:47 #20
Så kig på dine image-tags og se om der mangler noget i src="...."
Avatar billede jehomi Nybegynder
25. juni 2003 - 13:53 #21
mon ikke der skal være et eller andet der angiver om det er ne gif eller jpg fil, altså hvilken type ??
Avatar billede erikjacobsen Ekspert
25. juni 2003 - 14:01 #22
Hvad står der i dit <img>-tag?
Avatar billede jehomi Nybegynder
25. juni 2003 - 14:06 #23
jeg har brugt det du foreslog :

print "<img src=\"$r[stien_til_filen]\">";
Avatar billede jehomi Nybegynder
25. juni 2003 - 14:20 #24
syntes ikke rigtig jeg kan finde noget om problemet på nettet...suk
Avatar billede Slettet bruger
25. juni 2003 - 14:33 #25
Billede ligger ikke i databasen. Den gemmer filnavnet i database. Og når du så skal hante billede, så henter jeg bare filnavnet, da alle billede er upload til mappen photos. så stien er /photos/[billede navn]
Avatar billede jehomi Nybegynder
25. juni 2003 - 14:40 #26
hansen.dk :
kan du ikke lige skrive selve det stykke kode der hente filnavnet fra databasen og skriver billedet ud, så ville jeg blive meget taknemmelig!!
Avatar billede jehomi Nybegynder
25. juni 2003 - 14:48 #27
jeg har prøvet med følgende men det virker ikke helt :

$foresp = mysql_query("SELECT stien_til_filen FROM annonce") or die(mysql_error());
while ($r = mysql_fetch_array($foresp)) {
  print "<img src=\"$r[stien_til_filen]\">";
}

Har ligesom fundet ud af at den gemmer filnavnet i databasen, mens billederne bliver uploadet til en mappe. Men ved ikke lige hvordan filnavnet og billedet forbindes når billedet skal udskrives, ??
Avatar billede Slettet bruger
25. juni 2003 - 14:51 #28
<?php


//De sidste 5 post hvor type = køb
$conn = mysql_connect("localhost", "brugernavn", "password") or die(mysql_error());
mysql_select_db("database") or die(mysql_error());

$query = mysql_query("SELECT * FROM tabel");
while($row = mysql_fetch_array($query))
echo "
<table class='tekstafsnit' width='100%' border='0' cellspacing='0' cellpadding='0'>
<tr>
<td><b>Type: $row[type]  Gruppe: $row[kate] </b> - <font color='#999999'>oprette den: $row[dato] af $row[navn]</font></td>
</tr>
<tr>$row[over]</tr>
<tr>
<td>$row[beskrivelse]</td>
</tr>
<tr>
<td>Pris: $row[pris]</td>
</tr>
<tr>
<td><img src='../test/$row[filnavn]'></td>
<td>$row[tekst]</td>
</tr>
<tr>
<td>IP: $row[IP]</td>
</tr>


</table>
<br><br><br><br><br><br><br><br>
";

?>
Avatar billede Slettet bruger
25. juni 2003 - 14:51 #29
Er jo ikke så pænt sat op, men det er en detajle. Det er denne linje, som henter billede <td><img src='../test/$row[filnavn]'></td>
Avatar billede jehomi Nybegynder
25. juni 2003 - 14:56 #30
dvs billederne ligger i mappen test ??
Avatar billede Slettet bruger
25. juni 2003 - 15:01 #31
Ja billeder ligger i mappen test :-D
Avatar billede jehomi Nybegynder
25. juni 2003 - 15:43 #32
syntes det er godt at dit script lægger det hele i databasen samlet, og ikke uploader filnavnet for sig og de andre input felter  for sig :)
Avatar billede jehomi Nybegynder
25. juni 2003 - 15:45 #33
ville til at starte med lægge selve billederne i databasen, men det er måske en dårlig ide, eller kan det ikke lade sig gøre ???
Avatar billede jehomi Nybegynder
25. juni 2003 - 15:54 #34
i andre her må også godt svare :)
Avatar billede Slettet bruger
25. juni 2003 - 16:03 #35
Det er en dårlig ide, da det vil gøre din database langsom
Avatar billede jehomi Nybegynder
25. juni 2003 - 16:14 #36
fint og mange tak vil nu prøve at få din kode til at køre :)

Jeg vender tilbage hvis der er problemer med !!

Du har ikke en email adresse, hvis jeg har et spørgsmål til det ??
Avatar billede jehomi Nybegynder
25. juni 2003 - 18:59 #37
hansen.dk

da billedet kommer frem som en ramme med et rødt kryds i, ville jeg gerne hvis du gad skrive hvordan de forskellige variable er defineret i din database.altså hvilken type de er :)
Avatar billede Slettet bruger
29. juni 2003 - 16:25 #38
CREATE TABLE annonce (
  id int(11) NOT NULL auto_increment,
  navn varchar(250) NOT NULL default '',
  user varchar(250) NOT NULL default '',
  mail varchar(255) NOT NULL default '',
  type varchar(255) NOT NULL default '',
  kate varchar(255) NOT NULL default '',
  over varchar(255) NOT NULL default '',
  besk text,
  pris varchar(255) NOT NULL default '',
  tekst varchar(250) NOT NULL default '',
  filnavn varchar(100) NOT NULL default '',
  height int(4) NOT NULL default '0',
  width int(4) NOT NULL default '0',
  IP varchar(18) NOT NULL default '0',
  dato datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY  (id)
) TYPE=MyISAM;
Avatar billede Slettet bruger
29. juni 2003 - 16:25 #39
Du skal nok ikke bruge alle felterne, men det kan du selv finde ud fra
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
Computerworld tilbyder specialiserede kurser i database-management

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