1

私は自分の問題の解決策に苦労しています。私はコードを作成し、PHP で正常に動作しますが、これをエンド ユーザーにとってより適切に機能するソリューションに進化させたいと考えています。

アクションを確認または拒否するための一連のリンクがあります。ユーザーが「確認」/「拒否」をクリックしたら、AJAX を使用して値を db に保存liし、jQuery でアニメーション化します。

現時点では、URL にリダイレクトする php を使用しています。ヘルプ/ガイダンスをいただければ幸いです。

私のコードは次のとおりです。

リンク

           <?php    

            $friend_unconfirmed_from_them = mysql_query('
            SELECT * from wallfriends 
            where mem_id_to ='.$USER->id.' AND confirm = 0
            '); //unconfirmed friends to logged in user ($USER->id)

        while ($friendrequest = mysql_fetch_array($friend_unconfirmed_from_them, MYSQL_ASSOC)) { 


        $senders_name = mysql_query('
            SELECT firstname, lastname from mdl_user 
            where id = '.$friendrequest['sender'].'
            '); //get unconfirmed friends name

        while ($sender = mysql_fetch_array($senders_name, MYSQL_ASSOC)) { 
            ?>

        <li><?php echo $sender['firstname'].'&nbsp;'.$sender['lastname']; 
            }?>            
        <a href="confirmfriend.php?userid=<?php echo $friendrequest['sender']; ?>">Confirm Link</a>
        &nbsp;<a href="removefriend.php?userid=<?php echo $friendrequest['sender']; ?>">Deny Link</a></li> 
//echo each friend in li with confirm deny links
            <?php } ?>

        </ul>  

確認友人.php

$userid = optional_param('userid', 0, PARAM_INT);


$connection = mysql_connect("localhost", "root", "on10n") or die ("Unable to connect!");   
mysql_select_db("fe") or die ("Unable to select database!");    
$query = "UPDATE wallfriends SET confirm = 1 WHERE mem_id_to = '$USER->id' AND mem_id_from = '$userid'";    

$result = mysql_query($query) or die ("Error in query: $query. ".mysql_error()); 
if (!$result){
    echo "There were errors :<br>". mysql_error();
} 
else{ 
redirect($siteUrl.'/profile.php?userid='.$userid.'');
die;  
}

denyfriend.php

$userid = optional_param('userid', 0, PARAM_INT);


$connection = mysql_connect("localhost", "root", "on10n") or die ("Unable to connect!");   
mysql_select_db("fe") or die ("Unable to select database!");    

$query = "DELETE FROM wallfriends 
WHERE (mem_id_from = '$USER->id' OR mem_id_from = '$userid') 
AND (mem_id_to = '$USER->id' OR mem_id_to = '$userid') 
";    

$result = mysql_query($query) or die ("Error in query: $query. ".mysql_error()); 

if (!$result){
    echo "There were errors :<br>". mysql_error();
} 
else{ 
redirect($siteUrl.'/profile.php?userid='.$userid.'');
die;  
}
4

3 に答える 3

3

jQuery AJAX関数について読む必要があります。$.ajaxおよび/または $.post 関数に興味があるかもしれません。これらの関数はすべて、目的の要素を非表示(またはfadeOut ) できる成功/失敗のコールバックを提供します。

基本的に、必要なデータをページから取得して jQuery 関数に渡すだけです。PHP 関数は既に本来の機能を実行しているため、jQuery の機能を理解すれば、これは簡単な作業で済みます。

于 2012-07-16T10:36:45.200 に答える
2

これにはjQuery-Ajaxを使用できます。

例えば

ユーザーインターフェイスのHTMLコード

<li><?php echo $sender['firstname'].'&nbsp;'.$sender['lastname']; 
            }?>            
        <a id="confirm" data-userid="<?php echo $friendrequest['sender']; ?>">Confirm Link</a>
        &nbsp;<a id="deny" data-userid="<?php echo $friendrequest['sender']; ?>">Deny Link</a></li> 

jQuery-Ajax

      $(document).ready(function(){
         $("#confirm").click(function(e){

        $.ajax("confirm.php?userid=" + $(this).attr("data-userid"), {
                   complete: function() {
                      $(this).parent().fadeOut();
                   }
        });

        e.preventDefault();
        });
         $("#deny").click(function(e){
        $.ajax("deny.php?userid=" + $(this).attr("data-userid"), {
                   complete: function() {
                      $(this).parent().fadeOut();
                   }
        });
    e.preventDefault();
        });
});

私はコードをテストしませんでした。それがアイデアを与えることを願っています。

于 2012-07-16T10:50:28.277 に答える
1

javascript が表示されておらず、アンカーがページを confirmfriend.php/removefriend.php にスローします。

また、複数のネストされたアンカー タグがあります (必ず で閉じてください</a>) 。

望ましい結果を得るには、次のようにします。

<li>
  <a href="javascript:void(0);" class="confirm friendaction"
      data-userid="<?php echo $friendrequest['sender'];>">Confirm</a>
</li><li>
  <a href="javascript:void(0);" class="remove friendaction"
      data-userid="<?php echo $friendrequest['sender'];>">Remove</a>
</li>

onclick をアンカーにフックし、AJAX リクエストを送信するスクリプトが続きます。

<script>
   $('.friendaction').click(function() {
       var id = this.getAttribute('data-userid'),
           url = this.className.match("confirm") 
              ? "confirmfriend.php" 
              : "removefriend.php", 
           liReference = $(this).parent();
       $.ajax(url + "?userid=" + id, {
           complete: function() {
              $(liReference).fadeOut();
           }
       });
   });
</script>
于 2012-07-16T10:43:41.617 に答える