1

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

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

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

我不知道如何组合它们?


我之前尝试过:更改 PHP 中的 href,单击主题 $_GET[id] not 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] 加载并显示:无。
进入 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>
4

2 回答 2

0

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

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

于 2012-10-26T03:27:24.970 回答
0

我很抱歉,但我不知道如何回答你的问题。您的代码似乎都是错误的。

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

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

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

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

于 2012-10-26T05:37:54.490 回答