Как получить идентификатор при загрузке файла - PullRequest
0 голосов
/ 20 ноября 2018

это мой gallery.php;

<br>
<center><form action="galleryuploadxd.php" method="post" enctype="multipart/form-data">
        Category
        <select>
        <option value="">Select...</option>
        <option id_image="1" value="1">Admin Images</option>
        <option id_image="2" value="2">User Images</option>
        </select>
        <br><br>

        Select image to upload:
        <input type="file" name="fileToUpload" id="fileToUpload">
        <input type="submit" value="Upload Image" name="submit">
    </form></center>

Поэтому я хочу, чтобы в моей базе данных был записан тег опции id_images.Я сделал что-то вроде этого.

galleryuploadxd.php;

<?php
session_start();
if(isset($_SESSION['sess_user_id']) && $_SESSION['sess_user_id'] != "") {
} else {
    header('location:index.php');
}
?>
<body style="background-color: lightgray"></body>
<center><img src="../images/x.png"></center>

<?php
include "db.php";

$id = $_GET['id_image'];
$target_file2 = "random-dir/";
$target_dir = "randomdir/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$target_file3 = $target_file2 .$target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "<br>";
        echo "<br>";
        echo "<h1><center>File is an image - " . $check["mime"] . "." ."</center></h1>";
        $uploadOk = 1;
    } else {
        echo "<br>";
        echo "<h1><center>File is not an image.</center></h1>";
        $uploadOk = 0;
    }
}

if (file_exists($target_file)) {
    echo "<br>";
    echo "<h1><center>Sorry, file already exists.</center></h1>";
    echo "<h1><a href = gallery-edit.php>Go back </a></h1>";
    $uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "<br>";
    echo "<h1><center>Sorry, your file is too large.</center></h1>";
    echo "<h1><a href = gallery-edit.php>Go back </a></h1>";
    $uploadOk = 0;
}
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
    && $imageFileType != "gif" ) {
    echo "<br>";
    echo "<h1><center>Sorry, only JPG, JPEG, PNG & GIF files are allowed.</center></h1>";
    $uploadOk = 0;
}
if ($uploadOk == 0) {
    echo "<br>";
    echo "<h1><center>Sorry, your file was not uploaded.</center></h1>";
    echo "<br>";
    echo "<br>";
    echo "<br>";
    echo "<h1><center><a href = gallery-edit.php>Go back </a></center></h1>";


} else {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        echo "<h1><center>The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.</center></h1>";
        echo " <meta http-equiv=\"refresh\" content=\"5;url=gallery-edit.php\" />";
        echo "<center><h1>You Will be redicted to user gallery in 5 seconds...</h1></center>";
        echo "<center><h1>If your browser doesn't support redict please<a href=gallery-edit.php> click here </h1></a></center>";
        $sql = "INSERT INTO categories (id,image_link) VALUES (:id,:image_link)";
        $stmt = $db->prepare($sql);

        $stmt->bindValue(':image_link', $target_file3);
        $stmt->bindValue(':id', $id);
        $result = $stmt->execute();
    } else {
        echo "<br>";
        echo "<center>Sorry, there was an error uploading your file.</center>";
        echo " <center><a href = gallery-edit.php>Go back </a></center>";
    }
}
?>

Так что в galleryuploadxd.php я говорю в начале $id = $_GET['id_image']; и после в конце

$sql = "INSERT INTO categories (id,image_link) VALUES (:id,:image_link)";
            $stmt = $db->prepare($sql);

            $stmt->bindValue(':image_link', $target_file3);
            $stmt->bindValue(':id', $id);
            $result = $stmt->execute();

Я получаю сообщение об ошибке: идентификатор не может быть нулевым. Почему он не получает идентификатор, может ли кто-нибудь мне помочь?

ошибка;

Неустранимая ошибка: Uncaught PDOException: SQLSTATE [23000]: Нарушение ограничения целостности: 1048 Идентификатор столбца не может быть пустым в C: \ xampp \ htdocs \ xxx \ xxxx-admin \ galleryuploadxd.php:75 Трассировка стека: # 0 C: \ xampp \ htdocs \ xxx \ xxxx-admin \ galleryuploadxd.php (75): PDOStatement-> execute () # 1 {main}, брошенный в C: \ xampp \ htdocs \ xxx \ xxxx-admin \ galleryuploadxd.php в строке 75

Это говорит мне, что я не могу получить id.как я могу получить идентификатор для опции, вот и все?Мне нужно, я пытаюсь классифицировать загрузки, поэтому я делаю что-то вроде этого.

Спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

почему вы не задали имя выбранного входа

<select name="id_image">
        <option value="">Select...</option>
        <option value="1">Admin Images</option>
        <option value="2">User Images</option>
 </select>

используйте это как $id = $_POST['id_image'];

0 голосов
/ 20 ноября 2018

В вашей форме используется метод POST, и вы пытаетесь получить записи с помощью

$id = $_GET['id_image'];

, которые вы должны сделать:

$id = $_POST['id_image'];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...