PHP + mysql.Dynamic网站,链接

时间:2015-02-05 20:27:41

标签: php mysql

我试图做以下链接: test.com/article.php?=$id其中$ id来自数据库

  $sql = "SELECT * FROM articles WHERE writer='$w_name' ";
   $result = mysqli_query($conn, $sql);

   $q = array();
   $l = array();

   if (mysqli_num_rows($result) > 0) {

       while ($row = mysqli_fetch_assoc($result)) {
           $q[]=$row['header'];
           $l[]=$row['id'];
       }
   }

所以我有例如: $ q = 1,2,3和$ l =第一个链接名称,第二个链接名称,三维链接名称。

我试图用这种方式一起做,但它没有正确的做法:

<? 
    foreach($q as $header)
        { 
            echo'<li>'.$header.'</li>';
        } 
?>


<?
    foreach($l as $id) 
        { 
            echo "<a href='article.php?=$id'>".$header.'<br>'.'</a>'; 
         }
?>

在这种情况下,我有3个不同的名称相同的链接,如:

<a href='article.php?=1'>1st link name</a>
<a href='article.php?=2'>1st link name</a>
<a href='article.php?=3'>1st link name</a>

我也尝试过:

 <? 
foreach($l as $id)
foreach($q as $header) 
{ echo "<a href='article.php?=$id'>".$header.'<br>'.'</a>'; } ?>



But it gave me all combinations like:

<a href='article.php?=1'>1st link name</a>
<a href='article.php?=1'>2nd link name</a>
<a href='article.php?=1'>3d link name</a>

<a href='article.php?=2'>1st link name</a>
<a href='article.php?=2'>2nd link name</a>
<a href='article.php?=2'>3d link name</a>

<a href='article.php?=3'>1st link name</a>
<a href='article.php?=3'>2nd link name</a>
<a href='article.php?=3'>3d link name</a>

我是php和mysql的新手,我不知道如何解决这个问题

3 个答案:

答案 0 :(得分:2)

foreach循环最适合迭代单个数组。 如果您坚持将数据放在2个数组中,则使用带有索引而不是for循环的foreach循环来迭代数组会更容易。

所以试试这个:

for($i=0; $i < count($l); $i++) {
  echo "<a href='article.php?=".$l[$i]."'>".$q[$i].'<br>'.'</a>';
}

在此示例中,使用带有$i$l[$i]的索引$q[$i]访问数据。

答案 1 :(得分:1)

你只需要一个阵列:

$sql = "SELECT * FROM articles WHERE writer='$w_name' ";
   $result = mysqli_query($conn, $sql);

   $q = array();

   if (mysqli_num_rows($result) > 0) {

       while ($row = mysqli_fetch_assoc($result)) {
           $q[$row['id']]=$row['header'];
       }
   }

之后只需以您想要的格式打印数组:

foreach($q as $href => $text) {
    echo '<a href="http://test.com/article.php?=' . $href . '">' . $text . '</a><br />';
}

答案 2 :(得分:0)

解决方案:

此解决方案将消耗更少的内存和效率。

你可以像这样使用它。假设你在文章表中有id和header字段。通过使用单次迭代(循环),您可以获得所需的结果。

$sql = "SELECT id,header FROM articles WHERE writer='$w_name' ";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
   while ($row = mysqli_fetch_assoc($result)) {
       $id = $row['id'];
       echo "<a href='article.php?=$id'>" . $row['header'] . '</a>';
       echo '<br />';
   }
}