【问题标题】:href to a database field link.href 指向数据库字段链接。
【发布时间】:2013-07-20 17:09:19
【问题描述】:

我正在创建我的网站FOUND HERE

(这个页面是点击我主页底部的免费标签的结果found here

正如您在此页面上看到的,数据库中存储了 2 个字段。 GIFFGAFF & O2。它成功地从我的数据库中的 mobi 表中读取了 promo_image、promo_title、promo_content。

但是:当您点击 GO 按钮时,系统会将您链接到存储在 promo_link 中的站点,该站点位于此优惠的同一张表中。

它不会那样做。但它会在新选项卡中加载相同的页面(由于 _blank 代码)。

我的这个页面的代码是:

<?php

include_once('include/connection.php');
include_once('include/article.php');

$article = new article();


if(isset($_GET['id'])) {
   $id = $_GET['id'];
$data = $article->fetch_data($id);

if ($param){
    echo '<div>' . $data["bla"] . '</div>';
}

$articles = $article->fetch_all();

?>

<html>

<head>
<title>xclo mobi</title>
<link rel="stylesheet" href="other.css" />
</head>

<body>
<?php include_once('header.php'); ?>


<div class="container">
<a href="index.php" id="logo">Category = ???</a>


    <?php foreach ($articles as $article) { 
    if ($article['promo_cat'] === $_GET['id']) { ?>


<div class="border">
<a href="single.php?id=<?php echo $article['promo_title']; ?>" style="text-decoration: none">
<img src="<?php echo $article['promo_image']; ?>" border="0" class="img" align="left"><br />


<a href="<?php echo $data['promo_link']; ?>" target="_blank"><img alt="" title="" src="GO.png" height="50" width="50" align="right" /></a>
<br /><br /><br /><br />
    <?PHP echo '<div class="title">' . $article['promo_title'] . '</div>'; ?>
<br />

<font class="content"><em><center><?php echo $article['promo_content']; ?></center></em></font>

</div><br/><br />

          </a>

 <?php } } } ?>

</div>
<?php include_once('footer.php'); ?>
</body>

</html>

但是:如果您单击其中一个徽标并转到 single.php 页面,然后单击该页面上的相同 go 按钮,它就可以工作。

我的工作 single.php 页面的代码是这样的。

<?php

include_once('include/connection.php');
include_once('include/article.php');

$article = new article;

if(isset($_GET['id'])) {
   $id = $_GET['id'];
$data = $article->fetch_data($id);

?>

<html>

<head>
<title>Xclo Mobi</title>
<link rel="stylesheet" href="other.css" />
</head>

<body>
<?php include_once('header.php'); ?>


<div class="container">
<a href="index.php" id="logo">Title Page</a><br /><br />

<div align="center">
<img src="<?php echo $data['promo_image']; ?>" class="img"><br />

<font class="title"><?php echo $data['promo_title']; ?></font>


<p>
<center><?php echo $data['promo_content']; ?></center>


<a href="<?php echo $data['promo_link']; ?>" target="_blank"><img alt="" title="" src="GO.png" height="50" width="50" align="right" /></a>

<br /><br />
<b><u>More From This Brand</b></u>

<br /><br />


<a href="index.php">&larr; Home</a>

</div>
<?php include_once('footer.php'); ?>
</body>

</html>



<?php
} else { 
 header('location: index.php');
 exit();
}

?>

谁能告诉我为什么 list.php 页面不能正常工作?谢谢。

kevstarlive

【问题讨论】:

  • Database link not working 的可能副本
  • 伊泰女孩。你没有提到这一点。 snd 这是一篇完全独立的文章。

标签: php mysql content-management-system href


【解决方案1】:

在非工作示例中,此值不包含数据:

$data['promo_link']

所以链接标签中的href属性没有URL,浏览器默认为当前页面。两个页面之间获取数据的方式略有不同。在这两种情况下,您都使用从查询字符串传递的 id 值:

$id = $_GET['id'];
$data = $article->fetch_data($id);

但是,有问题的两个页面在查询字符串上具有不同的值。您在问题中发布的链接是:

http://www.xclo.mobi/xclo2/list.php?id=FREE

而从该页面到工作示例的链接是:

http://www.xclo.mobi/xclo2/single.php?id=Free%20Sim%20Card

这两个id 值非常不同。第二个是在promo_link 字段中查找包含数据的记录,第一个不是。

仔细检查后,看起来这可能只是非工作页面中的错字。请注意您是如何获取该页面中的记录列表的:

$articles = $article->fetch_all();

您正在循环中使用它来显示页面上的元素:

<img src="<?php echo $article['promo_image']; ?>

但是当您访问链接时,您使用 $data 对象代替:

href="<?php echo $data['promo_link']; ?>"

也许你的意思是这样?:

href="<?php echo $article['promo_link']; ?>"

看起来您甚至不应该需要第一页上的$data 对象,因为您的意图是遍历记录列表而不是获取单个记录。因此,您可能可以完全删除 $data 引用,而不必费心从该页面上的数据库中获取它。

我还建议更改您的变量名称,以免相互冲突。在循环中声明迭代变量时:

foreach ($articles as $article)

您正在与同名的现有对象发生碰撞:

$article = new article();
$data = $article->fetch_data($id);

我不知道 PHP 如何处理变量范围内的名称冲突,但如果没有其他原因,只是为了避免混淆,您应该将它们命名为不同的名称。也许是这样的:

foreach ($articles as $articleRecord)

【讨论】:

  • 大卫。太感谢了。这只是我的错误。在非工作示例中,所有其他元素都在获取 $article,但链接正在获取数据。将其更改为 $article 就可以了。并在我的 foreach 中添加“记录”返回错误。
  • @kevstarlive:错误是否表明您还需要更新该变量名的其他用途?相反,您可以重命名原始的 $article 变量,而不是循环中的变量。无论哪种情况,原理都是一样的。您不应该在如此接近的范围内重复使用变量名。
  • 是的。我已在我的 article.php 文件中将我的类文章更改为类 storearticle。谢谢。
【解决方案2】:

在您的页面中使用$article['promo_link'] 而不是$data['promo_link']

您正在使用foreach 循环来显示所有链接。

此外,按照 David 的建议做所有事情,这将使您更轻松地编写代码 =)

【讨论】:

    猜你喜欢
    • 2010-12-30
    • 2014-08-08
    • 2012-09-16
    • 1970-01-01
    • 2018-04-15
    • 2014-10-03
    • 1970-01-01
    • 2012-10-05
    • 1970-01-01
    相关资源
    最近更新 更多