1

私はプログラミングが初めてで、単純なcmsを作成しようとしています:

index.php はすべての記事の件名を表示し、
ユーザーは件名をクリックして Fancybox にコンテンツを表示し、新しいページに転送しません。

PHPコードを機能させました(ただし、新しいページに転送されます)、テストhttps://stackoverflow.com/a/7844043/1775888(これにより、アドレスバーにFancyboxコンテンツ独自のURLを作成できます)も機能します。

それらを組み合わせる方法がわかりませんか?


私は前にこれを試します:PHPでhrefを変更し、件名$_GET[id]が設定されていない場合、クエリを取得できません..

時間を割いていただきありがとうございます。


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] の読み込みと display: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>
4

2 に答える 2

0

e.preventDefault(); を呼び出してみてください。他の関数を呼び出す前にクリックイベントで、セレクターで使用している flink クラスがタグに割り当てられていません

また、エスケープ文字列の代わりに get['id'] で intval() を呼び出します。

于 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 に答える