記録

2桁になると数字と文字でバグる非同期通信の穴。MYSQLめ!!

<!doctype html>
<html lang="ja">
<head>
  <meta charset="utf-8">
  <title>2桁になると数字と文字でバグる非同期通信の穴。MYSQLめ!!</title>
  <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=10.0, user-scalable=yes">
  <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
  <script src="//code.jquery.com/jquery-1.10.2.js"></script>
  <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
  <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/i18n/jquery-ui-i18n.min.js"></script>
   <script>
  $(function() {
        hoge(0);
  });
  function hoge(cnt){
    $.ajax({
       type: "POST",
       url: "json.php",
       data:{
           cnt:cnt
       },
       dataType: 'json',
       success: function(obj){
           var cnt = Number(obj.cnt);
           var id_name = obj.id_name;
           $("#id_no").html(cnt);
           $("#id_name").html(id_name);
            if(id_name!=""){
                 hoge(++cnt);
             }else{
                 alert("もうねぇよ━━━(゚∀゚≡(゚∀゚≡゚∀゚)≡゚∀゚)━━━━!!")
             }
       }
    });
  }
  </script>
</head>
<body>
No:<span id="id_no"></span>ID:NAME:<span id="id_name"></span>
</body>
</html>
<?php
//json.php
$cnt = $_POST["cnt"];
$link = mysql_connect('localhost', 'user', 'pass');
if (!$link) {
    die('接続失敗です。'.mysql_error());
}
$db_selected = mysql_select_db('database_name_hoge', $link);
if (!$db_selected){
    die('データベース選択失敗です。'.mysql_error());
}
//$result = mysql_query('SELECT * FROM where id_no =' . $cnt);
$result = mysql_query('SELECT * FROM where id_no =' . intval($cnt));
if (!$result) {
    die('クエリーが失敗しました。'.mysql_error());
}
$row = mysql_fetch_assoc($result);
$obj["id_name"] = $row['id_name'];
$obj["cnt"] = $cnt;
$json = json_encode($obj);
echo $json;
上記のソースはおそらく正しく動くであろうコードです。 このコードで何がしたいのかを解説していきます。 このHTML(index.html)が呼ばれたら(表示されたら)、 再帰処理がかかりPHPが動作してデータベースのテーブルから 主キーのid_no(int型)を検索しid_name(text型)を参照し jsonで値を返して、受け取り表示するというものです。 簡単なプログラムですが、MYSQLに問い合わせをするときに ちゃんとint型に変換してあげないと2桁なるとバグるという 問題が発生します!! 要するに0?9の間は参照してくれるのに 10になるとアレ・・・?? ってなり、参照してくれなくなるという 問題が発生します。 トイウコトデ・・・。 PHPやJQは案外いい加減な振る舞いをしてくれるけど MYSQLは型の設定通り動作してくれるという 事なので注意が必要です。 ちなみに上記のコードが動作するかは未検証です(´Д`)







    本気で生きてますか?前のページ

    非同期通信の2重ループは素人にはオススメしません。次のページ

    関連記事

    1. 記録

      自分を充電したい。

      全然関係ない話ですがスマホのバッテリーはギリギリまで使う派ですか?自…

    2. 記録

      クリスマスイブなので

      クリスマス・イブなのでブログはお休み。特に予定はありません、ありませ…

    3. 記録

      国際IQテストを受けてみたら。

      国際IQテストを受けてみたら、まぁまぁな結果をお初で得ること…

    4. 記録

      画像ジェネレータでっせ。

      フォトショップを開いてタイトルロゴを作るのがめんどくさくなったので…

    5. 記録

      インフォメーションテクノロジー略してIT。

      インフォメーションテクノロジー略してITなのですがこの分野の人材が…

    6. 記録

      岡村靖幸:okamurayasuyuki.infoって(´Д`)

      岡村靖幸さんっていう音楽家がいるのですけど、このひと薬物使用での逮…

    2016年3月
     123456
    78910111213
    14151617181920
    21222324252627
    28293031  

    カテゴリー

    アーカイブ

    PAGE TOP