Chciałbym mieć coś takiego, jak jest w newsach, czyli przycisk "dodaj obrazek", który będzie funkcjonował jako miniaturka-awatarek artykułu. Dodałem pole article_obrazek do bazy danych, linijkę
echo "<td class='tbl'><input type='file' name='article_obrazek' class='textbox' style='width:250px;' /></td>\n";
do pliku articles.php w katalogu administration, skopiowałem fragment z news.php i wkleiłem do pliku articles.php pod komendą
if (isset($_POST['save'])) {
w linijce 44, zamieniłem news_image na article_image, a w komendach dbquery (INSERT INTO i UPDATE dodałem article_obrazek='$article_obrazek_t2' i article_obrazek.
Dodany kody wygląda tak:
if (isset($_FILES['article_obrazek']) && is_uploaded_file($_FILES['article_obrazek']['tmp_name'])) {
require_once INCLUDES."photo_functions_include.php";
$image = $_FILES['article_obrazek'];
$image_name = stripfilename(str_replace(" ", "_", strtolower(substr($image['name'], 0, strrpos($image['name'], ".")))));
$image_ext = strtolower(strrchr($image['name'],"."));
if ($image_ext == ".gif") { $filetype = 1;
} elseif ($image_ext == ".jpg") { $filetype = 2;
} elseif ($image_ext == ".png") { $filetype = 3;
} else { $filetype = false; }
if (!preg_match("/^[-0-9A-Z_\.\[\]]+$/i", $image_name)) {
$error = 1;
} elseif ($image['size'] > $settings['article_photo_max_b']){
$error = 2;
} elseif (!$filetype) {
$error = 3;
} else {
$image_t1 = image_exists(IMAGES_N_T, $image_name."_t1".$image_ext);
$image_t2 = image_exists(IMAGES_N_T, $image_name."_t2".$image_ext);
$image_full = image_exists(IMAGES_N, $image_name.$image_ext);
move_uploaded_file($_FILES['article_obrazek']['tmp_name'], IMAGES_N.$image_full);
if (function_exists("chmod")) { chmod(IMAGES_N.$image_full, 0644); }
$imagefile = @getimagesize(IMAGES_N.$image_full);
//sprawdzamy, czy obrazek nie jest za duży
if ($imagefile[0] > 1800 || $imagefile[1] > 1600) {
$error = 4;
unlink(IMAGES_N.$image_full);
} else {
//tworzymy małe obrazki
createthumbnail($filetype, IMAGES_N.$image_full, IMAGES_N_T.$image_t1, 120, 120);
//if ($settings['article_thumb_ratio'] == 0) { tworzy zeskalowane obrazki
createthumbnail($filetype, IMAGES_N.$image_full, IMAGES_N_T.$image_t2, 250, 250);
//} else { tworzy obrazki kwadratowe, zależy co się Prezesowi odwidzi
//createsquarethumbnail($filetype, IMAGES_N.$image_full, IMAGES_N_T.$image_t2, $settings['article_thumb_w']);
//}
}
}
if (!$error) {
$article_obrazek = $image_full;
$article_obrazek_t1 = $image_t1;
$article_obrazek_t2 = $image_t2;
} else {
$article_obrazek = "";
$article_obrazek_t1 = "";
$article_obrazek_t2 = "";
}
} else {
$article_obrazek = (isset($_POST['article_obrazek']) ? (preg_match("/^[-0-9A-Z_\.\[\]]+$/i", $_POST['article_obrazek']) ? $_POST['article_obrazek'] : "") : "");
$article_obrazek_t1 = (isset($_POST['article_obrazek_t1']) ? (preg_match("/^[-0-9A-Z_\.\[\]]+$/i", $_POST['article_obrazek_t1']) ? $_POST['article_obrazek_t1'] : "") : "");
$article_obrazek_t2 = (isset($_POST['article_obrazek_t2']) ? (preg_match("/^[-0-9A-Z_\.\[\]]+$/i", $_POST['article_obrazek_t2']) ? $_POST['article_obrazek_t2'] : "") : "");
}
Dodawanie artykułów funkcjonuje jak dawniej, kliknięcie na "Dodaj obraz" otwiera okno przeszukiwania dysku i po kliknięciu na Dodaj na formularzu pojawia się nazwa pliku obrazka, ale w bazie danych nie, na serwer też nic nie jest przesyłane. Nie znam się na programowaniu w php i dotarłem do granicy swoich możliwości w tym temacie. Ktoś pomoże?
PW od moderatora:
- Przeniesienie tematu - Pieka 24.09.2013 16:33
Tam, gdzie kończy się logika, zaczynają się kobiety.
PHP v. 5.3.23, mySQL v. 5.1.65,
|