ホームページ ウェブフロントエンド jsチュートリアル PHP jQuery Ajax Mysql はムード表現をどのように実装しますか? function_javascript スキル

PHP jQuery Ajax Mysql はムード表現をどのように実装しますか? function_javascript スキル

May 16, 2016 pm 03:46 PM

ムードを投稿する機能は、php、jquery、ajax、mysql テクノロジーによって実装されています。まず一般的なプロセスを説明します。ユーザーがムードの 1 つをクリックすると、ホームページのindex.html ページがムード アイコンとヒストグラム関連データを取得します。バックグラウンド PHP がリクエストを送信し、PHP がユーザー Cookie (初めて送信されたかどうか) を検証し、データベース内の対応するムード フィールドの内容に 1 を追加します。成功すると、フロントエンドに戻ります。ページを作成し、インデックス ページが正常に公開されたことをホームページに伝え、ヒストグラムと統計データを調整します。

レンダリングをご覧ください:

html:

まず HTML を見て、index.html に #msg を配置して、操作結果の情報を表示します。#mood は主な操作領域で、ここで ul はムード アイコン、説明、ヒストグラム、統計情報を JavaScript を介して非同期的に読み込みます。

コードをコピー コードは次のとおりです:






    PHP
    まず、config.php 構成ファイルでデータベース接続情報とサンプル関連のパラメーターを構成します。
    $

    host="localhost";
    $db_user="root";
    $db_pass="";
    $db_name="demo";
    $link=mysql_connect($host,$db_user,$db_pass);
    mysql_select_db($db_name,$link);
    mysql_query("SET names UTF8");
    //心情说明,用半角逗号隔开
    $moodname='震惊,不解,愤怒,杯具,无聊,高兴,支持,超赞';
    //心情图标文件,用半角逗号隔开(template/images/目录)
    $moodpic='a1.gif,a2.gif,a3.gif,a4.gif,a5.gif,a6.gif,a7.gif,a8.gif';
    //统计心情柱图标最大高度
    $moodpicheight=80;
    
    ログイン後にコピー

    次に、mood.php を 2 つの部分に分割します。アクションのパラメーターを受け取ることで、最初の部分: 気分を表現する部分と、2 つ目の部分: 気分関連の情報を取得することができます。

    コードをコピー コードは次のとおりです:

    include_once("config.php");
    $action = $_GET['action'];
    if($action=='send'){ //気分を表現します
    ...
    }else{ //気分を良くする
    ...
    }

    パート 1: あなたの気分を表現します。
    ユーザーは、記事 ID や気分 ID を含む、フロントエンドからの投稿を通じて気分パラメータを送信します。まず記事が存在するかどうかを確認し、次にユーザーがこの記事について気分を投稿したかどうかを確認し、データベースを操作して、対応する気分フィールドの値を 1 に設定し、現在の気分に対応するヒストグラムの高さを計算して返します。受信用のフロントエンド js に送信します。

    $id = (int)$_POST['id']; //文章或帖子id
    $mid = (int)$_POST['moodid']; //心情id(配置文件中提供8种心情)
    if(!$mid || !$id){
     echo "此链接不存在";exit;
    }
    $havemood = chk_mood($id); //验证cookie
    if($havemood==1){
     echo "您已经表达过心情了,保持平常心有益身心健康!";exit;
    }
    $field = 'mood'.$mid; //数据表中的心情字段,分别用mood0,mood1,mood2...表示不同的心情字段
    $query = mysql_query("update mood set ".$field."=".$field."+1 where id=".$id); //对应的心情字段值+1
    if($query){
     setcookie("mood".$id, $mid.$id, time()+300); //设置cookie,为了测试我们设置cookie过期时间为300s
     $query2 = mysql_query("select * from mood where id=$id");
     $rs = mysql_fetch_array($query2);//获取该文章的心情数据
     $total = $rs['mood0']+$rs['mood1']+$rs['mood2']+$rs['mood3']+$rs['mood4']+$rs['mood5']+
    $rs['mood6']+$rs['mood7'];
     $height = round(($rs[$field]/$total)*$moodpicheight); //得到总量,并计算当前对应心情的柱状图的高度
     echo $height; //返回当前心情柱状的高度
    }else{
     echo -1; //数据出错
    }
    
    ログイン後にコピー

    ユーザーがムードを投稿したかどうかを確認するには、関数 chk_mood() を使用してユーザーの対応する Cookie が存在するかどうかを判断します。

    //验证是否提交过
    function chk_mood($id){
     $cookie = $_COOKIE['mood'.$id];
     if($cookie){
     $doit = 1;
     }else{
     $doit = 0;
     }
     return $doit;
    }
    
    ログイン後にコピー

    パート 2: 気分をつかむ
    データテーブル内の記事または投稿IDに対応するムードデータを取得することで、各ムードに対応する値(そのムードが投稿された回数として把握できる)を取得し、ヒストグラムの高さを計算し、値、名前、アイコン、高さの情報が配列に構築され、最終的に JSON 形式のデータとしてフロントエンドに返されます。

    $mname = explode(',',$moodname);//心情说明
    $num = count($mname);
    $mpic = explode(',',$moodpic);//心情图标
    $id = (int)$_GET['id']; //文章或帖子id
    $query = mysql_query("select * from mood where id=$id"); //查询对应的心情数据
    $rs = mysql_fetch_array($query);
    if($rs){
     //得到发表心情的总量
     $total = $rs['mood0']+$rs['mood1']+$rs['mood2']+$rs['mood3']+$rs['mood4']+
    $rs['mood5']+$rs['mood6']+$rs['mood7'];
     for($i=0;$i<$num;$i++){
     $field = 'mood'.$i; //字段名
     $m_val = intval($rs[$field]); //心情对应的值(次数)
     $height = 0; //柱图高度
     if($total && $m_val){
     $height=round(($m_val/$total)*$moodpicheight); //计算高度
     }
     
     $arr[] = array(
     'mid' => $i, //对应心情id
     'mood_name' => $mname[$i], //心情名称
     'mood_pic' => $mpic[$i], //图标
     'mood_val' => $m_val, //次数
     'height' => $height //柱状图高度
     );
     }
     echo json_encode($arr); //返回JSON数据
    }
    
    ログイン後にコピー

    jQuery

    この例ではすべての ajax 対話型アクションを完了するために強力な jQuery を使用しているため、jquery.js ライブラリを最初にindex.html にロードする必要があります。現在、バージョン 1.8 がリリースされています。http://jquery.com/ダウンロード。
    次に、Ajax リクエストを Mood.php に送信して、ムード リスト情報を取得し、index.html ページに表示します。

    $(function(){
     $.ajax({
     type: 'GET', //通过get方式发送请求
     url: 'mood.php', //目标地址
     cache: false, //不缓存数据,注意文明发表心情的数据是实时的,需将cache设置为false,默认是true
     data: 'id=1', //参数,对应文章或帖子的id,本例中固定为1,实际应用中是获取当前文章或帖子的id
     dataType: 'json', //数据类型为json
     error: function(){
     alert('出错了!');
     },
     success: function(json){ //请求成功后
     if(json){
     $.each(json,function(index,array){ //遍历json数据列
     var str = "<li><span>"+array['mood_val']+"</span><div class="pillar" 
    style="height:"+array['height']+"px;"></div><div class="face" 
    rel=""+array['mid']+""><img src="images/"+array['mood_pic']+"">
    <br/>"+array['mood_name']+"</div></li>";
      $("#mood ul").append(str); //将数据加入到#mood ul列表中
      }); 
     }
     }
     });
     ...
    });
    
    ログイン後にコピー

    このように、index.html にアクセスすると、ページにムードリストが読み込まれます。もちろん、最終的な配置効果を確認したい場合は、CSS も必要です。この記事では、CSS について説明しません。詳細については、ソース コードをダウンロードするか、デモをご覧ください。
    次に、対応するムード アイコンをクリックすると、アイコンが公開済みとしてマークされ、ヒストグラムの高さが変更され、続行すると公開が成功したことを示す 1 に変わります。ムードアイコンをクリックすると、公開されたことを示すメッセージが表示され、再送信できません。コードを参照してください:

    $(".face").live('click',function(){ //侦听点击事件
     var face = $(this);
     var mid = face.attr("rel"); //对应的心情id
     var value = face.parent().find("span").html();
     var val = parseInt(value)+1; //数字加1
     //提交post请求
     $.post("mood.php&#63;action=send",{moodid:mid,id:1},function(data){
     if(data>0){
     face.prev().css("height",data+"px");
     face.parent().find("span").html(val);
     face.find("img").addClass("selected");
     $("#msg").show().html("操作成功").fadeOut(2000);
     }else{
     $("#msg").show().html(data).fadeOut(2000);
     }
     });
    });
    
    
    ログイン後にコピー

    理解できない場合は、ソース コードをダウンロードしてよく読んでください。最後に、この例に必要な mysql データ テーブルの構造が添付されています。あなたの注意を払ってください。

    CREATE TABLE IF NOT EXISTS `mood` (
     `id` int(11) NOT NULL,
     `mood0` int(11) NOT NULL DEFAULT '0',
     `mood1` int(11) NOT NULL DEFAULT '0',
     `mood2` int(11) NOT NULL DEFAULT '0',
     `mood3` int(11) NOT NULL DEFAULT '0',
     `mood4` int(11) NOT NULL DEFAULT '0',
     `mood5` int(11) NOT NULL DEFAULT '0',
     `mood6` int(11) NOT NULL DEFAULT '0',
     `mood7` int(11) NOT NULL DEFAULT '0',
     PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    INSERT INTO `mood` (`id`, `mood0`, `mood1`, `mood2`, `mood3`, `mood4`, `mood5`, `mood6`, `mood7`)
    VALUES(1, 8, 6, 20, 16, 6, 9, 15, 21);
    
    ログイン後にコピー

    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    Video Face Swap

    Video Face Swap

    完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

    ホットツール

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    SublimeText3 中国語版

    SublimeText3 中国語版

    中国語版、とても使いやすい

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    SublimeText3 Mac版

    SublimeText3 Mac版

    神レベルのコード編集ソフト(SublimeText3)

    フロントエンドのサーマルペーパーレシートのために文字化けしたコード印刷に遭遇した場合はどうすればよいですか? フロントエンドのサーマルペーパーレシートのために文字化けしたコード印刷に遭遇した場合はどうすればよいですか? Apr 04, 2025 pm 02:42 PM

    フロントエンドのサーマルペーパーチケット印刷のためのよくある質問とソリューションフロントエンド開発におけるチケット印刷は、一般的な要件です。しかし、多くの開発者が実装しています...

    誰がより多くのPythonまたはJavaScriptを支払われますか? 誰がより多くのPythonまたはJavaScriptを支払われますか? Apr 04, 2025 am 12:09 AM

    スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

    javascriptの分解:それが何をするのか、なぜそれが重要なのか javascriptの分解:それが何をするのか、なぜそれが重要なのか Apr 09, 2025 am 12:07 AM

    JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

    JavaScriptを使用して、同じIDを持つArray要素を1つのオブジェクトにマージする方法は? JavaScriptを使用して、同じIDを持つArray要素を1つのオブジェクトにマージする方法は? Apr 04, 2025 pm 05:09 PM

    同じIDを持つ配列要素をJavaScriptの1つのオブジェクトにマージする方法は?データを処理するとき、私たちはしばしば同じIDを持つ必要性に遭遇します...

    Shiseidoの公式Webサイトのように、視差スクロールと要素のアニメーション効果を実現する方法は?
または:
Shiseidoの公式Webサイトのようにスクロールするページを伴うアニメーション効果をどのように実現できますか? Shiseidoの公式Webサイトのように、視差スクロールと要素のアニメーション効果を実現する方法は? または: Shiseidoの公式Webサイトのようにスクロールするページを伴うアニメーション効果をどのように実現できますか? Apr 04, 2025 pm 05:36 PM

    この記事の視差スクロールと要素のアニメーション効果の実現に関する議論では、Shiseidoの公式ウェブサイト(https://www.shisido.co.co.jp/sb/wonderland/)と同様の達成方法について説明します。

    Console.log出力の違い結果:なぜ2つの呼び出しが異なるのですか? Console.log出力の違い結果:なぜ2つの呼び出しが異なるのですか? Apr 04, 2025 pm 05:12 PM

    Console.log出力の違いの根本原因に関する詳細な議論。この記事では、Console.log関数の出力結果の違いをコードの一部で分析し、その背後にある理由を説明します。 �...

    JavaScriptは学ぶのが難しいですか? JavaScriptは学ぶのが難しいですか? Apr 03, 2025 am 12:20 AM

    JavaScriptを学ぶことは難しくありませんが、挑戦的です。 1)変数、データ型、関数などの基本概念を理解します。2)非同期プログラミングをマスターし、イベントループを通じて実装します。 3)DOM操作を使用し、非同期リクエストを処理することを約束します。 4)一般的な間違いを避け、デバッグテクニックを使用します。 5)パフォーマンスを最適化し、ベストプラクティスに従ってください。

    PowerPointはJavaScriptを実行できますか? PowerPointはJavaScriptを実行できますか? Apr 01, 2025 pm 05:17 PM

    JavaScriptはPowerPointで実行でき、外部JavaScriptファイルを呼び出したり、VBAを介してHTMLファイルを埋め込んだりすることで実装できます。 1. VBAを使用してJavaScriptファイルを呼び出すには、マクロを有効にし、VBAプログラミングの知識を持つ必要があります。 2。JavaScriptを含むHTMLファイルを埋め込みます。これは、シンプルで使いやすいが、セキュリティ制限の対象となります。利点には、拡張機能と柔軟性が含まれますが、欠点にはセキュリティ、互換性、複雑さが含まれます。実際には、セキュリティ、互換性、パフォーマンス、ユーザーエクスペリエンスに注意を払う必要があります。

    See all articles