gpt4 book ai didi

php - 在 EOT 中插入 php 代码

转载 作者:可可西里 更新时间:2023-11-01 08:15:04 25 4
gpt4 key购买 nike

有两个表,products 和 productcolor。每个产品可以有多种颜色。我想在下拉列表中获取产品的颜色。但无法使用以下代码做到这一点。

 <?php
$results = $mysqli->query("SELECT product_code, product_name, product_desc, product_img_name, price FROM products ORDER BY id ASC");
if($results){
$products_item = '<ul class="products">';
//fetch results set as object and output HTML
while($obj = $results->fetch_object())
{
$id = $obj->id;
$results1 = $mysqli->query("SELECT colornmae FROM productcolor where id=$id");
if($results1){
while($obj1 = $results1->fetch_object())
{
$color[] = $obj1->colorname;
}
}
$products_item .= <<<EOT
<li class="product">
<form method="post" action="cart_update.php">
<div class="product-content"><h3>{$obj->product_name}</h3>
<div class="product-thumb"><img src="images/{$obj->product_img_name}"></div>
<div class="product-desc">{$obj->product_desc}</div>
<div class="product-info">
Price {$currency}{$obj->price}

<fieldset>

<label>
<span>Color</span>
<select name="product_color">
foreach ($color as $value) {
<option value="{$value}">{$value}</option>
}
</select>
</label>

<label>
<span>Quantity</span>
<input type="text" size="2" maxlength="2" name="product_qty" value="1" />
</label>

</fieldset>
<input type="hidden" name="product_code" value="{$obj->product_code}" />
<input type="hidden" name="type" value="add" />
<input type="hidden" name="return_url" value="{$current_url}" />
<div align="center"><button type="submit" class="add_to_cart">Add</button></div>
</div></div>
</form>
</li>
EOT;
}
$products_item .= '</ul>';
echo $products_item;
}
?>

我已经搜索了解决方案。后来才知道php代码不能用EOT来写。 php 变量可以在 EOT 中显示。但在这里我想从数据库循环到颜色值。 我尝试了各种组合但没有任何效果。以上是我尝试做那些不起作用的尝试之一。

如何在 EOT 之间从数据库中获取作为对象的下拉列表中的产品 colorname

谁能帮我解决这个问题?

最佳答案

当您使用 HEREDOC(不需要是 'EOT' 也可以是 'MYKEYWORD')时,HEREDOC 的结束点,关闭 HEREDOC,必须在行中的第一个,前面没有空格, 后跟分号,在那行之后没有其他内容,否则失败。这就是为什么您的代码不起作用的原因。

$heredoc = <<<KEYWORD

{$variable} - this will print value of $variable
$variable - this will print $variable, not $variable value

KEYWORD;

编辑:

我注意到您在 HEREDOC 之间的某处有 foreach 循环(粘贴,就像那样?)。

这样不行。

在该代码块之外为 html select > option -> value 编写新方法,然后调用它,将其分配给对象属性或变量,然后在 HEREDOC 中使用它.. 连接等等。

// New small method
public function smallLoop($color) {
$x=null;
foreach($color as $value)
$x.='<option value="'.$value.'">'.$value.'</option>';
return $x;
}

// Inside loop
<select name="product_color">
{$obj->smallLoop($color)}
</select>

注意:

您的 html 语义也很糟糕。你可能不想包装 <select> <option>带有 <label> 的标签, 还有,你确定你需要 <form>为每个购物车条目添加标签?!?不,不,你不知道。

你只需要一个表单标签,我敢打赌..

我对您的建议是给自己冲杯咖啡,打个响指,而不是再次重写整个代码块。做得好。你能行的。

关于php - 在 EOT 中插入 php 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31538664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com