2015-02-05 104 views
0

我试图做这样的联系: test.com/article.php?=$id其中$ id与数据库PHP + mysql.Dynamic网站,链接

$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 =第1个链接名称,第2个链接名称,3d链接名称。

我试图这样做在一起,但它不工作正确的:

<? 
    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,我不知道如何解决这个问题

+0

问:为什么要让它返回'?= xxx'?获取方法需要类似'?var = xxx'的东西 - 我想知道你将如何访问这些链接。即:'if(isset($ _ GET ['xxx'])&&($ _GET ['xxx'] ==“1”)){...}' – 2015-02-05 20:45:12

回答

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 />'; 
} 
+0

谢谢先生的知识! – Misa 2015-02-05 20:42:14

2

A foreach循环最好在遍历单个数组。 如果您坚持要在2个数组中使用数据,则使用带有索引而不是foreach循环的for循环迭代数组更容易。

那么试试这个:

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

在这个例子中,数据使用指数$i$l[$i]$q[$i]访问。

+1

或者只是建立一个数组,因为标题和id似乎被绑在一起在臀部...... – 2015-02-05 20:33:14

+0

你可能是对的,我只是认为选择有他的理由将数据拆分成两个数组 – 2015-02-05 20:34:43

+0

它给了我所有的组合。 9链接,而不是3 – Misa 2015-02-05 20:36:28

0

解决方案:

这soltion将消耗更少的内存和高效率。

你可以这样使用它。假设你在文章表中有id和标题字段。通过使用单次迭代(循环),你可以达到你想要的结果。

$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 />'; 
    } 
}