Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Простенький вопрос по PHP

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

Открыть новую тему     Написать ответ в эту тему

kodex77



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Других файлов нет, был index.html который я переименовал в index.php.
 

Цитата:
Почему решили, что не работает?

 
Так так данные не передаются/записываются в БД о тех новых страницах где добавляю код.

Всего записей: 196 | Зарегистр. 07-04-2012 | Отправлено: 16:45 23-02-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kodex77

Цитата:
Так так данные не передаются/записываются в БД о тех новых страницах где добавляю код.

Потому что, если не уникальный ip в день (а он перестаёт быть таким при посещении любой страницы) у вас идёт UPDATE записи, которой нет.
Наверно же уникум будет для данной страницы, а не сайта в целом, поэтому в запрос count нужно добавить ещё и то, что определяет страницу.

Всего записей: 15612 | Зарегистр. 20-09-2014 | Отправлено: 18:19 23-02-2024
kodex77



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii, не думаю что проблема в этом. Я попробовал с VPN, ничего тоже не происходит.  
В любом случае, если даже не уникальный IP, должен ведь хоть какая-то запись появится (уник/хит)?

Всего записей: 196 | Зарегистр. 07-04-2012 | Отправлено: 19:13 23-02-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kodex77

Цитата:
IP, должен ведь хоть какая-то запись появится  

Нет
У вас вроде- если уникальный IP за сутки на любой странице, тогда INSERT.
Если нет, то UPDATE, но записи то для данной страницы нет.

Всего записей: 15612 | Зарегистр. 20-09-2014 | Отправлено: 19:55 23-02-2024
kodex77



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii, спасибо большое за совет и помощь! Проблема действительно была в логике работы скрипта, я воспользовался вашим советом и попросил GPT написать новую логику и вроде теперь все работает.  
 
Ранее, если на новой странице где подключался скрипт еще не было записей в базе данных, скрипт пытался выполнить UPDATE, но поскольку записей нет, операция UPDATE не выполнялась и данные не добавлялись.  
 
 
Хотелось бы попросить у вас еще совета по другому вопросу.
У меня на всех страницах есть ссылка (button) и мне нужно отслеживать все клики по этой кнопке и записывать данные в БД. Какой лучший способ будет для этого?
 
Вот так выглядит кнопка:

Код:
<a class="button" href="https://click.ru">Ссылка</a>

Всего записей: 196 | Зарегистр. 07-04-2012 | Отправлено: 20:26 23-02-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kodex77

Цитата:
Какой лучший способ будет для этого?

по нажатию кнопки перекидывать на свой скрипт, который делает что нужно с базой, а после перекидывает по этой ссылке браузер далее.

Всего записей: 15612 | Зарегистр. 20-09-2014 | Отправлено: 20:28 23-02-2024
kodex77



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii, проблема в том, что там не одинаковая ссылка стоит, а каждая ссылка разная у каждой страницы.

Всего записей: 196 | Зарегистр. 07-04-2012 | Отправлено: 20:49 23-02-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kodex77

Цитата:
проблема в том, что там не одинаковая ссылка стоит, а каждая ссылка разная у каждой страницы

в чем проблема? либо храните ссылки в базе, тогда просто передаете id записи в скрипт, либо целиком ссылку (не рекомендуется для публичного ресурса, иначе могут использовать в своих целях, используя механизм в спаме и так далее).
out.php?id=123
или  
out.php?url=http%3A%2F%2Fru.ru
где содержимое url должно пройти через urlencode
 
можно вообще вот так
out.php?123
или
out.php?http%3A%2F%2Fru.ru

Всего записей: 15612 | Зарегистр. 20-09-2014 | Отправлено: 21:25 23-02-2024 | Исправлено: Mavrikii, 21:33 23-02-2024
kodex77



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
out.php?id=123

Mavrikii, спасибо большое еще раз, это отличный вариант, попробую создать.

Всего записей: 196 | Зарегистр. 07-04-2012 | Отправлено: 23:22 23-02-2024
ZhekaVorobey182



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А вот  и я  
Если я буду  хреначить PHP под Win. Там  исторически всегда неважно в каком регистре переменные
echo hTMLHelper::get_header_tag('Koнcтaнты классов');  
или  HTMLHELPER::get_header_tag('Koнcтaнты классов');  
 
А вот  как  под Linux ???? Начнеш  переносить  и опаньки

Всего записей: 273 | Зарегистр. 27-02-2022 | Отправлено: 11:08 26-02-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ZhekaVorobey182

Цитата:
Там  исторически всегда неважно в каком регистре переменные

разве? не путайте с регистром файлов, переменные это внутреннее, на любой платформе у PHP чувствительны к регистру.
но названия классов и функций - не чувствительны.
 

Цитата:
Case Sensitive
 
Strings
Variables
Object Properties
Constants, by default
 
 
Case Insensitive
 
Key Words etc
Functions
Object Methods
Constants, if defined accordingly
Class Name.

 
лучше сразу писать все аккуратно.
 
https://dzen.ru/a/ZGBP2RNZHQxMDFkJ

Всего записей: 15612 | Зарегистр. 20-09-2014 | Отправлено: 11:28 26-02-2024 | Исправлено: Mavrikii, 11:48 26-02-2024
kodex77



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте.
 
Есть comments.php, при прямом обращении к файлу, все работает, а при подключении через include на страницах, форма для добавления комментариев перестает работать.  
 
Предполагаю, что проблема где-то здесь:  

Код:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

 
Можете подсказать, в чем именно проблема? Заранее спасибо.
 

Код:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
ini_set('log_errors', 1);
ini_set('error_log', __DIR__ . '/error.log');
 
$servername = "localhost"; // Имя сервера
$username = "dbusername"; // Имя пользователя базы данных
$password = "dbpassword"; // Пароль пользователя базы данных
$dbname = "dbname"; // Имя базы данных
 
$conn = new mysqli($servername, $username, $password_db, $dbname);
 
if ($conn->connect_error) {
    die("Ошибка подключения: " . $conn->connect_error);
}
 
$comment_added = false;
 
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    echo "Отладочное сообщение: Форма отправлена.<br>";
     
    $author = mysqli_real_escape_string($conn, $_POST['author']);
    echo "Отладочное сообщение: Автор получен из формы: " . $author . "<br>";
     
    $comment = mysqli_real_escape_string($conn, $_POST['comment']);
    echo "Отладочное сообщение: Комментарий получен из формы: " . $comment . "<br>";
     
    $gameName = mysqli_real_escape_string($conn, $_POST['gameName']);
    echo "Отладочное сообщение: Название игры получено из формы: " . $gameName . "<br>";
 
    if (!empty($author) && !empty($comment) && !empty($gameName)) {
        echo "Отладочное сообщение: Условие для выполнения запроса на добавление комментария выполнено.<br>";
        $sql = "INSERT INTO site_comments (game_name, author, comment, date) VALUES ('$gameName', '$author', '$comment', NOW())";
        echo "Отладочное сообщение: SQL-запрос для добавления комментария: " . $sql . "<br>";
        if ($conn->query($sql) === TRUE) {
            $comment_added = true;
            echo "Отладочное сообщение: Комментарий успешно добавлен в базу данных.<br>";
        } else {
            echo "Ошибка: " . $sql . "<br>" . $conn->error;
        }
    } else {
        echo "<p>Пожалуйста, заполните все обязательные поля.</p>";
    }
}
 
if (!isset($gameName)) {
    $gameName = 'Demo Game';
}
 
$sql = "SELECT * FROM site_comments WHERE game_name = '$gameName' ORDER BY date DESC";
$result = $conn->query($sql);
 
?>
 
<!DOCTYPE html>
<html>
<head>
    <title><?php echo $gameName; ?> - Комментарии к игре</title>
      <style>
        /* Стили для комментариев */
        #comments {
            margin-top: -10px;
            margin-bottom: 0px;
            padding: 10px;
            background-color: #f8f9fa;
            border-radius: 10px;
        }
 
        .comment {
            border-bottom: 1px solid #ced4da;
            padding: 10px 0;
            margin-bottom: 10px;
        }
 
        .comment p {
            margin: 5px 0;
        }
 
        .comment .author {
            font-weight: bold;
            color: #007bff;
        }
 
        .comment .date {
            color: #6c757d;
            font-size: 12px;
            font-weight: bold;
        }
 
        /* Стили для формы комментариев */
        #comment-form {
            margin: 0 auto;
            margin-top: 0px;
            margin-bottom: 0px;
            padding: 20px;
            background-color: #f8f9fa;
            border-radius: 10px;
            text-align: left;
            display: flex;
            flex-wrap: wrap;
        }
 
        #comment-form label {
            margin-right: 5px;
            font-weight: bold;
            display: inline-block;
            width: 80px;
        }
 
        .required-star {
            color: red;
        }
 
        #comment-form textarea,
        #comment-form input[type="text"],
        #comment-form input[type="submit"] {
            flex-grow: 1;
            margin-right: 5px;
        }
 
        #comment-form textarea {
            width: calc(100% - 90px); /* Отнимаем ширину метки для textarea */
            height: 100px;
            margin-top: 5px;
            margin-bottom: 10px;
            border-radius: 5px;
            border: 1px solid #ced4da;
            padding: 10px;
        }
 
        #comment-form input[type="text"],
        #comment-form input[type="submit"] {
            width: calc(100% - 90px); /* Отнимаем ширину метки для input */
            border-radius: 5px;
            border: 1px solid #ced4da;
            padding: 10px;
            margin-top: 5px;
            margin-bottom: 5px;
            background-color: #fff;
            color: #495057;
        }
 
        #comment-form input[type="submit"] {
            background-color: #007bff;
            color: #fff;
            cursor: pointer;
            transition: background-color 0.3s;
        }
 
        #comment-form input[type="submit"]:hover {
            background-color: #0056b3;
        }
    </style>
</head>
<body>
 
<!-- Блок с комментариями -->
<div class="blueline">КОММЕНТАРИИ К ИГРЕ - <?php echo $gameName; ?></div>
<div id="comments">
    <?php
    if ($result->num_rows > 0) {
        while ($row = $result->fetch_assoc()) {
            echo '<div class="comment">';
            echo '<p class="author">' . $row["author"] . '</p>';
            echo '<p class="date">' . $row["date"] . '</p>';
            echo '<p>' . $row["comment"] . '</p>';
            echo '</div>';
        }
    } else {
        echo "<p>Пока здесь нет комментариев.</p>";
    }
    ?>
</div>
<!-- Конец блока с комментариями -->
 
<!-- Сообщение об успешной отправке комментария -->
<?php if ($comment_added) : ?>
    <div id="success-message">Ваш комментарий уже добавлен и будет опубликован после модерации.</div>
    <script>
        // Скрываем сообщение об успешной отправке через 10 секунд
        setTimeout(function() {
            var successMessage = document.getElementById('success-message');
            if (successMessage) {
                successMessage.style.display = 'none';
            }
        }, 10000);
    </script>
<?php endif; ?>
 
<!-- Форма для оставления комментария -->
<div id="comment-form" style="display: <?php echo ($comment_added ? 'none' : 'block'); ?>;">
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
        <label for="author" class="required-label">Имя:<span class="required-star">*</span></label><br>
        <input type="text" id="author" name="author"><br>
        <label for="comment" class="required-label">Комментарий:<span class="required-star">*</span></label><br>
        <textarea id="comment" name="comment"></textarea><br>
        <!-- Передаем название игры через скрытое поле -->
        <input type="hidden" name="gameName" value="<?php echo $gameName; ?>">
        <input type="submit" value="Оставить комментарий">
    </form>
</div>
<!-- Конец формы для оставления комментария -->
 
</body>
</html>
 
<?php
// Закрываем соединение с базой данных
$conn->close();
?>

Всего записей: 196 | Зарегистр. 07-04-2012 | Отправлено: 15:31 27-02-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kodex77

Цитата:
а при подключении через include на страницах

что и как вы подключаете?

Всего записей: 15612 | Зарегистр. 20-09-2014 | Отправлено: 23:59 27-02-2024
kodex77



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii, также как и подключал stats.php, но сейчас stats.php временно отключил, чтобы никаких конфликтов проблем не было.

Код:
<?php
$gameName = 'Demo Game';
include '../admin/comments.php';
?>


Всего записей: 196 | Зарегистр. 07-04-2012 | Отправлено: 14:21 28-02-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kodex77

Цитата:
перестает работать

В чем выражается?
 

Цитата:
Предполагаю, что проблема где-то здесь

Не должно, там будет путь к первоначально запущенному сервером php файлу.

Всего записей: 15612 | Зарегистр. 20-09-2014 | Отправлено: 18:13 28-02-2024
Samovarov



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kodex77

Цитата:
при прямом обращении к файлу, все работает, а при подключении через include на страницах, форма для добавления комментариев перестает работать.

 
Я, думаю, тут любой браузер с ума сойдет, если ты инклюдишь всю разметку с тегами html body внутрь html body. Наверное еще и в тег form. Посмотри какая у тебя итоговая разметка получается.

Всего записей: 357 | Зарегистр. 20-03-2002 | Отправлено: 00:02 29-02-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kodex77

Цитата:
<?php
$gameName = 'Demo Game';
include '../admin/comments.php';
?>

это весь код страницы или что то еще?

Всего записей: 15612 | Зарегистр. 20-09-2014 | Отправлено: 00:05 29-02-2024
kodex77



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
В чем выражается?

Комментарии не добавляются БД.
 

Цитата:
это весь код страницы или что то еще?

Остальное html код страницы/игры.
 

Цитата:
Я, думаю, тут любой браузер с ума сойдет, если ты инклюдишь всю разметку с тегами html body внутрь html body. Наверное еще и в тег form. Посмотри какая у тебя итоговая разметка получается.

Какой вариант предлагаете? Весь html код перенести на страницу? Просто тогда вывод комментарий возможно не так будет работать, как сейчас в коде.

Всего записей: 196 | Зарегистр. 07-04-2012 | Отправлено: 19:10 01-03-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kodex77

Цитата:
Остальное html код страницы/игры.

какой страницы? как и написали, у вас и в php файле, где include, есть код html страницы с body и так далее, и в том файле, что подключается - comments.php, тоже полноценный код страницы?
 

Цитата:
Весь html код перенести на страницу

если у вас уже есть код страницы, то в include файле должна быть только та часть, что вам нужно вставить в основную страницу. и именно там, где происходит сам include.
хотите вставлять только форму - ее html код и код обработки должен быть в comments.php

Всего записей: 15612 | Зарегистр. 20-09-2014 | Отправлено: 20:16 01-03-2024
Samovarov



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kodex77

Цитата:
Какой вариант предлагаете? Весь html код перенести на страницу? Просто тогда вывод комментарий возможно не так будет работать, как сейчас в коде.

Я ж не знаю цели. Если цель просто заставить все работать как есть, с минимальными правками, то возможно самым простым вариантом будет использовать iframe. Что то типа  
<iframe src="[url к "comments.php, при прямом обращении к файлу, все работает]"></iframe> прямо в HTML, а инклюд убрать.
Если цель работающий блог, - взять wordpress, какой нибудь. Если обучение "для себя", то купить книгу что то типа "Создаем динамические веб-сайты с помощью PHP, MySQL, JavaScript, CSS и HTML5".

Всего записей: 357 | Зарегистр. 20-03-2002 | Отправлено: 01:04 02-03-2024 | Исправлено: Samovarov, 01:05 02-03-2024
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

Компьютерный форум Ru.Board » Интернет » Web-программирование » Простенький вопрос по PHP


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru