Не загружается из формы в папку картинка

196
20 июля 2017, 00:20

Код записи в базу работает, но вот загрузка файла (изображения) нет.

Вот код:

<?php
$result = $mysqli->query('SELECT MAX(id) FROM pulpit');
$row = $result->fetch_row();
$highest_id = $row[0];
?>
<div class="row">
  <div class="col-lg-6 text-center">
    <form enctype="multipart/form-data" action="admin" method="post">
      <div class="form-group row">
        <label for="id" class="col-2 col-form-label text-left">ID</label>
        <div class="col-10">
          <input name="id" class="form-control" type="text" value="<?php echo $highest_id + 1 ?>" id="id">
        </div>
      </div>
      <div class="form-group row">
        <label for="title" class="col-2 col-form-label text-left">Назва кафедри</label>
        <div class="col-10">
          <input name="title" class="form-control" type="text" placeholder="Назва кафедри..." id="title">
        </div>
      </div>
      <div class="form-group row">
        <label for="head_fullname" class="col-2 col-form-label text-left">ПІБ зама кафедри</label>
        <div class="col-10">
          <input name="head_fullname" class="form-control" type="text" placeholder="ПІБ..." id="head_fullname">
        </div>
      </div>
      <div class="form-group row">
        <label for="venue" class="col-2 col-form-label text-left">Місце знаходження</label>
        <div class="col-10">
          <input name="venue" class="form-control" type="text" placeholder="Місце знаходження..." id="venue">
        </div>
      </div>
      <div class="form-group row">
        <label for="phone" class="col-2 col-form-label text-left">Телефон</label>
        <div class="col-10">
          <input name="phone" class="form-control" type="text" placeholder="Номер телефону(7 цифр).." id="phone">
        </div>
      </div>
      <div class="form-group">
        <label for="description">Опис</label>
        <textarea name="history" class="form-control" id="description" rows="3"></textarea>
      </div>
      <div class="form-group">
        <label for="history">Історія</label>
        <textarea name="history" class="form-control" id="history" rows="3"></textarea>
      </div>
      <div class="form-group">
        <label for="InputFile">Фото зав. кафедри</label>
        <input type="file" class="form-control-file" id="InputFile" aria-describedby="fileHelp">
        <small id="fileHelp" class="form-text text-muted">Текст довідка</small>
      </div>
      <div class="form-group">
        <button type="submitPulpit" id="submitPulpit" name="submitPulpit" class="btn pull-right">Додати запис</button>
      </div>
    </form>
  </div>
</div>
<?php
if(isset($_POST['submitPulpit'])) {
  $id = $_POST['id'];
  $title = $_POST['title'];
  $head_photo = $_FILES['InputFile']['name'];
  $head_fullname = $_POST['head_fullname'];
  $description = $_POST['description'];
  $venue = $_POST['venue'];
  $phone = $_POST['phone'];
  $history = $_POST['history'];
  $count_teacher = 0;
  $count_teacher = 0;
  $new_file = '/uploadfiles/pulpit/'.$_FILES['InputFile']['name'];
  if (copy($_FILES['InputFile']['tmp_name'], $new_file)) {
    $sql = "INSERT INTO pulpit (`id`, `title`, `head_photo`, `head_fullname`, `description`, `venue`, `phone` ,`history`, `count_teacher`, `count_discipline`)
    VALUES ('$id','$title','$head_photo','$head_fullname','$description','$venue','$phone','$history','$count_teacher','$count_teacher')";
    $result = $mysqli->query($sql);
    if ($result==true)
    {
      echo "<br>Информация в базу добавлена успешно.";
      header("Location: admin");
    }
    else echo $mysqli->error();
  } else echo "Ошибка при загрузке файла";
}
?>
Answer 1

Возможно стоит проверить путь куда Вы пишите

  1. Сделать его не относительным, а абсолютным $new_file = DIR.'/uploadfiles/pulpit/'.$_FILES['InputFile']['name'];
  2. Проверить права на запись в папку
Answer 2

Добавьте аттрибут name к input, без него файл не найдете

Answer 3

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

<?php
$result = $mysqli->query('SELECT MAX(id) FROM pulpit');
$row = $result->fetch_row();
$highest_id = $row[0];
?>
<div class="row">
  <div class="col-lg-6 text-center">
    <form enctype="multipart/form-data" action="" method="post">
      <div class="form-group row">
        <label for="id" class="col-2 col-form-label text-left">ID</label>
        <div class="col-10">
          <input name="id" class="form-control" type="text" value="<?php echo $highest_id + 1 ?>" id="id">
        </div>
      </div>
      <div class="form-group row">
        <label for="title" class="col-2 col-form-label text-left">Назва кафедри</label>
        <div class="col-10">
          <input name="title" class="form-control" type="text" placeholder="Назва кафедри..." id="title">
        </div>
      </div>
      <div class="form-group row">
        <label for="head_fullname" class="col-2 col-form-label text-left">ПІБ зама кафедри</label>
        <div class="col-10">
          <input name="head_fullname" class="form-control" type="text" placeholder="ПІБ..." id="head_fullname">
        </div>
      </div>
      <div class="form-group row">
        <label for="venue" class="col-2 col-form-label text-left">Місце знаходження</label>
        <div class="col-10">
          <input name="venue" class="form-control" type="text" placeholder="Місце знаходження..." id="venue">
        </div>
      </div>
      <div class="form-group row">
        <label for="phone" class="col-2 col-form-label text-left">Телефон</label>
        <div class="col-10">
          <input name="phone" class="form-control" type="text" placeholder="Номер телефону(7 цифр).." id="phone">
        </div>
      </div>
      <div class="form-group">
        <label for="description">Опис</label>
        <textarea name="description" class="form-control" id="description" rows="3"></textarea>
      </div>
      <div class="form-group">
        <label for="history">Історія</label>
        <textarea name="history" class="form-control" id="history" rows="3"></textarea>
      </div>
      <div class="form-group">
        <label for="InputFile">Фото зав. кафедри</label>
        <input type="file" class="form-control-file" id="InputFile" name="InputFile" aria-describedby="fileHelp">
        <small id="fileHelp" class="form-text text-muted">Текст довідка</small>
      </div>
      <div class="form-group">
        <button type="submitPulpit" id="submitPulpit" name="submitPulpit" class="btn pull-right">Додати запис</button>
      </div>
    </form>
  </div>
</div>
<?php
if(isset($_POST['submitPulpit'])) {
  $id = $_POST['id'];
  $title = $_POST['title'];
  $head_photo = $_FILES['InputFile']['name'];
  $head_fullname = $_POST['head_fullname'];
  $description = $_POST['description'];
  $venue = $_POST['venue'];
  $phone = $_POST['phone'];
  $history = $_POST['history'];
  $count_teacher = 0;
  $new_file = './uploadfiles/pulpit/'.basename($_FILES['InputFile']['name']);
  if (copy($_FILES['InputFile']['tmp_name'], $new_file)) {
    $sql = "INSERT INTO pulpit (`id`, `title`, `head_photo`, `head_fullname`, `description`, `venue`, `phone` ,`history`, `count_teacher`, `count_discipline`)
    VALUES ('$id','$title','$head_photo','$head_fullname','$description','$venue','$phone','$history','$count_teacher','$count_teacher')";
    $result = $mysqli->query($sql);
    if ($result==true)
    {
      echo "<br>Информация в базу добавлена успешно.";
      header("Location: admin");
    }
    else echo $mysqli->error();
  } else echo "Ошибка при загрузке файла";
}
?>
READ ALSO
Не получается сделать ЧПУ

Не получается сделать ЧПУ

Сейчас отображается вот так

181
Как подружить Qt 5.6 и Visual Studio 2015 при сборке x64

Как подружить Qt 5.6 и Visual Studio 2015 при сборке x64

Написал проект на VS Studio 2015 и использовал библиотеки Qt (инклуды и либы) для некоторых функций для парсингаСборка x32 работает без проблем

262
Фоновый поток (thread detach) перестает работать спустя час

Фоновый поток (thread detach) перестает работать спустя час

thread::join() отработал 10 часов и продолжает работатьНо когда использую detach(), проходит от 50 минут до 1 час 10 минут, и поток останавливает работу

294
Какой тип имеют параметры SO_SNDTIMEO и SO_RCVTIMEO для Windows?

Какой тип имеют параметры SO_SNDTIMEO и SO_RCVTIMEO для Windows?

Какой тип имеют параметры SO_SNDTIMEO и SO_RCVTIMEO, которые задаются в setsockopt для Windows?

218