Блог Горошко Андрея PHP Как сделать очередь с помощью javascript и php

Как сделать очередь с помощью javascript и php

Очередь — это структура данных, которая представляет собой список элементов, в котором добавление новых элементов происходит в конце списка, а удаление элементов — в начале списка. 

Очередь работает по принципу «первым пришел — первым ушел» (FIFO — First In First Out).

Чтобы создать очередь с помощью JavaScript и PHP, вам необходимо использовать AJAX для отправки запросов на сервер и получения данных.

Ниже приведен пример простой очереди, созданной с использованием PHP и JavaScript:

PHP код для добавления элемента в очередь:

php code<?php
session_start();

if(!isset($_SESSION['queue'])){
    $_SESSION['queue'] = array();
}

if(isset($_POST['add'])){
    array_push($_SESSION['queue'], $_POST['add']);
}

if(isset($_POST['remove'])){
    array_shift($_SESSION['queue']);
}
?>

JavaScript код для отправки запросов на сервер и обновления очереди:

javascript codefunction addToQueue() {
    var inputVal = document.getElementById("input-val").value;

    if(inputVal.length > 0) {
        var xhr = new XMLHttpRequest();
        xhr.open("POST", "queue.php", true);
        xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        xhr.onreadystatechange = function() {
            if (xhr.readyState === 4 && xhr.status === 200) {
                document.getElementById("queue").innerHTML = xhr.responseText;
            }
        };
        xhr.send("add=" + inputVal);
    }
}

function removeFromQueue() {
    var xhr = new XMLHttpRequest();
    xhr.open("POST", "queue.php", true);
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xhr.onreadystatechange = function() {
        if (xhr.readyState === 4 && xhr.status === 200) {
            document.getElementById("queue").innerHTML = xhr.responseText;
        }
    };
    xhr.send("remove=true");
}

HTML код для отображения очереди и добавления / удаления элементов:

html code<input type="text" id="input-val">
<button onclick="addToQueue()">Add to Queue</button>
<button onclick="removeFromQueue()">Remove from Queue</button>

<div id="queue">
    <?php
        if(isset($_SESSION['queue'])){
            foreach($_SESSION['queue'] as $item){
                echo "<div>$item</div>";
            }
        }
    ?>
</div>

Этот пример использует сессии PHP для сохранения очереди между запросами. Когда пользователь нажимает кнопку «Add to Queue», JavaScript отправляет POST-запрос на сервер с помощью AJAX, который добавляет элемент в очередь и возвращает обновленный HTML-код для отображения очереди. Когда пользователь нажимает кнопку «Remove from Queue», JavaScript отправляет POST-запрос на сервер с помощью AJAX, который удаляет первый элемент из очереди и возвращает обновленный HTML-код для отображения очереди.

Еще один пример очереди на JavaScript и PHP с использованием базы данных MySQL для хранения элементов очереди:

PHP код для добавления элемента в очередь:

php code<?php
$db_host = "localhost";
$db_user = "username";
$db_password = "password";
$db_name = "database_name";

// Подключаемся к базе данных MySQL
$conn = mysqli_connect($db_host, $db_user, $db_password, $db_name);

if(isset($_POST['add'])){
    $value = mysqli_real_escape_string($conn, $_POST['add']);

    // Добавляем элемент в конец очереди в базе данных
    $sql = "INSERT INTO queue (value) VALUES ('$value')";
    mysqli_query($conn, $sql);
}

if(isset($_POST['remove'])){
    // Получаем первый элемент очереди из базы данных
    $sql = "SELECT * FROM queue ORDER BY id LIMIT 1";
    $result = mysqli_query($conn, $sql);
    $row = mysqli_fetch_assoc($result);
    $value = $row['value'];

    // Удаляем первый элемент очереди из базы данных
    $sql = "DELETE FROM queue WHERE id = {$row['id']}";
    mysqli_query($conn, $sql);

    // Возвращаем значение удаленного элемента
    echo $value;
}
?>

JavaScript код для отправки запросов на сервер и обновления очереди:

javascript codefunction addToQueue() {
    var inputVal = document.getElementById("input-val").value;

    if(inputVal.length > 0) {
        var xhr = new XMLHttpRequest();
        xhr.open("POST", "queue.php", true);
        xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        xhr.onreadystatechange = function() {
            if (xhr.readyState === 4 && xhr.status === 200) {
                updateQueue(xhr.responseText);
            }
        };
        xhr.send("add=" + inputVal);
    }
}

function removeFromQueue() {
    var xhr = new XMLHttpRequest();
    xhr.open("POST", "queue.php", true);
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xhr.onreadystatechange = function() {
        if (xhr.readyState === 4 && xhr.status === 200) {
            var removedValue = xhr.responseText;
            if(removedValue) {
                alert("Removed from queue: " + removedValue);
            } else {
                alert("Queue is empty");
            }
            updateQueue("");
        }
    };
    xhr.send("remove=true");
}

function updateQueue(html) {
    document.getElementById("queue").innerHTML = html;
}

HTML код для отображения очереди и добавления / удаления элементов:

html<input type="text" id="input-val">
<button onclick="addToQueue()">Add to Queue</button>
<button onclick="removeFromQueue()">Remove from Queue</button>

<div id="queue">
    <?php
        $sql = "SELECT * FROM queue ORDER BY id";
        $result = mysqli_query($conn, $sql);
        while($row = mysqli_fetch_assoc($result)) {
            echo "<div>{$row['value']}</div>";
        }
    ?>
</div>

Этот пример использует базу данных MySQL для хранения элементов очереди. Когда пользователь нажимает кнопку «Add to Queue», JavaScript отправляет POST-запрос на сервер с помощью AJAX, который добавляет элемент в конец.

Ещё пример на php

В PHP очередь сообщений можно реализовать, например, с помощью встроенной функции array_shift для извлечения элемента из начала массива и функции array_push для добавления элемента в конец массива.

Вот пример реализации очереди сообщений на PHP:

php codeclass MessageQueue {
    private $queue;

    public function __construct() {
        $this->queue = array();
    }

    public function enqueue($message) {
        array_push($this->queue, $message);
    }

    public function dequeue() {
        return array_shift($this->queue);
    }
}

В этом примере очередь сообщений реализована с помощью массива (array) в PHP. Метод enqueue добавляет новое сообщение в конец массива с помощью функции array_push, а метод dequeue извлекает первое сообщение из начала массива с помощью функции array_shift и возвращает его.

Вы можете использовать этот код для создания своей очереди сообщений в своем приложении на PHP, например, для обработки запросов на сервере или для управления потоками данных в вашей программе.

Средний рейтинг
Еще нет оценок

Добавить комментарий

Related Post

Что такое RESTful API примеры на phpЧто такое RESTful API примеры на php

RESTful API (Representational State Transfer) — это стиль архитектуры веб-сервисов, который использует стандартные HTTP-методы, такие как GET, POST, PUT и DELETE, для управления ресурсами в системе. Это позволяет создавать веб-сервисы,