Array sequenced within dropdown

4

Folks, I have a code that starts the arrays if I set the values, but I would like this sequence to be automatic. Let me show you to get clearer.

<?php

  $busca_produtos = new Produto;
  $produto = $busca_produtos->busca_todos_produtos();

  $busca_desc = new Produto;
  $desc_produto = $busca_produtos->busca_desc();

 ?>

In this code above it pulls the values of the right arrays; below, I'll start the values:

 <datalist class="" id="browsers" >
    <option value="<?php echo $produto[0]['cod_produto']; ?>"><?php echo $desc_produto[0]['desc_produto'] ;?></option>
    <option value="<?php echo $produto[1]['cod_produto']; ?>"><?php echo $desc_produto[1]['desc_produto'] ;?></option>
    <option value="<?php echo $produto[2]['cod_produto']; ?>"><?php echo $desc_produto[2]['desc_produto'] ;?></option>
    <option value="<?php echo $produto[3]['cod_produto']; ?>"><?php echo $desc_produto[3]['desc_produto'] ;?></option>   
 </datalist>

As you can see, I had to give value to the array. The problem is that if I put, example, $ product [5345] ['product_product'], obviously an error will appear because line 5345 does not exist in the database.

My question is: is there any way I can pull ALL the values from the bank and put them there in the options separately without having to specify the line it is on? As if each array value were a datalist option?

    
asked by anonymous 04.09.2018 / 14:35

3 answers

5

Using foreach and counter $i

<datalist class="" id="browsers" >
    <?php 
       $i = 0;   // declaração do contador
       foreach($produto as $p){
    ?>
          <option value="<?php echo $p['cod_produto']; ?>"><?php echo $desc_produto[$i]['desc_produto'] ;?></option>
    <?php
          $i++; // incremento do contador
       }        // fim do foreach
    ?>
</datalist>
    
04.09.2018 / 14:45
4

Try something +/- so

<datalist class="" id="browsers" >
  <?php 
  $x = 0; 

  // No lugar de 10 coloca o tamanho máximo retornado na sua busca
  while ($x <= 10) {
    echo "<option value=" . $produto[$x]['cod_produto'] . $desc_produto[$x]['desc_produto'] . "</option>";
    $x++;
  };
  ?> 
</datalist>
    
04.09.2018 / 14:45
1

In this case I prefer to use for :

<datalist class="" id="browsers" >

<?php 
for($i = 0; $i < count($produto); $i++):
?>

<option value="<?php echo $produto[$i]['cod_produto']; ?>"><?php echo $desc_produto[$i]['desc_produto'] ;?></option>

<?php 
endfor;
?>

 </datalist>

But all the answers are correct.

The commented line below is unnecessary in your code.

  $busca_produtos = new Produto;
  $produto = $busca_produtos->busca_todos_produtos();

  // $busca_desc = new Produto; // <-- esta linha não é necessária
  $desc_produto = $busca_produtos->busca_desc();
    
04.09.2018 / 14:51