Autor | Zpráva | ||
---|---|---|---|
protom1 Profil |
#1 · Zasláno: 6. 4. 2014, 22:09:52
Ahoj vsichni.
Opět si nevím rady, jak mám něco udělat. ==> Mám formulár : <form action="pridat.php" method="POST"> <select name="kategorie"> <?php foreach ($kategorie as $item) { $str = ($counter == 0) ? "<option selected>" : "<option>"; $str .= $item['nazev'] . "</option>"; $counter++; echo $str; } ?> </select> <br> <input type="text" name="nadpis" value="nadpis" id="input"> <input type="text" name="datum" value="datum" id="input1"> <br> <input type="text" name="popis"> <br> <textarea name="obsah"></textarea> <br> <input type="file" name="obrazek1"> <input type="submit"> </form> spracovávající skript : <?php if (isset($_POST['kategorie']) && isset($_POST['datum']) && isset($_POST['nadpis']) && isset($_POST['datum']) && isset($_POST['obrazek1']) && isset($_POST['popis']) && isset($_POST['obsah'])) { $kategorie = $_POST['kategorie']; $nadpis = $_POST['nadpis']; $popis = $_POST['popis']; $obsah = $_POST['obsah']; $datum = $_POST['datum']; $obrazek1 = $_POST['obrazek1']; /*$obrazek2 = $_POST['obrazek2']; $obrazek3 = $_POST['obrazek3']; $obrazek4 = $_POST['obrazek4']; $obrazek5 = $_POST['obrazek5'];*/ // navratova_hodnota = pridej....... $ret = pridejClanek($kategorie, $obsah, $datum, $nadpis, $popis); if ($ret == false) { echo mysql_error(). "<br>"; } else { $clanekId = $ret; $ret = pridejAlbum($popis, $nadpis, $datum, $clanekId); if ($ret == false) { echo mysql_error() . "<br>"; } else { $ret = pridejObrazek($obrazek1, $datum, $ret, $popis, $nadpis); if ($ret == false) { echo mysql_error() . "<br>"; } else { echo "vsechno hotovo"; } } } } else { echo "F*U*C*K UZ !!!"; } ?> a funkce : function pridejClanek($kategorie, $obsah, $datum, $nadpis, $popis) { $kategorieId = vratIdDleKategorie($kategorie); if ($kategorieId == -1) return false; $query = "INSERT INTO clanky(kategorieId, popis, nadpis, obsah, datum) VALUES("; $query .= $kategorieId . ", '" . $popis . "', '" . $nadpis . "', '" . $obsah . "', '" . $datum . "')"; $result = mysql_query($query); if (! $result) return false; return mysql_insert_id(); } function vratIdDleKategorie($kategorie) { $query = "SELECT * FROM kategorie WHERE nazev='" . $kategorie . "'"; $result = mysql_query($query); if (mysql_num_rows($result) != 1) { return -1; } return mysql_fetch_array($result)['id']; } function pridejAlbum($popis, $nadpis, $datum, $clanekId) { $query = "INSERT INTO alba(popis, nadpis, datum) VALUES('"; $query .= $popis . "', '" . $nadpis . "', '" . $datum . "')"; $result = mysql_query($query); if (! $result) return false; $albumId = mysql_insert_id(); $query = "INSERT INTO albaclanky(clanekId, albumId) VALUES("; $query .= $clanekId . ", " . $albumId . ")"; $result = mysql_query($query); if (! $result) return false; return $albumId; } function pridejObrazek($obrazek1, $datum, $albumId, $popis, $nadpis) { /*$path = "../fotky/"; $path .= parseDate($datum);*/ $query = "INSERT INTO obrazky(albumId, popis, nadpis, datum) VALUES("; $query .= $albumId . ", '" . $popis ."', '" . $nadpis ."', '" . $datum . "')"; $result = mysql_query($query); if (! $result) return false; $obrazekId = mysql_insert_id(); $cesta = "/.../"; $img = imagecreatefromjpeg($obrazek1); $cestakobrazkum = "../fotky/"; Imagejpeg($img, $cestakobrazkum . $obrazekId . ".jpg", 80); //return true; return $obrazekId; } první 2 funkce insert into funguji, ale pak funkce pridej obrazek selže, protože není plná cesta k obrázku. Dokázal by mi někdo poradit co musím udělat, aby se mi obrazek pridal do slozky, do ktere potrebuji ? Jako když nápišu celou cestu do createimagefromjpg(/../neco/neco.jpg), tak to šlape, ale to je blbé, protože když potřebuju přidat obrázek z kompu, tak to těžko půjde tahkle .. Díky za koaždou odpověd Protom1 |
||
Manny Profil |
Nahrávaný soubor není v
$_POST ale v $_FILES
|
||
okolojsoucí Profil |
#3 · Zasláno: 6. 4. 2014, 22:30:37
protom1:
„isset($_POST['kategorie']) && isset($_POST['datum']) && isset($_POST['nadpis']) && isset($_POST['datum']) && isset($_POST['obrazek1']) && isset($_POST['popis']) && isset($_POST['obsah']))“ Pokud chceš ověřit všechny odeslané proměnné, projeď to cyklem, tak to se zbytečně ztrácíš $nejakaChyba = false; foreach($_POST as $jmeno => $hodnota){ if(!isset($hodnota)){ $nejakaChyba = true; break; } } if($nejakaChyba == true){ exit('Něco není vyplněné'); } Jinak zpět k tvému dotazu: I když zašleš obrázek pomocí POSTu nemůžeš sním takto nakládat. Musíš využít superglobální funkci FILE. K jeho cestě se dostaneš $obrazek1 = $_FILES["obrazek1"]["tmp_name"]; . Nezapomínej na to že avšak je to tmp neboli dočastná cesta, tak že pomoc copy si jej musíš zkopírovat do nějaké složky. A pokud zasíláš soubory přes form, tak bys měl mít další atribut enctype="multipart/form-data" tzn. že by to mělo vypadat <form method="post" action="pridat.php" enctype="multipart/form-data">
A na konec, mysql_* již končí, je možné že v další verzi již nebude fungovat. Abych se nemusel opakovat, tak uvedu svůj dřívější příspěvek. |
||
Časová prodleva: 10 let
|
0