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

Php 从数组中的第一个$value创建HTML链接,php,arrays,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

我正在执行一个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>"; 
    }
}

如何将
rd\u tma\u nr
放入链接
,以便创建包含该RMA编号所有信息的详细页面?如果我不使用foreach编写,我知道该怎么做,但是可以使用foreach吗?

您需要更改您的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数组中

编辑:

如果您只想链接包含字段
rd\u rma\u nr
的第一行,那么您可以在foreach中执行简单的布尔比较,如下所示:

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 = ?
$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>"; 
    }
}
$hasLinked=false;
foreach($selectrRow作为$key=>$value)
{
如果($key='rd\u rma\u nr'&&$hasLinked==false)
{
回声“;
$hasLinked=true;
}
其他的
{
$value=($value==1)?'JA':$value;
回显“$value”;
}
}

您需要更改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数组中

编辑:

如果您只想链接包含字段
rd\u rma\u nr
的第一行,那么您可以在foreach中执行简单的布尔比较,如下所示:

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 = ?
$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>"; 
    }
}
$hasLinked=false;
foreach($selectrRow作为$key=>$value)
{
如果($key='rd\u rma\u nr'&&$hasLinked==false)
{
回声“;
$hasLinked=true;
}
其他的
{
$value=($value==1)?'JA':$value;
回显“$value”;
}
}
试试这个

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

}
$cnt=0;
foreach($selectrRow作为$key=>$value){
$cnt+=1;
如果($cnt==1)
{
回声“;
}  
其他的
{
回显“$value.”;
}  
}
试试这个

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

}
$cnt=0;
foreach($selectrRow作为$key=>$value){
$cnt+=1;
如果($cnt==1)
{
回声“;
}  
其他的
{
回显“$value.”;
}  
}
while($selectrmarow=$selectrmadetail->fetch(PDO::fetch_ASSOC)){
foreach($selectrRow作为$key=>$value){
如果($key==“rd\U tma\U nr”){
$value=“”;
}
回显“$value”;
}
}
while($selectrmarow=$selectrmadetail->fetch(PDO::fetch_ASSOC)){
foreach($selectrRow作为$key=>$value){
如果($key==“rd\U tma\U nr”){
$value=“”;
}
回显“$value”;
}
}

您可以使用mysql的内置功能“concat”来实现这一点。像这样

$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\u rma\u detail=$dbh->prepare(“选择
concat('',rd_rma_nr''),
rd_artikel_代码,
里恩尔,
罗登万肯克兰特,
卢昂德瓦阿博格,
rd_omr_代表,
第三次建议,
阿夫格汉德克兰特酒店
从…起
军事革命详情
左加入军事革命
rma\U详细信息。rd\U rma\U id=rma.r\U id
左接克兰滕
rma.r_klantid=klanten.k_id
哪里
k_id=?”;
更新:- 您始终可以根据需要更改查询,如下所示:-

$select\u rma\u detail=$dbh->prepare(“选择 康卡特公司(康卡特(“”),研发部,“”), rd_artikel_代码, 里恩尔, 罗登万肯克兰特, 卢昂德瓦阿博格, rd_omr_代表, 第三次建议, 阿夫格汉德克兰特酒店 从…起 军事革命详情 左加入军事革命 rma\U详细信息。rd\U rma\U id=rma.r\U id 左接克兰滕 rma.r_klantid=klanten.k_id 哪里 k_id=?”


注意:-“primary_key”是您需要其值的列名。

您可以使用mysql的内置功能“concat”来实现此目的。像这样

$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\u rma\u detail=$dbh->prepare(“选择
concat('',rd_rma_nr''),
rd_artikel_代码,
里恩尔,
罗登万肯克兰特,
卢昂德瓦阿博格,
rd_omr_代表,
第三次建议,
阿夫格汉德克兰特酒店
从…起
军事革命详情
左加入军事革命
rma\U详细信息。rd\U rma\U id=rma.r\U id
左接克兰滕
rma.r_klantid=klanten.k_id
哪里
k_id=?”;
更新:- 您始终可以根据需要更改查询,如下所示:-

$select\u rma\u detail=$dbh->prepare(“选择 康卡特公司(康卡特(“”),研发部,“”), rd_artikel_代码, 里恩尔, 罗登万肯克兰特, 卢昂德瓦阿博格, rd_omr_代表, 第三次建议, 阿夫格汉德克兰特酒店 从…起 军事革命详情 左加入军事革命 rma\U详细信息。rd\U rma\U id=rma.r\U id 左接克兰滕 rma.r_klantid=klanten.k_id 哪里 k_id=?”


注意:-“primary_key”是您想要获取其值的列名。

由于OP已经从assoc数组中获取了键,您最好检查要返回的列的名称,而不是使用要返回的第一列。这与我提供的答案没有什么不同,是吗(由于OP已经从assoc数组中获取了密钥,您最好检查要返回的列的名称,而不是使用要返回的第一列。这与我提供的答案没有什么不同,是吗?:(+1代表所有人,但仍然不能100%工作,因为现在我的表中的rd_rma_nr是第1列和第2列的2倍。老实说,我的第一个想法是这样的,但我已经意识到双列的问题。我已经尝试添加unset($selectrRow['rd_rma_nr'));在其他人面前,但仍然没有luck@Raz3rt您所做的编辑不是对PDO:Fetch的打印,而是对整个记录集的打印。您发布的查询中没有任何内容会为每一行返回这样的数组。如果代码中没有任何内容将行从数据库追加到ar,为什么要显示数组雷?这就像你在运行一个fetchall而不是fetch?也许我上面的问题还不太清楚。当我现在看我的表格时,我看到了两次rd_________________________________________________我唯一使用过的是->获取(PDO::获取\ U ASSOC)。