0

そのため、私のWebサイトには、管理者が希望するニュースを編集および削除するオプションがあるニュースシステムがあります。

さて、私は次を使用して編集部分を正しく取得しました:

href="noticiaEditarForm.php?id_noticia=<?php echo $id ?>">Editar</a>

そして$_GET、他のページに。

しかし、これは私が編集ウィンドウを望む方法ではありません。そのため、JavaScriptを使用して、ニューステーブル(MySQL)の主キーを含むPHP変数をポップアップウィンドウに送信する方法を模索してきました。しかし、それだけです。クエリから取得した最初の値のみが返されます...(つまり、クリックして3番目の記事を編集すると、最初の記事が編集されます。常に。)

これが私の現在のコードです:

<div class="noticias">
<?php
    include('conn/conn.php');
    mysql_select_db($bd, $conn);

    $resultado = mysql_query("SELECT * FROM noticia INNER JOIN user ON noticia.id_user=user.id_user ORDER BY id_noticia DESC");

    while ($linha = mysql_fetch_array($resultado)) {
        echo "<h1>" . $linha['titulo'] . "</h1>";
        echo "<i>Posted by " .$linha['username']. " on " . "<y>" . $linha['data'] . "</y>" . "</i>";
        echo "<p>";
        echo $linha['texto'];

        $id = $linha['id_noticia'];

        if (isset($_SESSION['admin'])) {
?>
            <div class="noticiasOpcao">
                <a href="" onClick="open_win_editar()">Editar</a>
                &nbsp;&nbsp;&nbsp;&nbsp;
                <a onclick="return confirm('Are you sure?')" href="noticiaApagar.php?id_noticia=<?php echo $id ?>">Apagar</a>
            </div>
<?php
        } 
    }
?>

<script language="javascript">
    function open_win_editar() {
        window.open (
            "noticiaEditarForm.php?id_noticia=<?php echo $id; ?>",
            "Editar notícia",
            "location=1, status=1, scrollbars=1, width=800, height=455"
        );
    }
</script>

<?php mysql_close($conn); ?>

</div>

次に、別のクエリを使用して、WYSIWYGエディターに表示する記事のタイトルとテキストを取得します。

誰かが私の欠陥を指摘できますか?

4

3 に答える 3

3

このコード:

<script language="javascript">
    function open_win_editar() {
        window.open ("noticiaEditarForm.php?id_noticia=<?php echo $id; ?>", "Editar notícia", "location=1, status=1, scrollbars=1, width=800, height=455");
     }
</script>

PHPwhileループの外部で発生しているため、の値はループ内$idで設定された最後の値$idになります。したがって、JavaScriptコードは常に同じリンクを開きます。

PHPループ内でJavaScriptの値を指定するコードが必要な場合は$id、JavaScript関数の引数としてそれを渡すことができます。このようなもの:

<script language="javascript">
    function open_win_editar(targetID) {
        window.open ("noticiaEditarForm.php?id_noticia=" + targetID, "Editar notícia", "location=1, status=1, scrollbars=1, width=800, height=455");
     }
</script>

したがって、ループ内のアンカータグをレンダリングするコードは、次のような引数を渡します。

<a href="" onClick="open_win_editar(<?php echo $id; ?>)">Editar</a>

レンダリングされた出力には、クライアントのJavaScriptコードで使用される各タグのレコード固有の$id値が含まれます。a

于 2012-04-20T16:11:29.177 に答える
0
<script language="javascript">
            function open_win_editar() {
                window.open ("noticiaEditarForm.php?id_noticia=<?php echo $id; ?>", "Editar notícia", "location=1, status=1, scrollbars=1, width=800, height=455");
            }
        </script>

これは、おそらく最後の ID で 1 回だけレンダリングされます。クリックして編集した記事に基づいて異なる ID を渡すことができるように、構造を理解する必要があります。

于 2012-04-20T16:08:53.287 に答える
0

編集するピースの ID は while ループ内でのみ更新され、ループ外では決して更新されません。

必要に応じて使用するには、open_with_editar 関数のパラメーターを使用する必要があります。

<script language="javascript">
            function open_win_editar(id) {
                window.open ("noticiaEditarForm.php?id_noticia="+id, "Editar notícia", "location=1, status=1, scrollbars=1, width=800, height=455");
            }
        </script>

onclick イベントを更新して、それぞれの ID を渡すだけです。

<div class="noticiasOpcao">
      <a href="" onClick="open_win_editar(<?php echo $id; ?>)">Editar</a>

それはうまくいくはずです。

よろしくステファン

于 2012-04-20T16:15:19.710 に答える