PHP - Клиент выбирает X Количество - Хотите получить X Количество со склада и по электронной почте все - PullRequest
0 голосов
/ 29 марта 2020

Так что я уже некоторое время пытаюсь это сделать и, похоже, не могу найти решение.

У меня есть веб-сайт, продающий цифровой товар.

Когда клиент проверяет вне, он спрашивает, какое количество.

Я хочу сделать так, чтобы, когда они набирали, например, количество 5, я хотел, чтобы он взял 5 акций из базы данных и отправил все на их электронную почту.

Мне нужно сделать это через l oop и получить х количество из таблицы запасов, где назначенный продукт - это идентификатор продукта.

В настоящее время мой код получает только количество, а не получать разные строки из моей базы данных. Как сделать так, чтобы l oop на складе?

Currently showing this

Мой текущий код (с использованием обработчика цепочки блоков):

<?php

    $smtp_btc = $pdo->prepare('SELECT * FROM `productitems` WHERE `avaliable` = :avaliable AND `assignedProduct` = :assignedProduct');
    $smtp_btc->execute(array(':avaliable' => '0', ':assignedProduct' => $product_id));
    $query = $smtp_btc->fetchAll();

    // Select all from stock where avaliable = true and assignedProduct is the main productID
    // Then make it 

    // Foreach loop here
    $i = 0;
    $maxiterations = $quantity - 1;
    $message = '';

    foreach($query as $row_product) {
        while($i <= $maxiterations) {
            $i++;
            $product_link_stock = $row_product['code'];
            $stock_id_stock = $row_product['id'];

            $message = "<tr style='background: #eee;'><td><strong>Email/Username:Pass(".$i."):</strong> </td><td>$product_link_stock</td></tr>";
            echo $message.'<br>';
        }
    }


?>

Ответы [ 2 ]

0 голосов
/ 30 марта 2020

Получается, что мне нужно выполнить свой запрос внутри моего while l oop, чтобы он мог изменить строку, которую он выбирает для каждого количества.

Это мой рабочий код:

            $i = 1;
            $maxiterations = $quantity;

            while($i <= $maxiterations) {
                $smtp_btc = $pdo->prepare("SELECT * FROM `productitems` WHERE `avaliable` = :avaliable AND `assignedProduct` = :assignedProduct LIMIT $maxiterations");
                $smtp_btc->execute(array(':avaliable' => '0', ':assignedProduct' => $product_id));
                $query = $smtp_btc->fetchAll();

                foreach($query as $row_product) {
                    $product_link_stock = $row_product['code'];
                    $stock_id_stock = $row_product['id'];

                    $message .= "<tr style='background: #eee;'><td><strong>Email/Username:Pass(".$i."):</strong> </td><td>$product_link_stock</td></tr>";
                    // Update stock foreach stock product they require (quantity depends on this)
                    $updateStock = $pdo->prepare('UPDATE `productitems` SET `avaliable` = :avaliable WHERE `id` = :id');
                    $updateStock->execute(array(':avaliable' => '1', ':id' => $stock_id_stock));
                    $i++;
                }
                $i++;
            }
0 голосов
/ 29 марта 2020

У вас есть две петли: foreach l oop и некоторое время l oop. Данные задаются один раз во внешнем foreach l oop, по-видимому, в первой строке результата запроса, или может быть только один результат.

И затем вы просто печатаете одни и те же данные 3 раза с того времени l oop.

Поднимаясь наверх:

$query = $smtp_btc->fetchAll();

Какое здесь содержимое $ query? Это всего лишь 1 запись?

...