Вставить изображение MYSQL на основе выбора переключателя с помощью переполнения стека

У меня есть сайт. На этом сайте я могу загружать изображения, которые затем помещаются в мою базу данных SQL. Отсюда я выбираю изображения из базы данных и показываю их в виде миниатюр в фотогалерее, при нажатии на изображение отображается большая версия, где вы можете проголосовать / понравиться, оставить комментарии и т. Д.

Теперь я пытаюсь сделать 3 страницы категорий, в основном, 3x фотогалерею, которая показывает миниатюры.

У меня есть 3 разные таблицы в моей базе данных, куда я вставляю изображения в.
Поэтому я скопировал 3x фотогалерею и исходную таблицу загрузки в базу 3x.
Как бы то ни было, я не хочу создавать 3 файла upload.php для каждого файла фотогалереи .php.

То, что я пытаюсь сделать, это иметь 3 варианта переключателей на моей странице загрузки, и с выбором, сделанным там, изображение загружается в соответствующую таблицу базы данных (фото 1, 2 или 3).

Я пытался сделать это с помощью функций и т. Д., Но я просто не могу заставить его работать, я, вероятно, делаю что-то очень простое, действительно глупое.

Вот код, который у меня есть для переключателя и получения изображения:

    $titel = "Image";
$query = "SELECT * FROM `i268296_studie`.`fotos` ORDER BY foto_ID DESC";
$result = mysqli_query($conn, $query) or die("query error " . mysqli_error($conn) );
$fotos = array();
//create array from images in database
while($data = mysqli_fetch_assoc($result))
{
$fotos[] = array('src' => $data['src'], 'id' => $data['foto_ID']);
}
?>

<section id="upload">
<form method="post" action="upload.php"  enctype="multipart/form-data">

<label for="bestand">Upload image:</label><br><br>
<input type="file" name="bestand" id="file"><br><br>
<label for="categorie"> Categorie: </label>
<input type="radio" name="cat" value="cat1">Portrait
<input type="radio" name="cat" value="cat2">Landscape
<input type="radio" name="cat" value="cat3">Other
<input type="submit" name="submit" value="Upload">
</form>
</section>
<?php
}
?>
<section class="images">
<?php
//show image thumbnails in photogallery
foreach($fotos as $foto)
{
?>
<a href="fotoinfo.php?foto_ID=<?php echo $foto['id'];?>"><img class="image" src="<?php echo 'upload/thumb/t_'.$foto['src'];?>"></a>
<?php
}
?>
</section>

Приведенный выше код у меня 3 раза (в окружении HTML и т. Д. Как страницы фотогалереи).

Это мой файл загрузки (я оставлю большую часть кода, создающего миниатюры, так как он касается только части загрузки).

$titel = "Image";
$dir='upload/';
$allowedExts = array("jpg", "jpeg", "gif", "png");
$answer= $_POST['cat'];
//Properties of the to be uploaded file
$fileName = $_FILES["bestand"]["name"]; //file name
$fileType = $_FILES["bestand"]["type"]; //file format
$fileSize = $_FILES["bestand"]["size"]; //file size
$tmpName =  $_FILES["bestand"]["tmp_name"]; //temporary save location for file
$error = $_FILES["bestand"]["error"]; //error check for file

$fp = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);
fclose($fp);
if(!get_magic_quotes_gpc())
{
$fileName = addslashes($fileName);
}
//select image from database and check if it already exists
$sql = "SELECT * FROM `i268296_studie`.`fotos` WHERE src = '$fileName'";
$result = mysqli_query($conn, $sql) or die("query error " . mysqli_error($conn) );
$data = mysqli_fetch_assoc($result);
$num_rows=mysqli_num_rows($result);
if($num_rows > 0)
{
echo 'File already exists <br>';
echo    '<a href="fotogallerij.php">Return to homepage/a>';
}
else
{
// if file doesn't exist move to database, create thumbnail path
if (move_uploaded_file( $tmpName,$dir.$fileName))
{
function category($cat, $titel, $filename)
{
global $conn;
$query = "INSERT INTO `i268296_studie`.`$cat` (`titel`, `src`) VALUES ('$titel', '$fileName')"; //INSERT file into database
$result = mysqli_query($conn, $query) or die("query error " . mysqli_error($conn) );
}
$tname = 't_'.$fileName;
$tpath = $dir.'thumb/';
$tnamestate = $tpath.$tname;
$tptype = substr($fileType,6);
$ttype = "imagecreatefrom$tptype";
$name = $fileName;
$path = $dir;
$namestate = $path.$name;
$width = 100;
$height = 100;
list($width_orig, $height_orig) = getimagesize("$namestate");
$ratio_orig = $width_orig/$height_orig;
if ($width/$height > $ratio_orig)
{
$width = $height*$ratio_orig;
}
else
{
$height = $width/$ratio_orig;
}

Как бы то ни было, я слепо смотрю на то, как это исправить или где разместить, чтобы он работал.
Я надеюсь, что мое объяснение и вопрос ясны для вас, ребята, которые пытаются помочь мне, если нет, пожалуйста, дайте мне знать, что я могу изменить или сделать, чтобы помочь 🙂

редактировать:
Я получаю следующие ошибки:

Undefined variable: titel
Undefined variable: fileName
Undefined variable: conn
mysqli_query() expects parameter 1 to be mysqli, null given

Когда я не выбираю переключатель, а просто загружаю его напрямую, я просто получаю 1 ошибку:

Undefined index: cat

И он загружает его в 3-ю категорию

Изменить 2:
Изменена функция с глобальным значением $ conn.

1

Решение

1 function category($cat, $titel, $fileName) {
2     global $conn;
3     $query = "INSERT INTO `i268296_studie`.`$cat` (`titel`, `src`) VALUES ('$titel', '$fileName')";
4     $result = mysqli_query($conn, $query) or die("query error " . mysqli_error($conn) );
5 }

1: you need these variables from the context calling the function
2: you need the global $conn variable in the function context to be able to run the query
3: use a function parameter for the table to upate call
4: it would be better to return results instead of breaking inside the function

Код вызова будет выглядеть следующим образом:

if ($answer == "cat1") {
category("fotos", $titel, $fileName);  // or "foto2", $titel, $fileName .....
}

Пожалуйста, обратите внимание на комментарии об уязвимостях внедрения.
Также прочитайте это: http://php.net/manual/it/language.variables.scope.php

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]