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

Og PANIK - nu virker denne her jo heller ikke - hvor meget skal så skrives om for at den virker?

alle de steder hvor du anvender de 4 mysql_ functioner jeg rettede 16.07.13 14:14

eks
$rs = mysql_query($sql)
bliver til
$rs = mysqli_query($mysqli, $sql)




Jeg har midlertidigt lavet en Connect2.php som jeg kan bruge indtil jeg får rettet det hele til.

Og problemet med at få billederne lagt rigtige sted har jeg løst lidt dovent ved at placere procces-filen hvor det passede :$
Men det virker jo.

Nu kunne jeg så rigtig godt tænke mig at flette en lille kode ind i index.php (som jeg nu har kaldt Photo.php) som tjekker at hestens EjerID er det samme som brugerens id.

Noget ala dette (- som ikke virker fordi det jo tydeligvis ikke er skrevet korrekt):
Fold kodeboks ind/udPHP kode 


Og update (det er altså træls at man ikke kan skrive et nyt indlæg når ens eget er det sidste):

Ok, nu er jeg i hvert fald stødt på et problem.

Jeg vil tilføje "Fotograf"
Har gjort sådan her i selve formularen:
Fold kodeboks ind/udPHP kode 


Den skriver fint værdien.
Men et eller andet er så forkert i process-filen, for den ændre så fotograf værdien til 0.
Jeg har gjort sådan her:
Fold kodeboks ind/udPHP kode 


Hvorfor virker det ikke??



Indlæg senest redigeret d. 16.07.2013 17:23 af Bruger #17644

Og update (det er altså træls at man ikke kan skrive et nyt indlæg når ens eget er det sidste):

du er ikke den eneste der har det problem

nød løsningen er sende en besked til de andre udviklere i tråden, med du har opdateret


står der noget i dette felt ??
<input type="text" value="<? echo "$row[Fotograf]"?>" name="Fotograf"></td>

jeg havde forvendtet
<input type="text" value="<?php echo $row['Fotograf']; ?>" name="Fotograf"></td>

dvs php, ingen " og enkelt ' inde i row[]
er fortograf et tal eller text ??

forklaring på denne linje
$Fotograf = (isset($_POST["Fotograf"]))? (int)$_POST["Fotograf"]:0;

1) tester om variablen Fotograf findes med dette (isset($_POST["Fotograf"]))?
2) hvis udtrukket er sandt, typecaseter (int) du værdien af Fotograf til et heltal med dette (int)$_POST["Fotograf"]
3) ellers sætter du værdien til 0

linjen kunne være skrevet sådan

Fold kodeboks ind/udKode 


hvis det er en text (feks navn på fotografen) skal værdien selvføgelig ikke typecastes, da heltals værdien af en text vil være 0
du kan evt prøve at lave linjen om til dette
Fold kodeboks ind/udKode 






Ahh det var jo DET som var galt. "Fotograf" er jo ikke en tal-værdi da den rummer navn på fotografen.
Så nu virker det!

Har du et bud på dette?:

Jeg har midlertidigt lavet en Connect2.php som jeg kan bruge indtil jeg får rettet det hele til.

Og problemet med at få billederne lagt rigtige sted har jeg løst lidt dovent ved at placere procces-filen hvor det passede :$
Men det virker jo.

Nu kunne jeg så rigtig godt tænke mig at flette en lille kode ind i index.php (som jeg nu har kaldt Photo.php) som tjekker at hestens EjerID er det samme som brugerens id.

Noget ala dette (- som ikke virker fordi det jo tydeligvis ikke er skrevet korrekt):


Fold kodeboks ind/udPHP kode 




(utested)
Fold kodeboks ind/udKode 


ref http://php.net/manual/en/function.header.php

Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP. It is a very common error to read code with include, or require, functions, or another file access function, and have spaces or empty lines that are output before header() is called. The same problem exists when using a single PHP/HTML file.


der er issue vedr. ajax og header
http://stackoverflow.com/questions/9851792/php-header-called-via-ajax-not-working-properly
http://stackoverflow.com/questions/3009946/is-it-possible-to-use-the-php-header-command-from-an-ajax-call-to-redirect
http://www.daniweb.com/web-development/php/threads/421551/php-jqueryajax-and-header-location-problem


dette skal nok
Fold kodeboks ind/udKode 

se sådan ud:
Fold kodeboks ind/udKode 



retttelse det skal selvføgelig ikke ligges i processupload.php som jeg viste code til

det skal jo ligge i toppen af Photo.php
Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 16.07.2013 20:12 af Bruger #16075
Hmm

Fold kodeboks ind/udPHP kode 


Denne sender mig videre til login selvom brugerid og hestens ejerid er det samme....kan ikke lige gennemskue hvorfor?





Indlæg senest redigeret d. 16.07.2013 21:00 af Bruger #17644
linje 7 - 9
?>

<?php

i linje 8 er du ude i HTML :( , så er der bare et mellemrum så vil header ikke virke, slet disse 3 linjer

linje 16
$B_id = (isset($_SESSION["B_id"]))? $_POST["B_id"]:"";
du mener vel
$B_id = (isset($_SESSION["B_id"]))? $_SESSION["B_id"]: 0;

dette
if ($row['EjerID']!="$B_id")
skal være
if ($row['EjerID']!= $B_id)



Fold kodeboks ind/udPHP kode 


Så skriver den bare at "der er sket en fejl"




du må ikke gå ud af php før header
Fold kodeboks ind/udKode 


du kan nok med fordel slå de Connect og Connect2 sammen i en fil, så skal du kun holde styr på en fil, indtil du kommer helt over på mysqli


her er noget gammelt noget, jeg brugte ifm at slette en record, serveren havde på det tidspunkt ikke enablet mysqli, hvilke jeg påtalte, (er siden rettet)

delete.php (hele filen)
Fold kodeboks ind/udKode 




<< < 123 > >>
t