【问题标题】:PHP button stops working when if / elseif is triggered当 if / elseif 被触发时 PHP 按钮停止工作
【发布时间】:2014-02-25 14:32:55
【问题描述】:

我正在尝试回显一个按钮以将默认 div 中的歌曲添加到播放列表中:

    <?php
        include('dbcon.php');
            if(isset($_REQUEST['all']) && $_REQUEST['all'] != ''){
                    //===============================Button "ALL"====================================
                    unset($_REQUEST['kw']);
                    unset($_REQUEST['genre']);

                    $query = "select * from music";
                    $result = mysqli_query($link, $query) or die (mysqli_error());
                    echo "<ul>";
                    while($info = mysqli_fetch_array( $result )){
                        echo '<li><button type="button" class="addtoplaylist" action="../js/addtoplaylist.js">Add to playlist!</button> '.$info['artist'].' - '.$info['title'].' ('.$info['album'].') '.'<hr /></li>';
                    };
                    echo "</ul>";
                }elseif (isset($_REQUEST['kw']) && $_REQUEST['kw'] != ''){
                    //============================= Search for music ================================
                    $kws = $_REQUEST['kw'];
                    $kws = mysqli_real_escape_string($link, $kws);

                    $query = "select * from music where title like '%".$kws."%' or artist like '%".$kws."%'";
                    $result = mysqli_query($link, $query) or die (mysqli_error($link));
                    echo "<ul>";
                    while($info = mysqli_fetch_array( $result )){
                        echo '<li><button type="button" class="addtoplaylist" action="../js/addtoplaylist.js">Add to playlist!</button> '.$info['artist'].' - '.$info['title'].' ('.$info['album'].') '.'<hr /></li>';
                    };
                    echo "</ul>";
                }elseif(isset($_REQUEST['genre']) && $_REQUEST['genre'] != ''){
                    //=====================================Browse By Genre ===========================================
                    $genre = $_REQUEST['genre'];
                    $genre = mysqli_real_escape_string($link, $genre);
                    $gquery = "select music_id from musicgenre where genre_id = '$genre'";
                    $results = mysqli_query($link, $gquery) or die (mysqli_error($link));
                    $music=array();
                    while($id_result = mysqli_fetch_array($results)){
                        $music[] = $id_result['music_id'];
                    };
                    foreach($music as $song){
                        $query = "select * from music where music_id = '$song'";
                        $result = mysqli_query($link, $query) or die (mysqli_error());;
                        echo "<ul>";
                        while($info = mysqli_fetch_array($result)){
                            echo '<li><button type="button" class="addtoplaylist" action="../js/addtoplaylist.js">Add to playlist!</button> '.$info['artist'].' - '.$info['title'].' ('.$info['album'].') '.'<hr /></li>';
                        };
                        echo "</ul>";
                    };
                }else{
                // ================================ Default =========================================

                    $query = "select * from music";
                    $result = mysqli_query($link, $query) or die (mysqli_error());
                    echo "<ul>";
                    while($info = mysqli_fetch_array( $result )){
                        echo '<li><button type="button" class="addtoplaylist" action="../js/addtoplaylist.js">Add to playlist!</button> '.$info['artist'].' - '.$info['title'].' ('.$info['album'].') '.'<hr /></li>';
                    };
                    echo "</ul>";
            };

?>

这是 jquery 文件,女巫实际上是这样做的:

$(document).ready(function(){
    $(".addtoplaylist").click(function(){
        var $value = $(this);
        var $container = $value.parent();
        $container.appendTo("#playlist");
        $value.remove();

    })
})

所以事情就是这样。当我第一次加载页面时(比如写 url 并按下回车键)一切正常,所有按钮和东西,但只要我点击一个类别或任何其他触发 if/elseif/else 语句的东西,我的按钮就会停止在职的。

有人可以帮我理解问题可能是什么吗?我在分页结束之前遇到了这个问题,最终删除了整个代码,因为我似乎找不到答案。在分页代码中,当我点击任何触发开关的东西时,我的按钮消失了。我得到了所有应该得到的结果,所以这部分工作得很好,但是这个按钮的东西让我发疯了。我尝试了我能想到的一切。

【问题讨论】:

    标签: php jquery button if-statement


    【解决方案1】:

    你以错误的方式使用 switch 语句,使用 if-elseif 语句:

    if (isset($_REQUEST['all']) && $_REQUEST['all'] != '') {
        //Stuff
    } elseif (isset($_REQUEST['kw']) && $_REQUEST['kw'] != '') {
        //Stuff
    } elseif ....
    

    switch语句检查一个变量是否等于一个值:

    $name = 'Alberto';
    switch($name) {
      case 'Alberto':
         //We're here now
         break;
      case 'John':
         //Nothing to do here for the moment
         break;
      default:
         //Stuff for every values of $name that are different from 'Alberto' or 'John'
     }
    

    所以你需要改变你的代码逻辑来使用它

    【讨论】:

    • 我也试过了,这是我的第一选择,但同样的事情发生了。
    • 你在哪里实现@playlist div?
    • 播放列表 div 在同一页面上,就像我说的,如果它是默认设置,在我单击任何内容触发 switch(或 if/elseif)语句之前,它应该正常工作。
    • 我也添加了 html 部分 :)
    【解决方案2】:

    解决了。问题是我的结果是 ajax 生成的,所以我只需要复制 jquery 部分并将其添加到成功函数中的 ajax 中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多