23. december 2005 - 00:20Der er
16 kommentarer og 1 løsning
Upload af billede problemer
Jeg har nogle problemer med mit opload af billede script. Det som man skal kunne er: *At uploade et billede *Billedes filnavn skal gemmes i en database sammen med andre oplysning *Når billedet bliver uploaded skal det gemmes i en mappe hvorefter billedet bliver resized til en maxwidth på 110px, hvorefter det billede så bliver gemt i en mappe og dens filnavn bliver skrevet ind i databasen i samme række som det andet tilføjet info står i.
Meningen er at man skal oploade et stort billede, med info, som bliver resized. Det skal så bruges som thumbnail ved infoen, hvor man skal trykke på billedet for at se det i et nyt vindue.
/* Check PHP-version */ list($major, $minor, $rev) = explode(".", phpversion()); if($major < 4) { die("Jeg kan kun arbejde med PHP 4.0.0 eller derover"); }
/* Skab de "moderne" arrays hvis vi arbejder med en aeldre PHP */ if($minor < 1) { $_FILES = $HTTP_POST_FILES; $_POST = $HTTP_POST_VARS; $_SERVER = $HTTP_SERVER_VARS; }
/* Accepterer vi filens stoerrelse? */ $fil_stoerrelse = filesize($fra)/1024; if($fil_stoerrelse > $konfiguration["max_stoerrelse"]) { die("Desværre - filen er for stor. Jeg accepterer kun " . $konfiguration["max_stoerrelse"] . "kb, og din fil fylder " . ceil($fil_stoerrelse, 1) . " kb"); }
/* Saa koerer vi */
if(function_exists("move_uploaded_file")) {
resize($fra, $til, 110); echo "Billedet er opdateret<br>";
} else { copy($fra, $til); }
include "connect.php";
mysql_query("INSERT INTO army (unit_navn,unit_text,unit_positiv,unit_negativ,fileupload,unit_section,unit_race,dato) VALUES ('$_POST[unit_navn]','$_POST[unit_text]','$_POST[unit_positiv]','$_POST[unit_negativ]','$fileupload','$_POST[unit_section]','$_POST[unit_race]','$dato')");
}
?> <table width="100%" border="0" cellpadding="0" cellspacing="0"> <? include "connect.php"; $query = mysql_query("SELECT * FROM army WHERE dato = '$dato'"); while ($row = mysql_fetch_array($query)) {
Jeg forstår ikke rigtig hvorfor den ikke vil oploade billedet til serveren, eller de to billeder som det jo bliver? Håber der er nogen der kan hjælpe mig.
Det ville være meget bedre bare at sætte en upload funktion i stedet for at tjekke om den findes, move_uploaded_file har været der siden PHP 4.0.3 - jeg ville bare klaske en move_uploaded_file op i stedet.. Desuden har jeg meget lidt tiltro til copy() i uploads..
Medhensyn til din MySQL funktion burde du tjekke efter fejl, ret din MySQL string til:
mysql_query("INSERT INTO army (unit_navn,unit_text,unit_positiv,unit_negativ,fileupload,unit_section,unit_race,dato) VALUES ('$_POST[unit_navn]','$_POST[unit_text]','$_POST[unit_positiv]','$_POST[unit_negativ]','$fileupload','$_POST[unit_section]','$_POST[unit_race]','$dato')") or die(mysql_error());
OK, nu har jeg rettet det som du skriver, og de info som bliver skrevet til databasen bliver også skrevet ind i databasen nu. Det var bare mig der havde glemt at skrive de rigtige oplysning i filen som laver forbindelse til databasen :) Problemet er så stadig at få billedet ind i mappen på serveren...?
Lige en ting mere... I databasen står fileupload således når jeg har rettet $fra = $_FILES['file']['name']; til $fra = $_FILES['file']['tmp_name']; : 23-12-2005/tmp/phpCcdfhW Hvor hvis jeg bare skriver 'name' som før, kommer billedets navn med datoen foran som faktisk er rigtig nok: 23-12-2005test.jpg
Yeps nu bliver billedet uploaded til mappen på serveren! Problemet er så bare at der gerne skulle blive lavet et nyt billede med en width på 110px som så gemmes i samme mappe (det billede skal bruges som en thumbnail). Navnet eller stien på billedet bliver heller ikke skrevet ind i databasen, og jeg har rettet $fileupload i mysql_query("INSERT INTO... til $name...?
Billedet bliver stadig kun oploaded uden at der bliver lavet en ny fil...? Det thumbnail, som skal laves er der kun det ene krav, at den skal have en width på 110px hvor højden er lige meget, bare sådan at thumbnailen ikke kommer til at se underlig ud hvis billedet nu er højt...
Ang. det med højden og bredden, det der resize script er lavet saa smart at den selv finder ud af hvordan billedet er i forhold til de kriterier du har sat - det vil aldrig faa en sjov facon fordi højden er sat til noget andet, den sætter bare en max højde og bredde, saa billedet bliver inden for de grænser :o)
Tusind gange mange tak, det virker, der bliver nu oploaded det orginale billede og en thumbnail. Det med højden og bredden blev jeg bare lidt forvirret over fordi der står 110,110, men jeg ændrede bare bredden til 400 så den næsten kun resizer efter 110px hver gang :) Lige en ting mere, jeg ska ha en sti til de to filer skrevet ind i samme row som resten af infoen, eller ihvertfald bare et navn på billederne. Jeg har prøvet lidt forskelligt som $fileupload og $name, men ved ik rigtig hvorn jeg ska få det skrevet ind i databasen.
Yeps, det virkede...jeg definerede lige en variable inden jeg satte det ind i den mysql_query: $pic = $_FILES['file']['name']; Så kom det til at virke. En sidste ting, så skal jeg nok stoppe med at spørge, det thumbnail som bliver gemt, hva ska jeg definere for at få den fil's navn ind i databasen?
OK, fandt selv ud af det :) Gjorde sådan: $thumbnailpic = thumb_ . $_FILES['file']['name']; Men mange tak for hjælpen Nizo, du må lige smide et svar så jeg kan give dig points. Glædelig jul!
Det var godt det hele kom til at virke! Tak og Glædelig jul! :o)
Synes godt om
Ny brugerNybegynder
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.