【问题标题】:PHP: keeping track of array elements from a search queryPHP:跟踪搜索查询中的数组元素
【发布时间】:2011-10-19 04:33:25
【问题描述】:

我建立了一个简单的数据库,其中页面显示随机选择的引号,这些引号显示在无序列表中。一个 js 脚本循环遍历每个列表项,一次显示一个。

这是查询循环:

while ($row = mysql_fetch_assoc($query)) {
    echo "<li><span id='id'>";
    // print the quote number
printf ("%s", $row['id']);
    echo "</span>&nbsp;<span id='quote'>";
    // print the quote
printf ("%s", $row['strategy']);
    echo "</span>&nbsp;<span id='author'>";
    // print the quote author
    printf ("by %s", $row['author']);
    echo "</span></li>";

}

到目前为止一切顺利。我的问题是如何显示喜欢和不喜欢的数量,并让用户对其进行“投票”。一旦像这样打印出来,我无法弄清楚如何保持数组数据处于活动状态。我可以使用计数器来跟踪 PHP 中的行元素,这样我就可以知道用户投票的报价是什么?

谢谢!

【问题讨论】:

    标签: php arrays loops counter


    【解决方案1】:

    您的代码很难阅读,所以我重写了它。您想使用报价 ID 号来访问有关报价的其他数据。 Dhruv 的示例是使用元素 id 并使用 javascript 获取数据的好方法。但是对于某些事情,您可能希望在服务器上处理更多的事情。

    // assume the numbers I'm using are valid quote ids
    $like_array=array(12=>'15 likes', 14=>'2 likes', 18=>'6 likes');
    
    $output ='';
    
    while ($row = mysql_fetch_assoc($query)) {
        $output .= "<li><span id='id'>{$row['id']}</span>&nbsp;";                     // quote number
        $output .= "<span id='quote'>{$row['strategy']}</span>&nbsp;";                // print the quote
        $output .= "<span id='author'>by {$row['author']}</span></li>";               // print the quote author
        $output .= '<a href="http://somelink.com/page.php?like='.$row['id'].'"></a>'; // like link
        $output .= '<span>Number of likes: '.$like_array[$row['id'].'</span>';        // like link
     }
    
     echo $output;
    

    您可以看到,like 链接只是将引用的 id 作为 $_GET 变量传递的链接。对于喜欢的数量部分,假设我们已经拥有该信息,并且它已经在一个数组中,索引键是报价 ID。 (这就是 $like_array)

    这只是基本的想法,但应该能让你朝着正确的方向前进。

    【讨论】:

    • 语法错误(和@DhruvPathak)-谢谢大家,我会尝试这两种方法。
    【解决方案2】:

    您可以在行中回显数据库主键或索引号作为 id。 然后javascript可以很容易地检测出哪个元素被投票了。

    例子:

    while ($row = mysql_fetch_assoc($query)) {
        echo "<li><span id='id'>";
        // print the quote number
    printf ("%s", $row['id']);
        echo "</span>&nbsp;<span id='quote'>";
        // print the quote
    printf ("%s", $row['strategy']);
        echo "</span>&nbsp;<span id='author'>";
        // print the quote author
        printf ("by %s", $row['author']);
        echo "</span>";
        echo "<a id='votelink_'".$row['id']."href='javascript:void(0);' onclick='checkVote(this.id);' > VOTE HERE   </a>";    
      echo "</li>";
    
    }
    

    Javascript:

    function checkVote(theId)
    {
       alert("Element with id = " + theId + " was voted" );
    }
    

    【讨论】:

      猜你喜欢
      • 2015-07-17
      • 1970-01-01
      • 2015-03-17
      • 2020-03-14
      • 1970-01-01
      • 2015-10-29
      • 1970-01-01
      • 1970-01-01
      • 2017-12-16
      相关资源
      最近更新 更多