1
I have two functions I’ve done to display data in a table. However I was not able to create this function in a single function, so I created two, however, when I call both in the "foreach" it is displayed 4 times for each data.
Here are both functions:
                public function getStockName()            
            {
                $query = "SELECT * FROM `produtos`";
                $results = mysqli_query($this->_con, $query)  or die(mysqli_error());
                $stocks1 = array();
                while ( $result = mysqli_fetch_assoc($results) ) {
                    $stocks1[$result['idProdutos']] = $result['nome'];
                }
                mysqli_close($this->_con);
                return $stocks1;
            }
            public function getStockQuant()            
            {
                $query = "SELECT * FROM `produtos`";
                $results = mysqli_query($this->_con, $query) or die (mysqli_error());
                $stocks2 = array();
                while  ( $result = mysqli_fetch_assoc($results) ) {
                    $stocks2[$result['idProdutos']] = $result['quantidade'];
                }
                mysqli_close($this->_con);
                return $stocks2;
            }
The first takes the "name" of the "products" table and the second takes the "quantity" of the "products" table. However I end up having to create 2 "foreach" to call the 2 functions, and displays the data 4 times in the table.
I wanted to know how to concatenate this function, or if there is any way to call the two functions in a "foreach".
My php code looks something like this:
    <?php               
    try {
    $user_A = new Cl_User();
    $stocks1 = $user_A->getStockName();
    if(empty($stocks1)){
    $_SESSION['error'] = NO_DATA;
    }
    } catch (Exception $e) {
    $_SESSION['error'] = $e->getMessage();
    header('Location: home.php');exit;
    }
    ?>
    <?php               
    try {
    $user_B = new Cl_User();
    $stocks2 = $user_B->getStockQuant();
    if(empty($stocks2)){
    $_SESSION['error'] = NO_DATA;
    }
    } catch (Exception $e) {
    $_SESSION['error'] = $e->getMessage();
    header('Location: home.php');exit;
    }
    ?>
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" class="form-estoque" role="form" id="estoque-produto">                             
    <center><h2>Estoque</h2></center>
    <input type="text" id="myInput" onkeyup="myFunction()" placeholder="Produto" title="Type in a name">
    <table id="myTable">
        <thead>
            <tr class="header">
                <th style="width:20%;"><center>Nome</center></th>
                <th style="width:20%;"><center>Quantidade</center></th>
            </tr>
        </thead>
        <tbody>
            <?php foreach ($stocks1 as $key=>$nome) { ?>
            <?php foreach ($stocks2 as $key=>$quantidade) { ?>
                <tr>
                    <td><center><?php echo $nome; ?></center></td>
                    <td><center><?php echo $quantidade; ?></center></td>
                </tr>
            <?php } ?>  <?php } ?>
        </tbody>
    </table>
    </form>
Thank you, that’s exactly what I was looking for, will help me in the next tables I’ll do. Just one question, why in "foreach" did you change the "$key" for "$id"? I honestly don’t know what "$key" was for, too, if you can explain thank you.
– Anonn
@Anonn the $key in your original code is the ID of each row of your bank, so name it $id to make it more intuitive.
– Guilherme Nascimento