从数组中的第一个$值创建HTML链接

时间:2014-05-21 12:03:00

标签: php arrays

我正在执行一个SQL查询,我希望每行的第一列的值都是一个链接。

这是我的代码:

$select_rma_detail = $dbh->prepare (
    "SELECT rd_rma_nr, rd_artikel_code, rd_serienr, rd_ontvangenklant, 
    rd_onder_waarborg, rd_omr_rep, rd_teruggestuurdklant, rd_afgehandelklant
    FROM rma_detail 
    LEFT JOIN rma ON rma_detail.rd_rma_id=rma.r_id
    LEFT JOIN klanten ON rma.r_klantid=klanten.k_id WHERE k_id = ?"
);
$select_rma_detail->bindParam(1, $_SESSION['k_id']);
$select_rma_detail->execute();


while ($selectrmarow = $selectrmadetail->fetch(PDO::FETCH_ASSOC)) {
    foreach ($selectrmarow as $key => $value) {
        $value =($value == 1) ? 'JA' : $value;
        echo "<td>$value</td>"; 
    }
}

这是我的阵列转储现在:

array(8) { 
    ["rd_rma_nr"]=> string(9) "201405022"
    ["rd_artikel_code"]=> string(7) "34-CXN3"
    ["rd_serienr"]=> string(13) "5411284116133"
    ["rd_ontvangenklant"]=> string(1) "1"
    ["rd_onder_waarborg"]=> NULL
    ["rd_omr_rep"]=> NULL
    ["rd_teruggestuurdklant"]=> NULL
    ["rd_afgehandelklant"]=> NULL 
}
array(8) {
    ["rd_rma_nr"]=> string(9) "201405023"
    ["rd_artikel_code"]=> string(7) "51-EQP1"
    ["rd_serienr"]=> string(13) "5411284116133"
    ["rd_ontvangenklant"]=> NULL
    ["rd_onder_waarborg"]=> NULL
    ["rd_omr_rep"]=> NULL
    ["rd_teruggestuurdklant"]=> NULL
    ["rd_afgehandelklant"]=> NULL
}
array(8) {
    ["rd_rma_nr"]=> string(10) "2014050712"
    ["rd_artikel_code"]=> string(7) "72-BMM3"
    ["rd_serienr"]=> string(7) "4599489"
    ["rd_ontvangenklant"]=> string(1) "1"
    ["rd_onder_waarborg"]=> string(1) "1"
    ["rd_omr_rep"]=> string(8) "OMRUILEN"
    ["rd_teruggestuurdklant"]=> string(1) "1"
    ["rd_afgehandelklant"]=> string(1) "1"
}
array(8) {
    ["rd_rma_nr"]=> string(10) "2014051113"
    ["rd_artikel_code"]=> string(7) "34-CXN3"
    ["rd_serienr"]=> string(5) "11111"
    ["rd_ontvangenklant"]=> string(1) "1"
    ["rd_onder_waarborg"]=> string(1) "1"
    ["rd_omr_rep"]=> string(8) "OMRUILEN"
    ["rd_teruggestuurdklant"]=> NULL
    ["rd_afgehandelklant"]=> NULL 
}

如何将rd_tma_nr放入链接<a></a>,以便制作包含该RMA号码的所有信息的详细信息页面?如果我在没有foreach的情况下编写它,我知道怎么做,但是有可能用foreach吗?

4 个答案:

答案 0 :(得分:3)

您需要更改您的foreach声明:

foreach ($selectrmarow as $key => $value) 
{
    if($key=='rd_rma_nr')
    {
        echo "<td><a href='something.blahblahblah?something=somethingelse'>$value</a></td>"; 
    }
    else
    {
        $value =($value == 1) ? 'JA' : $value;
        echo "<td>$value</td>"; 
    }
}

您已经返回ASSOC_ARRAY,这意味着您拥有列名称。您可以创建一个简单的if语句来查看列名是否是您要链接的列名称 - 如果是,请创建链接,否则使用正常设置。

如果您想要制作许多不同的选项,例如:

,您还可以根据字段执行switch语句
foreach ($selectrmarow as $key => $value) 
{
    switch($key)
    {
        case 'rd_rma_nr':
            echo "<td><a href='something.blahblahblah?something=somethingelse'>$value</a></td>"; 
            break;
        case 'rd_artikel_code'
            echo "<td><a href='something2.blah?somethingElse=$value'>$value</a></td>";
            break;
        default:
            echo "<td>$value</td>";
    }
}

修改:更新您的选择查询:

您的查询只选择一个名为rd_rma_nr的列,但如果我有倍数,您可以像这样选择别名:

SELECT 
    rd_rma_nr, 
    rd_rma_nr as rd_rma_nr2, 
    rd_artikel_code, 
    rd_serienr, 
    rd_ontvangenklant, 
    rd_onder_waarborg, 
    rd_omr_rep, 
    rd_teruggestuurdklant, 
    rd_afgehandelklant 
FROM 
    rma_detail 
        LEFT JOIN rma 
            ON rma_detail.rd_rma_id=rma.r_id 
        LEFT JOIN klanten 
            ON rma.r_klantid=klanten.k_id 
WHERE k_id = ?

然后将其作为不同的名称返回到assoc数组中。

编辑:

如果您只想链接包含字段rd_rma_nr的第一行,那么您可以在foreach中执行简单的bool比较,如下所示:

$hasLinked=false;
foreach ($selectrmarow as $key => $value) 
{
    if($key=='rd_rma_nr' && $hasLinked==false)
    {
        echo "<td><a href='something.blahblahblah?something=somethingelse'>$value</a></td>"; 
        $hasLinked=true;
    }
    else
    {
        $value =($value == 1) ? 'JA' : $value;
        echo "<td>$value</td>"; 
    }
}

答案 1 :(得分:3)

while($selectrmarow = $selectrmadetail->fetch(PDO::FETCH_ASSOC)){
    foreach ($selectrmarow as $key => $value) {
        if ($key == "rd_tma_nr") {
            $value = "<a href='detail.php?id=".$value."'>Details of ".$value."</a>";
        }
        echo "<td>$value</td>"; 
    }
}

答案 2 :(得分:0)

你可以使用mysql的内置功能&#34; concat&#34;为了这。像这样

$select_rma_detail = $dbh->prepare ("SELECT 
    concat('<a>',rd_rma_nr,'</a>'), 
    rd_artikel_code, 
    rd_serienr, 
    rd_ontvangenklant, 
    rd_onder_waarborg, 
    rd_omr_rep, 
    rd_teruggestuurdklant, 
    rd_afgehandelklant 
FROM 
    rma_detail 
LEFT JOIN rma ON 
    rma_detail.rd_rma_id=rma.r_id 
LEFT JOIN klanten ON 
    rma.r_klantid=klanten.k_id 
WHERE 
    k_id = ?");

更新: - 您可以随时更改查询作为您的要求,如下所示: -

$ select_rma_detail = $ dbh-&gt; prepare(&#34; SELECT     concat(concat(&#39;&#39;),rd_rma_nr,&#39;&#39;),     rd_artikel_code,     rd_serienr,     rd_ontvangenklant,     rd_onder_waarborg,     rd_omr_rep,     rd_teruggestuurdklant,     rd_afgehandelklant 从     rma_detail LEFT JOIN rma ON     rma_detail.rd_rma_id = rma.r_id LEFT JOIN klanten ON     rma.r_klantid = klanten.k_id 哪里     k_id =?&#34;);

注意: - &#34; primary_key&#34;是您想要值的列名。

答案 3 :(得分:-1)

试试这个

$cnt=0;
foreach ($selectrmarow as $key => $value) {
  $cnt+=1;
  if($cnt==1)
  {
      echo "<td><a>".$value."</a></td>";
  }  
  else
  {
      echo "<td>".$value."</td>";
  }  

}

更新2:

foreach ($selectrmarow as $key => $value) {
  if($key=="rd_rma_nr")
  {
      echo "<td><a href='some_link'>".$value."</a></td>";
  }  
  else
  {
      echo "<td>".$value."</td>";
  }  

}