Как увеличить значение в столбце базы данных mysql из определенного пользователем значения с помощью PHP? - PullRequest
0 голосов
/ 08 июля 2019

У меня есть таблица БД "mtoken", где у меня есть столбец "sbonus", если я добавляю новую строку в эту таблицу, это означает, что начальное значение "sbonus" установлено в "0".Я назначу значения «sbonus» через определяемый пользователем блок ввода, и в любом случае значение «sbonus» не должно превышать 5000.

Мое требование - добавить значение в «Sbonus»+ «Определяемое пользователем значение из поля ввода», затем проверьте условие, является ли значение меньше 5000 или нет, и если меньше, обновляет добавленное конечное значение до «sbonus».Если не возвращено «Превышено значение»

Первоначально, к данному значению добавляется 0 и дБ устанавливается на заданное значение.Теперь существующие строки имеют некоторые значения («100») в столбце «sbonus», если я добавляю новую строку в «mtoken», столбец «sbonus» имеет значение «0».

Теперь я даю значение »200 "из пользовательского поля ввода.Это должно быть похоже на существующее значение Sbonus строки 100 + 200 = 300

Новое значение Sbonus строки, 0 + 200 = 200

Когда я использую приведенный ниже код, все значения строки "sbonus" установленыдо 200. Пожалуйста, найдите ниже код, и, пожалуйста, помогите мне решить его.

Пользовательское входное значение задается как 200 означает,

Существующее значение Sbonus строки составляет 100

Новое значение Sbonus строки равно 0

Проверьте условие, что выходное значение должно быть меньше 5000.

Мне нужен вывод как

Существующая строка "sbonus" должна выглядеть так:

100 + 200 = 300

Значение новой строки "Sbonus" должно быть следующим:

0 + 200 = 200

 <div class="row">
                <div class="col-lg-4">
                    <form method="post" action="add_sbonus.php">    
                        <div class="form-group">
                            <label>Surprise Bonus Per Token</label>
                            <input type="number" name="sbonus" class="form-control" required>
                        </div>
                        <div class="form-group">
                            <input type="submit" name="s_bonus" class="btn btn-primary" value="SurpriseBonus">
                        </div>
                    </form>
                </div>
            </div>

<?php
    if(isset($_POST['s_bonus'])){
        $sbonus = mysqli_real_escape_string($con,$_POST['sbonus']);
            if($sbonus!=''){
                $query = mysqli_query($con, "select sbonus from mtoken where status='Selled'");
                while($row=mysqli_fetch_array($query)){
                $dbonus = $row['sbonus'];
                $nbonus = $dbonus + $sbonus;
                    if($nbonus<=5000){
                        $sqlupdate = mysqli_query($con,"update mtoken set sbonus='$nbonus' where status='Selled'");
                            if(!$sqlupdate) {
                                echo mysqli_error($con);
                                echo '  <script>
                                            alert("Bonus NOT Updated");
                                        </script>';
                                }
                    }
                    if($nbonus>5000){
                     echo '<script>
                                alert("Value Exceeded");
                                window.location.assign("sbonus.php");
                            </script>';
                    }
                }   
            }else{
                    echo '<script>
                                alert("Please fill all the fields");
                            </script>';
                }

        echo '<script>
                alert("Surprise Bonus Added To Tokens");
                window.location.assign("sbonus.php");
            </script>';
    }
    ?>

DB-with-Initial Value

DB-with-User-Defined + Initial Value

Существующие строки и новые добавленные строки

Ошибка - и существующая строка, и новая строка показывают одинаковое значение

Ответы [ 2 ]

0 голосов
/ 08 июля 2019

синтаксическая ошибка

mysqli_query($con,"update mtoken set sbonus='$nbonus' where id = $row['id']");

Изменения сделаны

$rid = $row['id'];

mysqli_query($con,"update mtoken set sbonus='$nbonus' where id = '$rid'");
0 голосов
/ 08 июля 2019

where status='Selled' обновит все строки, которые имеют это значение в столбце состояния.Поэтому каждый раз, когда вы запускаете, он обновляет все строки.То, что вы в итоге получите, зависит от того, какая строка будет последней из вашего оператора SELECT.

Если вы хотите обновить конкретную отдельную строку, вам нужно что-то добавить в where предложение, которое идентифицирует эту точную строку.id было бы очевидным для использования, поскольку оно уникально.

Для этого вам нужно изменить две строки запроса:

mysqli_query($con, "select id, sbonus from mtoken where status='Selled'");

и

mysqli_query($con,"update mtoken set sbonus='$nbonus' where id = $row['id']");

NB. Примечание лингвистики: В английском языке «selled» - это не слово.«продать» имеет нестандартную версию прошедшего времени, которая «продается».Поэтому, если вы хотите написать свой статус на английском языке, вы должны написать «продано» вместо «продано».См. здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...