【问题标题】:Produce dynamic link from array从数组生成动态链接
【发布时间】:2015-05-23 21:08:22
【问题描述】:

我有一个搜索页面,效果很好。搜索结果显示在带有 tr hover 和 window.location 的表格中,以将用户带到不同的页面。

我想要实现的是基于数组数据的 window.location 的动态链接。 db中的所有数据都属于4个不同的类别,testkat,我想根据testkat的值将用户引导到正确的页面,然后使用'testid'填写数据。

我一直在尝试多种方法来实现我的目标,并搜索了 SE、Google 等,但没有运气。我对 PHP 很陌生,所以使用正确的搜索词可能与它有关。

从我的角度来看,我认为我必须将 testkat 的值存储在一个变量中,比如说 $link。然后从那里做一个 IF 语句,比如:

if ($results('testkat') == 'something') {
$link = "something.php?id='$testid'";
}

if ($results('testkat') == 'something_else') {
$link = "something_else.php?id='$testid'";
}
  • 然后将 $link 放在 window.location 中

这是我的代码:

<?php
$conn = mysql_connect("localhost", "root", "") or die("Couldn't do it: ".mysql_error());
mysql_select_db("db") or die(mysql_error());
mysql_set_charset('utf8',$conn); 


$query = $_POST['query'];  
$query = htmlspecialchars($query); 
$query = mysql_real_escape_string($query);

$raw_results = mysql_query("SELECT * FROM db WHERE (`id` LIKE '%".$query."%') OR (`name` LIKE '%".$query."%') OR (`age` LIKE '%".$query."%')") or die(mysql_error());
$count = mysql_num_rows($raw_results);

if(isset($_POST['query'])) {

    echo "<br>";
    echo "Your search for <span class=\"bold\">" .$query. "</span> returned " . $count . " hits";
    echo "<br>";

if(mysql_num_rows($raw_results) > 0){ 

        echo "<br>";
        echo "<table class=\"tbl-text\">";
        echo "<tr class=\"tablelist\"><th>Heading 1</th><th>Heading 2</th><th>#</th><th>Heading 3</th><th>Heading 4</th><th>Heading 5</th>";

    while($results = mysql_fetch_array($raw_results)){

        echo "<tr onclick=\"window.location='#'\" style=\"cursor:pointer\" class=\"tr-hover\">";
        echo "<td class=\"bordered\">" .$results['testid'] . "</td>";
        echo "<td class=\"bordered\">" .$results['testkat'] . "</td>";
        echo "<td class=\"bordered\">" .$results['intnr'] . "</td>";
        echo "<td class=\"bordered\">" .$results['pro'] . "</td>";

    }
        echo "</table>";
    }

    else{ 

    }
    }
    ?>

更新: 忘了告诉错误。当按照我认为应该这样做的方式执行此操作时,我在 IF 语句中收到一条错误消息:致命错误:函数名称必须是字符串。

参考这个:

if ($results('testkat') == 'something') {
$link = "something.php?id='$testid'";
}

我知道 MySQLi 和 PDO,正在研究它。 渴望学习,因此非常感谢任何提示和技巧:)

克里斯

【问题讨论】:

  • 没有评论的意思.. 而是回答!

标签: php mysql arrays dynamic


【解决方案1】:

那个方法看起来不错。你不需要 $testid 周围的单引号

$link = "something_else.php?id=$testid";

正如你所说,你应该停止使用 mysql,开始学习 :)

【讨论】:

  • 您的网址中没有引号,因此不需要
【解决方案2】:

设法修复它,如果其他人遇到同样的问题,请发布。 首先,将整个内容重写为 MySQLi。 然后我在 WHILE LOOP 之后放了一个 IF 语句,如下所示:

连接到数据库 ->

if(isset($_POST['query'])) {

$query = $_POST['query'];  
$query = htmlspecialchars($query);

$sql = $db->query("SELECT * FROM db WHERE (`?` LIKE '%".$query."%') OR (`?` LIKE '%".$query."%') OR (`?` LIKE '%".$query."%')");
$result = mysqli_query($db, sql);
$hits = $sql->num_rows;

echo "<br>";
echo "Your search for <span class=\"bold\">" .$query. "</span> returned " . $hits . " results";
echo "<br>";

if($sql->num_rows > 0){

echo "<br>";
echo "<table class=\"tbl-text\">";

while ($row = mysqli_fetch_array($sql)) {

if ($row['category'] == 'cat01'){
    $link = 'cat01.php?id=' . $row['testid'] . '';
}

if ($row['category'] == 'cat02'){
    $link = 'cat02.php?id=' . $row['testid'] . '';
}

if ($row['category'] == 'cat03'){
    $link = 'cat03.php?id=' . $row['testid'] . '';
}

if ($row['category'] == 'cat04'){
    $link = 'cat04.php?id=' . $row['testid'] . '';
}

echo "<tr onclick=\"window.location='$link'\" style=\"cursor:pointer\" class=\"tr-hover\">";
echo "<td class=\"bordered\">" .$row['testid'] . "</td>";
>>> more echo
}

可能有更有效的方法可以做到这一点,但至少我得到了我想要的结果,而且现在使用 MySQLi 的脚本也更加安全

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 2017-02-16
    • 1970-01-01
    • 1970-01-01
    • 2011-12-09
    • 2019-05-25
    相关资源
    最近更新 更多