2015-02-05 106 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 />'; 
    } 
}