Smarteste måde at uploade billede og gemme img url i database?

Tags:    php mysql

<< < 123 > >>
I min database har jeg også nogle billeder - eller det vil sige jeg har billede-URLs gemt i databasen, og billederne er jo så i en mappe.

Jeg kunne rigtig godt tænke mig muligheden for at lave et billed-upload som oploader billedet til "mappen" - samt gemmer denne billedeURL i databasen i forbindelse med opdatering.

Men hvordan gøres dette nemmest/ smartest?
Umiddelbart tænker jeg jo, at det var nemt hvis billedet fik et bestemt navn som passer til det id det er uploadet til, sådan at billedet blot overskrides hvis der uploades et nyt. Ellers kan jeg jo få mange billeder efterhånden til at ligge og fylde på serveren.

Jeg har altså en database med heste.
Jeg har så en side hvor man kan opdatere en hest i databasen - og det er her jeg gerne vil have bygget en upload funktion ind.

Er der nogen som kan hjælpe mig med hvordan jeg skal gøre?
Eller henvise til en god artikel som passer til mine behov?



29 svar postet i denne tråd vises herunder
4 indlæg har modtaget i alt 5 karma
Sorter efter stemmer Sorter efter dato
hvis du overfører med GET
skal denne linje være aktiv i index
<form action="processupload.php?hid=2" method="post" enctype="multipart/form-data" id="UploadForm">

skal denne linje være aktiv i processupload.php
$hid = (isset($_GET["hid"]))? (int)$_GET["hid"]:0;


hvis du overfører med POST
skal denne linje være aktiv i index
<form action="processupload.php" method="post" enctype="multipart/form-data" id="UploadForm">
<input type="hidden" value="2" name="hid">

skal denne linje være aktiv i processupload.php
$hid = (isset($_POST["hid"]))? (int)$_POST["hid"]:0;


lige pt har du hverken læst hid via post eller get, da du har slettet post linjen og get linjen er udkommenteret
det kan du også se ud fra sql sætningen jeg test udskriver hid=''


hvad har du gjort af denne linje
$hid = (isset($_POST["hid"]))? (int)$_POST["hid"]:0;




Altså med test af denne:
Fold kodeboks ind/udPHP kode 


og med:
Fold kodeboks ind/udPHP kode 


Så får jeg stadig denne fejl:
Other Post Variables:Array
(
)

UPDATE Databasen SET Billede='billeder/photo_mg_4982-179.jpg' WHERE hid = '53'Der er sket en fejl. Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

Det må vel være i min Connect.php der skal være fejl?
Men den er som den skal være og virker alle andre steder jeg bruger den?

Fold kodeboks ind/udPHP kode 




Indlæg senest redigeret d. 16.07.2013 13:05 af Bruger #17644
så ser det rigtig ud i sql

Det må vel være i min Connect.php der skal være fejl?

det ville også være mit bud, hvordan ser din Connect.php ??
dog når det er en så vigtig fil vile jeg anvende
require_once('Connect.php'); // Indeholder mit database connect.


include: smider en advarsel hvis filen ikke findes, og først fejl når noet fra filen skal bruges.

require: smider en fejl og stopper lige på stedet hvis filen mangler

_once: tester om filen er includeret, og er den det bliver den ikke includeret igen, dermed får du ikke overskrevet evt functioner / variable

http://php.net/manual/en/function.require.php
http://php.net/manual/en/function.include.php
http://php.net/manual/en/function.require-once.php
http://php.net/manual/en/function.include-once.php


ooohe du er skifter over til mysqli :), kunne du jo bare have sagt, så skal dine mysql kald også rettes
Fold kodeboks ind/udKode 


så skal denne linje
mysql_query($sql) or die("Der er sket en fejl. ".mysql_error());

se sådan ud
mysqli_query($mysqli, $sql) or die("Der er sket en fejl. ".mysqli_error());




Hold da op, så ser det ud til at det virker :D

Nu skriver den en side ud med billedet.
Nedenunder står der så:

Other Post Variables:Array
(
)



Det ville jeg jo sådan set gerne have væk.
Kan jeg slette denne stump kode?
Fold kodeboks ind/udPHP kode 



Drøj omgang synes jeg nok.

Nu skal jeg jo så "bare" have tilpasset det til den side hvor det skal bruges :)
Så opstår de næste problemer sikkert ;)



Indlæg senest redigeret d. 16.07.2013 13:34 af Bruger #17644

Other Post Variables:Array
(
)


det er jo bare at slette
Fold kodeboks ind/udKode 

i processupload.php


Nu skal jeg jo så "bare" have tilpasset det til den side hvor det skal bruges :)
Så opstår de næste problemer sikkert ;)

ja så ved du godt hvad du skal bruge resten af dagen på :)
der kunne godt opstå andre problemer, men start med at barbere eks fra denne tråd ned til minimum, om den skal vise de oploadet billeder vil jeg nok barbere væk også



Ja, jeg har allerede lidt svært ved at se hvordan jeg korrekt omskriver:
Fold kodeboks ind/udPHP kode 


Så den passer til mysqli som jeg bruger i connect:
Fold kodeboks ind/udPHP kode 


Synes ikke helt at det vil som jeg vil



læg mærke til at alle mysql_ hedder mysqli_ dvs tilføjet et i, og en del connection link
og du nu skal angive din connection som første parameter i mysqli_query
mysqli_query($mysqli,

hurtigt rettet til (utested)
Fold kodeboks ind/udKode 

som du kan se ligner mysqli procedural style 99,9 % det du er vandt til fra det gamle

http://php.net/manual/en/mysqli.real-escape-string.php
http://php.net/mysqli_query
http://php.net/mysqli_fetch_array
http://php.net/mysqli_errno



I proccesupload.php hvor jeg skal angive hvor den skal gemme billederne som uploades:

Fold kodeboks ind/udPHP kode 


Hvordan kan jeg ændre den til at den skal til en anden mappe end der hvor min processupload.php ligger?
Den ligger nemlig i mappen "medlem" og jeg vil gerne gemme billederne i mappen "database/billeder" som ligger i roden ligesom "medlem" mappen.

Har prøvet med ..\database/billeder - men det virkede ikke?


Og PANIK - nu virker denne her jo heller ikke - hvor meget skal så skrives om for at den virker?
Fold kodeboks ind/udPHP kode 




Indlæg senest redigeret d. 16.07.2013 14:28 af Bruger #17644

Har prøvet med ..\database/billeder - men det virkede ikke?

prøv at vende din slash om, \ er en escape karakter i PHP


prøve med ../database/billeder



Indlæg senest redigeret d. 16.07.2013 14:26 af Bruger #16075
Men at vende den om vil jo bare fortælle at den skal finde en undermappe og det er jo ikke det den skal



<< < 123 > >>
t