За последние 24 часа нас посетили 15093 программиста и 1669 роботов. Сейчас ищут 836 программистов ...

mySQL

Тема в разделе "PHP для новичков", создана пользователем cupoma58, 5 май 2025 в 16:46.

  1. cupoma58

    cupoma58 Активный пользователь

    С нами с:
    24 июл 2020
    Сообщения:
    9
    Симпатии:
    0
    Привет.
    В 2021 году - прихостился на freehostia.com. Создал страничку обратной связи. Запустил,её, через форму - работает. А недавно проверил - оказалось, что нет. Это - информация по серверу и работе, на сегодняшний день:
    PHP:
    1. // dbconnect.php
    2.  
    3. try {
    4.     $pdo = new PDO(
    5.         'mysql:host=localhost;dbname=baza',
    6.         'baza',
    7.         'password'
    8.     );
    9. }
    10. catch(PDOException  $e) {echo'<font color="#ff0000">Нет соединения с базой MySQL<br></font>', $e->getMessage();}  
    11.  
    12. // form_action.php
    13.  
    14. require_once('dbconnect.php');
    15.  
    16. // добавляем переменные на базу, в таблицу 'comm'
    17. try {    
    18.     $query="INSERT INTO comm (username, dt, msg) VALUES (:username, NOW(), :msg)";  
    19.     $comm=$pdo->prepare($query);
    20.     $comm->execute(['username' => $_POST['username'], 'msg' => $_POST['msg']]);
    21.     header('Location: index.php');
    22. }
    23. catch(PDOException  $e){echo'<font color="#ff0000">Данные формы не добавлены</font>', $e->getMessage();}
    24. // выборка
    25. require_once('dbconnect.php');                            
    26. try {
    27.   $sql="SELECT * FROM comm ORDER BY dt DESC";              
    28.   $q = $pdo->query($sql);
    29.   $q->setFetchMode(PDO::FETCH_ASSOC);
    30. }
    31. catch(PDOException  $e){echo'<font color="#ff0000">Данные не выбраны</font>', $e->getMessage();}
    это - сервер:

    Сервер: 10.123.0.78 via TCP/IP
    Тип сервера: MySQL
    Соединение сервера: SSL не используется
    Версия сервера: 8.0.16 - MySQL Community Server - GPL
    Версия протокола: 10
    Пользователь: net_baza@10.123.0.183
    Кодировка сервера: UTF-8 Unicode (utf8)

    При добавлении "напрямую" - выборка проходит, через форму - нет.
    Ошибок - нет.
    Не пойму - в чём дело?
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.596
    Симпатии:
    1.764
    В базе записи появляются?
    Выборка в том же файле, что и добавление?
     
  3. cupoma58

    cupoma58 Активный пользователь

    С нами с:
    24 июл 2020
    Сообщения:
    9
    Симпатии:
    0
    Если через форму обратной связи - то нет. Если добавить "напрямую" - база -> таблица -> вставить - то, даже - выборка проходит.
    Я посмотрел на dev.mysql.com/doc/ - там, что-то, странное.
    Выборка и добавление - в разных файлах.
     
  4. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.856
    Симпатии:
    656
    baza@localhost как-то не согласуется с net_baza@10.123.0.183 ;) Или это две разные учетки? Или первая условная?

    А вообще код – жесть! Попросите какого-нибудь начинающего программиста переписать за копеечку. Потому что ЭТО :eek: писал НЕ программист.
     
  5. acvatoris

    acvatoris Новичок

    С нами с:
    2 июн 2024
    Сообщения:
    8
    Симпатии:
    0
    Исходный код, который вы предоставили, по нему очень трудно понять почему у вас не работает форма обратной связи. Поэтому я предлагаю свою версию формы обратной связи.
    Файлы проекта:
    - dbconnect.php
    - form_action.php
    - index.php

    Исходный код каждого из файлов
    - dbconnect.php
    PHP:
    1. <?php
    2. $dsn = 'mysql:host=localhost;dbname=baza;charset=utf8mb4';
    3. $user = 'baza';
    4. $password = 'password';
    5.  
    6. try {
    7.     $pdo = new PDO($dsn, $user, $password, [
    8.         PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    9.         PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
    10.     ]);
    11. } catch (PDOException $e) {
    12.     die('<p style="color:red;">Нет соединения с базой MySQL:<br>' . htmlspecialchars($e->getMessage()) . '</p>');
    13. }
    - form_action.php
    PHP:
    1. <?php
    2. if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    3.     header('Location: index.php');
    4.     exit;
    5. }
    6.  
    7. require_once 'dbconnect.php';
    8.  
    9. if (!empty($_POST['username']) && !empty($_POST['msg'])) {
    10.     try {
    11.         $stmt = $pdo->prepare("INSERT INTO comm (username, dt, msg) VALUES (:username, NOW(), :msg)");
    12.         $stmt->execute([
    13.             'username' => trim($_POST['username']),
    14.             'msg' => trim($_POST['msg'])
    15.         ]);
    16.     } catch (PDOException $e) {
    17.         die('<p style="color:red;">Данные формы не добавлены: ' . htmlspecialchars($e->getMessage()) . '</p>');
    18.     }
    19. }
    20.  
    21. header('Location: index.php');
    - index.php
    PHP:
    1. <?php
    2. require_once 'dbconnect.php';
    3.  
    4. // Получаем список сообщений
    5. try {
    6.     $stmt = $pdo->query("SELECT * FROM comm ORDER BY dt DESC");
    7.     $messages = $stmt->fetchAll(PDO::FETCH_ASSOC);
    8. } catch (PDOException $e) {
    9.     die('<p>Ошибка при получении данных: ' . htmlspecialchars($e->getMessage()) . '</p>');
    10. }
    11. ?>
    12.  
    13. <!DOCTYPE html>
    14. <html lang="en">
    15. <head>
    16.     <meta charset="UTF-8">
    17.     <title>Document</title>
    18.   </head>
    19. <body>
    20.  
    21. <h2>Оставьте комментарий</h2>
    22. <form action="form_action.php" method="post">
    23.     <p>
    24.         <label>Имя:<br>
    25.             <input type="text" name="username" required>
    26.         </label>
    27.     </p>
    28.     <p>
    29.         <label>Сообщение:<br>
    30.             <textarea name="msg" rows="4" cols="40" required></textarea>
    31.         </label>
    32.     </p>
    33.     <p><button type="submit">Отправить</button></p>
    34. </form>
    35.  
    36. <h2>Комментарии:</h2>
    37.  
    38. <?php if (empty($messages)): ?>
    39.    <p>Комментариев нет.</p>
    40. <?php else: ?>
    41. <?php foreach ($messages as $row): ?>
    42.         <div class="message">
    43.             <strong><?php echo htmlspecialchars($row['username']) ?></strong>
    44.             <time><?php echo htmlspecialchars($row['dt']) ?></time>
    45.             <p><?php echo htmlspecialchars($row['msg']) ?></p>
    46.         </div>
    47.     <?php endforeach; ?>
    48. <?php endif; ?>
    49.  
    50. </body>
    51. </html>
    - Структура таблицы
    Код (Text):
    1. CREATE TABLE comm (
    2.     id INT AUTO_INCREMENT PRIMARY KEY,
    3.     username VARCHAR(100) NOT NULL,
    4.     dt DATETIME NOT NULL,
    5.     msg TEXT NOT NULL
    6. );
     
  6. cupoma58

    cupoma58 Активный пользователь

    С нами с:
    24 июл 2020
    Сообщения:
    9
    Симпатии:
    0
    Благодарю за код, попробую. В свою защиту, могу сказать - когда-то, мой код - работал.
     
  7. cupoma58

    cupoma58 Активный пользователь

    С нами с:
    24 июл 2020
    Сообщения:
    9
    Симпатии:
    0
    Попробовал код - не работает добавление, только - напрямую, в таблицу.
     

    Вложения:

  8. acvatoris

    acvatoris Новичок

    С нами с:
    2 июн 2024
    Сообщения:
    8
    Симпатии:
    0
    Опишите, подробно ошибки или ошибку, которую вы получаете
     
  9. acvatoris

    acvatoris Новичок

    С нами с:
    2 июн 2024
    Сообщения:
    8
    Симпатии:
    0
    Высылаю вам последовательность скриншотов, для того чтобы показать вам, что код, который я привел рабочий.
     

    Вложения:

    • 1.png
      1.png
      Размер файла:
      75 КБ
      Просмотров:
      6
    • 2.png
      2.png
      Размер файла:
      86,7 КБ
      Просмотров:
      6
    • 3.png
      3.png
      Размер файла:
      93,2 КБ
      Просмотров:
      6
    • 4.png
      4.png
      Размер файла:
      87,5 КБ
      Просмотров:
      6
    • 5.png
      5.png
      Размер файла:
      28,5 КБ
      Просмотров:
      6
    • 6.png
      6.png
      Размер файла:
      31,9 КБ
      Просмотров:
      6
    • 7.png
      7.png
      Размер файла:
      23,4 КБ
      Просмотров:
      6
    • 8.png
      8.png
      Размер файла:
      48,2 КБ
      Просмотров:
      6
  10. cupoma58

    cupoma58 Активный пользователь

    С нами с:
    24 июл 2020
    Сообщения:
    9
    Симпатии:
    0
    dbconnect.php: Ошибка синтаксического анализа : синтаксическая ошибка, неожиданный символ «[» в /comment/dbconnect.php в строке 7
    Если убрать скобку - неожиданный T_DOUBLE_ARROW (=>)
     
    #10 cupoma58, 7 май 2025 в 13:47
    Последнее редактирование: 7 май 2025 в 13:52
  11. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.596
    Симпатии:
    1.764
    А нефиг настолько старую пыху пользовать... Этот синтаксис в 7.0 появился (если не раньше, но в 7 точно уже был), а текущая 8.4. Раньше надо было array() писать
     
  12. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.856
    Симпатии:
    656
    5.4. У нас много где это минималка, а кв. скобки, естественно, вовсю используются.
    --- Добавлено ---
    @cupoma58, хочешь сидеть на пятерке, обновись хотя бы до 5.6.30 (максималка сейчас – 5.6.40).
     
  13. cupoma58

    cupoma58 Активный пользователь

    С нами с:
    24 июл 2020
    Сообщения:
    9
    Симпатии:
    0
    Ну, заработало, вроде. Только время - по Гринвичу. Поменять-бы.
    В таблице, это, выглядит так:
    Имя: dt
    Тип: timestamp
    Null: Да
    По умолчанию: CURRENT_TIMESTAMP
    Дополнительно: DEFAULT_GENERATED