简体   繁体   中英

Making proper foreach HTML in PHP?

I have this php code

 <div class="form-group box">
                <div class="col-lg-7">
                    <?php 
                    foreach ($results as $row) {
                    echo '<select class="form-control" required name="article[]">
                    <option value="'.$row->articles_id.'">'.$row->article_name.'</option>';

                     $sql="SELECT * FROM articles WHERE article_active = 1";
                        $query = $this->db->query($sql);
                        $articles = $query->result();
                        foreach ($articles as $row){ 
                        echo'
                        <option value="'.$row->articles_id.'">'.$row->article_name.'</option>';
                        } 
                        echo'</select>';
                    }
                    ?>
                </div>

                <div class="col-lg-3">
                    <?php foreach ($results as $row) { 
                    echo '<input class="form-control kolicina" type="text" value="'.$row->order_qty.'" name="qty[]" '.$disabled.' required/>'; } 
                    ?>
                    </div>
                    <div class="col-lg-2">
                    <?php foreach ($results as $row) { 
                    echo'<button type="button" class="btn btn-danger button-remove">Remove</button>';
                    }
                    ?>

                    </div>
            </div>

When display this i got this HTML code

<div class="col-lg-7">
    <select class="form-control" required="" name="article[]">
        <option value="10">Cipiripi</option>
        <option value="8">Koka Kola</option>
        <option value="10">Cipiripi</option>
    </select>
    <select class="form-control" required="" name="article[]">
        <option value="8">Koka Kola</option>
        <option value="8">Koka Kola</option>
        <option value="10">Cipiripi</option>
    </select>
</div>
<div class="col-lg-3">
    <input class="form-control kolicina" value="44" name="qty[]" required="" type="text">
    <input class="form-control kolicina" value="44" name="qty[]" required="" type="text">
</div>
<div class="col-lg-2">
    <button type="button" class="btn btn-danger button-remove">Remove</button>
    <button type="button" class="btn btn-danger button-remove">Remove</button>
</div>

I have tried a lot ways with loop, to get proper code, this is example hos html should look?

<div class="form-group box">
    <div class="col-lg-7">
        <select class="form-control" required="" name="article[]">
            <option value="10">Cipiripi</option>
            <option value="8">Koka Kola</option>
            <option value="10">Cipiripi</option>
        </select>
    </div>
    <div class="col-lg-3">
        <input class="form-control kolicina" value="44" name="qty[]" required="" type="text">
    </div>
    <div class="col-lg-2">
        <button type="button" class="btn btn-danger button-remove">Remove</button>
    </div>
</div>

<div class="form-group box">
    <div class="col-lg-7">
        <select class="form-control" required="" name="article[]">
            <option value="8">Koka Kola</option>
            <option value="8">Koka Kola</option>
            <option value="10">Cipiripi</option>
        </select>
    </div>
    <div class="col-lg-3">
        <input class="form-control kolicina" value="44" name="qty[]" required="" type="text">
    </div>
    <div class="col-lg-2">
        <button type="button" class="btn btn-danger button-remove">Remove</button>
    </div>
</div>

What i need that loops goes in different wrapper, not in in same col?

This is working fiddle how it has to look http://jsfiddle.net/ckqth4a7/

And this is what i have now http://jsfiddle.net/q0njhgfk/

No, just ditch that inner foreach loops inside just build it by the whole row.

Something like:

<?php foreach($results as $row): ?> <!-- loop this as a whole row -->
 <div class="form-group box">
    <div class="col-lg-7">
        <select class="form-control" required="" name="article[]">
        <?php
        // this is the only loop for the options inside the select
        $sql = "SELECT * FROM articles WHERE article_active = 1";
        $query = $this->db->query($sql);
        $articles = $query->result();

        ?>
        <?php foreach($articles as $article): ?>
            <option value="<?php echo $article->articles_id; ?>"><?php echo $article->article_name; ?></option>
        <?php endforeach; ?>
        </select>

    </div>

    <div class="col-lg-3">
        <input class="form-control kolicina" value="<?php echo $row->order_qty; ?>" name="qty[]" required="" type="text">
    </div>
    <div class="col-lg-2">
        <button type="button" class="btn btn-danger button-remove">Remove</button>
    </div>              
</div>
<?php endforeach; ?>

Or maybe, if the query is just standing there and will not be dynamic take it off the parent loop.

<?php
// take this outside, its always the same anyway, so that it queries only once
// this is the only loop for the options inside the select
$sql = "SELECT * FROM articles WHERE article_active = 1";
$query = $this->db->query($sql);
$articles = $query->result();
?>

<?php foreach($results as $row): ?> <!-- loop this as a whole row -->
 <div class="form-group box">
    <div class="col-lg-7">
        <select class="form-control" required="" name="article[]">
            <?php foreach($articles as $article): ?>
                <option value="<?php echo $article->articles_id; ?>"><?php echo $article->article_name; ?></option>
            <?php endforeach; ?>
        </select>                    
    </div>

    <div class="col-lg-3">
        <input class="form-control kolicina" value="<?php echo $row->order_qty; ?>" name="qty[]" required="" type="text">
    </div>
    <div class="col-lg-2">
        <button type="button" class="btn btn-danger button-remove">Remove</button>
    </div>              
</div>
<?php endforeach; ?>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM