Загрузить фото в базу данных (на сервер не localhost) - PullRequest
1 голос
/ 30 января 2020

У меня есть проект для школы. Мне нужно сделать цветочный магазин и способ загружать новые товары (цветы). Поэтому я сделал страницу, на которой я добавляю новый продукт, и он работает, за исключением изображения. Я просто не знаю, как отправить фотографию в базу данных. Я работаю с доменом из школы, и все примеры на inte rnet показывают, как это сделать с localhost. Я не знаю, как это объяснить дальше.

У продукта / цветка есть название, категория, цена, описание.

Вот так выглядит моя страница «Добавить продукт» ( не включает добавление фото):

<html lang="en">
<?php include '../head.php' ?>

<?php
include '../databasecon.php';
?>

<body>

    <!--================Top Header Area =================-->
    <header class="shop_header_area carousel_menu_area">
        <!--================Categories Product Area =================-->
        <section class="categories_product_main p_80">
            <div class="container" style="max-width: unset;">
                <div class="col-lg-12" style="padding: 0; text-align:center;">
                    <h1 style="margin:0; padding-bottom: 40px; color: #09366C; font-weight: bold; text-align:left;"> Bloem toevoegen </h1>
                </div>
                <div class="categories_main_inner">
                    <div class="row row_disable">
                        <div class="col-lg-12">
                        </div>
                        <?php include 'menubeheer.php' ?>

                        <div class="float-left col-lg-9">
                            <?php

                            $conn = Opencon();
                            $QUERY = "SELECT * FROM producten";

                            if (!empty($_POST)) {
                                $naam = htmlspecialchars($_POST['product_naam']);
                                $categorie = htmlspecialchars($_POST['product_categorie']);
                                $prijs = htmlspecialchars($_POST['product_prijs']);
                                $omschrijving = htmlspecialchars($_POST['product_omschrijving']);

                                $insert = "INSERT INTO producten (product_naam,product_categorie,product_prijs,product_omschrijving)
                            VALUES('$naam','$categorie','$prijs','$omschrijving')";
                            }
                            ?>

                            <form action="bloemtoevoegen.php" method="POST">
                                <div class="col-lg-2" style="float: left; margin-top: 10px;"> Product naam </div>
                                <div class="col-lg-10" style="float: left; margin-top: 10px;">
                                    <input type="text" name="product_naam" style="width: 35%;" required><br>
                                </div>

                                <div class="col-lg-2" style="float:left; margin-top: 10px;"> Categorie </div>
                                <div class="col-lg-10" style="float: left; margin-top: 10px;">
                                    <select name="product_categorie">
                                        <option value="bloem">Losse bloem</option>
                                        <option value="boeket">Boeket</option>
                                    </select>
                                </div>

                                <div class="col-lg-2" style="float: left; margin-top: 10px;"> Prijs </div>
                                <div class="col-lg-10" style="float: left; margin-top: 10px;">
                                    <input type="text" name="product_prijs" style="width: 35%;" required><br>
                                </div>


                                <div class="col-lg-2" style="float: left; margin-top: 10px;"> Omschrijving </div>
                                <div class="col-lg-10" style="float: left; margin-top: 10px;">
                                    <input type="text" name="product_omschrijving" style="width: 50%; height:100%;" required><br>
                                </div>


                                <div class="col-lg-2" style="float: left; margin-top: 10px;"> Foto </div>

                                <div class="col-lg-10" style="float: left; margin-top: 10px;">
                                    <input type="file" name="product_foto">
                                </div>
                                <div class="col-lg-12">
                                    <b>Liefst een foto met afmetingen van 300 bij 200!</b>
                                </div>

                                <!-- <div class="col-lg-10" style="float: left; margin-top: 10px;">
                                    <input type="text" name="product_fotos" style="width: 35%;" required><br>
                                </div> -->

                                <br>
                                <input type="submit" class="add_cart_btn" style="cursor: pointer; margin-top:30px;" value="Opslaan" name="submit">
                            </form>
                        </div>
                    </div>
                </div>
            </div>
        </section>
        <?php include '../script.php' ?>
</body>

</html>

1 Ответ

0 голосов
/ 30 января 2020

Первый шаг - установить для свойства enctype в теге формы значение multipart / form-data. Вы можете узнать больше о том, что это делает здесь :

<form action="bloemtoevoegen.php" method="POST" enctype="multipart/form-data">

Когда форма отправлена, мы сохраняем файл в каталоге и сохраняем путь в нашей базе данных:

if (!empty($_POST) && !empty($_FILES["product_foto"]["name"])) {
  $naam = htmlspecialchars($_POST['product_naam']);
  $categorie = htmlspecialchars($_POST['product_categorie']);
  $prijs = htmlspecialchars($_POST['product_prijs']);
  $omschrijving = htmlspecialchars($_POST['product_omschrijving']);

  $target_directory = getcwd() . "/uploads/";                  // The location to store the files
  $file_name = basename($_FILES["product_foto"]["name"]);      // The uploaded file name
  $target_path = $target_directory . $file_name;               // The path to our file

  if ( move_uploaded_file($_FILES["product_foto"]["tmp_name"], $target_path) ) {
      // We have added "product_foto" to the INSERT INTO and added $file_name to the VALUES
      $insert = "INSERT INTO producten (product_naam,product_categorie,product_prijs,product_omschrijving,product_foto)
      VALUES('$naam','$categorie','$prijs','$omschrijving','$file_name')";
  } else {
      die("Unable to save file to disk");
  }
}

На заметку:

  1. Вам нужно будет создать каталог с именем uploads. Он будет расположен в том же каталоге, в котором находится файл добавляемого вами продукта.

  2. Я предположил, что в вашей таблице базы данных есть поле product_foto в выражении INSERT INTO. Возможно, вам придется изменить это, чтобы оно соответствовало вашему фактическому имени поля

Теперь у вас должен быть файл изображения, сохраненный в вашей базе данных, и файл должен существовать в вашем каталоге.

Если вы предпочитаете сохранить путь, перейдите к этой строке:

$insert = "INSERT INTO producten (product_naam,product_categorie,product_prijs,product_omschrijving,product_foto)
      VALUES('$naam','$categorie','$prijs','$omschrijving','$target_path')";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...