Как использовать троичный оператор в выражении эха в переполнении стека

здесь у меня есть простой код, который является ответом с использованием AJAX. на странице действий у меня есть поле выбора (для кол-во) (9 вариантов) (размер = «1»). мой код проверяет в базе данных продукта кол-во, поэтому я хочу, чтобы кол-во (из базы данных) «выбрано». как я могу использовать троичный оператор
Вот мой код

if (isset($_POST['getcart'])){

$cart_item_query = "SELECT * FROM cart";
$cart_item_run = mysqli_query($conn,$cart_item_query);
if (mysqli_num_rows($cart_item_run)>0){
$grand_total=0;
while($cart_row=mysqli_fetch_array($cart_item_run)){
$pro_id = $cart_row['product_id'];
$pro_qty = $cart_row['qty'];
$product_query = "SELECT * FROM products WHERE product_id = '$pro_id'";
$product_run = mysqli_query($conn, $product_query);
$product_row = mysqli_fetch_array($product_run);
$pro_name = $product_row['product_name'];
$pro_image = $product_row['product_image'];
$pro_sell_price = $product_row['sell_price'];
$total = $pro_sell_price*$pro_qty;
$grand_total =$grand_total+ $total;
echo "<div class='row'>

<div class='col-md-3 col-xs-3'><img src='img/$pro_image' alt='' width='50px'></div>
<div class='col-md-3 col-xs-3'><p>$pro_name</p><a href=''><p><i class='fa fa-trash' aria-hidden='true'></i> Remove</p></a></div>
<div class='col-md-2 col-xs-2'><select class='change_qty' size='1' style='width:50px;'>
<option class='qty' data-pro='$pro_id' value='1' ".$pro_qty==1?'selected':''.">1</option>
<option class='qty' data-pro='$pro_id' value='2' ".$pro_qty==2?'selected':''.">2</option>
<option class='qty'  data-pro='$pro_id' value='3' ".$pro_qty==3?'selected':''.">3</option>
<option class='qty'  data-pro='$pro_id' value='4' ".$pro_qty==4?'selected':''.">4</option>
<option class='qty' data-pro='$pro_id' value='5' ".$pro_qty==5?'selected':''.">5</option>
<option class='qty' data-pro='$pro_id' value='6' ".$pro_qty==6?'selected':''.">6</option>
<option class='qty' data-pro='$pro_id' value='7' ".$pro_qty==7?'selected':''.">7</option>
<option class='qty' data-pro='$pro_id' value='8' ".$pro_qty==8?'selected':''.">8</option>
<option class='qty' data-pro='$pro_id' value='9' ".$pro_qty==9?'selected':''.">9</option>

</select></div>

<div class='col-md-2 col-xs-2'><input data-pro='$pro_id' id = 'price- $pro_id' type='text' value='$pro_sell_price' disabled class='form-control dis-input price' ></div>

<div class='col-md-2 col-xs-2'><input id = 'total-$pro_id' data-pro='$pro_id' type='text' value='$total' disabled class='form-control dis-input total' ></div>

</div>

<hr>
";
}
}
}

?>

Я не знаю, как написать правильный код для этого. я хочу напечатать «выбранный» там, если моя переменная $ pro_qty == 1.
пожалуйста помоги

1

Решение

Вы не пишете троицы непосредственно в строку, вам нужно вставить ее в строку вроде переменной, например:

echo "<option value='1' ".$qty == 1? 'selected' : ''." >1</option> ";

Заметьте, как я порвал нить перед троичным с ", добавил период для объединения тройной, заканчивающийся другим периодом в конце тройной, и начал строку снова с другой ",

Вы можете найти более подробную информацию об этом в руководстве по PHP: Строковые Операции


альтернативы

Обычно я использую фигурные скобки для объединения строк в другие строки, если ваш оператор echo окружен двойными кавычками (не одинарные кавычки), вы можете использовать этот метод

Я бы написал это с троичным, отделенным от фактической строки, вот так:

$selected = $qty == 1? 'selected' : '';
echo "<option value='1' {$selected}>1</option>";

ИЛИ вы можете убрать фигурные скобки, но я нахожу это менее читабельным и труднее сказать, где переменные. Строка также должна быть заключена в двойные кавычки.

$selected = $qty == 1? 'selected' : '';
echo "<option value='1' $selected>1</option>";

Вы также можете разделять строки запятыми:

$selected = $qty == 1? 'selected' : '';
echo "<option value='1'", $selected, ">1</option>";

С другой стороны,

echo "<option value='1'", $qty == 1? 'selected' : '', ">1</option>";
5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]