0

因此,在我的网站中,我有一个新闻系统,可以选择编辑和删除管理员想要的新闻。

好吧,我通过使用以下方法获得了正确的编辑部分:

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

然后$_GET在另一页上。

但是,这不是我想要的编辑窗口。因此,我一直在探索一种使用 JavaScript 将包含新闻表 (MySQL) 主键的 PHP 变量发送到弹出窗口的方法。但这只是事情,它只会返回从查询中获得的第一个值......(即,如果我单击编辑第 3 篇文章,它会编辑我的第 1 篇文章。总是。)

这是我当前的代码:

<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>

我的意思是然后使用另一个查询来获取文章的标题和文本以显示在所见即所得的编辑器上。

谁能指出我的缺点?

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 循环中的代码来指定$idJavaScript 的值,那么您可以将它作为参数传递给 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>

然后,呈现的输出将包含$id每个a标签上的特定于记录的值,以供客户端上的 JavaScript 代码使用。

于 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。您需要找出一个结构,以便您可以根据您单击编辑的文章向其传递不同的 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 回答