2016-06-27 5 views
0

Создаем таблицу, значения которой заполняются из двухмерного массива, как показано ниже, используя цикл php for. Но не в состоянии заполнить раскрывающийся на основе значения из массива, потому что я не мог понять, как правильно вставить код ниже PHP внутри эхо, который выбирает вариант, основанный на состоянии,PHP Prepopulate Dropdown из многомерного массива

<option value='0' if ($result[$row]['discount'] == '0') echo 'selected = "selected"'; ?> >0</option> 

<?php 

$result = array (

    array (
     'item' => 'Dextrose', 
     'price' => '10.00', 
     'quantity' => '10', 
     'discount' => '5.00', 
     'total' => '95.00' 
    ), 

    array (
     'item' => 'Nescaine', 
     'price' => '20.00', 
     'quantity' => '30', 
     'discount' => '10.00', 
     'total' => '540.00' 
    ), 

    array (
     'item' => 'Anticavity', 
     'price' => '30.00', 
     'quantity' => '10', 
     'discount' => '25.00', 
     'total' => '225.00' 
    ) 
); 


for ($row = 0; $row < sizeof($result); $row++) 

{ 
    echo "<tr>"; 
    echo "<td><input type='text' name='item[]' value=".$result[$row]['item']." required></td>"; 
    echo "<td><input type='text' name='price[]' value=".$result[$row]['price']." required></td>"; 
    echo "<td><input type='text' name='qty[]' value=".$result[$row]['quantity']." required></td>"; 
    echo "<td><select name='discount[]' > 
       <option value='0'".if($result[$row]['discount'] == '0') echo 'selected = "selected"'.">0</option> 
       <option value='5'".if($result[$row]['discount'] == '5') echo 'selected = "selected"'.">5</option> 
       <option value='10'".if($result[$row]['discount'] == '10') echo 'selected = "selected"'.">10</option> 
       <option value='25'".if($result[$row]['discount'] == '25') echo 'selected = "selected"'.">25</option></td>"; 
    echo "<td><input name='total[]' value=".$result[$row]['total']." ></td>"; 
    echo "</tr>"; 
    echo "<br>";   
} 

ответ

0

Почему вы ставите echo перед каждой строкой HTML. Вы можете использовать закрывающие и открывающие скобки PHP, чтобы достичь этого легко.

Вы можете обновить PHP код, как это,

<?php 
for ($row = 0; $row < sizeof($result); $row++) 
{ 
?> 
<tr> 
    <td><input type='text' name='item[]' value="<?php echo $result[$row]['item']; ?>" required></td> 
    <td><input type='text' name='price[]' value="<?php echo $result[$row]['price']; ?>" required></td> 
    <td><input type='text' name='qty[]' value="<?php echo $result[$row]['quantity']; ?>" required></td> 
    <td><select name='discount[]' > 
       <option value='0' <?php if($result[$row]['discount'] == '0') { ?> selected <?php } ?>>0</option> 
       <option value='5' <?php if($result[$row]['discount'] == '5') { ?> selected <?php } ?>>5</option> 
       <option value='10' <?php if($result[$row]['discount'] == '10') { ?> selected <?php } ?>>10</option> 
       <option value='25' <?php if($result[$row]['discount'] == '25') { ?> selected <?php } ?>>25</option></td> 
    <td><input name='total[]' value= <?php echo $result[$row]['total']; ?>></td>"; 
    </tr><br> 
<?php } ?> 
+0

работает как шарм. Большое спасибо. – Rex

+0

Добро пожаловать :) –

0

Есть несколько синтаксических ошибок на вашем коде:

линия 1 - до "if" вставить: "<?php"

пыльник, замените ваш "ИФ":

if($result[$row]['discount'] == '0') echo 'selected = "selected"' 

с этим конструктором:

($result[$row]['discount'] == '0' ? 'selected = "selected" : '') 

Надеется, что это помогает.

Смежные вопросы