0

我正在创建我的网站在这里找到

(此页面是单击此处找到的主页底部的免费选项卡的结果)

正如您在此页面上看到的,数据库中存储了 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

4

2 回答 2

2

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

$data['promo_link']

所以hreflink标签中的属性是没有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)
于 2013-07-20T17:23:00.557 回答
0

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

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

另外,做大卫建议的一切,这将使你的代码工作更容易=)

于 2013-07-20T17:26:32.917 回答