2010-04-20 56 views
0
<?php> 
while($row = mysql_fetch_array($result2)) 
     { 
     echo "<tr>"; 
     echo "<td>" . $row['IDNO'] . "</td>"; 
    echo "<td>" . $row['ADDRESS'] . "</td>"; 
     echo "<td>" . $row['LASTNAME'] . "</td>"; 
     echo "<td>" . $row['FIRSTNAME'] . "</td>"; 
      echo "<td>" . <a href='update.php'>view</a> . "</td>"; 

     echo "</tr>"; 
     } 
    echo "</table>"; 
    } 
?> 

这是我的代码,我真的不知道PHP标签内把链接的格式正确:如何把链接在PHP

echo "<td>" . <a href='update.php'>view</a> . "</td>"; 

请帮

+0

为什么这个问题被认为是负面的..虽然这个问题是愚蠢的,但罚款...没有什么大不了的投票否定 – 2010-04-20 08:49:08

+2

@piemesons:可能的原因是downvotes可能是OP的问题历史,其中包含几个有关PHP脚本语法错误的问题。这可能会导致人们认为他/她对学习没有真正的兴趣。不过,这是一个猜测,因为我没有在这里抛出任何低估。 – 2010-04-20 08:55:12

+1

@JørnSchou-Rode可能你的观点是正确的,但那个人有675分......仍然至少它不应该被投票..这就是我想说... – 2010-04-20 10:27:47

回答

5

PHP是一种模板语言,没有必要在字符串中使用HTML。

<?php while ($row= mysql_fetch_array($result2)) { ?> 
    <tr> 
     <td><?php echo htmlspecialchars($row['IDNO']); ?></td> 
     <td><?php echo htmlspecialchars($row['ADDRESS']); ?></td> 
     <td><?php echo htmlspecialchars($row['LASTNAME']); ?></td> 
     <td><?php echo htmlspecialchars($row['FIRSTNAME']); ?></td> 
     <td> 
      <a href="update.php?idno=<?php echo urlencode($row['IDNO']); ?>">view</a> 
     </td> 
    </tr> 
<?php } ?> 

请注意使用HTML转义。否则,字符串中的<&字符将被复制到原始HTML中,从而导致潜在的跨站点脚本安全问题。无论是使用PHP模板还是将字符串粘在一起,总是使用HTML转义纯文本输出。

+0

非常好的一点,但我会使它略有不同:将htmlspecialchars在业务逻辑部分立即应用到整个数组中,并使用短的开放标签,因此该行变得与'​​<?= $ row ['FIRSTNAME']?>' – 2010-04-20 08:46:52

+3

'一样整齐我不同意。 'htmlspecialchars'是一个关于如何在HTML中显示文本的问题,因此与应用程序的业务逻辑相比,它与模板相关的内容要多得多。将会有混合的变量和数组在页面上结束;试图将它们分开放置在页面上,你很可能会错过一些。另外,因为你已经消化了这些值,所以你不能在模板中进行像'<?php if($ row ['ADDRESS'] ==''){?>'这样的测试。 – bobince 2010-04-20 09:59:23

+0

当然,你仍然可以减少恼人的打字量。例如,我通常定义一个函数h($ s){echo htmlspecialchars($ s,ENT_QUOTES); }'然后只是'<?php h($ text);} ?>'。 (我也认为PHP使用贬低短标签是一个错误,但我们现在仍然坚持使用它。) – bobince 2010-04-20 10:00:54

0

您的“链接”与<TD>是同一个HTML标记。因此,请对待它

4

如果您没有将带有链接的单元格的任何动态值拉入HTML中,则不必在此处进行任何字符串连接。只需将HTML打印为一个字符串:

echo "<td><a href='update.php'>view</a></td>"; 

但是,在表的每一行中都有相同的链接似乎不是很有用。也许你需要添加一个querystring参数到链接的URL?要做到这一点你需要做字符串连接。下面的例子应该让你开始(注意引号的位置):

echo "<td><a href='update.php?id=" . $row['ID'] . "'>view</a></td>"; 
6

当使用PHP,使网页,你回声出字符串几乎总是在一个HTML文档的上下文。也就是说,如果你想输出HTML链接,只需呼应它:

echo "<td><a href='update.php'>view</a></td>"; 
0

echo "<td><a href='update.php'>view</a></td>";

,或者如果你想传递参数尝试

echo "<td><a href='update.php/value=".$val."'>view</a></td>";