【问题标题】:Sending a destination link into database and then echoing it out将目标链接发送到数据库,然后将其回显
【发布时间】:2015-05-06 22:10:02
【问题描述】:

我有一个产品页面,我通过这样的 while 循环输出我的产品...

<?php   
// Loop to display all products
foreach($products as $id => $product) {
?>
    <div class="item">
        <div class="productpiccontainer">
            <?php echo "<img src='productpics/". $row['img'] ."' alt='Product Pic'>"; ?>
        </div>      
        <p><?php echo "<a href='./viewProduct.php?view_product=$id'>" . $product['name'] . "</a>"; ?></p>
        <p> <?php echo "$" . $product['price']; ?> </p>                                     
    </div>
<?php
    }
?>

正如您在代码中看到的,我将查看产品页面链接为标准页面,并显示产品 ID 所点击的产品。现在我想做的是创建不同的查看产品页面,这样我就可以展示不同类型的产品。

我将产品插入数据库的方式是通过我创建的管理页面。我通过这个输入产品ID、名称、类别等,然后将其发送到我的数据库并在产品页面上输出。

现在,我的想法是在我的管理页面中创建一个新的输入字段,这是一个包含多个“查看产品”模板的选项字段。我想将我的产品页面上显示的链接发送到我的数据库中..

<?php echo "<a href='./viewProduct.php?view_product=$id'>" . $product['name'] . "</a>"; ?>

然后我可以选择正在创建的每个其他产品并将其显示在我的产品页面上。

所以它会是这样的..

<p><?php echo "$product['option']" . $product['name'] . "</a>"; ?></p>

我遇到的问题是我无法弄清楚如何发送链接..

<a href='./viewProduct.php?view_product=$id'>

进入我的数据库,甚至尝试将其回显。

我正在尝试发送它是一个字段,就像我在页面中发送所有其他数据一样。

<select class="optionbar" name="viewproduct_type">
    <option name="notSelected">Not Selected</option>
    <option name="viewproduct_type" value="a href='./viewProduct.php?view_product=$id">Standard</option>
    <option name="viewproduct_type" value="Option">Option</option>
</select>

我怎样才能让这个链接发送,或者有更好的选择吗?我想尽可能地保持自动化,因此我这样做了。

【问题讨论】:

  • 我不确定我是否理解正确,但您只是想将链接保存到数据库中?这到底有什么问题?
  • @cen 每当我尝试发送查询时,我现在都会收到错误,允许我插入链接。
  • 无法插入:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 './viewProduct.php?view_product=$id', '', '')' 附近使用正确的语法
  • 可能是因为您的链接包含引号。尝试逃避它。
  • @cen 我尝试取出引号并运行查询,但它只插入了字母 a。我是这样写的...

标签: php mysql hyperlink path


【解决方案1】:

您试图将 html 代码作为另一个 html 元素中的值,这只是在自找麻烦。如果你真的想实现这一点,我建议你阅读htmlentities()。 你的第二个问题是你显然没有逃避你的插入。阅读mysqli_real_escape_string()

在您的情况下,最简单的做法是将 ID 传递给您的选择列表,然后在插入之前将链接与 ID 结合起来。无需在选择列表值中存储完整链接。

示例代码

<html>
<head>
</head>
<body>

<form name="ASD" method="post" action="mysqli.php">
    <select name="link">
        <option value="1">Option 1</option>
        <option value="2">Option 2</option>
    </select>
    <input type="submit" value="Go" />
</form>

<?php
error_reporting(E_ALL);

$db = mysqli_connect("localhost", "root", "", "test", 3306) OR die ('Could not connect to MySQL: ' . mysql_error());

if (isset($_POST["link"])) {
    $save="./viewProduct.php?view_product=".$_POST["link"];
    $save = mysqli_real_escape_string($db, $save);
    $r = mysqli_query($db, "INSERT INTO links VALUES('".$save."')");

    if ($r === false) echo "Failed ".mysqli_error();
    else echo "Success";
} 

?>

</body>
</html>

【讨论】:

  • 我该如何输出呢?我仍然很困惑如何将链接添加到我的数据库中?我将有两个不同的链接。我希望我添加的每个新产品都能够区分我正在使用的产品模板(链接)。然后输出。
  • 对于每个产品,您将类型保存为 int 或完整字符串,如果您想根据该类型更改模板,您可以使用额外的 URL 参数,例如:?view_product=$id&amp;type=$product['type']。然后你可以简单地根据$_GET['type']的值在view_product.php中切换显示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多