0

私は「高度なPHP」にかなり慣れていないので、PHPヘッダーでエラーに遭遇し続けています。

    <?php
        $getTrans = dbquery("SELECT * FROM cms_transactions WHERE userid = '".USER_ID."' AND pin = '0' ORDER BY date DESC LIMIT 50");
        $oe = 1;
        while($transaction = mysql_fetch_assoc($getTrans)){
            if ($oe == 2)
            {
                $oe = 1;
            }
            else
            {
                $oe = 2;
            }
            $oDate = strtotime($transaction['date']);
            $sDate = date("<b>l, j - F, o</b> g:ha",$oDate);
            echo'
                <tr style=" background-color: ' . (($oe == 2) ? '#e2e2e2' : '#fff') . ';">
                <td>'.$transaction['id'].'</td>
                <td>'.$transaction['descr'].'</td>
                <td>'.$transaction['credits'].' deducted</td>
                <td>'.$transaction['amount'].' deducted</td>
                <td>'.$transaction['vip_points'].' deducted</td>
                <td>'.$sDate.'</td>
                <td><input type="submit" value="+ Pin" name="'.$transaction['id'].'" /></td>
                </tr>
            ';
    $trans = $transaction['id'];
    if(isset($_POST["$trans"])){
        dbquery("UPDATE cms_transactions SET pin = '1' WHERE id = '".$trans."' AND userid = '".USER_ID."' LIMIT 1");
        header("Location: ".WWW."/identity/transactions");
    }
        }
        if(mysql_num_rows($getTrans) == 0){
        echo '<div class="error" id="black">You have no recent Transactions</div>';
        }

    ?>

/identity/transactions の一番下に PHP ヘッダー エラーが表示され続けます。

「ページに既にコンテンツが読み込まれている」ため、問題が発生していることに気付き、ページの開始時に PHP ヘッダーを使用する必要があります。私が投稿した次のスニペットは、含まれているファイルです。メインファイルで。

主な問題は、「バックエンド」php の作業からコンテンツを分離する方法を探していることです。

たとえば、次のようになります。

メインの PHP ファイルには、すべてのコードと include(); が含まれています。ファイルには「コンテンツ」側があります。

これが可能な方法はありますか?例を挙げることができれば、それは素晴らしいことです!

ご不明な点がありましたらお知らせください。

編集; これはファイル全体です:

<table class="information-table" style="margin-top:-5px;">
<tr>

<td style="text-shadow:none;">

<a class="new-button" href="<?php echo WWW ; ?>/account/logout"><b>Log out</b><i></i></a>

        <div id="back-link" style="color:#fff;">

        <a href="<?php echo WWW ; ?>/identity/avatars" style="color:#fff;">My Avatars</a> &raquo; <a href="<?php echo WWW ; ?>/identity/settings" style="color:#fff;">Account Settings</a> &raquo; Transactions

        </div>


</td></tr>
</table>


<div id="column1" class="column" style="width:960px;margin-right:10px;">

        <h1>Account Transactions:</h1>
        <h3>Pinned Transactions:</h3>
        <i>Pinning a transaction is useful if you have a transaction that is important; that you might need in the future!</i>
        <p>
        <table>
        <thead>
        <tr><td>ID</td><td>Description</td><td>Credits</td><td>Pixels</td><td>Stars</td><td>Purchase Date</td><td></td></tr>
        </thead>
        <tbody>
        <form method="post">
        <?php
            $getTrans = dbquery("SELECT * FROM cms_transactions WHERE userid = '".USER_ID."' AND pin = '1' ORDER BY date DESC LIMIT 100");
            $oe = 1;
            while($transaction = mysql_fetch_assoc($getTrans)){
                if ($oe == 2)
                {
                    $oe = 1;
                }
                else
                {
                    $oe = 2;
                }
                $oDate = strtotime($transaction['date']);
                $sDate = date("<b>l, j - F, o</b> g:ha",$oDate);
        $transs = $transaction['id'];
        if(isset($_POST["un$transs"])){
            dbquery("UPDATE cms_transactions SET pin = '0' WHERE id = '".$transs."' AND userid = '".USER_ID."' LIMIT 1");
            header("Location: ".WWW."/identity/transactions");
        }
                echo'
                    <tr style=" background-color: ' . (($oe == 2) ? '#e2e2e2' : '#fff') . ';">
                    <td>'.$transaction['id'].'</td>
                    <td>'.$transaction['descr'].'</td>
                    <td>'.$transaction['credits'].' deducted</td>
                    <td>'.$transaction['amount'].' deducted</td>
                    <td>'.$transaction['vip_points'].' deducted</td>
                    <td>'.$sDate.'</td>
                    <td><input type="submit" value="- Pin" name="un'.$transaction['id'].'" /></td>
                    </tr>
                ';
            }
            if(mysql_num_rows($getTrans) == 0){
            echo '<div class="error" id="black">You have no Pinned Transactions</div>';
            }

        ?>
        </form>
        </tbody>
        </table>
        </p>

        <h3>Recent Transactions</h3>
        <p>
        <table>
        <thead>
        <tr><td>ID</td><td>Description</td><td>Credits</td><td>Pixels</td><td>Stars</td><td>Purchase Date</td><td></td></tr>
        </thead>
        <tbody>
        <form method="post">
        <?php
            $getTrans = dbquery("SELECT * FROM cms_transactions WHERE userid = '".USER_ID."' AND pin = '0' ORDER BY date DESC LIMIT 50");
            $oe = 1;
            while($transaction = mysql_fetch_assoc($getTrans)){
                if ($oe == 2)
                {
                    $oe = 1;
                }
                else
                {
                    $oe = 2;
                }
                $oDate = strtotime($transaction['date']);
                $sDate = date("<b>l, j - F, o</b> g:ha",$oDate);
        $trans = $transaction['id'];
        if(isset($_POST["$trans"])){
            dbquery("UPDATE cms_transactions SET pin = '1' WHERE id = '".$trans."' AND userid = '".USER_ID."' LIMIT 1");
            header("Location: ".WWW."/identity/transactions");
        }
                echo'
                    <tr style=" background-color: ' . (($oe == 2) ? '#e2e2e2' : '#fff') . ';">
                    <td>'.$transaction['id'].'</td>
                    <td>'.$transaction['descr'].'</td>
                    <td>'.$transaction['credits'].' deducted</td>
                    <td>'.$transaction['amount'].' deducted</td>
                    <td>'.$transaction['vip_points'].' deducted</td>
                    <td>'.$sDate.'</td>
                    <td><input type="submit" value="+ Pin" name="'.$transaction['id'].'" /></td>
                    </tr>
                ';
            }
            if(mysql_num_rows($getTrans) == 0){
            echo '<div class="error" id="black">You have no recent Transactions</div>';
            }

        ?>
        </form>
        </tbody>
        </table>
        </p>

</div>
<style>
td {
padding:10px;
}

tbody td {
text-shadow:0 1px 0 #fff;
}

thead td {
font-weight:bold;
text-align:center;
}
</style>
4

2 に答える 2

0

この場合、ヘッダーが既に送信されないようにするために、出力バッファリングを使用できます。

ob_start();
$getTrans = dbquery("SELECT * FROM cms_transactions WHERE userid = '".USER_ID."' AND pin = '0' ORDER BY date DESC LIMIT 50");
        $oe = 1;
        while($transaction = mysql_fetch_assoc($getTrans)){
            if ($oe == 2)
            {
                $oe = 1;
            }
            else
            {
                $oe = 2;
            }
            $oDate = strtotime($transaction['date']);
            $sDate = date("<b>l, j - F, o</b> g:ha",$oDate);
            echo'
                <tr style=" background-color: ' . (($oe == 2) ? '#e2e2e2' : '#fff') . ';">
                <td>'.$transaction['id'].'</td>
                <td>'.$transaction['descr'].'</td>
                <td>'.$transaction['credits'].' deducted</td>
                <td>'.$transaction['amount'].' deducted</td>
                <td>'.$transaction['vip_points'].' deducted</td>
                <td>'.$sDate.'</td>
                <td><input type="submit" value="+ Pin" name="'.$transaction['id'].'" /></td>
                </tr>
            ';
    $trans = $transaction['id'];
    if(isset($_POST["$trans"])){
        dbquery("UPDATE cms_transactions SET pin = '1' WHERE id = '".$trans."' AND userid = '".USER_ID."' LIMIT 1");
        header("Location: ".WWW."/identity/transactions");
    }
        }
        if(mysql_num_rows($getTrans) == 0){
        echo '<div class="error" id="black">You have no recent Transactions</div>';
        }    

ob_end_clean();
于 2012-11-19T04:34:57.743 に答える