Trädvy Permalänk
Medlem
Plats
Skövde
Registrerad
Jul 2007

Uppladdnings problem(PHP)

När jag ska ladda upp ett foto till en mapp på servern och även lägga in filnamnet i databasen men när den ska lägga in filnamnet i databasen så lägger den bara in 0. Den laddar upp bilden som den ska, vad är det för fel?

<?php //Kod för att lägga till genom ett forumlär if(isset($_GET['addnews'])) { ?> Lägg till en nyhet<br /> <form action='news.php?addnews&add' id='add' method='post' enctype='multipart/form-data'> <b>Rubrik:</b><br /> <input type='text' name='rubrik' /><br /> <b>Bild:</b><br /> Fil: <input type="file" name="uplfile"> <b>Innehåll:</b><br /> <textarea name='text' cols='50' rows='15'></textarea><br /> <input type='submit' value='Lägg till nyhet' /> </form> <?php //Då ?addnews=$id&add står i adressfältet kommer följande kod att laddas if(isset($_GET['add'])) { //Lägger in dagens datum i variabeln $datum som ex 1/9-04 $date = date('j/n-y H:i'); //Kod för att ladda upp bild // Mappen där filerna ska hamna $upload_dir = 'files/'; // De tillåtna filtyperna, separerade med komman, utan mellanrum $filetypes = 'jpg,gif,png'; // Den största tillåtna storleken (1024 kB) $maxsize = (1024*1024); // Kontrollera att det angavs en fil if(empty($_FILES['uplfile']['name'])) die('Ingen fil har valts'); // Kontrollera storleken if($_FILES['uplfile']['size'] > $maxsize) die('Filen du valde är för stor. Maxstorleken är '.(string)($maxsize/1024).' KB.'); // Kontrollera filtypen $types = explode(',', $filetypes); $file = explode('.', $_FILES['uplfile']['name']); $extension = $file[sizeof($file)-1]; if(!in_array(strtolower($extension), $types)) die('Du har en felaktig filtyp. Endast .jpg, .gif och .png är tillåtet!'); // Generera unikt filnamn $bokstav = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6'); $thefile = $_FILES['uplfile']['name']; while (file_exists($upload_dir.$thefile)) { $img = $bokstav[rand(0, count($bokstav)-1)].$thefile; } // Flytta filen rätt if (is_uploaded_file($_FILES['uplfile']['tmp_name']) && move_uploaded_file($_FILES['uplfile']['tmp_name'],$upload_dir.$thefile)) { echo 'Filen laddades upp!'; /* Uppladdningen lyckades. Här kan man även lägga eventuell kod för t.ex. databashantering. Filnamnet ligger i $thefile. Ytterliggare fält i formuläret får du som vanligt med $_POST */ } else { echo 'Ett fel uppstod och filen kunde inte laddas upp.'; /* Uppladdningen misslyckades. */ } //SQL kod för att lägga in i databasen mysql_query("INSERT INTO news (rubrik, date, text, photo) values ('" .$_POST['rubrik']. "', '$date', '" .$_POST['text']. "', '$thefile')") or exit(mysql_error()); //Skickar dig vidare till det inskrivna efter location: header('location: news.php'); } }

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Sep 2007

testa

<?php //Kod för att lägga till genom ett forumlär if(isset($_GET['addnews'])) { ?> Lägg till en nyhet<br /> <form action='news.php?addnews&add' id='add' method='post' enctype='multipart/form-data'> <b>Rubrik:</b><br /> <input type='text' name='rubrik' /><br /> <b>Bild:</b><br /> Fil: <input type="file" name="uplfile"> <b>Innehåll:</b><br /> <textarea name='text' cols='50' rows='15'></textarea><br /> <input type='submit' value='Lägg till nyhet' /> </form> <?php //Då ?addnews=$id&add står i adressfältet kommer följande kod att laddas if(isset($_GET['add'])) { //Lägger in dagens datum i variabeln $datum som ex 1/9-04 $date = date('j/n-y H:i'); //Kod för att ladda upp bild // Mappen där filerna ska hamna $upload_dir = 'files/'; // De tillåtna filtyperna, separerade med komman, utan mellanrum $filetypes = 'jpg,gif,png'; // Den största tillåtna storleken (1024 kB) $maxsize = (1024*1024); // Kontrollera att det angavs en fil if(empty($_FILES['uplfile']['name'])) die('Ingen fil har valts'); // Kontrollera storleken if($_FILES['uplfile']['size'] > $maxsize) die('Filen du valde är för stor. Maxstorleken är '.(string)($maxsize/1024).' KB.'); // Kontrollera filtypen $types = explode(',', $filetypes); $file = explode('.', $_FILES['uplfile']['name']); $extension = $file[sizeof($file)-1]; if(!in_array(strtolower($extension), $types)) die('Du har en felaktig filtyp. Endast .jpg, .gif och .png är tillåtet!'); // Generera unikt filnamn $bokstav = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6'); $thefile = $_FILES['uplfile']['name']; while (file_exists($upload_dir.$thefile)) { $img = $bokstav[rand(0, count($bokstav)-1)].$thefile; } // Flytta filen rätt if (is_uploaded_file($_FILES['uplfile']['tmp_name']) && move_uploaded_file($_FILES['uplfile']['tmp_name'],$upload_dir.$thefile)) { echo 'Filen laddades upp!'; /* Uppladdningen lyckades. Här kan man även lägga eventuell kod för t.ex. databashantering. Filnamnet ligger i $thefile. Ytterliggare fält i formuläret får du som vanligt med $_POST */ } else { echo 'Ett fel uppstod och filen kunde inte laddas upp.'; /* Uppladdningen misslyckades. */ } //SQL kod för att lägga in i databasen mysql_query("INSERT INTO news (rubrik, date, text, photo) values ('".$_POST['rubrik']."', '".$date."', '".$_POST['text']".', '".$thefile."')") or exit(mysql_error()); //Skickar dig vidare till det inskrivna efter location: header('location: index.php'); } }

[ASUS P9X79] [Corsair RM850i] [Corsair 32GB DDR3 1600mhz] [i7 3930K] [Noctua NH-D14] [Gainward GTX 1080 "GLH" Golden Sample 8GB GDDR5X][Sandisk 256GB][Fractal Design Define S]

Trädvy Permalänk
Medlem
Plats
Skövde
Registrerad
Jul 2007

Nej det fungerade inte den sa att det var fel i på raden med sql strängen.

För det var bara mellanslagen du har tagit bort på mysql_query raden va?

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Sep 2007

yep..

tänkte testköra scriptet men orkade inte fixa databasen etc.

[ASUS P9X79] [Corsair RM850i] [Corsair 32GB DDR3 1600mhz] [i7 3930K] [Noctua NH-D14] [Gainward GTX 1080 "GLH" Golden Sample 8GB GDDR5X][Sandisk 256GB][Fractal Design Define S]

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Jun 2005

<?php //Kod för att lägga till genom ett forumlär if(isset($_GET['addnews'])) { ?> Lägg till en nyhet<br /> <form action='news.php?addnews&add' id='add' method='post' enctype='multipart/form-data'> <b>Rubrik:</b><br /> <input type='text' name='rubrik' /><br /> <b>Bild:</b><br /> Fil: <input type="file" name="uplfile"> <b>Innehåll:</b><br /> <textarea name='text' cols='50' rows='15'></textarea><br /> <input type='submit' value='Lägg till nyhet' /> </form> <?php //Då ?addnews=$id&add står i adressfältet kommer följande kod att laddas if(isset($_GET['add'])) { //Lägger in dagens datum i variabeln $datum som ex 1/9-04 $date = date('j/n-y H:i'); //Kod för att ladda upp bild // Mappen där filerna ska hamna $upload_dir = 'files/'; // De tillåtna filtyperna, separerade med komman, utan mellanrum $filetypes = 'jpg,gif,png'; // Den största tillåtna storleken (1024 kB) $maxsize = (1024*1024); // Kontrollera att det angavs en fil if(empty($_FILES['uplfile']['name'])) die('Ingen fil har valts'); // Kontrollera storleken if($_FILES['uplfile']['size'] > $maxsize) die('Filen du valde är för stor. Maxstorleken är '.(string)($maxsize/1024).' KB.'); // Kontrollera filtypen $types = explode(',', $filetypes); $file = explode('.', $_FILES['uplfile']['name']); $extension = $file[sizeof($file)-1]; if(!in_array(strtolower($extension), $types)) die('Du har en felaktig filtyp. Endast .jpg, .gif och .png är tillåtet!'); // Generera unikt filnamn $bokstav = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6'); $thefile = $_FILES['uplfile']['name']; while (file_exists($upload_dir.$thefile)) { $img = $bokstav[rand(0, count($bokstav)-1)].$thefile; } // Flytta filen rätt if (is_uploaded_file($_FILES['uplfile']['tmp_name']) && move_uploaded_file($_FILES['uplfile']['tmp_name'],$upload_dir.$thefile)) { echo 'Filen laddades upp!'; /* Uppladdningen lyckades. Här kan man även lägga eventuell kod för t.ex. databashantering. Filnamnet ligger i $thefile. Ytterliggare fält i formuläret får du som vanligt med $_POST */ } else { echo 'Ett fel uppstod och filen kunde inte laddas upp.'; /* Uppladdningen misslyckades. */ } //SQL kod för att lägga in i databasen $query = "INSERT INTO news (rubrik, date, text, photo) values ({$_POST['rubrik']}, $date, {$_POST['text']}, $thefile)"; mysql_query($query) or exit(mysql_error()); //Skickar dig vidare till det inskrivna efter location: header('location: news.php'); } }

Det här kan fungera.
Sen undrar jag lite över denna rad:

while (file_exists($upload_dir.$thefile)) { $img = $bokstav[rand(0, count($bokstav)-1)].$thefile; }

Du kollar om filen $upload_dir.$thefile existerar vilket den inte borde göra förens du laddar upp den dit, vilket du gör efter while-slingan.
Se över om du kanske har gjort en miss där.

Trädvy Permalänk
Medlem
Plats
Skövde
Registrerad
Jul 2007

Det fungerar inte, nu låser sig allt bara, den laddar upp filen till den mappen men den lägger inte till något i databasen.

Det är inte jag som har gjort skriptet men den kollar ju om det finns en fil med samma namn och då så byter den väll namn på filen?

Trädvy Permalänk
Medlem
Plats
Kungsbacka
Registrerad
Nov 2008

Man skall inte göra såhär istället?

$query = 'INSERT INTO news (rubrik, date, text, photo) values ('.$_POST['rubrik'].', '.$date.', '.$_POST['text'].', '.$thefile.')';

Intel 3570k @ 4,4GHz | ASUS P8Z77-V | G.Skill 8GB 1600Mhz | Gigabyte GTX970 | Samsung 850 Evo 250gb | Corsair HX650 | Antec P280

Trädvy Permalänk
Medlem
Plats
här..
Registrerad
Jun 2006

while (file_exists($upload_dir.$thefile)) { $img = $bokstav[rand(0, count($bokstav)-1)].$thefile; }

Jag undrar också över den raden. Även om du flyttar filen dit så borde ju scriptet fastna där så länge filen finns. right?

edit: testa att byta ut while i början mot if.

Trädvy Permalänk
Medlem
Plats
Skövde
Registrerad
Jul 2007

Jag har löst det, det hade inget med koden att göra. Det var jag som hade tänkt att lösa bilderna på ett annat sätt så "photo" hade datatyp INT

Trädvy Permalänk
Medlem
Plats
Kungsbacka
Registrerad
Nov 2008

^^ Bra att det löste sig då

Intel 3570k @ 4,4GHz | ASUS P8Z77-V | G.Skill 8GB 1600Mhz | Gigabyte GTX970 | Samsung 850 Evo 250gb | Corsair HX650 | Antec P280