【问题标题】:Cannot send to database无法发送到数据库
【发布时间】:2014-11-16 08:56:32
【问题描述】:

我一直在尝试制作一个管理面板。对于设置,我想在一个文件中运行所有脚本,这样就不会在文件夹中弄得一团糟。但是,当我尝试添加/编辑一行时,它不会让我这样做。

注意:我可以毫无问题地从数据库中获取所有行。它也没有给出错误,所以我无法查看它。

这是我的代码:

<? session_start();
include '../database.php';
if (!isset($_SESSION['logged'])) {
header("Location: login.php");
}
if ($_GET['action'] == 'add') {
if (!isset($_POST['submit'])) {
 ?>
<!DOCTYPE html>
<html>
    <head>
        <link rel="stylesheet" type="text/css" href="main.css">
        <link rel="stylesheet" type="text/css" href="../css/menu.css">
        <link rel="stylesheet" type="text/css" href="../css/atasoy.css">
        <title>Yönetim Paneli - Berru Perde</title>
        <meta charset="UTF-8">
    </head>
    <body>
        <h1>Add Slide</h1>
        <br>
        <br>
        <form action="<?=$_SERVER['PHP_SELF']; ?>" method="post" align="center">
        <label for="name">Name</label><br><input type="text" name="name"><br>
        <label for="link">Image Link (<a href="javascript:void(0);" onclick="window.open('upload1.php', 'Image Upload', 'width=400, height=200');">Upload Image</a>)</label><br>
        <input name="link"><br><input type="submit" name="submit" value="Add Image">
        </form>
    </body>
</html>
<?
} else {
    $name = $_POST['name'];
    $link = $_POST['link'];

    $query = $mysqli->query("INSERT INTO `carousel` VALUES ('', '$name', '$link')");

    header("Location: carousel.php");
}
} elseif ($_GET['action'] == 'edit') {
    $id = $_GET['id'];
    $result = $mysqli->query("SELECT * FROM `carousel` WHERE `id` = '$id'");
    $fetch = $result->fetch_array();
    if (!isset($_POST['submit'])) {
 ?>
<!DOCTYPE html>
<html>
    <head>
        <link rel="stylesheet" type="text/css" href="main.css">
        <link rel="stylesheet" type="text/css" href="../css/menu.css">
        <link rel="stylesheet" type="text/css" href="../css/atasoy.css">
        <title>Admin Panel</title>
        <meta charset="UTF-8">
    </head>
    <body>
        <h1>Edit Slide</h1>
        <br>
        <br>
        <form action="<?=$_SERVER['PHP_SELF']; ?>" method="post" align="center">
        <label for="name">Name</label><br><input type="text" name="name" value="<?=$fetch['name']; ?>"><br>
        <label for="link">Image Link(<a href="javascript:void(0);" onclick="window.open('upload1.php', 'Image Upload', 'width=400, height=200');">Upload Image</a>)</label><br>
        <input name="link" value="<?=$fetch['link']; ?>"><br><input type="submit" name="submit" value="Save">
        </form>
    </body>
</html>
<?
} else {
    $id = $_GET['id'];
    $name = $_POST['name'];
    $link = $_POST['link'];

    $mysqli->query("UPDATE `carousel` SET `name`='$name', `link`='$link' WHERE `id`='$id'");
    header("Location: carousel.php");
} # Delete script not done yet
} else {
?>
<!DOCTYPE html>
<html>
    <head>
        <link rel="stylesheet" type="text/css" href="main.css">
        <link rel="stylesheet" type="text/css" href="../css/menu.css">
        <link rel="stylesheet" type="text/css" href="../css/atasoy.css">
        <title>Admin Panel</title>
        <meta charset="UTF-8">
    </head>
    <body>
        <h1>Slideshow Editor</h1>
        <br>
        <br>
        <ul class="addthings"><a href="carousel.php?action=add"><li><img src="http://www.widgetop.com/images/AddWidgets.png">Yeni Carousel Slaytı Ekle</li></a></ul>
        <table class="listing" align="center">
            <tr>
                <td class="darkblue">ID</td>
                <td class="darkblue">Name</td>
                <td class="darkblue">Preview</td>
                <td class="darkblue">Edit</td>
                <td class="darkblue">Delete</td>
            </tr>
            <?
            $query = $mysqli->query("SELECT * FROM `carousel` ORDER BY `id`");
            while ($fetch = $query->fetch_array()) {
            $i = $fetch['id'];
            if ($i % 2 != 0) {
            echo "<tr class='lightblue'><td>" . $fetch['id'] . "</td>";
            echo "<td>" . $fetch['name'] . "</td>";
            echo "<td><img src='" . $fetch['link'] . "' width='117.5' height='67.5'></td>";
            echo "<td><a href='carousel.php?action=edit&id=" . $fetch['id'] . "'><img src='http://docs.gimp.org/en/images/dialogs/stock-edit-16.png'></a></td>";
            echo "<td><a href='carousel.php?action=delete&id=" . $fetch['id'] . "'><img src='https://cdn2.iconfinder.com/data/icons/aspneticons_v1.0_Nov2006/delete_16x16.gif'></a></td></tr>";
            } else {
            echo "<tr class='white'><td>" . $fetch['id'] . "</td>";
            echo "<td>" . $fetch['name'] . "</td>";
            echo "<td><img src='" . $fetch['link'] . "' width='117.5' height='67.5'></td>";
            echo "<td><a href='carousel.php?action=edit&id=" . $fetch['id'] . "'><img src='http://docs.gimp.org/en/images/dialogs/stock-edit-16.png'></a></td>";
            echo "<td><a href='carousel.php?action=delete&id=" . $fetch['id'] . "'><img src='https://cdn2.iconfinder.com/data/icons/aspneticons_v1.0_Nov2006/delete_16x16.gif'></a></td></tr>";
            }
            }
            ?>
        </table>
    </body>
</html>
<? } ?>

我做错了什么?

任何帮助将不胜感激。

【问题讨论】:

  • 所以你是说$mysqli-&gt;query("SELECT * FROM carousel WHERE id = '$id'"); 返回一个结果?如果是这样,那么 if/else 子句是开始的地方。

标签: php html post mysqli get


【解决方案1】:

您的问题当然来自您不想分离文件这一事实。您现在已经将一团糟聚合到一个文件中,它本身就扮演着模型、视图和控制器的角色。

如果您在数据库中看不到任何更改,但 INSERT 指令已执行,那么您应该会看到一个错误。 $mysqli-&gt;error 中有什么内容?通过将其放在脚本的开头来激活 PHP 错误:

ini_set('display_errors', 1);
error_reporting(E_ALL);

我看到您的 INSERT 部分仅在 action == add 时执行。写 $_REQUEST['action'] 而不是 $_GET 并将 &lt;input type="hidden" name="action" value="add"&gt; 放入您的 &lt;form&gt;,因为您使用的是 POST 表单,我不确定您的 URL 是什么样的。删除 action="&lt;?=$_SERVER['PHP_SELF']; ?&gt;",它会为您的脚本增加无用的复杂性(如果未定义,操作始终指向当前 URL)。

我希望我给了你足够的材料来帮助你调试你的代码;如果不访问数据库,就很难说出更多信息。您的错误的来源可能有很多。

【讨论】:

  • 我的网址是 www.example.com/admin/carousel.php?action=add 或 carousel.php?action=edit&id=1,反之亦然。我可以访问数据库(正确列出了幻灯片),但我无法写入数据。我知道查询被执行是因为它执行header("Location: carousel.php"); 并将我重定向到主页。我现在将尝试错误报告并将结果放入问题中。谢谢。
  • 感谢您的帮助。这是我的错。显然 &lt;?=$_SERVER['PHP_SELF']; &gt; 搞砸了代码。它现在工作得很好!再次感谢!
猜你喜欢
  • 2020-07-22
  • 2022-09-30
  • 1970-01-01
  • 2022-07-28
  • 2013-04-05
  • 2018-03-17
  • 2021-04-27
  • 1970-01-01
  • 2016-12-02
相关资源
最近更新 更多