Avatar billede Slettet bruger
19. oktober 2009 - 10:07 Der er 17 kommentarer og
1 løsning

Tilføj overskrift og filnavn til database

Har et script hvor jeg uploader en fil til min server.
Jeg vil meget gerne have tilføjet så den gemmer filnavn og dato, samt at man kan lave en overskrift til filen, som den så gemmer til min MySQL database.

Håber der er nogle der kan hjælpe. :-)

Mit script er som følgende:

billede.htm

<html>
<body>
<form action="upload_file.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />
<br />
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>

upload_file.php

<?php
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 2000000))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br />";
    echo "Type: " . $_FILES["file"]["type"] . "<br />";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";

    if (file_exists("upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Invalid file";
  }
?>
Avatar billede unva Nybegynder
19. oktober 2009 - 12:27 #1
Hvis du sender mig strukturen på den tabel du vil have i databasen så skal jeg hurtig tilføje de sql sætninger du skal bruge for at smide de valgte oplysninger ind i tabellen!
Avatar billede Slettet bruger
19. oktober 2009 - 12:39 #2
Altså som dette?

ID, filnavn, dato, overskrift, beskrivelse, kategori

Filnavn skal naturligvis automatisk kopieres fra filnavnet og dato skal være dagsdato. Overskrift, beskrivelse og kategori skal indtastes i en form.
Avatar billede unva Nybegynder
19. oktober 2009 - 12:47 #3
ja, og så hvad datatype de forskellige felter er.
Vil umidbart gætte på det er:
ID (int), filnavn(varchar), dato(datotype), overskrift(varchar), beskrivelse(text), kategori(skal der være tekst eller tal)

Hvis du skriver din form som du vil have den endelig ser ud (kan se du også vil have mulighed for beskrivelse og den slags), så skal jeg skrive din sql sætning for dig!
Avatar billede Slettet bruger
19. oktober 2009 - 12:51 #4
det er bare super.... og kategori skal være tekst.. :-)
Avatar billede unva Nybegynder
19. oktober 2009 - 13:06 #5
Godt nok

så bare skriv din billede.htm fil færdig så man også kan skrive hvad kategori billedet skal være samt overskriften og hvad du ellers vil have mulighed for!
Avatar billede Slettet bruger
19. oktober 2009 - 13:14 #6
yes, gør jeg lige.. :-)
Avatar billede Slettet bruger
19. oktober 2009 - 13:27 #7
Så skal det være som følgende:

<html>
<body>

<form action="upload_file.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" /><br><br>

Overskrift:<input type="text" name="overskrift"/><br><br>

Beskrivelse:<input type="text" name="beskrivelse"/><br><br>

Kategori: <select name="kategori">
<option value="morgen">Morgen</option>
<option value="middag">Middag</option>
<option value="aften">Aften</option>
</select><br><br>


<input type="submit" name="submit" value="Submit" />
</form>

</body>
</html>
Avatar billede unva Nybegynder
19. oktober 2009 - 14:14 #8
Jeg har godt nok ikke testet det efter, men dette burde virker:

<?php
$host = "localhost";
$user = "dbUSER";
$pass = "dbPASS";
$db  = "daNAME";
$connection = mysql_connect($host,$user,$pass);
mysql_select_db("$db");


if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 2000000))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br />";
    echo "Type: " . $_FILES["file"]["type"] . "<br />";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";

    if (file_exists("upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      $sql = "INSERT INTO links (filnavn, dato, overskrift, beskrivelse, kategori) VALUES('$_FILES[file][name]', NOW(), '$_GET[overskrift]', '$_GET[beskrivelse]', '$_GET[kategori]');"; // Selve sql sætningen
      mysql_query($sql); // Sender sql sætnignen til MySQL databasen
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Invalid file";
  }
?>


Det eneste du skal gøre er at ændre db oplysningerne, øverst i filen, så de passer til din server!

Håber det virker!
Avatar billede Slettet bruger
19. oktober 2009 - 14:21 #9
Fedt... Mange tak... Prøver at teste det... :-)
Avatar billede Slettet bruger
19. oktober 2009 - 15:02 #10
Den tilføjer til database, men i filnavn står der "Array[name]", så noget går galt.. Og intet i de andre felter - bortset fra dato, den er god nok...
Avatar billede unva Nybegynder
19. oktober 2009 - 15:11 #11
Ja det er klart, du køre post og ikke get, retter lige sql sætningen.

$picName = $_FILES['file']['name']
$sql = "INSERT INTO links (filnavn, dato, overskrift, beskrivelse, kategori) VALUES('$picName', NOW(), '$_POST[overskrift]', '$_POST[beskrivelse]', '$_POST[kategori]');";

Prøv sådan, og husk også at indsætte den variable over sql sætningen !
Avatar billede Slettet bruger
19. oktober 2009 - 19:48 #12
Den uploader fint billedet, men nu kommer der intet i databasen...
Har tilføjet det du skrev, men ved ikke lige om jeg har gjort det forkert?

      move_uploaded_file($_FILES["file"]["tmp_name"],"upload/" . $_FILES["file"]["name"]);
      $picName = $_FILES['file']['name'];
$sql = "INSERT INTO links (filnavn, dato, overskrift, beskrivelse, kategori) VALUES('$picName', NOW(), '$_POST[overskrift]', '$_POST[beskrivelse]', '$_POST[kategori]');";
      mysql_query($sql); // Sender sql sætnignen til MySQL databasen
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Invalid file";
  }
?>
Avatar billede unva Nybegynder
19. oktober 2009 - 20:03 #13
Hvad hedder din tabel i databasen ?

Kan se jeg har valgt at kalde den links, hvis den heder noget andet skal du huske og ændre dette!?
Avatar billede Slettet bruger
19. oktober 2009 - 20:39 #14
Arghhh... Sorry... Min fejl... Glemte jeg da lige..
Tester det lige med det rigtige tabel navn.. ;-)
Avatar billede Slettet bruger
19. oktober 2009 - 20:47 #15
Super, så virker det bare.. :-)
Tusinde tak.... Fedt at kunne komme lidt videre...

Er det bøvlet at skulle tilføje, så man kan uploade 2 filer på samme tid? og så tilføje navnet til f.eks. filnavn2, hvis jeg tilføjer den i databasen?
Kun hvis du har tid, for det andet er helt super...
Har bare brug fo rdet i et andet område, så kan jeg lige så godt få lavet begge dele når jeg er i gang.. :-)
Avatar billede unva Nybegynder
25. oktober 2009 - 11:26 #16
Det er enlig ikke så meget svære at tilføje to billeder.
Du laver bare felterne i din form 2 gange, og kalder dem navnet og så 2, og i den næste fil, den der uploader og gemmer i db laver du bare de fleste ting to gange også!

Prøv at arbejder lidt på det selv, det vil du få mest ud af !
Avatar billede Slettet bruger
27. oktober 2009 - 11:34 #17
Skal jeg så lave en for sætning eller noget, for den skal vel kører igennem 2 gange for at checke for fil nr. 2?
Avatar billede Slettet bruger
28. oktober 2009 - 14:19 #18
Det kan jeg bare ikke få til at lykkedes.. Har prøvet alt nu.. Måske jeg skulle have holdt mig til ASP.. haha.. :-)
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