@Blog{zip358.com}
日常日誌からプログラムやYOUTUBER紹介、旅日記まで日々更新中です。
(´ι _` )アッそうなんだそうなんだPHP fileメソッド
2015.11.09
PHPのfileメソッドっていうのが便利です。
ファイルを配列として引っこ抜いてくれる。こんな関数便利だなと
おそらく他の言語でも常識的にある関数なんだろうけど
自分はあまり知らなかったので便利だなと。
もうひとつ便利な関数は配列の中に空の値があったりすると
その配列を削除してくれるarray_filterとかいうものです。
これは便利・・・何故かってPHP、配列の中が空でも
値があるよって判断するです。そういう時に少し便利です。
emptyは使えないので・・・。もし配列が空でも必要な場合は
strlenとかでバイト数を数えるなどで対応するしか無いですね。
そういう事でメモがてらに残しときます。
$hoge = file("hoge.txt"); for($i=0;$i<sizeof($hoge);$i++){ echo hoge[$i]."<br>\n"; } print($hoge); $hoge2 = array_filter($hoge); print($hoge2);
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
0, 2, array, br, echo, empty, file, filter, For, gt, hoge, lt, php, print, sizeof, strlen, txt, アッ, これ, バイド, ファイル, メソッド, メモ, もうひとつ, もの, 中, 事, 他, 便利, 値, 判断, 削除, 場合, 対応, 少し, 必要, 時, 空, 自分, 言語, 配列, 関数,
さくらのレンタル―サーバーのCRONでファイルの呼び出し方が
2015.10.06
/usr/local/bin/php -f /home/xxxxx/www/hoge.php cd /home/xxxxx/www/;/usr/local/bin/php hoge.php cd /home/xxxxx/www/ && /usr/local/bin/php hoge.php cd /home/xxxxx/www/ | /usr/local/bin/php hoge.php
さくらのレンタル―サーバーのCRONでファイルの呼び出し方が変わっていた
今までは一行目の呼び出し方でファイルの実行が可能だったのですが
この頃、仕様が変わったのかは分かりませんが、さくらのヘルプにも書いているように
実行させたいディレクトリまで、まずは移動して
走らせたいファイルを実行するという事を行わないと実行されません。
(※実行される場合もあり?)
二行目から解説すると二行目は、移動できなくても次の処理を実行します。
三行目は移動できたら処理を実行します。
四行目は処理は実行されませんが、こういう書き方もあるよ的な
事で書いてます。「|」この記号で処理と処理を結ぶと
Aの処理で帰ってきた値などをBの処理に引き継ぐことが出来ます。
簡単にいえばパラメータを渡すことが出来ます。
WEBでShellをちょっとしたときに使う場合、上記の方法を
つかう事が多いと思います。
覚えていたら何かと役に立ちますよ!!
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
AM, bin, cron, home, local, php hoge.php, shell, usr, xxxxx, サーバー, さくら, ディレクトリ, パラメータ, ファイル, ヘルプ, レンタル, 処理, 呼び出し方, 書き方, 記号,
WinSCPというソフトが有るのだけど。
2015.07.16
WinSCPというソフトが有るのだけど自分はこのソフト、FTPのソフトだと思い込んでいたけど・・。SCPという名前の通りSCP(転送プロトコル)機能がついてたりする。面倒くさい事をさらっとやってくれるフリーソフトなわけです。そうとは知らず今までインストールすることが無かったんですけど、この度、インストールしました。ちなみに何が良いかというとFTPサービスをサーバ環境へインストールしなくてもファイルのアップロードが可能だということです。FTPがインストールされていない環境だととても重宝しそうな気がします。
ダウンロードはこちらから、WinSCP
メモがてらにもう一つ、大量のsqlデータを一括でインポートしなくてはならなくなり、昨日、調べていたらこのようなコマンドで解決することがわかりました。まず、Linuxサーバでかつポート22番が開いている事が前提です。windowsですとTera Termでサーバにログインし下記のコマンドを入力します。
mysql -u ユーザー名 -D データベース名 -p
//エンター後、Passwordの入力を行ってください。
次にMYSQLに切り替わったら、下記のコマンド入力してインポートを行います。この時の注意点ですがエラーなどが出る場合はエクスポートしたsqlファイルの最終行あたりに記入されているデータベース名やユーザー名が移行する側の名前になっているかが大事になります。なっていない場合、修正をかけ再処理を行うとインポートが行えるはずです。 尚、サーバ上に事前にsqlファイルをアップロードして置いてから処理を行ってください。
USE データベース名(インポートしたい)
SOURCE 階層を含むファイル名(/xxxx/xxxx.sql)
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
22, FTP, Linux, My, SCP, SQL, Tera, Term, Windows, WinSCP, アップロード, インストール, インポート, こちら, こと, コマンド, サーバ, サービス, ソフト, ダウンロード, データ, ファイル, フリー, プロトコル, ポート, メモ, もう一つ, ログイン, 一括, 下記, 事, 何, 入力, 前提, 可能, 名前, 大量, 度, 昨日, 機能, 気, 環境, 自分, 解決, 転送, 通り, 重宝,
名前空間の概要がすごい(´Д`)、
2015.07.06
名前空間の概要 ¶
(PHP 5 >= 5.3.0)
名前空間とは何でしょう? 広義の「名前空間」とは、項目をカプセル化するもののことです。 これは多くの場面で見られる抽象概念です。 たとえば、たいていの OS はディレクトリでファイルをグループ化します。 この場合、ディレクトリがその中のファイルの名前空間として機能しています。 具体的に言うと、foo.txt というファイルは/home/greg と /home/other の両方に存在することが可能ですが、それらふたつの foo.txt を同じディレクトリに配置することはできません。 さらに、/home/greg ディレクトリの外から foo.txt にアクセスするには、ディレクトリ名をファイル名の前につけて /home/greg/foo.txt としなければなりません。 プログラミングの世界における名前空間も、この延長線上にあります。
PHP の世界では、名前空間は次のふたつの問題を解決するための手段として用意されています。 ライブラリやアプリケーションの作者が、 クラスや関数といった再利用可能なコード部品を作ろうとするときにこれらの問題にぶちあたることになります。
- あなたが作成したコードと PHP の組み込みのクラス/関数/定数 あるいはサードパーティのクラス/関数/定数の名前が衝突する
- 最初の問題を解決するためには、Extra_Long_Names のような長い名前をつけなければならない
名前空間の概要がすごい・・。ぶちあたるって・・どういう言い回しなんだ。仮にもPHP日本語公式サイト、この言い回しは、あまり適切とはいえないものの。クスってなりました。確かに名前空間ぶちあたりそうな考えです。この解説を読むと結構わかりやすく書いているのではないかと感じました。シンプルで分かりやすい例えのように感じます。
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
foo.txt, greg, home, PHP 5, アプリケーション, クラス, サードパーティ, ディレクトリ, ディレクトリ名, ファイル, プログラミング, ライブラリ, 分かりやすい例え, 名前空間, 定数, 抽象概念, 概要, 組み込み, 言い回し, 関数,
昨日の続き、cronPHP(´Д`)、一つのジョブから複数のPHPファイルを実行させる方法。
2015.06.25
<?php
//5分刻みに対して有効な無限クローン 処理が負荷の場合どうなるかは知りません。
date_default_timezone_set('Asia/Tokyo');
class cron{
public function d_m($obj)
{
if($obj->m==="*")return true;
if(preg_match("/,/",$obj->m))return $this->comma($obj->m,date("m"));
if((int)$obj->m === (int)date("m"))return true;
return false;
}
public function d_d($obj)
{
if($obj->d==="*")return true;
if(preg_match("/,/",$obj->d))return $this->comma($obj->d,date("d"));
if((int)$obj->d === (int)date("d"))return true;
return false;
}
public function d_H($obj)
{
if(preg_match("/\*\/[0-9]{1,2}/",$obj->H)){
$H = explode("/",$obj->H);
if((int)$H[1]>0 && ((int)date("H") % (int)$H[1])===0)return true;
}else{
if($obj->H==="*")return true;
if(preg_match("/,/",$obj->H))return $this->comma($obj->H,date("H"));
if((int)$obj->H === (int)date("H"))return true;
}
return false;
}
public function d_i($obj)
{
if(preg_match("/\*\/[0-9]{1,2}/",$obj->i)){
$i = explode("/",$obj->i);
if((int)$i[1]>0 && ((int)date("i") % (int)$i[1])===0)return true;
}else{
if($obj->i==="*")return true;
if(preg_match("/,/",$obj->i))return $this->comma($obj->i,date("i"));
if((int)$obj->i === (int)date("i"))return true;
}
return false;
}
//曜日 0=日曜日 6=土曜日
public function d_w($obj)
{
if((int)$obj->w[date("w")]===1)return true;
return false;
}
public function comma($c="",$t=""){
if($c==="")return false;
if($t==="")return false;
$flg = false;
foreach(explode(",",$c) as $cc){
if((int)$cc===(int)$t)$flg = true;
}
return $flg;
}
public function d_command($obj){
if($obj->command){
exec($obj->command . " > /dev/null &");
}
return true;
}
}
if ($argv[1]) {
$filename = $argv[1];
if(is_file($filename)){
$jsn = json_decode(file_get_contents($filename));
$cron = new cron();
try {
foreach($jsn as $obj){
if($cron->d_m($obj)){
if($cron->d_d($obj)){
if($cron->d_H($obj)){
if($cron->d_i($obj)){
if($cron->d_w($obj)){
$cron->d_command($obj);//波動拳{{{{
}
}
}
}
}
}
} catch (\Throwable $th) {
print $th->getMessage();
}
}
}
この頃、ネタがないので手抜き投稿です。気づいた人どのぐらいいるのだろうか?
Qiitaに公開しました。https://qiita.com/question909/items/8f1df9b62ab4fba76243
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
39, 5, Asia, class, comma, cron, cronphp, date, default, function, gt, if, int, lt, match, obj, php, preg, public, quot, retu, return, set, this, timezone, Tokyo, true, クローン, ジョブ, ファイル, 一つ, 処理, 分刻み, 場合, 実行, 方法, 昨日, 有効, 無限, 複数, 負荷,
Tera TermのマクロTTLを使用して自動ログインする方法はこんな感じ。
2015.05.02
UTF-8形式のファイルを作成して下記のコードを記載します。そして任意のファイル名をつけて拡張子TTLで保存します。その後、任意のファイルをダブルクリックします。この際、ファイルの関連付けがされていなければTera Termのexeファイルが保存されている場所にttpmacro.exeが存在しますので、そちらと関連付けを行います。
Tera Termが保存されている階層→”C:\Program Files\teraterm\”
HOSTADDR = ‘255.255.255.255’
USERNAME = ‘USERNAME’
PASSWORD = ‘PASSWORD’
COMMAND = HOSTADDR
strconcat COMMAND ‘:22 /ssh /2 /auth=password /user=’
strconcat COMMAND USERNAME
strconcat COMMAND ‘ /passwd=’
strconcat COMMAND PASSWORD
connect COMMAND
wait ‘#’
sendln ‘ls’
sendln ‘cd /var/www/html’
上記の記述してあるホスト名、ユーザー名、パスワードを変更することでLinuxサーバにログインすることが可能です。また、waitと言うのは文字待ち(ここでは#待ち)。sendlnは文字を自動的に送信します。要するに自動でコマンドを打つ事が可能なので、WEBサーバやDBサーバを自動で構築することも不可能ではないですが、若干面倒くさいです・・・。Tera Termのマクロコマンドを知っていなくても、sendlnなどを使用してLinuxコマンドで処理する事も可能ですしマクロと組み合わせるともっと便利になるかもしれません。Tera Termのマクロの存在は知っていましたが使う機会が全然なかったので自分はコレぐらいのことしか知りません。
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
AM, connect COMMAND, HOSTADDR, Linuxコマンド, ls, passwd, password, Program Filesteraterm, sendln, strconcat COMMAND PASSWORD, strconcat COMMAND USERNAME, ttpmacro.exe, username, UTF-8形式, ダブルクリック, ファイル, マクロコマンド, めちゃくちゃ, リズム, 拡張子TTL, 関連付け,
cronの設定数に制限があるさくらサーバーとかで制限以上に使う方法(´Д`)
2015.01.12
cronの設定数に制限があるさくらサーバーとかで制限数以上(cron設定を増やす方法
)に使う方法はないかなと考えた結果、自分はこうしました。
一つのPHPファイル(実行ファイル)から複数のファイルをキックすることに!(´Д`)
こうすれば、処理が遅くないファイルなら複数個でも実行できるのではないかと
思ったわけです。結果的に成功しているぽっいです。
※Shellで作れる人は作れるだろうけど自分には無理(´∀`*)ポッいのでPHPで制作しました。
ちなみにさくらレンタルサーバーの場合、php.iniにタイムゾーン設定を
加えてあげてください(date.timezone = Asia/Tokyo ←追加)。
そうしないと動かない恐れがあります。
作っていて思ったことですが、作る考え方はわかるものの、元々メソッドを覚えていない
人間なのでググってメソッド探しにまずヘタりました( ´Д`)=3。その後、完璧なハズとか
思ってソースを実行させるとエラーは出ないものの。思った通りうごかないという事象に
苦しめられること2時間、何でだろうとか思っていて検証してみた結果、メソッドの使い方が
間違っていたり、変数名が間違っていたりとなんとも言えない無情さに襲われましたが
何とか動作するようになったみたいなのでコードをうっぷします。
ソースコードを記載しときます。動作するとは
思いますが誤作動するかもしれないので保証はしません。なお、いつもながら
ソースにはコメントを記載しておりませんのでトレースしてください。
PHPファイルのDLはこちらから( ´Д`)=3?(最終更新日2015/01/12 11:07)
追記2
改良しました。{*改良版はこちら*}
※このPHPファイルを5分置きにキックしていますΣ(゚∀´(┗┐ヽ(・∀・ )ノ。
<?php
//5分刻みに対して有効な無限クローン 処理が負荷の場合どうなるかは知りません。
date_default_timezone_set('Asia/Tokyo');
class cron{
public function d_m($obj)
{
if($obj->m==="*")return true;
if(preg_match("/,/",$obj->m))return $this->comma($obj->m,date("m"));
if((int)$obj->m === (int)date("m"))return true;
return false;
}
public function d_d($obj)
{
if($obj->d==="*")return true;
if(preg_match("/,/",$obj->d))return $this->comma($obj->d,date("d"));
if((int)$obj->d === (int)date("d"))return true;
return false;
}
public function d_H($obj)
{
if(preg_match("/\*\/[0-9]{1,2}/",$obj->H)){
$H = explode("/",$obj->H);
if((int)$H[1]>0 && ((int)date("H") % (int)$H[1])===0)return true;
}else{
if($obj->H==="*")return true;
if(preg_match("/,/",$obj->H))return $this->comma($obj->H,date("H"));
if((int)$obj->H === (int)date("H"))return true;
}
return false;
}
public function d_i($obj)
{
if(preg_match("/\*\/[0-9]{1,2}/",$obj->i)){
$i = explode("/",$obj->i);
if((int)$i[1]>0 && ((int)date("i") % (int)$i[1])===0)return true;
}else{
if($obj->i==="*")return true;
if(preg_match("/,/",$obj->i))return $this->comma($obj->i,date("i"));
if((int)$obj->i === (int)date("i"))return true;
}
return false;
}
//曜日 0=日曜日 6=土曜日
public function d_w($obj)
{
if((int)$obj->w[date("w")]===1)return true;
return false;
}
public function comma($c="",$t=""){
if($c==="")return false;
if($t==="")return false;
$flg = false;
foreach(explode(",",$c) as $cc){
if((int)$cc===(int)$t)$flg = true;
}
return $flg;
}
public function d_command($obj){
if($obj->command){
exec($obj->command . " > /dev/null &");
}
return true;
}
}
if ($argv[1]) {
$filename = $argv[1];
if(is_file($filename)){
$jsn = json_decode(file_get_contents($filename));
$cron = new cron();
try {
foreach($jsn as $obj){
if($cron->d_m($obj)){
if($cron->d_d($obj)){
if($cron->d_H($obj)){
if($cron->d_i($obj)){
if($cron->d_w($obj)){
$cron->d_command($obj);//波動拳{{{{
}
}
}
}
}
}
} catch (\Throwable $th) {
print $th->getMessage();
}
}
}
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
3, Asia, cron, date, ini, php, shell, timezone, Tokyo, いの, キック, こと, サーバー, さくら, ゾーン, タイム, パス, ファイル, ヘタ, ボツ, メソッド, レンタル, わけ, 一つ, 人, 人間, 処理, 制作, 制限, 場合, 完璧, 実行, 後, 成功, 方法, 無理, 結果, 考え方, 自分, 複数, 複数個, 設定, 追加,
おすすめ度の高いフリーのエディタです{Notepad++}。
2014.08.22
おすすめ度の高いフリーのエディタです、エディタ名がNotepad++(DL日本語対応)という奴なんですけど(δ´ω`)カユイところに手が届く優れものです。昔は秀丸やサクラエディタを使用してたんですけど、このNotepad++に出会ってからずっとNotepad++を使用しています。何がそんなに良いのかといえば、動作が軽いこと、そしてバイナリもみえちゃうし、プラグインも充実してます。なんで、このNotepad++がおすすめです{言語自動補完機能あり、文字コード変換あり等など}。サクラエディタのようにgrep機能(ファイル内検索)もあります、あと正規表現の検索や置き換えなどもありますので自分としてはおすすめ度高いです。昔、務めていた会社では何故か、MIFES(マイフェス)とかいうテキストエディタを使用してました。
ちなみにファイルの差分を見たい場合は、WinMerge 日本語版など、バイナリを見たい場合は、StirlingやBZが有名ドコロです。
追記:
IDEで良い物を見つけました。
NetBaseです、これは職場でも使っています。言語自動補完機能ありますが若干遅いのが難ですね。
有料でよければ、PhpStormが良い感じですね。2万円とちょっとします。他にもatomやマイクロソフト
提供のVisual Studio Codeなどがあります。
https://netbeans.org/features/ide/
https://www.jetbrains.com/phpstorm/
https://atom.io/
https://www.visualstudio.com/ja-jp/products/code-vs.aspx
追記2 :今では古い話なのでVisual Studio Codeを推奨します(2021年に追記)!!
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
BZ, DL, grep, MIFES, Notepad, Stirling, WinMerge, エディタ, おすすめ, カユイ, コード, こと, さくら, テキスト, ところ, バイナリ, ファイル, フェス, プラグイン, フリー, マイ, 会社, 何, 使用, 充実, 動作, 場合, 変換, 奴, 対応, 差分, 手, 文字, 日本語, 日本語版, 昔, 有名, 検索, 機能, 正規, 秀丸, 自分, 自動, 表現, 補完, 言語,
Accessのさんぷるコードができましたので(´Д`)貼っときます。
2014.08.21
突貫工事で作ったのでバグは多少あると思いますが{例えばsql インジェクション対策とか。}、Accessのsampleコードができましたので貼っときます。なお、これで何が出来るかって言えばDBの修正、追加、削除といった基本的な動きをします{挙動不審ぎみ嘘!?}。若干、ソースコードを弄くれば使い回しが出来るようにしております。飯くったり他のことをしながらもガリガリとコードを書きました。ちなみにAccessのViewerをマイクロソフトからダウンロードすると動作すると思います。ファイルは下記からダウンロードください。 追記:暇な時に改良していきますので( ゚д゚)ノ ヨロシクとコメントも暇があれば書いときます。そして無駄なコードがありますが、それも軽量していくつもりです(`・ω・´)。ちなみにいまはDBを空にすると落ちますので・・・・(直しました。)。?samplezip358.zip?[https://zip358.com/tool/samplezip358.zip][08/21 11:26]
Option Compare Database Public db_x As Long Public max As Variant Function sel_all(tablename As Variant, tal_valname As Variant) As Variant Dim x As Long Dim y As Long Dim sql As String Dim RS As DAO.Recordset Dim db As DAO.Database Dim hoge(999, 999) As Variant Dim val_n As Variant Dim val As Variant Set db = CurrentDb sql = "SELECT * FROM " & tablename & " ORDER BY ID ASC;" MsgBox sql Set RS = db.OpenRecordset(sql) Do Until RS.EOF For y = 0 To UBound(tal_valname) hoge(x, y) = RS.Fields(tal_valname(y)) Next y RS.MoveNext x = x + 1 Loop Set db = CurrentDb sql = "SELECT MAX(ID) as maxs FROM " & tablename & ";" MsgBox sql Set RS = db.OpenRecordset(sql) max = RS.Fields("maxs") db_x = x - 1 Set db = Nothing sel_all = hoge End Function Function up_in(chk As Boolean, tablename As Variant, tal_valname As Variant, tal_val As Variant, ID As Long) As Variant Dim sql As String Dim RS As DAO.Recordset Dim db As DAO.Database Dim hoge_valname As String Dim hoge_val As String Dim hoge As Variant If chk = True Then For i = 0 To UBound(tal_valname) hoge_valname = hoge_valname & tal_valname(i) & ", " Next i hoge_val = sql_str(tal_val, "", "", True) sql = "INSERT INTO " & tablename & " (" & Left(hoge_valname, Len(hoge_valname) - 2) & ")VALUES (" & hoge_val & ");" Else hoge_valn_val = sql_str("", tal_valname, tal_val, False) sql = "Update " & tablename & " Set " & hoge_valn_val & " WHERE ID = " & ID & ";" End If MsgBox sql Set db = CurrentDb db.Execute (sql) Set db = Nothing up_in = True End Function Function del(tablename As Variant, tal_valname As Variant, tal_val As Variant) As Variant Dim sql As String Dim RS As DAO.Recordset Dim db As DAO.Database Dim hoge As Variant sql = "DELETE FROM " & tablename & " WHERE " & tal_valname & " = " & tal_val & ";" MsgBox sql Set db = CurrentDb db.Execute (sql) Set db = Nothing del = True End Function Function sql_str(hoge As Variant, tal_valname As Variant, tal_val As Variant, chk As Boolean) As Variant Dim i As Long Dim hoge_str As Variant If chk = True Then For i = 0 To UBound(hoge) If IsNumeric(hoge(i)) Then hoge_str = hoge_str & hoge(i) & ", " Else hoge_str = hoge_str & "'" & hoge(i) & "', " End If Next i Else For i = 0 To UBound(tal_valname) If IsNumeric(tal_val(i)) Then hoge_str = hoge_str & tal_valname(i) & " = " & tal_val(i) & ", " Else hoge_str = hoge_str & tal_valname(i) & " = '" & tal_val(i) & "', " End If Next i End If sql_str = Left(hoge_str, Len(hoge_str) - 2) End Function
↑クラスdbソースコード
Option Compare Database Dim max As Long Dim ID As Long Dim val_val As Variant Private Sub Form_Load() lod End Sub Sub lod() Dim db As db_db Dim val_name As Variant Dim x As Long Set db = New db_db val_name = Array("ID", "表題", "数値", "文字") val_val = db.sel_all("tableone", val_name) max = db.max + 1 If cmb.ListCount > 0 Then For x = 0 To cmb.ListCount - 1 cmb.RemoveItem 0 Next End If For x = 0 To db.db_x cmb.AddItem val_val(x, 1) Next Set db = Nothing End Sub Private Sub cmb_Click() If cmb.ListIndex >= 0 Then Viw cmb.ListIndex End If End Sub Private Sub del_btn_Click() Dim db As db_db Dim hoge As Variant Set db = New db_db val_name = Array("ID", "表題", "数値", "文字") If ID > 0 And max > 1 Then hoge = db.del("tableone", "ID", ID) End If Set db = Nothing lod End Sub Private Sub in_btn_Click() Dim db As db_db Dim val_name As Variant Dim val As Variant Dim hoge As Variant chkchk val_name = Array("ID", "表題", "数値", "文字") val = Array(max, cmb, suuzi, moji) Set db = New db_db hoge = db.up_in(True, "tableone", val_name, val, max) Set db = Nothing lod End Sub Private Sub upd_btn_Click() Dim db As db_db Dim val_name As Variant Dim val As Variant Dim hoge As Variant chkchk val_name = Array("表題", "数値", "文字") val = Array(cmb, suuzi, moji) Set db = New db_db If ID > 0 And max > 1 Then hoge = db.up_in(False, "tableone", val_name, val, ID) End If Set db = Nothing lod End Sub Sub Viw(i As Long) ID = val_val(i, 0) suuzi = val_val(i, 2) moji = val_val(i, 3) End Sub Sub chkchk() If IsNumeric(suuzi) Then If suuzi > 9999 Then suuzi = 9999 End If Else suuzi = 0 End If If IsNumeric(moji) Then moji = "文字が不正>" & moji End If If IsNumeric(cmb) Then cmb = "文字が不正>" & cmb End If End Sub
↑formソースコード
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
35, 358, access, db, https, sample, samplezip, SQL, Viewer, www, zip, いま, インジェクション, コード, こと, コメント, これ, サンプル, ソース, それ, ダウンロード, つもり, バグ, ファイル, マイクロソフト, ヨロシク, 下記, 他, 何, 修正, 削除, 動作, 嘘, 対策, 工事, 改良, 時, 暇, 無駄, 空, 突貫, 若干, 軽量, 追加, 追記, 飯,