PHP变量中的PHP代码不工作

PHP变量中的PHP代码不工作,php,sql,email,foreach,shopping-cart,Php,Sql,Email,Foreach,Shopping Cart,我试图创建一个变量$body,其中包含一个foreach语句。我正在将变量传递到邮件函数中。$body变量的foreach语句应该显示用户的购物车数据。我将$body变量放入邮件函数的原因是向我发送用户购物车产品的电子邮件,以便我可以查看他们从我的网站订购了什么。到目前为止,代码在Dreamweaver中不起作用,并以红色突出显示代码,这意味着代码以某种方式被破坏。我想不出这个问题 这是我的邮件功能的代码: 邮件$to、$subject、$body、$headers 这是我用于foreach语句

我试图创建一个变量$body,其中包含一个foreach语句。我正在将变量传递到邮件函数中。$body变量的foreach语句应该显示用户的购物车数据。我将$body变量放入邮件函数的原因是向我发送用户购物车产品的电子邮件,以便我可以查看他们从我的网站订购了什么。到目前为止,代码在Dreamweaver中不起作用,并以红色突出显示代码,这意味着代码以某种方式被破坏。我想不出这个问题

这是我的邮件功能的代码:

邮件$to、$subject、$body、$headers

这是我用于foreach语句的$body变量:

$body = '   if(isset($_SESSION["products"]))
     {
        $total = 0;
        echo '<form method="post" action="PAYMENT-GATEWAY">';
        echo '<ul>';
        $cart_items = 0;
        foreach ($_SESSION["products"] as $cart_itm)
        {
           $product_code = $cart_itm["code"];
           $queryy = "SELECT TOP 1 product_name,product_desc, price FROM products WHERE product_code='$product_code'";
           $results = mssql_query($queryy, $mysqli);
           $obj = mssql_fetch_object($results);

            echo '<li class="cart-itm">';
            echo '<span class="remove-itm"><a href="cart_update.php?removep='.$cart_itm["code"].'&return_url='.$current_url.'">&times;</a></span>';
            echo '<div class="p-price">'.$currency.$obj->price.'</div>';
            echo '<div class="product-info">';
            echo '<h3>'.$obj->product_name.' (Code :'.$product_code.')</h3> ';
            echo '<div class="p-qty">Qty : '.$cart_itm["qty"].'</div>';
            echo '<div>'.$obj->product_desc.'</div>';
            echo '</div>';
            echo '</li>';
            $subtotal = ($cart_itm["price"]*$cart_itm["qty"]);
            $total = ($total + $subtotal);

            echo '<input type="hidden" name="item_name['.$cart_items.']" value="'.$obj->product_name.'" />';
            echo '<input type="hidden" name="item_code['.$cart_items.']" value="'.$product_code.'" />';
            echo '<input type="hidden" name="item_desc['.$cart_items.']" value="'.$obj->product_desc.'" />';
            echo '<input type="hidden" name="item_qty['.$cart_items.']" value="'.$cart_itm["qty"].'" />';
            $cart_items ++;

        }
        echo '</ul>';
        echo '<span class="check-out-txt">';
        echo '<strong>Total : '.$currency.$total.'</strong>  ';
        echo '</span>';
        echo '</form>';
    }else{
        echo 'Your Cart is empty';
    }   ';

谢谢你的帮助。非常感谢所有帮助。

使用ob\u get\u内容来正确设置$body变量

通过这种方式,您可以更自然地编写HTML/PHP/Javascript代码,而不是使用会导致大量调试问题的大字符串。然后,您可以在一行代码中更优雅地回送或使用输出

在我上面链接的php页面中,下面是它的用法示例:

<?php

ob_start();

echo "Hello ";

$out1 = ob_get_contents();

echo "World";

$out2 = ob_get_contents();

ob_end_clean();

var_dump($out1, $out2);
?>
试试这个没有测试过的

if(isset($_SESSION["products"]))
 {   
    $total = 0;
    $body = '<form method="post" action="PAYMENT-GATEWAY">';
    $body.= '<ul>';
    $cart_items = count($_SESSION["products"]);

    foreach ($_SESSION["products"] as $cart_itm)
    {
       $product_code = $cart_itm["code"];
       $queryy = "SELECT TOP 1 product_name,product_desc, price FROM products WHERE product_code='".$product_code."'";
       $results = mssql_query($queryy, $mysqli);
       $obj = mssql_fetch_object($results);

        $body. = '<li class="cart-itm">';
        $body. = '<span class="remove-itm"><a href="cart_update.php?removep='.$cart_itm["code"].'&return_url='.$current_url.'">&times;</a></span>';
        $body. = '<div class="p-price">'.$currency.$obj->price.'</div>';
        $body. = '<div class="product-info">';
        $body. = '<h3>'.$obj->product_name.' (Code :'.$product_code.')</h3> ';
        $body. = '<div class="p-qty">Qty : '.$cart_itm["qty"].'</div>';
        $body. = '<div>'.$obj->product_desc.'</div>';
        $body. = '</div>';
        $body. = '</li>';
        $subtotal = ($cart_itm["price"]*$cart_itm["qty"]);
        $total = ($total + $subtotal);

        $body. = '<input type="hidden" name="item_name['.$cart_items.']" value="'.$obj->product_name.'" />';
        $body. = '<input type="hidden" name="item_code['.$cart_items.']" value="'.$product_code.'" />';
        $body. = '<input type="hidden" name="item_desc['.$cart_items.']" value="'.$obj->product_desc.'" />';
        $body. = '<input type="hidden" name="item_qty['.$cart_items.']" value="'.$cart_itm["qty"].'" />';
    }
    $body.  = 'Cart Items: '.$cart_items;
    $body.  = '</ul>';
    $body.  = '<span class="check-out-txt">';
    $body.  = '<strong>Total : '.$currency.$total.'</strong>  ';
    $body.  = '</span>';
    $body.  = '</form>';

}else{
    $body = 'Your Cart is empty';
}   

mail($to, $subject, $body, $headers);

首先,您需要添加到字符串的末尾。然后需要运行eval$body。然而,我认为您将有更好的运气将您的输出放入concat$body=first行的body变量中$正文=第二行;这将允许您运行php代码来确定要添加到正文中的内容,而不是尝试在正文字符串中运行php代码。

DW未正确突出显示它的原因是,它将代码视为文本字符串,因为您已将其放在“标记”中。实际上,PHP对您来说是在这些之外的。在PHP中,“或”标记之间的任何内容都被视为自由文本,而不是代码。此外,请尽快停止使用Dreamweaver。说真的,Dreamweaver很棒。在我看来,这是给专业开发人员的。@Michael,事实并非如此。如果您想认真对待PHP开发,就不要使用Dreamweaver。很少有时候我会冒险对一个软件做出如此笼统的陈述,但它所编织的唯一东西就是沮丧。我不知道它怎么会不是这样。我认为这是一个可行的软件代码。我不仅仅是在开发PHP,我还在用CSS设计网站,并用HTML和JavaScript编码。你用什么软件?我认为它与其他的相比是非常先进的。不要连接大量的HTML,这是一个巨大的痛苦。