PHPでデータベース(MySQL)の操作2018年6月15日

PHPでデータベース(MySQL)の値を取得して表示



//データベースへの接続
$pdo = new PDO("mysql:host=127.0.0.1;dbname=lesson;charset=utf8","root","パスワード");
//PDO(PHP Data Objects)

//データベースの値を取得
$sql = "SELECT * FROM テーブル名 ORDER BY hogehoge;";//SQL文
$stmt = $pdo -> prepare($sql);
$stmt -> execute();//データベース操作の実行

//表示
while($row = $stmt -> fetch(PDO::FETCH_ASSOC)){
      print_r($row);
}

>>>PDOについて詳しく

PHPでデータベース(MySQL)の値を更新



$content = "hogehoge";

//データベースへの接続
$pdo = new PDO("mysql:host=127.0.0.1;dbname=lesson;charset=utf8","root","パスワード");
//PDO(PHP Data Objects)

$sql ="INSERT INTO テーブル名(content,date_taime) VALUES(:content,NOW());";//SQL文
$stmt = $pdo -> prepare($sql);
$stmt -> bindValue(":content",$content,PDO::PARAM_STR);
$stmt -> execute();//データベース操作の実行


PHP-ファイル操作・読み書きアップロードダウンロードまとめ【WordPress】2018年3月13日

WordPressの管理画面上でファイル操作をするためのPHPメモ。

まずは、フォームから、


↑こんな感じのファイルをアップロードするためのフォームを作るためのHTMLは、


<form enctype="multipart/form-data" method="post" action="__URL__">
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
<input name="upload" type="file" />
<br >
<input class="tech_up_button" type="submit" value="ファイルを送信" /></form>
enctype=”multipart/form-data”   ←ここが重要です。
次に上のフォームでファイルを送信した場合の受け取り方です。
methodは、postになっていますが、$_POSTではなく$_FILESで受け取ります。


$file  =  $_FILES[‘upload’];
var_dump($file);
var_dump()するとこんな感じです↓
array(5) { [“name”]=> string(10) “date-2.txt” [“type”]=> string(10) “text/plain” [“tmp_name”]=> string(14) “/tmp/phpjgHJO4” [“error”]=> int(0) [“size”]=> int(12621) }
これはテキストファイルの例ですが、本文全体を見たい場合は、file_get_contents()を使えば1発です。

$contents  = file_get_contents($file["name"]);
上のようにいけばできると思いましたが、正解は下の方です。

$contents  = file_get_contents($file["tmp_name"]);
これで、$contentsにはテキストファイル内の文章が無事納められています。

ファイルの書き込み

メモ書き程度なので参考にはなりません。。

//ファイルを書き込みモードで開く
$file = fopen("port_date.txt", "w");
// ファイルに書き込む
$byte = fwrite($file,$strings); 
// ファイルを閉じる
fclose($file);

$byteには書き込みされた文字列のバイト数が入ります。

WordPressテーマ作成メモ2018年2月24日

WordPressテーマ作成時の覚書

テーマフォルダ内の画像を表示させる場合

相対パスではダメなので、



src="'get_template_directory_uri().'/images/example.jpg'"

のように関数を使用して絶対パスで画像のURLを参照する。
「images」というフォルダは何でも良いわけだが、「img」としてしまうと表示されなかったです。
(こんなことは、常識なのかもしれませんが..私はここでハマってしまいました。)

WordPressメディアアップローダー自作時にハマったのでメモ2018年2月24日

メディアアップローダー機能を装着したい..だけど、jQueryが..



jQuery(function() {
		var custom_uploader = wp.media({
			title: 'Choose Image',
			library: {type: 'image'},
			button: {text: 'Choose Image'},
			multiple: false
		});
 
		jQuery("#media-upload").on("click", function(e) {
			e.preventDefault();
			custom_uploader.open();
		});
		
		custom_uploader.on("select", function () {
			var images = custom_uploader.state().get('selection');
 
			images.each(function(file) {
				jQuery("#image-url").val(file.toJSON().url);
				jQuery("#image-view").attr("src", file.toJSON().url);
			});
		});

	});



このようなjsを用意したのですが、jQueryがうまく読み込まれません。
以前にもjQueryには何度も悩まされてきましたが、今回は単純な理由でした。

wp_enqueue_media();

というメディアアップローダーのスクリプトを読み込む関数を書き忘れていました。(こちらはPHPの関数です。)

参考にしたサイト

・メディアアップローダーについて

WordPress 3.5の新メディアアップローダーを自作プラグインやテーマに組み込む。

メディアライブラリの表示方法(Ajaxウインドウ編)

・管理画面にメニューを追加
https://qiita.com/konweb/items/330f735a899e448ef876

・PATHやURLの取得関数
http://oxynotes.com/?p=8590

プログラミングコンテスト攻略のためのアルゴリズムと攻略方法2017年12月27日

プログラミングコンテスト攻略のためのアルゴリズムと攻略方法 P114 データ構造の応用

more »

【PHP】文字列の文字数を数える,同じ文字を繰り返す,1文字ずつに分割したい2017年10月29日

文字列の文字数を数える  strlen()


$strings = "aaaiaaa";
$aiueo = "あああいあああ";


echo strlen($strings);//7 と出力
echo strlen($aiueo);//21 と出力

アルファベットの場合は正常に測定できますが、日本語は3文字としてカウントされてしまいました。
more »

【PHP】or,| |,演算子の間違えた箇所2017年10月20日

【PHP】or,| |,演算子の間違えた箇所

 

or(||)演算子を利用したところ間違えた使い方をしていたのでメモしときます。

//誤解
$x = 2;

if($x == 3 or 6){
      echo '$xは3か6です!';
}else{
 echo '$xは3か6ではありません!';//こちらを出力してしまった。
}

echo $x == 3 or 6;//1を出力してしまう。つまりTRUEになっている。


つまり、$x == 3はFALSEだが、6はTRUEということですね。

条件はor(演算子)の左側と右側に分けて書くものでした。

//正解
if($x == 3 or $x == 6){
echo '$xは3か6です!';
}else{
echo '$xは3か6ではありません!';
}

if($x == 3 or $x == 6 or $x == 9){//orを3つ使っても大丈夫!
    echo '$xは3か6です!';
}else{
    echo '$xは3,6,9ではありません!';
}


 

【PHP】文字列の中に指定した文字があるかどうか、さらに置換2017年10月17日

【PHP】文字列の中に指定した文字があるかどうか

strpos()を使うと処理速度も速いようだ。他にもstrstr(),preg_mach()などがある。

とりあえず、strpos()の初歩的な使い方。


$a = "アイウエオ";
$b = "ウエ";
$xxx = strpos($a,$b);
echo $xxx;  //6を出力 

$xxx = strpos($a,"ア");
echo $xxx;  //0を出力

//↑日本語だと返り値がイマイチ微妙。。
$a = "bowwowbowwow";
$xxx = strpos($a,"wow");
echo $xxx; //3を出力

探したい文字の開始位置が返り値となるようだ。探した文字がなければ、返り値はFALSE。

第3引数には探すときの文字列の開始位置を指定できる。

$aの中に$bが含まれていたら条件A、含まれていなければ条件Bとしたいときは、


if(stripos($a,$b) !== false){
      条件A;
}else{
      条件B;
}

 

さらに指定した文字の置換、str_replace()

 


$strings = "ド*ゥ**ビド*ゥバ*!*ドゥ**ビド*ゥバ!";

echo str_replace("*","",$strings);//ドゥビドゥバ!ドゥビドゥバ! と出力

引数に配列を使用することも可能↓


$before = array("東京","タワー","332.6");
$after = array("通天","閣","108");

$strings = "東京タワーは332.6m";

echo str_replace($before,$after,$strings);//通天閣は108m と出力

しかし、str_replace()には少しややこしい点もある‥例えば、


$before = array("a","b","c");
$after = array("b","c","d");

$strings = "abc";

echo str_replace($before,$after,$strings);//ddd と出力されてしまう。

本当は、”bcd”と出力したい‥。

その場合は、strtr()を使用する。


$before = array("a","b","c");
$after = array("b","c","d");

//置換前($before)をkeyに、置換後($after)を要素にした配列($trans)を作成する
for($x = 0;$x < count($before);$x++){
    $trans[$before[$x]] = $after[$x];
}

print_r($trans)//Array([a] => b,[b] => c,[c] => d)
 
$strings = "abc";

echo strtr($strings,$trans);//"bcd" と出力


 

【関連記事】Python3〜文字列の置き換え〜replace translate maketrans

【PHP】配列の操作まとめ2017年10月16日

【PHP】配列の操作まとめ 前編

 

 

array_count_values() 要素の数をカウントする関数

 


$array = array(1,2,3,2,3);

$array_value = array_count_values($array);

print_r($array_value);//Array( [1] => 1,[2] => 2,[3] => 2 )

配列が文字だったら、、


$array = array("A","B","C","B","C");

$array_value = array_count_values($array);

print_r($array_value);//Array( [A] => 1,[B] => 2,[C] => 2 )

指定した要素を持つkeyを取得 array_keys()


$array = array(1,2,3,2,3);

$keys = array_keys($array,3);

print_r($keys);//Array( [0] => 2,[1] => 4) $array[2][4]に3がある。

 

max()1番大きな要素を取得する関数


$array = array(1,2,3,2,3);
$max_value = max($array);
echo $max_value; //3を出力

 

sort並び替え

asort(昇順),arsort(降順)

$array = array(1,2,3,2,3);

asort($array);//asortは昇順 $arrayは(1,2,2,3,3)になる。

arsort($array);//arsortは降順 $arrayは(3,3,2,2,1)になる。

 

配列の要素を並び替えられたが、keyはそのままなので必要がある場合は、

 

array_merge() 配列のkeyの振り直し(整える)


$num_list = array(5,9,6,3);

asort($num_list);

print_r($num_list);//Array( [3] => 3,[0] => 5, [2] => 6, [1] => 9)となる

$num_list = array_merge($num_list);

print_r($num_list);//Array([0] => 3,[1] => 5,[2] => 6,[3] => 9)となる

 

implode, explode

配列を繋いで文字列にしたい場合は、implode

文字列を配列にしたい場合はexplode

$array = array(1,2,3,2,3);

echo implode(" ",$array); //1 2 3 2 3 と出力

echo implode("->",$array);//1->2->3->2->3と出力


$strings = "U.F.O";

print_r(explode("・",$strings)); 
/*出力
Array
(
    [0] => U
    [1] => F
    [2] => O
)*/

//こんな使い方も
$strings = "03-0000-0000";
list($areacode,$code,$number) = explode("-",$strings);

echo $areacode;//03と出力

配列から削除する array_splice()

配列から指定した要素を削除する array_splice()

$list = array("dog","cat","mouse","gorilla","gazzila");

$list_1 = array_splice($list,1,2);

print_r($list);//Array([0] => dog,[1] => gorilla,[2] => gazzila)
print_r($list_1);//Array([0] => cat,[1] => mouse)

引数はintであることが必要。

【PHP】配列の操作まとめ 後編

配列のランダム操作

array_rand()は引数の配列のkeyをランダムに取り出してくれます。


$go3ke = array('橋幸夫','舟木一夫','西郷輝彦');
/*Array(
    [0] => 橋幸夫
    [1] => 舟木一夫
    [2] => 西郷輝彦
)*/
$ichiban = array_rand($go3ke);
//ランダムに配列のkeyが返る、この場合0~2。
echo $go3ke[$ichiban];
//橋幸夫,舟木一夫,西郷輝彦のいずれかが出力

shuffle()を使えば配列内の要素の順番をシャッフルできます。しかし、keyは0から振り直されてしまうので、keyも維持したい場合は使えません。


$go3ke['MexicanRock'] = '橋幸夫';
$go3ke['HighSchool3rd'] = '舟木一夫';
$go3ke['StarFlamenco'] = '西郷輝彦';
print_r($go3ke);
/*Array(
    [MexicanRock] => 橋幸夫
    [HighSchool3rd] => 舟木一夫
    [StarFlamenco] => 西郷輝彦
)という配列を*/

shuffle($go3ke);//シャッフルします。

print_r($go3ke);
/*Array
(  [0] => 舟木一夫
    [1] => 西郷輝彦
    [2] => 橋幸夫
)*/
//keyは0から振り直され、要素はシャッフルされます。

 

配列内の同じ要素をまとめる array_unique()

同じ要素をまとめてしまいたいときは、array_unique()!


$numbers = array(1,1,1,1,2,3,3);
print_r(array_unique($numbers));

//Array(
[0] => 1
[4] => 2
[5] => 3
)

スッキリしましたね!

ユニークという言葉、私は「独特の面白さ」のようなユーモラス的な感覚で使っていましたが、「ただひとつだけの」「並ぶもののない」といった意味があるんですね〜。
(ちなみに私は英語音痴です‥)

配列内の要素(int)を合計する array_sum()


$numbers = array(1,1,1,1,2,3,3);
echo array_sum($numbers);
//12

【PHP】ゼロの扱い〜0,0.0,0.00〜2017年10月16日

【PHP】ゼロの扱い〜0,0.0,0.00〜

 

ゼロの扱いって少し複雑だと思ったのでメモしておきます。

それとも、これが常識なんでしょうか?

 


echo 0.0;

0 と出力されてしまう。


echo "0.0";

引用符で囲めば、0.0 と出力


$a = 0.0;
var_dump(is_int($a));  //bool(false) と出力
var_dump(is_float($a));  //bool(true) と出力

integer と float は別だが、、


$a = 0.0;
echo $a; //0 と出力
var_dump($a == 0); //bool(true) と出力

0 と 0.0を比較するとtrueになる。