While php creating div

Asked

Viewed 178 times

1

I have a PHP code that creates div’s em while, but it took a lot of work to build it because we have to keep opening and closing quotes in the code, I wonder if you have the possibility to do the same thing only in a cleaner and "beautiful" way. I don’t think this way is 100% correct, actually I think it’s 90% wrong.

<?php
$pasta = '../img/img_produto/';
$imagem = glob("$pasta{*.jpg,png,jpeg}", GLOB_BRACE);

$result_produto = "SELECT * FROM produto";
$resultado_produto = mysqli_query($conn, $result_produto);
while ($row_produto = mysqli_fetch_assoc($resultado_produto)) {

    echo "<div class='row border bg-color: #80006f'>" . "<div class='col-2 p-3 '>" . "<img class='Img rounded border border-primary'  src='" . $pasta . $row_produto['Img_produto'] . "'id='produto'>'" . "</div>"
    . "<div class='col-5>'" . "<div class='row'>" . "<span class='name-prod'> Nome: </span>" . $row_produto['Nome_produto'] .
    "<div class='row'>" . "<span class='desc-prod-title'> Descrição:</span>" . $row_produto['Descricao_produto'] . "</div>" . "</div>" .
    "<div class='col-2>'" . "<span class='price-prod'> Preço: </span>" . $row_produto['Preco_produto'] . "<label class='switch'>" . "<input class='input-check'type='checkbox' name='" . $row_produto['ID'] . " 'value='5'>" . "<span class='check round'>" . "</span>" . "</label>" . "</div>" . "</div>";
}
?>

3 answers

1


You don’t have to do the echo separating the elements thus, for example echo '<div>' . '</div>'; could just be echo '<div></div>'; that would serve in the same way and would be simpler to do, another point is in the part of the attributes, instead of echo '<input value="'.$var.'">;' could just be echo '<input value='.$var.'>;', and there’s also one more question, in your case you wanted something more readable, but you’d better put it all on one line to save space, but there’s the example of how it should be:

echo "<div class='row border bg-color: #80006f'>
    <div class='col-2 p-3'>
      <img class='Img rounded border border-primary' src='".$pasta.$row_produto['Img_produto']."' id='produto'>
    </div>
    <div class='col-5'>
      <div class='row'>
        <span class='name-prod'>Nome: </span>" 
        .$row_produto['Nome_produto'].
         "<div class='row'>
            <span class='desc-prod-title'>Descrição:</span>" 
            .$row_produto['Descricao_produto'].
          "</div>
        </div>
      </div>
      <div class='col-2'>
       <span class='price-prod'>Preço:</span>" 
       .$row_produto['Preco_produto']. 
       "<label class='switch'>
         <input class='input-check'type='checkbox' name='".$row_produto['ID']."' value='5'>
         <span class='check round'></span>
        </label>
      </div>
    </div>"; 

Obs: finish aligning with a text editor like Notepad++ because this site mess a little kkk

  • This way it is much simpler and readable even, I am easily confused and this way it is much better for me to read the code. Thank you very much.

  • Finish aligning with editors like Notepad++ to give the finishing touches :)

  • can let =) I’m doing a "tcc" project and we haven’t had much idea about php and many things we’re using now, I’m having to learn in Madrid without having to start from scratch poís has short delivery date kk, thank you so much your help was worth a lot!

  • I tried to replace my code for yours and it appears the following message : Parse error: syntax error, Unexpected end of file in C: xampp htdocs pagina_exposoft_2019 php query.php on line 109 what might be ? because this line 109 is an empty line

  • Test again, updated code

  • the same thing happens =/

  • check if there’s anything left of the last code, here I test it and it works normally, see if it’s behind, a dot and comma or if a key is open

  • 1

    really, it was the key that closes the while... Thank you very much, I’m dispersed mt. I thank you for the help

Show 3 more comments

1

You can create a function that simplifies this process and in a way create a "microframework" to work with. Create a standard template for divs, example:

<div class='row border'>
    <div class='col-2 p-3 '>
        <img class='Img rounded border border-primary' src='{SRC_IMG}' id='produto'>
    </div>
    <div class='col-5'>
        <div class='row'>
            <span class='name-prod'> Nome: </span>
                {NOME_PROD}
            <div class='row'>
                <span class='desc-prod-title'> Descrição:</span>
                {DESCRICAO}
            </div>
        </div>
        <div class='col-2'>
            <span class='price-prod'> Preço: </span>
            {PRECO}
            <label class='switch'>
                <input class='input-check'type='checkbox' name='{ID}' value='5'>
                <span class='check round'></span>
            </label>
        </div>
    </div>
</div>

And with the php you make the calls and replace the values of the fields that need to be exchanged, example:

<?php  
    $pasta = '../img/img_produto/';
    $imagem = glob("$pasta{*.jpg,png,jpeg}", GLOB_BRACE);
    //$defaults = array('{SRC_IMG}', '{NOME_PROD}', '{DESCRICAO}', '{PRECO}', '{ID}');

    function montaDivs($infos){
        $html = file_get_contents('template.html'); // html criado anteriormente
        return str_replace(array_keys($infos), array_values($infos), $html);
    }
    $result_produto = "SELECT * FROM produto";
    $resultado_produto = mysqli_query($conn, $result_produto);
    while($row_produto = mysqli_fetch_assoc($resultado_produto)){
        $set['{SRC_IMG}'] = $pasta.$row_produto['Img_produto'];
        $set['{NOME_PROD}'] = $row_produto['Nome_produto'];
        $set['{DESCRICAO}'] = $row_produto['Descricao_produto'];
        $set['{PRECO}'] = $row_produto['Preco_produto'];
        $set['{ID}'] = $row_produto['ID'];
        echo montaDivs($set);
    }
?>

With this you can start applying translations, adding fields in a simpler way, making the maintenance of your code much easier. Note that the basis of the process is the replacement of strings default by dynamic values of your BD..

0

Try it like this:

<?php while ($row_produto = mysqli_fetch_assoc($resultado_produto)) { ?>
    <div>
        Aqui você pode criar elementos normalmente 
        </br>
        Pode também exibir valores assim: <?php echo $row_produto['Preco_produto']; ?>
    </div>

<?php } // Fim while ?>

Browser other questions tagged

You are not signed in. Login or sign up in order to post.