2015-12-30 145 views
1

我對此沒有任何解決方案。也許有人比我更聰明可以提供一些幫助。這涉及一個MySQL表格並在表單中顯示檢索到的數據。如何從foreach循環生成的下拉列表中獲取並顯示值

目標是以某種形式顯示當前存儲在特定行數據中的內容。

我使用相同的表單插入和顯示數據進行修改。我使用下面的代碼生成了下拉選項,工作正常。

<div class="form-group"> 
    <label for="pistol_model_brand">Pistol Model Brand</label> 
    <select name="pistol_model_brand" class="form-control"> 
    <option value="">Select one</option> 
    <?php foreach($brands as $key => $brand): ?> 
    <option value="<?php htmlout($key) ?>"><?php htmlout($brand); ?</option> 
    <?php endforeach; ?> 
    </select> 
</div> 

要顯示當前存儲的數據,我使用value =「content here」將它回顯到表單中。

由於我的下拉選項沒有實際列出,我不知道如何檢索存儲在數據庫表中的值並將其顯示在窗體中。

我通常這樣做:

<div class="form-group"> 
<label>Waist</label> 
<select class="form-control" name="waist"> 
    <option value="">Select one</option> 
    <option value="iwb" <?php if($item['waist'] === 'iwb') {echo htmlspecialchars(' selected');} ?>>IWB</option> 
    <option value="owb" <?php if($item['waist'] === 'owb' || 'OWB') {echo htmlspecialchars(' selected');} ?>>OWB</option> 
</select> 
</div> 

在這種情況下,但是,我不知道該怎麼做,或者我有什麼選擇。

感謝您的考慮!

回答

0

注:這個答案的前提是從你的使用,你必須在該變量可用的數據庫行的$item變量的假設,它包含存儲在數據庫中,該行的品牌。

這通常是我沒有使用模板引擎(像Laravel葉片或嫩枝)時使用的方法:

<select name="pistol_model_brand" class="form-control"> 
    <option value="">Select one</select> 
    <?php foreach($brands as $key => $brand) : ?> 
     <?php $selected = ($key == $item['brand'] ? 'selected' : '') ?> 
     <option value="<?php echo($key); ?>" <?php echo($selected); ?>> 
      <?php echo($brand); ?> 
     </option> 
    <?php endforeach; ?> 
</select> 

我使用的方法是使用一個三元操作之前只是來填充$selected變量選項並輸出selected或者不輸出。雖然它很醜陋!

使用像Laravel刀片,它往往顯得有點推行清潔:

<select name="pistol_model_brand" class="form-control"> 
    <option value="">Select one</select> 
    @foreach($brands as $key => $brand) 
     <option value="{{ $key }}" {{ $item['brand'] ? 'selected' : '' }}> 
      {{ $brand }} 
     </option> 
    @endforeach 
</select> 

編輯:添加更多的細節......

$selected = ($key == $item['brand'] ? 'selected' : ''); 

的語法時稱爲三元運營商。它的格式爲condition ? valueA : valueB,其中條件返回真值或僞值。如果是真的,它將返回值A,如果它是虛假的,它將返回值B。這意味着$selected的值將是字符串「selected」或空字符串,具體取決於$key == $item['brand']是否返回true或false。

+0

感謝您的迅速回復。我希望我能理解這一點。 – JimB814

+0

$ item包含行中每個字段的數據[$ item = $ s-> fetch(PDO :: FETCH_ASSOC);],所以「是」它有我想要的數據。 – JimB814

+0

@ JimB814我添加了關於三元運算符如何工作的更多細節。您可以在這裏閱讀更多關於它們的信息:https://www.addedbytes.com/blog/code/ternary-conditionals/ –

相關問題