как отключить кнопку формы в условии if в цикле - PullRequest
0 голосов
/ 30 марта 2020

У меня есть страница, на которой из одной таблицы отображаются несколько форм, одна и та же форма, но разные значения с некоторыми входами и кнопка последней в каждой форме.

Есть ли способ отключить указатель c кнопка формы, когда заданное значение c возвращает указанную сумму c?

Как будто я получаю данные из таблицы для отображения на странице через foreach l oop:

$userID = $_SESSION['username']['UserID'];
$query = "Select * from tbl_packages";

$result = mysqli_query($conn,$query);
$num = mysqli_num_rows($result);
mysqli_close($conn);

foreach($result as $data):

    $PkgID = $data['id'];
    $PkgAmount = $data['amount'];
    $PkgFees = $data['fees'];
    $PkgPeriod = $data['period'];
    $ReturningAmount = $data['returnAmount'];
?>
<form 
    action="" 
    class="form-inline" 
    method="POST" 
    id="buyPackage-init"
>
    <input 
        class="form-control form-control-user" 
        name="PkgID" 
        id="PackagegID" 
        value=<?php echo $PkgID?> 
        readonly
    >
    <!-- and more inputs like above... -->
</form>
<?PHP 
    endforeach;
?>

, а затем я выбираю сохраненные значения формы из второй таблицы для проверки если данные формы уже существуют в таблице в al oop, например:

$queryCheckPackage = "select status from tbl_lendinglogs where UserID = '$userID'";
$resultCheckPackage = mysqli_query($conn,$queryCheckPackage);
$numCheckPackage = mysqli_num_rows($resultCheckPackage);
$FetchCheckPackage = mysqli_fetch_array($resultCheckPackage);

$value = null;
foreach($resultCheckPackage as $row)
{
    if($row['status'] == 1) {
        //echo $row['status'];
        $value = "disabled";
    } else {
        $value = "enabled";
        //echo "enabled <BR>";
    }                                   
}

mysqli_close($conn);

А затем кнопка в форме перед тегом:

<input 
    class="btn btn-primary btn-user btn-block" 
    onclick="return confirm('Confirm befor buy?');" 
    type="submit" 
    id="btn" 
    data-target="#buyPackage" 
    value="Invest" 
    name="bttn-order" 
    <?php echo $value ?>
/>

Теперь, что происходит все кнопки отключены, в то время как в таблице 1 хранятся две формы. Состояние данных формы равно 0, а состояние второй равно 1. Я хочу проверить все состояния, а затем отключить кнопку определенной формы, состояние которой равно 1 в таблице сохраненных форм. .

Есть ли возможность сделать это? Я отстой, копая информацию об этом в inte rnet в течение длительного времени. и я много пробовал сам, но он отключил все кнопки, в то время как в l oop есть два значения статуса: «0» и «1».

<----------------------- Обновлен и решен вопрос --------------- --->

Вот запросы с foreach l oop

$userID = $_SESSION['username']['UserID'];                          
$query = "Select * from tbl_packages";
$result = mysqli_query($conn,$query);
$num = mysqli_num_rows($result);


//$buttons = [];

$pkgStatus = null;
$PkgID = 0;
foreach($result as $data):                          
$PkgID = $data['id'];
$PkgAmount = $data['amount'];
$PkgFees = $data['fees'];
$PkgPeriod = $data['period'];
$ReturningAmount = $data['returnAmount'];


$queryCheckPackage = "select * from tbl_lendinglogs where UserID = '$userID' and pkg_id = '$PkgID'";
$resultCheckPackage = mysqli_query($conn,$queryCheckPackage);
$numCheckPackage = mysqli_num_rows($resultCheckPackage);
$FetchCheckPackage = mysqli_fetch_array($resultCheckPackage);
foreach($resultCheckPackage as $row):
$pkgStatus = $row['status'];

?>

Вот кнопка:

<input class="btn btn-primary btn-user btn-block" onclick="return confirm('Confirm befor buy?');" type="submit" id="btn" data-target="#buyPackage" value="Invest" name="bttn-order" <?php if ($pkgStatus == 1) echo 'disabled="disabled"' ?>/>

А потом я добавил конец для каждого в конце:

<?php endforeach; endforeach;?>

Большое спасибо @Wimanicesir, вы очень помогли.

1 Ответ

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

Ваша проблема - сопоставление между всеми различными строками, и если они включены или отключены.

Этот код зацикливает ваши данные, проверяет это поле и сохраняет его в переменной с именем $ value:

$value = null;

foreach($resultCheckPackage as $row) {
    if($row['status']) {
        $value = "disabled";
    } else {
        $value = "enabled";
    }                                    
}

Однако вы перезаписываете значение каждый раз. Таким образом, $ value будет последним результатом этого запроса.

Данные существуют с идентификатором и логическим значением. Мы хотим объединить эти два, чтобы мы могли вызвать их позже.

Итак:

$buttons = [];

foreach($resultCheckPackage as $row) {
    if($row['status']) {
        $buttons[$row['id']]= TRUE;
    } else {
        $buttons[$row['id']]= FALSE;
    }                                    
}

Это приведет к массиву на основе ключей, например:

$buttons['package_id_1' => TRUE, 'package_id_2' => FALSE]

Сейчас для последнего шага вызовите правильный идентификатор на правой кнопке.

<input 
    class="btn btn-primary btn-user btn-block" 
    onclick="return confirm('Confirm befor buy?');" 
    type="submit" 
    id="btn" 
    data-target="#buyPackage" 
    value="Invest" 
    name="bttn-order" 
    <?php if ($buttons['correct_id']) echo 'disabled="disabled"' ?>
/>

Это не копирование вставки, но я думаю, вы поняли:)

Я бы также посоветовал заглянуть в какой-то язык шаблонов. Это значительно облегчает рендеринг данных с бэкэнда на внешний интерфейс.

Например: https://handlebarsjs.com/

...