記録

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. 記録

    ipadをさぶでぃすぷれいに変えるやつとか出来ないし。

    うちのMacはCatalinaには対応しているものの、サブディスプレ…

  4. 記録

    映画、記者たち 衝撃と畏怖(いふ)の真実を観ました。

    畏怖(いふ)とは恐れおののくことを指す。映画、『記者たち 衝撃と畏怖…

  5. 記録

    大体、知ったかぶり。男は自分のために嘘をつき、女は他人のために嘘をつく。

    あるTVを見てふと・・・。男は自分のために嘘をつき、女は他人のために…

2016年3月
 123456
78910111213
14151617181920
21222324252627
28293031  

カテゴリー

PAGE TOP