За последние 24 часа нас посетили 8929 программистов и 491 робот. Сейчас ищут 194 программиста ...

html + php+mysql+input img

Тема в разделе "PHP для новичков", создана пользователем shiyri, 25 сен 2020.

  1. shiyri

    shiyri Новичок

    С нами с:
    8 июн 2019
    Сообщения:
    86
    Симпатии:
    0
    Добрый день, подскажите пожалуйста не могу понять в чем причина, нажатие на "Сохранить"
    ни к чему не приводит. Могу ошибаться но возможно переменные не обьявлены в php части

    HTML:
    1. <
    2. ?php
    3. if(count($_FILES) > 0) {
    4. if(is_uploaded_file($_FILES['imaga']['tmp_name'])) {
    5.     require_once "db.php";
    6.     $imgData =addslashes(file_get_contents($_FILES['imaga']['tmp_name']));
    7.     $imageProperties = getimageSize($_FILES['imaga']['tmp_name']);  
    8.     $sql = "INSERT INTO kuchnya(type, names, sostav, ves, opisanie, imageType, imageData )
    9.     VALUES('{$types}', '{$names}', '{$sostav}', '{$ves}', '{$opisanie}','{$imageProperties['mime']}', '{$imgData}')";
    10.     $current_id = mysqli_query($conn, $sql) or die("<b>Error:</b> Problem on Image Insert<br/>" . mysqli_error($conn));
    11.     if(isset($current_id)) {
    12.         header("Location: listImages.php");
    13.  }
    14. }
    15. }
    16. ?>
    17. <!DOCTYPE html>
    18. <HTML lang="en">
    19. <meta charset="utf-8">
    20. </HEAD>
    21. <form name="frmImage" enctype="multipart/form-data" action="" method="post" >
    22. <select name="types">
    23.     <option selected disabled>Выбери меня:</option>
    24.     <option value="6">6</option>
    25.     <option value="5">5</option>
    26.     <option value="4">4</option>
    27.     <option value="3">3</option>
    28.     <option value="2">2</option>
    29.     <option value="1">1</option>
    30.    </select>
    31. <input name="names" type="text" class="text"/>
    32. <input name="sostav" type="text" class="text"/>
    33. <input name="ves" type="text" class="text"/>
    34. <input name="opisanie" type="text" class="text"/>
    35. <input name="imaga" type="file" class="inputFile" />
    36. <input type="submit" value="Сохранить" class="btnSubmit" />
    37. </form>
    38. </BODY>
    39. </HTML>
     
  2. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    2.708
    Симпатии:
    429
    <?php
    --- Добавлено ---
    Чтобы два влож. ветвления не писать, можно объединить в одном простые условия в сложное при помощи && (AND).
    После header Location лучше exit написать, чтобы контент страницы «впустую» не отправлялся.
    В ответ на POST-запрос лучше всегда делать редирект, а не только по условию.
    Прочие POST-параметры находятся в массиве $_POST. При вставке вход. данных в БД их нужно фильтровать, экранировать или использовать т.н. подготовленные запросы.
    --- Добавлено ---
    Нет, просто if ($current_id). И там никакого current_id никогда не будет. Учите мат. часть.
     
  3. shiyri

    shiyri Новичок

    С нами с:
    8 июн 2019
    Сообщения:
    86
    Симпатии:
    0
    вот так работает но, если ставлю кодировку в запросе, то картинка не грузится, если без кодировки то русские символы абра-кадаброй

    Код (Text):
    1. <?php
    2. if(count($_FILES) > 0) && (is_uploaded_file($_FILES['userImage']['tmp_name'])) {
    3.     require_once "db.php";
    4.     $imgData =addslashes(file_get_contents($_FILES['userImage']['tmp_name']));
    5.     $imageProperties = getimageSize($_FILES['userImage']['tmp_name']);
    6.     $type = $_POST['type'];
    7.     $names = $_POST['names'];
    8.     $sostav = $_POST['sostav'];
    9.     $ves = $_POST['ves'];
    10.     $opisanie = $_POST['opisanie'];
    11.     $query = "INSERT INTO kuchnya(type, names, sostav, ves, opisanie, imageType, imageData )
    12.     VALUES('{$type}', '{$names}', '{$sostav}', '{$ves}', '{$opisanie}','{$imageProperties['mime']}', '{$imgData}')";  
    13.  
    14.     mysqli_query($conn,"SET CHARACTER SET 'utf8'");
    15.  
    16.     date_default_timezone_set('Asia/Yekaterinburg');
    17.     $result = mysqli_query($conn, $query) or die("<b>Error:</b> Problem on Image Insert<br/>" . mysqli_error($conn));
    18.     if(isset($query)) {
    19.         mysqli_free_result($result);
    20.         header("Location: listImages.php");
    21.         exit();
    22.     }
    23. }
    24. ?>
    25. <!DOCTYPE html>
    26. <HTML lang="en">
    27. <HEAD>
    28. <meta charset="utf-8">
    29. </HEAD>
    30. <BODY>
    31. <form name="frmImage" enctype="multipart/form-data" action="" method="post" >
    32. <select name="types">
    33.     <option selected disabled>Выбери меня:</option>
    34.     <option value="6">6</option>
    35.     <option value="5">5</option>
    36.     <option value="4">4</option>
    37.     <option value="3">3</option>
    38.     <option value="2">2</option>
    39.     <option value="1">1</option>
    40.    </select>
    41. <input name="names" type="text" class="text"/>
    42. <input name="sostav" type="text" class="text"/>
    43. <input name="ves" type="text" class="text"/>
    44. <input name="opisanie" type="text" class="text"/>
    45. <input name="imaga" type="file" class="inputFile" />
    46. <input type="submit" value="Сохранить" class="btnSubmit" />
    47. </form>
    48. </BODY>
    49. </HTML>
     
  4. shiyri

    shiyri Новичок

    С нами с:
    8 июн 2019
    Сообщения:
    86
    Симпатии:
    0
    Код (Text):
    1. <?php
    2. if((count($_FILES) > 0)AND(is_uploaded_file($_FILES['userImage']['tmp_name']))) {
    3.     require_once "db.php";
    4.     $imgData =addslashes(file_get_contents($_FILES['userImage']['tmp_name']));
    5.     $imageProperties = getimageSize($_FILES['userImage']['tmp_name']);
    6.     $type = $_POST['type'];
    7.     $names = $_POST['names'];
    8.     $sostav = $_POST['sostav'];
    9.     $ves = $_POST['ves'];
    10.     $opisanie = $_POST['opisanie'];
    11.     $query = "INSERT INTO kuchnya(type, names, sostav, ves, opisanie, imageType, imageData )
    12.     VALUES('{$type}', '{$names}', '{$sostav}', '{$ves}', '{$opisanie}','{$imageProperties['mime']}', '{$imgData}')";  
    13.  
    14.     mysqli_query($conn,"SET CHARACTER SET 'utf8'");
    15.  
    16.     date_default_timezone_set('Asia/Yekaterinburg');
    17.     $result = mysqli_query($conn, $query) or die("<b>Error:</b> Problem on Image Insert<br/>" . mysqli_error($conn));
    18.     if(isset($query)) {
    19.         mysqli_free_result($result);
    20.         header("Location: listImages.php");
    21.         exit();
    22.     }
    23. }
    24. ?>
    25. <!DOCTYPE html>
    26. <HTML lang="en">
    27. <HEAD>
    28. <meta charset="utf-8">
    29.  
    30. <form name="frmImage" enctype="multipart/form-data" action="" method="post" class="frmImageUpload">
    31. <select name="type">
    32.     <option selected disabled>Тип блюда:</option>
    33.     <option value="Чебурашка">Салаты</option>
    34.     <option value="Крокодил Гена">Супы</option>
    35.     <option value="Шапокляк">Второе блюдо</option>
    36.     <option value="Крыса Лариса">Гарнир</option>
    37.     <option value="Крыса Лариса">Напиток</option>
    38.     <option value="Крыса Лариса">Выпечка</option>
    39.    </select>
    40. <input name="names" type="text" class="text"/>
    41. <input name="sostav" type="text" class="text"/>
    42. <input name="ves" type="text" class="text"/>
    43. <input name="opisanie" type="text" class="text"/>
    44. <input name="userImage" type="file" class="inputFile" />
    45. <input type="submit" value="Сохранить" class="btnSubmit"/></form>
    46. </BODY>
    47. </HTML>
     
  5. shiyri

    shiyri Новичок

    С нами с:
    8 июн 2019
    Сообщения:
    86
    Симпатии:
    0
    короч сделал как попало через два коннекта

    Код (Text):
    1.     $query = "INSERT INTO kuchnya(imageType, imageData ) VALUES('{$imageProperties['mime']}', '{$imgData}')";  
    2.     $result = mysqli_query($conn, $query) or die("<b>Error:</b> Problem on Image Insert<br/>" . mysqli_error($conn));
    3.     mysqli_query($conn,"SET CHARACTER SET 'utf8'");
    4.     date_default_timezone_set('Asia/Yekaterinburg');
    5.     $query = "UPDATE kuchnya set type = '{$type}', names = '{$names}', sostav = '{$sostav}', ves = '{$ves}', opisanie = '{$opisanie}' where names is null ORDER BY imageId DESC LIMIT 1";  
    6.     $result = mysqli_query($conn, $query) or die("<b>Error:</b>not insert data<br/>" . mysqli_error($conn));
    7.     mysqli_close($conn);
    тупо но работает
     
  6. Drunkenmunky

    Drunkenmunky Новичок

    С нами с:
    12 авг 2020
    Сообщения:
    172
    Симпатии:
    28
    Должен заметить, что не получается у вас потому , что вы изначально в решении проблемы применили неверный подход.
    Разбейте действие скрипта на составляющие:
    1. Cделайте тестовый обработчик и отправьте ему вашу форму. Распечатайте то, что он получает, и убедитесь, что это то, что вы и задумывали.
    2. Из полученных данных вручную сформируйте строку запроса, и протестируйте его в phpMyAdmin.
    3. Удостоверившись, что запрос выполняется именно так, как и задумывалось, там же в phpMyAdmin, преобразуйте его в код php.
    4. С помощью echo выведите в вашем скрипте полученный код. Сравните его с ранее сформированной строкой запроса.
    И только после этого добавляйте туда переменные из формы, на каждом этапе контролируя вводимые данные.
    И т.д.
     
    #6 Drunkenmunky, 29 сен 2020
    Последнее редактирование: 29 сен 2020
    twim32 нравится это.