Не добавляет в базу данных

Тема в разделе "PHP / Python / Ruby / Perl / JavaScript", создана пользователем NIREEE46, 5 ноя 2015.

Статус темы:
Закрыта.
  1. NIREEE46

    NIREEE46 Знающий

    Регистрация:
    8 июн 2014
    Сообщения:
    147
    Симпатии:
    52
    Розыгрышей:
    0
    Репутация:
    12
    Добрый день. Php изучаю совсем недавно и вот столкнулся с проблемой. Не могу добавить данные в базу данных mysql при помощи формы. Может кто найдет ошибку, буду очень благодарен.

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Добавление пользователя</title>
    </head>

    <body>
    <form method="post" action="add.php">
    Название новости<br/>
    <input type="text" name="title"/><br/>
    Текст новости<br/>
    <textarea cols="40" rows="10" name="text"></textarea><br/>
    Автор новости<br/>
    <input type="text" name="author"><br/>
    <input type="hidden" name="date" value="<?php echo date('Y-m-d');?>"/>
    <input type="hidden" name="time" value="<?php echo date('H:i:s');?>"/>
    <input type="submit" name="add" value="Добавить"/>

    </form>
    <?php
    $con = mysqli_connect("localhost", "root", "root", "123")//параметры в скобках ("хост", "имя пользователя", "пароль")
    or die("<p>Ошибка подключения к базе данных! " . mysqli_connect_error() . "</p>");

    $db = mysqli_select_db($con,"123")//параметр в скобках ("имя базы, с которой соединяемся")
    or die("<p>Ошибка выбора базы данных! ". exit(mysqli_connect_error()) . "</p>");
    mysqli_query($con, "SET NAMES 'utf9' "); // mysql_set_charset("utf9");

    if (isset($_POST['add']))
    {
    $title = $_POST['title'];

    $author = trim($_POST['author']);
    $date = $_POST['date'];
    $time = $_POST['time'];

    $sql = "INSERT INTO news(title, date, time, author) VALUES ('$title','$date','$time','$author')";
    mysqli_query($con, $sql);
    mysqli_close($con);
    echo "Новость успешно добавлена";
    }
    ?>

    </body>
    </html>
     
  2. MokkaCyan

    MokkaCyan 『著名 Ń Ҝ Ø Ή ∀ 名著』

    Регистрация:
    30 июл 2015
    Сообщения:
    531
    Симпатии:
    274
    Розыгрышей:
    0
    Репутация:
    170
    Текст новости<br/>
    Разве сначала не надо <br> ?
     
  3. NIREEE46

    NIREEE46 Знающий

    Регистрация:
    8 июн 2014
    Сообщения:
    147
    Симпатии:
    52
    Розыгрышей:
    0
    Репутация:
    12
    тэг </br> служит для переноса на следующую строку, вроде можно и просто <br>. Он написан правильно и не влияет на работу
     
  4. Glimisufi

    Glimisufi LEGENDARNII VIRODOK

    Регистрация:
    8 дек 2014
    Сообщения:
    912
    Симпатии:
    785
    Розыгрышей:
    0
    Репутация:
    117
    проверь данные
     
  5. foxovsky

    foxovsky Красноволосая сучара
    Команда форума Куратор раздела

    Регистрация:
    13 апр 2015
    Сообщения:
    1.291
    Симпатии:
    1.598
    Розыгрышей:
    0
    Репутация:
    267
    да, можно просто <br> юзать

    По поводу кода:
    1. Я всегда пишу запрос так: INSERT INTO news(title, date, time, author) VALUES ('". $title ."','". $date ."','". $time ."','". $author ."')
    - Временами php попросту не принимает параметры иначе - не знаю, в чем проблема и отчасти это костыль, но все же советую попробовать.
    2. Подключение к базе данных точно проходит? Банально, но малоли
    3. POST-запросы очень часто на локальных серверах вроде денвера почему-то не проходят, попробуй GET использовать для теста.
    4. Вот тебе пример кода для работы с MySQL

    /* База данных */
    $mysqli = mysqli_connect( 'localhost', /* Хост, к которому мы подключаемся */
    'root', /* Имя пользователя */
    'root', /* Используемый пароль */
    'db'); /* База данных для запросов по умолчанию */


    $mysqli->query("INSERT INTO news(title, date, time, author) VALUES ('$title','$date','$time','$author')");
     
  6. NIREEE46

    NIREEE46 Знающий

    Регистрация:
    8 июн 2014
    Сообщения:
    147
    Симпатии:
    52
    Розыгрышей:
    0
    Репутация:
    12
    Спасибо тебе за обширный совет. Подключение к базе данных происходит, так как я пробовал из готовой базы показывать запросы командами SELECT идт. это работает. Может важно, но у меня апач. Сейсас попробую твой совет.
    P.S. пропробовал по твоему, все также, ошибок опять же нет
     
    #6 NIREEE46, 5 ноя 2015
    Последнее редактирование: 5 ноя 2015
  7. foxovsky

    foxovsky Красноволосая сучара
    Команда форума Куратор раздела

    Регистрация:
    13 апр 2015
    Сообщения:
    1.291
    Симпатии:
    1.598
    Розыгрышей:
    0
    Репутация:
    267
    SELECT запросы проходят значит?
    Структуру таблицы покажи, аля sql-файл
    Возможно, конфликт типов данных
     
  8. NIREEE46

    NIREEE46 Знающий

    Регистрация:
    8 июн 2014
    Сообщения:
    147
    Симпатии:
    52
    Розыгрышей:
    0
    Репутация:
    12
    -- phpMyAdmin SQL Dump
    -- version 4.5.1
    -- http://www.phpmyadmin.net
    --
    -- Хост: localhost
    -- Время создания: Ноя 05 2015 г., 19:53
    -- Версия сервера: 5.7.9-log
    -- Версия PHP: 5.6.15

    SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
    SET time_zone = "+00:00";


    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8mb4 */;

    --
    -- База данных: `123`
    --

    -- --------------------------------------------------------

    --
    -- Структура таблицы `news`
    --

    CREATE TABLE `news` (
    `id` int(10) UNSIGNED NOT NULL,
    `title` varchar(255) NOT NULL,
    `text` text NOT NULL,
    `date` date NOT NULL,
    `time` text NOT NULL,
    `author` varchar(50) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    --
    -- Дамп данных таблицы `news`
    --

    INSERT INTO `news` (`id`, `title`, `text`, `date`, `time`, `author`) VALUES
    (1, 'Название новости 1', 'фывфывфывфывпавп в', '2015-11-05', '', 'выавыа'),
    (2, 'названиеновости', 'ыфвпарпывп', '2015-11-05', '', 'апвыпвып'),
    (3, 'названиеновости', 'ыфвпарпывп', '2015-11-05', '', 'апвыпвып');

    --
    -- Индексы сохранённых таблиц
    --

    --
    -- Индексы таблицы `news`
    --
    ALTER TABLE `news`
    ADD PRIMARY KEY (`id`);

    --
    -- AUTO_INCREMENT для сохранённых таблиц
    --

    --
    -- AUTO_INCREMENT для таблицы `news`
    --
    ALTER TABLE `news`
    MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;
    /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
    /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
    /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
     
  9. OFF

    OFF |30|33|2/\\/\\0|)
    Команда форума Куратор раздела

    Регистрация:
    29 мар 2014
    Сообщения:
    2.185
    Симпатии:
    1.888
    Розыгрышей:
    0
    Репутация:
    469
    Кидай код в тег [*code]
    Глаза режет
     
  10. foxovsky

    foxovsky Красноволосая сучара
    Команда форума Куратор раздела

    Регистрация:
    13 апр 2015
    Сообщения:
    1.291
    Симпатии:
    1.598
    Розыгрышей:
    0
    Репутация:
    267
    Вот оно что - у тебя у каждой новости свой уникальный ID генерирует MySQL, а в запросе его нету.
    $mysqli->query("INSERT INTO news(id, title, date, time, author) VALUES ('', '$title','$date','$time','$author')");
     
  11. foxovsky

    foxovsky Красноволосая сучара
    Команда форума Куратор раздела

    Регистрация:
    13 апр 2015
    Сообщения:
    1.291
    Симпатии:
    1.598
    Розыгрышей:
    0
    Репутация:
    267
    Ахда, так же:
    Код:
    CREATE TABLE `news` (
    `id` int(10) NOT NULL AUTO_INCREMENT,
    `title` varchar(255) NOT NULL,
    `text` text NOT NULL,
    `date` date NOT NULL,
    `time` text NOT NULL,
    `author` varchar(50) NOT NULL
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
    
     
  12. NIREEE46

    NIREEE46 Знающий

    Регистрация:
    8 июн 2014
    Сообщения:
    147
    Симпатии:
    52
    Розыгрышей:
    0
    Репутация:
    12
    все сделал как ти сказал, но вылетакет такая ошибка при попытке добавить в базу:
    Код:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '? text) VALUES ('','fdg','2015-11-05','20:11:18','dfg', 'text')' at line 1
     
  13. foxovsky

    foxovsky Красноволосая сучара
    Команда форума Куратор раздела

    Регистрация:
    13 апр 2015
    Сообщения:
    1.291
    Симпатии:
    1.598
    Розыгрышей:
    0
    Репутация:
    267
    Про text то забыли
    Код:
    $text = $_POST['text'];
    
    $mysqli->query("INSERT INTO news(id, title, text, date, time, author) VALUES ('', '$title', '$text', '$date','$time','$author')");
    
     
    Последние данные очков репутации:
    NIREEE46: 1 Очко (Спасибо тебе за помощь!!) 5 ноя 2015
  14. NIREEE46

    NIREEE46 Знающий

    Регистрация:
    8 июн 2014
    Сообщения:
    147
    Симпатии:
    52
    Розыгрышей:
    0
    Репутация:
    12
    я это добавил, теперь что то надо сделать с id. Пишет ошибку
    Incorrect integer value: '' for column 'id' at row 1
     
  15. NIREEE46

    NIREEE46 Знающий

    Регистрация:
    8 июн 2014
    Сообщения:
    147
    Симпатии:
    52
    Розыгрышей:
    0
    Репутация:
    12
    спасибо тебе. Проблема решилась!!!ТЕму можно закрывать
     
Статус темы:
Закрыта.

Поделиться этой страницей

  • Яндекс.Метрика
  • Рейтинг@Mail.ru