0

次のコードがあります。

while ($content = mysql_fetch_array($content2)){  
    echo $content[0];  
    session_start();  
    $_SESSION['content'] = $content[0];  
    ?>  
    <br />    
    <a href="edit.php"> Edit post. </a>  
    <br /> <br />  
    <?php  
}

ブログ システム データベースからすべての投稿を取得して表示し、[編集] をクリックします。各投稿の下。私がやりたいことは、その投稿のコンテンツを私の edit.php スクリプトに渡すことです。
問題は、どの「編集」ボタンをクリックしても、その「編集」ボタンの上の投稿の内容ではなく、常に最後の投稿の内容が渡されることです。
これで、その理由がわかります。ボタンをクリックする前にループ全体が実行され、$_SESSION['content'] に格納されている値は常にループの最後の反復からの値になります。私は正しいですか?

多分私はSESSIONを使うべきではありません。より良いアプローチはありますか?$content[0] の「正しい」値を edit.php スクリプトに渡すにはどうすればよいですか?

4

3 に答える 3

2

編集ボタンが常に最後の投稿を取得している理由は、各ループのセッションでコンテンツ変数をオーバーライドしているためです。

データベースからどのような情報を取得しているかはわかりませんが、配列で取得する投稿ごとに、データベースに一意のIDが必要です。これが存在しない場合は、プロセスを簡素化するため、テーブルに変更を加えることを強くお勧めします。

while ($content = mysql_fetch_assoc($content2))
{  
    echo $content['postText'] . "<br />";  
    echo '<a href="edit.php?postId=' . $content['postId'] . '"> Edit post. </a><br /><br />';  
}

次に、編集ページを設定してID$_GET['postId']を取得し、データベースから適切なコンテンツを取得する必要があります。

于 2012-06-24T17:00:58.897 に答える
1

あなたのコードは改善されなければなりません、あなたの論理は良くありません。まず、セッション変数を使用する必要はありません。これを行うための1つの代替手段は、次のようなGET引数を使用して投稿IDを渡すことです。

while ( $content = mysql_fetch_array($content2) )
{  
    $post_content = $content[0];
    $post_id      = $content[1];

    echo $post_content . '<br /> <a href="edit.php?postId=' . $post_id . '"> Edit post. </a> <br /> <br />';
}

次に、edit.phpを取得して$_GET['postId']、更新する投稿コンテンツを読み込みます。

于 2012-06-24T17:06:32.163 に答える
0

GETコマンドを実行する準備ができている場合は、これが最善の策です。以下のコードを参照してください:

$content = mysql_fetch_array($content2);
foreach($content as $key => $val) {
echo "<a href=edit.php?id=$val['id']>$val['name']</a>";
}

簡単な修正。

$ val ['id']をuniqueIDの列名に置き換え、$val['name']を投稿の列名に置き換えます。

于 2012-06-24T17:04:00.603 に答える