Retrieve the value of an input with echo from the while loop

0

I would like to redeem the value of a input with echo of the loop of a while and request UPDATE rescuing this value.

<form method="POST" name="form" action="<?php echo $_SERVER['PHP_SELF'];?>">
                        <?php while ($linhasMotoristas = mysqli_fetch_array($consultaMotoristas)) {
                                $motoristasStatus = $linhasMotoristas['status'];
                                $motoristasId = $linhasMotoristas['idmotoristas'];
                                $motoristasNome = $linhasMotoristas['nome'];
                                $motoristasCpf = $linhasMotoristas['cpf'];
                                $motoristasGanhos = $linhasMotoristas['ganhos']
                            ?>
                                <tr>
                                    <td class="s">
                                        <?php 
                                    if($motoristasStatus == 1){
                                        echo "<div style='color: green;'>●</div>";
                                    }else{
                                        echo "<div style='color: red;'>●</div>";
                                    }
                                    ?>
                                    </td>
                                    <td class="m"><?php echo $motoristasId;?></td>
                                    <td class="n"><?php echo $motoristasNome;?></td>
                                    <td class="c"><input type="hidden" name="td_1" value="<?php echo $motoristasId;?>"><?php echo $motoristasCpf;?>
                                    </td>
                                    <td class="g"><?php echo round($motoristasGanhos, 2);?></td>
                                    <td>
                                    <?php
                                        if (isset($_POST['submit'])?$_POST['submit'] : 0) {
                                        $cpfMotorista = $_POST['td_1'];
                                        $valorBruto = $_POST['valorBruto'];
                                        $porcentagemBase = 5/100;
                                        $EncargosBase = 25/100;

                                        $vezesPorcentagem = $valorBruto*$porcentagemBase;
                                        $menosEncargosBase = $vezesPorcentagem-$EncargosBase;
                                        $resultadoLiquido = $menosEncargosBase*$porcentagemBase;
                                        $resultadoGeral = $resultadoLiquido;

                                        $inserirBanco = "UPDATE getmoney.motoristas SET ganhos = COALESCE(ganhos, 0) + '$resultadoGeral' WHERE idmotoristas = '$cpfMotorista'";
                                        $execInserirBanco = mysqli_query($conexao,$inserirBanco);
                                    }
                                    ?>
                                        <input type="text" name="valorBruto">
                                        <input type="submit" name="submit" value="Calcular">
                                        <?php echo $cpfMotorista;?>
                                        <?php echo round($resultadoGeral,2); ?>
                                    </td>
                                </tr>
                        <?php } ?>
                    </form>

In this photo, as you can see, it only rescues the ID 25 and I wanted it, according to the line, to retrieve the ID from the user and do the UPDATE of the value added in the field input of sum ...

    
asked by anonymous 09.12.2018 / 23:14

1 answer

0

1 - put square brackets on the names of the inputs so that they can be sent in array form to the receiver.

<input type="hidden" name="td_1[]" value="<?php echo $motoristasId; ?>">

<input type="text" name="valorBruto[]">

2 - Remove the input submit from within the while, place it on a line after the while closing

<tr><td colspan="6"><input type="submit" name="submit"></td></tr>

3 - When submitting the form, retrieve the arrays

    $valorBruto = $_POST['valorBruto'];

    $motoristasId = $_POST['td_1'];

4 - Use a for loop to iterate

    $result = count($valorBruto);
    for ($i = 0; $i < $result; $i++) {

5 - Use a conditional for only não nulos values

    $result = count($valorBruto);
    for ($i = 0; $i < $result; $i++) {

        if ($valorBruto[$i]!=""){

6 - Within this if do what should be done: -)

7 - Separate the part of the form from the part that will process the form data.

Complete Code

functional example

<?php

    $conexao = ...........

if (isset($_POST['submit'])?$_POST['submit'] : 0) {

$valorBruto = $_POST['valorBruto'];

$motoristasId = $_POST['td_1'];

    $result = count($valorBruto);
    for ($i = 0; $i < $result; $i++) {

        if ($valorBruto[$i]!=""){
            $cpfMotorista = $motoristasId[$i];
            $porcentagemBase = 5/100;
            $encargosBase = 25/100;
            $vezesPorcentagem = $valorBruto[$i]*$porcentagemBase;
            $menosEncargosBase = $vezesPorcentagem-$encargosBase;
            $resultadoLiquido = $menosEncargosBase*$porcentagemBase;
            $resultadoGeral = $resultadoLiquido;

            $inserirBanco = "UPDATE ...................
            $execInserirBanco = mysqli_query($conexao,$inserirBanco);
        }

    }

}
?>

<form method="POST" name="form" action="<?php echo $_SERVER['PHP_SELF'];?>">

<?php 

$consultaMotoristas = mysqli_query($conexao,"SELECT...................

while ($linhasMotoristas = mysqli_fetch_array($consultaMotoristas)) {
    $motoristasStatus = $linhasMotoristas['status'];
    $motoristasId = $linhasMotoristas['idmotoristas'];
    $motoristasNome = $linhasMotoristas['nome'];
    $motoristasCpf = $linhasMotoristas['cpf'];
    $motoristasGanhos = $linhasMotoristas['ganhos']
?>
    <tr>
    <td class="s">
        <?php 
        if($motoristasStatus == 1){
        echo "<div style='color: green;'>●</div>";
        }else{echo "<div style='color: red;'>●</div>";
        }
        ?>
    </td>
    <td class="m"><?php echo $motoristasId;?></td>
    <td class="n"><?php echo $motoristasNome;?></td>

    <td class="c"><input type="hidden" name="td_1[]" value="<?php echo $motoristasId; ?>">
    </td>
    <td class="g"><?php echo round($motoristasGanhos, 2);?></td>
    <td>                                        
    <input type="text" name="valorBruto[]">

    </td>
    </tr>
<?php } ?>

<tr><td colspan="6"><input type="submit" name="submit"></td></tr>
</form>
    
10.12.2018 / 19:51