0

mysql 行の $w['id'] 値を取得し、非表示の入力フィールドと変数 $blog_id を使用して別のページに渡そうとしています。最初のページのコードは次のとおりです。

$query = "SELECT * FROM blog WHERE username = '$username' ORDER BY created_date DESC;";
$result = $mysqli->query($query);
$rows = resultToArray($result);
// var_dump($rows); 
foreach($rows as $r => $w) {
echo "<tr>\n";
    echo "<td>{$w['title']}\n";
    echo "<td>{$w['id']}\n";
echo "<td>{$w['created_date']}</td>\n";
echo "<td>{$w['updated_date']}</td>\n";
echo "<td style=\"border:none\">{$w['template']}</td>\n";

$blog_id = $w['id'];

echo "<input type=\"hidden\" name=\"id\" value=\"$blog_id\" />\n";
echo "<td style=\"border:none\"><button type=\"submit\" name=\"view\">View</button></td>\n";

echo "<td style=\"border:none\"><button type=\"submit\" name=\"edit\">Edit</button></td>\n";

echo "<td style=\"border:none\"><button type=\"submit\" name=\"delete\"><font color=\"red\">Delete</font></button></td>";
echo "</tr>\n";
}

?>

私のhtmlテーブルでは値は正しくエコーされますが、$w['id']値を取得して、たとえば編集ボタンを使用して次のページに渡そうとすると、値は常にmysqlテーブルの最小のid値になります。
2 ページ目の重要な部分のコードは次のとおりです。

sec_session_start();
$username = $_SESSION['username'];
// $blog_id = $_SESSION['blog_id'];

if(isset ($_POST['edit'])) {
    $blog_id = $_POST['id'];

    $result = $mysqli->query("SELECT * FROM blog WHERE id = '$blog_id'");

    if($result->num_rows > 0) { 
        $rows = resultToArray($result);
        foreach($rows as $r => $w) { 

        ?>

        <body id="blog_editor">
<?php var_dump($_POST); ?>

var_dump($_POST) の値は常に ["id"]=>string(2) "43" ですが、最初のページの foreach ループは多くの異なる ID を生成します。私が間違っていることを誰かが知っていますか、または同じ種類のことを行う別の方法がありますか?

4

1 に答える 1

0

aforeachと echo 多くの異なる を使用しidます。

SUBMITボタンや<form>タグが表示されません。

あなたができることは、 foreach ループ内で、独自のボタンを持つフォームを作成することです:

<?php
    foreach($rows as $r => $w) {
       echo '<form action="page.php" ...>
       echo ....
       echo '<input type="submit">
    }
?>

または、1 つのフォーム内に複数の結果がある場合はname、ループがループするたびに要素の を変更する必要があります (後で `$_POST['id'] に値を与えます)。

これを行うには、次の行を変更します。

echo "<input type=\"hidden\" name=\"id\" value=\"$blog_id\" />\n";

1) これに:

echo "<input type='hidden' name='id".$blog_id."' value='$blog_id' />\n";

そして、電話$_POSTすると$_POST['idXX']、XX = IDの番号が表示されます

2) またはこれにすべての ID を持つ配列を作成するには:

echo "<input type='hidden' name='id[]' value='$blog_id' />\n";

そして$_POST['id']配列になります

于 2013-06-10T02:04:33.643 に答える