Autor | Zpráva | ||
---|---|---|---|
omc003 Profil |
Dobrý den,
zlehounka začínám s PHPkem a narazil jsem na jednu banalitu, která mě už nějakou chvilku trápí. Potřebuji uložit url již nahraného souboru na webu do databáze (jako admin ručně přetáhnu kvantum obrázků do složky webu a pak potřebuji jednotlivé soubory přiřadit k jednotlivým řádkům databázové tabulky; obrázky poté budu na stránce zobrazovat pomocí url v db). Údaj o obrázku v db ukládám do varchar(50) not null. Script: $url_obr = "obrazky/slozka/".$_FILES["obrazek"]["name"]; $url_obr = addslashes($url_obr); dotaz("INSERT INTO tabulka SET obrazek = '$url_obr';"); input: <input type=\"file\" name=\"obrazek\" /> Do databáze se mi uloží pouze cesta "obrazky/slozka/", $_FILES to nějak nebere ve zřetel. Vše jinak funguje bez problémů až na ty obrázky. Zkoušel jsem i různé varianty řešení nalezené přes google. Byl bych rád za objasnění této blbůstky, která mi stále uniká. Díky za reakce. Honza |
||
LaMMa Profil |
#2 · Zasláno: 16. 7. 2012, 11:48:59
A tomu ukladaniu predchádza odoslanie formulára s obrázkom?
|
||
ShiraNai7 Profil |
omc003:
a následující řádek vložený před volání dotaz() ti vypíše co?
var_dump($url_obr); Pro vývoj si taky určitě zapni zobrazování všech chyb - error_reporting(E_ALL)
Jinak funkce addslashes() není dostatečná pro escapování hodnot pro SQL dotazy.. použij funkci, která je pro danou databázi určená (např. mysql_real_escape_string() pro mysql).
|
||
omc003 Profil |
#4 · Zasláno: 16. 7. 2012, 12:26:17
Pro upřesnění:
if(isset($_POST[odeslat])) { //definovani retezce chyba_vlozeni (nevyplneni formularu apod) if(!empty($chyba_vlozeni)) { //vypise error } else { $url_obr = "obrazky/slozka/".$_FILES["obrazek"]["name"]; $url_obr = addslashes($url_obr); dotaz("INSERT INTO tabulka SET obrazek = '$url_obr';"); header ("Location: index.php"); } } echo $chyba_vlozeni; echo " <form action=\"index.php\" method=\"post\"> <fieldset> <label for=\"obrazek\">Obrázek:</label><br /> <input type=\"file\" name=\"obrazek\" /><br /> <label for=\"odeslat\"></label> <input type=\"submit\" name=\"odeslat\" value=\"Odeslat\" /> </fieldset> </form>"; var_dump($url_obr) vypise string(15) "obrazky/slozka/"
LaMMa: obrázek neodesílám. Je pro mě rychlejší zkopírovat vše ručně a pak jen pomocí formuláře zjistit dané URL. |
||
LaMMa Profil |
obrázek neodesílám. Je pro mě rychlejší zkopírovat vše ručně a pak jen pomocí formuláře zjistit dané URL.
Neviem, či to chápem úplne správne, ale ak vo formulári neodosielaš súbor, potom logicky bude $_FILES["obrazek"]["name"] prázdny. Ak tam vkladáš len názov súboru do textového inputu tak sa k nemu dostaneš cez $_POST['obrazek']
edit: teraz som si všimol formulár, musíš mu nastaviť: <form action=\"index.php\" method=\"post\" enctype=\"multipart/form-data\"> |
||
Ugo Profil |
#6 · Zasláno: 16. 7. 2012, 12:38:38
ještě upřesnim, že pro odeslání souboru a tedy vyplnění pole $_FILES je potřeba dát formuláři patříčný enctype - enctype="multipart/form-data"
|
||
omc003 Profil |
#7 · Zasláno: 16. 7. 2012, 12:41:53
LaMMa:
Aha, šel jsem na to zbytečně složitě. $_POST['obrazek'] dělá přesně to, co potřebuju. Děkuji mnohokrát :-) |
||
Časová prodleva: 11 let
|
0