如何将CMS PHP代码与jQuery fancybox结合起来?

时间:2012-10-26 02:03:27

标签: php jquery fancybox

我是编程的新手,试图制作简单的cms:

  

index.php显示所有文章主题,
  用户点击主题以在Fancybox中显示内容,而不是转发到新页面。

我使PHP代码有效(但是它转发到新页面),并且测试https://stackoverflow.com/a/7844043/1775888(这可以在地址栏中创建Fancybox内容自己的URL)也可以。

我无法想出如何将它们结合起来?


我之前尝试过:在PHP中更改href,单击主题$ _GET [id]而不是isset然后无法获取查询..

任何建议我真的很感谢你抽出时间。


PHP(index.php)

if(isset($_GET[id])){
    $id=mysql_real_escape_string($_GET["id"]);
    $sql="select * from $table where id='$id'";
    $query=mysql_query($sql) or die(mysql_error());
    while($list=mysql_fetch_array($query)){
            print"
<div class=\"contentwrap\" align=\"center\">
    <div class=\"content\">\"$list[content]\"</div>
</div>
    ";
        }
}
else{
    $sql="select * from $table order by id desc";
    $query=mysql_query($sql) or die(mysql_error());
    while($list=mysql_fetch_array($query)){
            print"
<div class=\"subjectwrap\" align=\"center\">
    <div class=\"subject\"><a href=\"index.php?id=$list[id]\">$list[subject]</a></div>
</div>
    ";
    }
}

jQuery(来自https://stackoverflow.com/a/7844043/1775888

function showfancybox(id) {
    switch(id) {
        case '#_name':

        $(id).show();

        $.fancybox({
            href: id,
            type:'inline',


            onClosed: function() {
                $(id).hide();
            }
        });
    break;
    }
}

showfancybox(location.hash);

$('a.flink').click(function(e){
    showfancybox($(this).attr('href')); 
});


编辑:
我改变代码让$ list [content]加载并显示:none 进入index.php,获取消息:无法加载请求的内容。请稍后再试。

<?php
$sql="select * from $table order by id desc";
    $query=mysql_query($sql) or die(mysql_error());
    while($list=mysql_fetch_array($query)){
        print"
    <div class=\"subjectwrap\">
        <div class=\"subject\"><a class=\"flink\" href=\"#$list[id]\">$list[subject]</a></div>
    </div>
    ";
    print"
<div class=\"atc\" id=\"$list[id]\">
    <div class=\"contentwrap\" align=\"center\">
        <div class=\"content\">\"$list[content]\"</div>
    </div>
</div>
    ";
    }
?> 

<script type="text/javascript">
$(function(){
function showfancybox(id) {
    switch(id) {
        case '<?php "#$list[id]" ?>':

        $(id).show();

        $.fancybox({
            href: id,
            type:'inline',

            onClosed: function() {
                $(id).hide();
            }
        });
    break;
    }
}

showfancybox(location.hash);

$('a.flink').click(function(e){
    showfancybox($(this).attr('href')); //make href to id
});         
});
</script>

2 个答案:

答案 0 :(得分:0)

尝试调用e.preventDefault();在您调用其他功能之前的Click事件中,并且a标签未分配您在选择器中使用的flink类

也在你的get ['id']上调用intval()而不是escape_string,

答案 1 :(得分:0)

对不起,但我不回答你的问题。你的代码似乎都错了。

例如,你甚至知道为什么你有这条线? -

case '<?php "#$list[id]" ?>':

您认为它是什么?您认为它如何执行?这是JavaScript循环中的JavaScript片段吗?如果是,那么您将获得具有相同名称的多个函数。

除此之外,如果您的目标是基于url哈希打开/关闭fancyBox,那么我建议使用(很快将公开发布)历史帮助器,请参阅此示例 - http://jsfiddle.net/FB7UW/show/light/(http:// jsfiddle达网络/ FB7UW /)