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>
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
03. marts 2007 - 22:59
#1
Skal billedet gemmes i databasen eller i en mappe på din server?
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.
03. marts 2007 - 23:06
#3
Ikke nødvendigvis! Det er nemmeste at gemme det i en mapp.
03. marts 2007 - 23:10
#4
Kan det så klares via en tilføjelse på mit script?
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>
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!
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.
03. marts 2007 - 23:31
#8
Så ikke du havde skrevet...
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'
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
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.
04. marts 2007 - 00:20
#12
ok har du oprettet mappen billeder?
04. marts 2007 - 00:28
#13
ja
04. marts 2007 - 00:32
#14
Har du chmod'et den til 777 ?
04. marts 2007 - 00:38
#15
ja. men hvad skal den mappe bruges til? foregår det ikke på databasen?
04. marts 2007 - 09:22
#16
Billedet bliver gemt i mappen og i databasen bliver navnet på filen gemt.
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å?
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.
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."; } ?>
04. marts 2007 - 16:28
#20
Kan du se billedet i mappen?
04. marts 2007 - 16:34
#21
ja, og navnet i databasen.
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.
04. marts 2007 - 16:54
#23
Hov...nu virker det jo. Smid et svar, og mange tak for hjælpen.
04. marts 2007 - 16:59
#24
Du får et svar!
04. marts 2007 - 17:28
#25
Takker for point.
Vi tilbyder markedets bedste kurser inden for webudvikling