凡ミスやめたいので覚書 | ウェブカツでプログラミング学習記

プログラミング勉強

こんにちは。ウェブカツ!女性割引にてプログラミング学習中のみや***です。

プログラミング学習を開始してから、早くも150日経過しました。総学習時間は自主トレも合わせて500時間を超えに(!)。

現在ウェブカツではJavaScript上級部に進んだものの、一旦手を止めて現在はPHPを使ったWEBサービスを作成中です。

その中で、私がよくやる間違いやちょっと頭に置いておきたい点を記事にして残しておこうと思います。

>>>『オンラインプログラミング学習スクール・ウェブカツ!』の詳細を見る
規約上載せているもので、アフィリエイトリンクではありません

間違い1:比較演算子で同値かどうか判定したいのに

if文で比較演算子を使って、イコールなら以下の処理・・・としたいのに、なんだかうまくいかない時。

イコールじゃなくて代入してたということが何度かあります。

if( i = key.length ){

↑こちらはダメ。比較演算子じゃなくて代入しちゃっていました。。

if( i === key.length ){

↑こうすればOK

間違い2:phpの中にphpでechoしたい

<?php if(!empty($_GET['k_w'])) <?php echo '「 '.$_GET['k_w'].' 」の検索結果' ; ?> ;?>

↑これはダメです。

どう見てもダメなのに、でもどうしたらいいのかわからなくてしばし悩みました。

<?php if(!empty($_GET['k_w'])) echo '「 '.$_GET['k_w']).' 」の検索結果'; ?>

こうしたらいいんですね!

ぐぐったらterateil(プログラミング版知恵袋みたいなサイト)に答えが載っていました。

 

答えがわかれば脱力ものですが、悩んでる時は本気なんですよね・・・

間違い3:jQueryでドムをとるとき

最近ちょっと好きになってきたjQueryさん。

なにかとドムを取得する機会があるかと思いますが、class指定をするときに以下をよくやってしまいます。

$('js-btn-text').text("挿入したいテキスト");
↑これでは思うような結果になりません。classなのに、. を付け忘れています。
$('.js-btn-text').text("挿入したいテキスト");
↑これで無事 textに文字列を表示できました^^
ちなみに以下の場合はtoggleClassでクラスを書く前提なので、.をつけなくてもOK。
$this.toggleClass('active');

間違い4:returnで値を返すタイミング

以下のコードはちょっと長いので見にくいかもしれませんが、DBに接続してデータを取得する際、

前半のsql文は実行されたのに後半のsql文がうまくいかない。なぜ??としばしハマりました。

先に原因を言うと、returnするのが早過ぎました。

function getMyLike($currentMinNum = 1, $u_id, $span = 20){

    try {
      $dbh = dbConnect();
      $sql = 略;
      $data = array(':u_id' => $u_id);

      $stmt = queryPost($dbh,$sql,$data);

      $rst['total'] = $stmt->rowCount(); //総レコード数
      $rst['total_page'] = ceil($rst['total']/$span); //総ページ数

      if($stmt){
          return $rst; //<ーーーーーー ここでリターンしてしまってる!!
    	}else{
        debug('お気に入り情報がヒットしません');
        return false;
      } 
     // ページング用のSQL文作成
    $sql .= ' ORDER BY… 略 ’;
    $data = array(':u_id' => $u_id);

    $stmt = queryPost($dbh, $sql, $data);
    if($stmt){
      $rst['data'] = $stmt->fetchAll();
      return $rst; //<ーーーーーー ほんとはここにだけリターンを入れる
    }else{
      return false;
    }
  } catch(Exception $e) {
      error_log('エラー発生:' . $e->getMessage());
    }
  }

デバッグログを見ると”Invalid argument supplied for foreach()”も出ていたので(foreachの中が配列じゃないよ!というエラー)、てっきりそこまでの処理は進んでいるのかと勘違いしてしまいました。

正直に言うと、DB接続のコードが意味するところが最近なんとなくわかってきたところなので・・・ちゃんと意味がわかっていればやらないミスだよな。とがっくり。

というより、returnの働きを理解してないからか・・・(T ^ T)

謎の空白を作ってしまう by<div>タグ

JsvaScriptでドムのテキストデータを取得したところ、なぜかテキストの後に改行が入ってしまうという事態に。

コンソールで見ると、しっかり空白が入っています

document.execCommand(‘copy’)でコピーしたいテキストを取得中にこの改行に気がついたため、”Command(‘copy’) 空白”などのキーワードで調べていたのですが、

原因はそもそもCommand(‘copy’)のせいではありませんでした。

HTMLのdivタグをおかしなことで改行し、(おそらく)スペースキーで自分で微調整したのだと思います。

見にくいですが、オレンジの点々の部分です。

このdivの改行を一度消し、tabキーで改行をやり直したところ

ちゃんとテキストのあとの空白が消えました!

コンソールで見ても何かわからない、marginでもpaddingでもない謎の空白をたまーに作ってしまうのは、私の場合おそらくこれが原因かと・・・。

メモ1:短く書いたphp文

if文がショートハンドで書いてあると、今でも???となってしまいます。

なので、何度かお見かけしたやつをさくっとまとめます。

<?php if( i === 0 )
     echo '0です。';
endif; ?>

↑は { がコロンになって、締めがendifになってるもの。

if(!empty($hensu)) echo '555' ;

↑は{}が無いタイプ。()内がtrueなら、555をエコーさせる。という意味。

後続にelse が続かなくてもいいし、同じように { 無しで続けて書いてもOKのようです。

 $num = (!empty($hensu)) ? $hensu : 1;

↑は三項演算子。
()内がtrueなら $hensu を$numに代入。falseなら1を代入。という意味。

if else を1行で表せるので便利ですね。

メモ2:ifで条件に合うときだけHTMLを表示させたい

いつも表示するのではなく、条件によって表示・非表示を振り分けたい時。

謎のダメコードを書いてしまい文法エラーに時間を取られたのですが、

こうやって

<?php if(条件){ ?>
 <form>
  <h2>キーワード検索</h2>
  <input>
  <button>検索</button&gt;
 </form>
<?php } ?>

if文の最初と最後それぞれphpタグで括ってあげたら見やすいコードで書けますね。

こう書けばいいのか〜と解決策が分かったあとで、ウェブカツで勉強したコードもこういう風に書かれてたなと思い出しました😞
>>>『オンラインプログラミング学習スクール・ウェブカツ!』の詳細を見る
規約上載せているもので、アフィリエイトリンクではありません

メモ3:phpの配列の値をjQueryで使いたい(連想配列)

データベースに登録してあるデータをひっぱり出してきて、jQueryでクリックしたら切り替わって・・・のように使いたい時。

普通に変数名を渡してもjQueryは分かってくれない。

あれ?どうするんだっけ??と思って調べたら、ここでJSONが出てくるんですね!

jQuery(というかJavaScript)が分かる形式に書き換える処理として、json_encodeを使います。

まずはphpでデータベースからデータをとって、変数に代入。

$data = getFromDB(); //phpのデータ取得関数から変数$dataに代入
$dataNew = json_encode($data); //この式だけでJSONに書き換えられる!
その変数を使ってjson_encodeにて書き換え、その結果を新しい変数に代入。

この場合では、

$dataにデータベースからとったデータ

$dataNewにJSON形式に書き換えられたデータが入っています。
次はスクリプトタグ内での処理に移ります。
<scripttype="text/javascript">
let dataFromphp = <?php echo $dataNew ?>;
</script>
$dataNewをスクリプトタグ内でechoして、変数dataFromphpに代入。
これだけでphpの変数内の連想配列をJSに渡せました!。
コンソールで変数の中身を表示させてみてもばっちり。

プログラミング学習、振り返りも大事。

私はウェブカツでプログラミングを勉強してきて、どちらかというと「早く進まなきゃ」という思いが強くてあまり立ち止まらず走ってたのですが、

ここ最近こうやって、「あ、前もここ間違えたなー」とか、「できたはいいけどややこしくて二度とできないかも・・・」という点をメモがてらまとめています。

そうすると、後で自分で見たときに役に立つというよりも、ある程度噛み砕いて書くことで記憶が整理されて、頭に残りやすい!

ということに気がつきました。

まぁ、プログラミングに限ったことではないですよね^^;

これからも頭を冷やして学習を継続してゆきます。

>>>『オンラインプログラミング学習スクール・ウェブカツ!』の詳細を見る
規約上載せているもので、アフィリエイトリンクではありません

 

こちら↓のプログラミング学習記録もどうぞ。

ウェブカツでプログラミング学習記録 | 100日経過!の進捗や思うこと。
オンラインプログラミングスクール「ウェブカツ!」の女性割引にて現在プログラミング学習中のみや@miyagoro22です。 今ウェブカツが気になっている方・受講を検討している方へ向けて、受講生のリアルな感想を書いてみようかなーと思います...

ウェブカツでプログラミング学習記録 | 100日経過!の進捗や思うこと。

PHPと向き合う1ヶ月 | ウェブカツ!でプログラミング学習
ウェブカツ!でプログラミング学習をはじめてもう2カ月近くなります。 初心者からスタートし、今までは楽しみながらやっていましたがここにきて「わからん病」に陥ることに。 プログラミングの独学は難しいというけれど、確かに煮詰まった時に...

PHPと向き合う1ヶ月 | ウェブカツ!でプログラミング学習

タイトルとURLをコピーしました