我正在执行一个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 NUMBER的所有信息的详细页面?如果我不使用foreach,我知道怎么做,但是用foreach可以吗?
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>";
}
}
您需要更改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>";
}
}
编辑:更新select查询:
您的查询只选择一列称为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 = ?
,然后将其作为另一个名称返回到关联数组。
编辑:如果您只想链接包含字段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>";
}
}
你可以使用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_rma_detail = $dbh->prepare ("SELECTconcat (concat()、rd_rma_nr),rd_artikel_code,rd_serienr,rd_ontvangenklant,rd_onder_waarborg,rd_omr_rep,rd_teruggestuurdklant,rd_afgehandelklant从rma_detail左连接rma ONrma_detail.rd_rma_id = rma.r_id左加入克兰登rma.r_klantid = klanten.k_id在哪里
注意:- "primary_key"是你想要的值的列名
try this
$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>";
}
}