さくらレンタルサーバーでWordPressのDBバックアップを支援するPHPコード
2020.01.10
さくらレンタルサーバーでWordPressバックアップを支援するPHPコードです。
駆け出しのWEB担当者用のプログラムです、動作環境はPHP5.6以上でお願いします。バックアップする際にWARNINGが発生してしまうには対応しておりません。メールが貯まりますが大丈夫ですよ、きっと。
プログラムを読めば何を書いているのか、駆け出しのWEB担当者様もわかるとは思いますが、変更してほしいのはIDとPASS部分です?。ルートにWordPressをインストールしていない場合は $wploadfile の変更もお願いします。
ファイルをアップロードした階層に dbbackup名でフォルダを設置しそのフォルダにベーシック認証をかけておいてください。外部からダウンロードが容易に出来るので・・・。
上記の設定が完了したらファイルをアップロードし sakura-rental-wpdb-backupfullにアクセスしてください。
ログイン後、管理画面より設定を行った後、さくらレンタルサーバーのコントロールパネルよりCRONの設定を行ってください。
ダウンロードはこちらから
https://zip358.com/tool/sakura-rental-wpdb-backupfull/sakura-rental-wpdb-backupfull.zip
尚、CRON設定に関しては例を管理画面に書いていますのでそちらの参考に設定をお願いいたします、またバックアップは1週間保持します。
月曜日?日曜日まで7ファイルのMYSQL、DBのバックアップファイルが出来上がります。管理画面の曜日設定にチェックが入っていないものはバックアップ致しません。
※ソースコードは下記になります。
※2020年12月、修正しました。ソースコードは下記になります。
※wp-load.phpの階層を自身の階層に変更してください。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="Description" content="Enter your description here"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.2/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/all.min.css">
<link rel="stylesheet" href="assets/css/style.css">
<title>さくらレンタルサーバーでWordPressのDBバックアップを支援するPHPコード</title>
</head>
<body>
<div class="container">
<div class="row">
<div class="col table-responsive">
<table class="table" id="tbl">
</table>
</div>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.1/umd/popper.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.2/js/bootstrap.min.js"></script>
<script src="./assets/js/common.js?<?=time()?>"></script>
</body>
</html>
window.onload = function () {
$.ajax({
type: "POST",
dataType: "json",
url: "./lib/view.php",
data: "data",
success: function (response) {
if (response.password.ok === "ok") {
view();
} else {
passwordview();
}
}
});
};
function view() {
let str = "";
fetch("./schedule.dat").then(response => response.text()).then(data => {
let weekval = data.split(",");
let weekname =
[
{en:"Sunday",ja:"日曜日"},
{en:"Monday",ja:"月曜日"},
{en:"Tuesday",ja:"火曜日"},
{en:"Wednesday",ja:"水曜日"},
{en:"Thursday",ja:"木曜日"},
{en:"Friday",ja:"金曜日"},
{en:"Saturday",ja:"土曜日"}
];
if (weekval.length === 7) {
for (var i = 0; i < 7; i++) {
let weekvalflg = weekval[i] == 1 ? " checked " : "";
str += `
<tr>
<td>${weekname[i].ja}</td>
<td>
<div class="form-check">
<input id="${weekname[i].en}_chk" class="form-check-input" type="checkbox" name="" value=1 ${weekvalflg}>
<label for="${weekname[i].en}_chk" class="form-check-label">バックアップする</label>
</div>
</td>
</tr>
`;
}
} else {
for (var i = 0; i < 7; i++) {
str += `
<tr>
<td>${weekname[i].ja}</td>
<td>
<div class="form-check">
<input id="${weekname[i].en}_chk" class="form-check-input" type="checkbox" name="" value=1>
<label for="${weekname[i].en}_chk" class="form-check-label">バックアップする</label>
</div>
</td>
</tr>
`;
}
}
str += `
<tr>
<td colspan="2"><button class="btn btn-primary" id="btn" type="button">設定する</button></td>
</tr>
`;
document.getElementById("tbl").innerHTML = str;
document.getElementById("btn").addEventListener("click", function () {
$.ajax({
type: "POST",
url: "./lib/backup-setting.php",
data: {
Sunday: document.getElementById("Sunday_chk").checked?1:0,
Monday: document.getElementById("Monday_chk").checked?1:0,
Tuesday: document.getElementById("Tuesday_chk").checked?1:0,
Wednesday: document.getElementById("Wednesday_chk").checked?1:0,
Thursday: document.getElementById("Thursday_chk").checked?1:0,
Friday: document.getElementById("Friday_chk").checked?1:0,
Saturday: document.getElementById("Saturday_chk").checked?1:0
},
dataType: "json",
success: function (response) {
if (response.ok == "ok") {
alert("設定しました");
} else {
alert("失敗しました");
}
}
});
});
});
}
function passwordview() {
document.getElementById("tbl").innerHTML = `
<tr>
<td>wordpress Id</td>
<td>
<div class="input-group">
<input class="form-control" type="text" id="wpid" placeholder="ワードプレスのIDを入力ください" aria-label="ワードプレスのIDを入力ください" aria-describedby="wpid">
</div>
</td>
</tr>
<tr>
<td>wordpress pass</td>
<td>
<div class="input-group">
<input class="form-control" type="password" id="wppass" placeholder="ワードプレスのPassを入力ください" aria-label="ワードプレスのIDを入力ください" aria-describedby="wppass">
</div>
</td>
</tr>
<tr>
<td colspan="2"><button class="btn btn-primary" id="btn" type="button">ログインする</button></td>
</tr>
`;
document.getElementById("btn").addEventListener("click", function () {
$.ajax({
type: "POST",
dataType: "json",
url: "./lib/pass.php",
data: { wpid: document.getElementById("wpid").value, wppass: document.getElementById("wppass").value },
success: function (response) {
if (response.password.ok === "ok") {
view();
} else {
alert(response.password.msg);
passwordview();
}
}
});
});
}
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
5.6, db, dbbackup, ID, pass, php, sakura-rental-wpdb-backupf, WARNING, web, WordPress, wploadfile, アップロード, インストール, お願い, コード, サーバー, さくら, ダウンロード, バックアップ, ファイル, フォルダ, プログラム, ベーシック, メール, ルート, レンタル, 上記, 何, 動作, 名, 場合, 変更, 外部, 完了, 容易, 対応, 担当者, 支援, 環境, 発生, 設定, 設置, 認証, 部分, 階層, 際, 駆け出し,
WordPressの404外部リダイレクトプラグインを作りました。
2019.11.16
WordPressの404外部リダイレクトプラグインを作りました。
ソースコードはこんな感じになってます、、、。
使用される方は下記のURLよりダウンロードを行ってください。
解凍してフォルダをワードプレスのpluginを置く場所へアップロードし
page404goプラグインを有効にしていただければ使用できます。
https://zip358.com/plugin/page404go.zip
<?php
/*
Plugin Name: page404GO!!
Plugin URI: https://zip358.com/plugin/page404go.zip
Description: 404ページを任意のURLへ変換し遷移させる
Author: taoka toshiaki
Version: 1.0
Author URI: https://zip358.com/
*/
add_action( 'wp', function() {
global $wp;
$domain = get_option('domain404page')?get_option('domain404page'):"https://zip358.com/";
if(is_404()){
wp_redirect($domain.$wp->request);
exit;
}
});
add_action('admin_menu','page404go_setting');
function page404go_setting(){
add_options_page(
'zip358.com:プラグイン',
'404リダイレクト設定',
'administrator',
'page404go',
function(){
if(isset($_POST["domain404page"])){
if(preg_match("/https?://.*/$/",$_POST["domain404page"])){
$url = $_POST["domain404page"];
}elseif(preg_match("/https?://.*/",$_POST["domain404page"])){
$url = $_POST["domain404page"]."/";
}else{
$url = "https://zip358.com/";
}
update_option('domain404page', wp_unslash($url));
}
?>
<form method="post" action="">
<h2>リダイレクトドメイン指定</h2>
<input type="text" style="width:350px" name="domain404page" value="<?=get_option('domain404page')?get_option('domain404page'):""?>" placeholder="https://zip358.com/">
<?php submit_button(); ?>
</form>
<?php
}
);
}
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
1195254834632380416, 358, 404, Author, com, description, go, lt, name, page, php, plugin, status, taoka, toshiak, Twitter, URI, url, WordPress, zip, アップロード, コード, ソース, ダウンロード, フォルダ, プラグイン, プレス, リダイレクト, ワード, 下記, 任意, 使用, 場所, 変換, 外部, 感じ, 方, 有効, 解凍, 遷移,
画像をタイル状に分離して一括ダウンロードさせるジェネレーター
2019.09.07
画像をタイル状に分離して一括ダウンロードさせるジェネレーターを
作ってみました。画像は自動的に削除されます?
あることをすれば他人の画像がアップした画像も削除されます。
ちなみに一括ダウンロードbuttonを押すと画像がサーバー上に保存され
強制ダウンロードが始まります。
動作はブラウザChromeオンリーです。
また一括ダウンロードを押すと複数のファイルを一括ダウンロードするか
どうかの問い合わせが表示されますので「はい」を
選択してください。尚、30秒以内に保存されていないファイルは
次々と削除されます。
サイトはこちらから
https://zip358.com/tool/demo5/index-14.html
ソースコードは下記になります。
ページ(base64生成+画像ダウンロード処理)
追記:zipファイルにより格納するように処理を変更しました。
参考にしたサイト:https://ex1.m-yabe.com/archives/4215
<!DOCTYPE html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>画像分離してダウンロード:画像分離ジェネレーター</title>
<meta name="description" content="画像分離してダウンロード:画像分離ジェネレーター">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="../jquery/jquery-3.4.1.js"></script>
<link rel="stylesheet" href="../bootstrap/css/bootstrap.css">
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-71682075-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-71682075-1');
</script>
<style>
body{
background-color: black;
color: antiquewhite;
}
img{
margin:10!important;
padding:10!important;
}
#container{
width: 100%;
}
#container img{
margin:10px;
}
</style>
</head>
<body>
<span id="bat"></span><a id="dl"></a>
<input class="form-control" type="file"></input>
<div id="container"></div>
<script>
$(function(){
$("[type=file]").on("change",function(){
$('#container').html("");
$("#bat").html("");
console.log($(this));
if(!$(this).prop('files')[0].type.match(/[png|jpg|jpge|gif]/)){
alert("ファイル形式エラー");
return false;
}
var canvas = document.createElement('canvas');
var reader = new FileReader();
reader.onload = function(event) {
var image = new Image();
image.onload = function() {
sprite = {width:50,height:50};
canvas.width = sprite.width;
canvas.height = sprite.height;
var ctx = canvas.getContext("2d");
var x = 0;
for(var i=0; i*sprite.height<image.height; i++){
for(var j=0; j*sprite.width<image.width; j++){
ctx.drawImage(
image,j*sprite.width,i*sprite.height,
sprite.width,sprite.height,
0,0,
sprite.width,sprite.height
);
var spriteElement = new Image;
spriteElement.src= canvas.toDataURL();
$('#container').append(spriteElement);
}
}
$("#bat").html("<input type='button' value='一括ダウンロード' onclick='bat_img()'>");
}
image.src = event.target.result;
}
reader.readAsDataURL($(this).prop('files')[0]);
});
});
function bat_img(){
var data = [];
for(var i=0; i< $("img").length;i++){
data.push({"base64":$("img").eq(i).attr("src"),"no":i});
}
$.ajax({
type: 'POST',
url: 'bat_img.php',
data:{"obj":data},
dataType: 'json'
}).done(function(obj){
if(obj[obj.length - 1 ].chk=="ok"){
var link = document.getElementById("dl");
link.href = obj[obj.length - 1].zippath;
link.download = "zipimg.zip";
link.click();
var data2 = [];
for(var i = 0 ; i < obj.length ; i++){
if(i==0){
data2.push({Path:obj.path,no:obj.no,t:obj.t,"zipimgpath":obj[obj.length - 1].zippath});
}else{
data2.push({Path:obj.path,no:obj.no,t:obj.t});
}
}
var del = function(){
$.ajax({
type: 'POST',
url: './bat_del.php',
data:{"obj":data2},
dataType: 'json'
});
};
del();
}
});
}
</script>
</body>
</html>
<?php
$i=0;
foreach($_POST["obj"] as $key=>$val){
$b64 = base64_decode(str_replace("data:image/png;base64,","",$val["base64"]));
$no = (int)$val["no"];
$t = time();
$Path = "./bat_img/tmp/$t-$no.png.webp";
$re = @file_put_contents($Path,$b64);
if($re){
$obj[$i]["chk"] = $re?"ok":"ng";
$obj[$i]["name"] = "$t-$no.png.webp";
$obj[$i]["path"] = $Path;
$obj[$i]["no"] = $no;
$obj[$i]["t"] = $t;
$i++;
}
}
$obj[--$i]["zippath"] = zipfile($obj);
print json_encode($obj);
function zipfile($obj){
$ZipFiles = function($obj){
foreach($obj as $key=>$val){
$path[] = $val["path"];
}
return $path;
};
$Zip_Files = $ZipFiles($obj);
$zipFileName = time().'_zipimg.zip';
set_time_limit(0);
$zip = new ZipArchive();
$zipTmpDir = './tmp/zip/';
$result = $zip->open($zipTmpDir.$zipFileName, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE);
if( $result !== true ){ //エラー処理
echo 'error!';
exit();
}
foreach ($Zip_Files as $key=>$filepath) {
$filename=basename($filepath);
// ZIP圧縮するファイルを追加
// ファイルパス・ファイル名としないと圧縮ファイルを解凍するとフルパスになる
$zip->addFile($filepath,$filename);
}
//ZIP 出力
$zip->close();
return $zipTmpDir.$zipFileName;
}
<?php
unlink($_POST["obj"][0]["zipimgpath"]);
foreach($_POST["obj"] as $key=>$val){
$Path = $val["Path"];
$no = (int)$val["no"];
$t = (int)$val["t"];
$cmd = function(){
foreach(glob("./bat_img/tmp/*") as $file_name){
$command = "rm -rf " . realpath($file_name);
exec($command);
}
};
if(pathinfo($Path)["extension"]=="png" and preg_match("/bat_img\/tmp/",$Path)){
if(is_file($Path)){
sleep(30);
unlink($Path);
}else{
$cmd();
}
}else{
$cmd();
}
}
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
1, 14, 30, 358, 4, 5, 64, archives, base, button, Chrome, com, demo, ex, html, https, index, m-yabe, tool, www, zip, アップ, オンリー, コード, こちら, こと, サーバー, サイト, ジェネレーター, ソース, タイル, ダウンロード, はい, ファイル, ブラウザ, ページ, 一括, 下記, 他人, 保存, 処理, 分離, 削除, 動作, 参考, 問い合わせ, 変更, 強制, 格納, 生成, 画像, 表示, 複数, 追記, 選択,
gitとかgithubとかgitlabを一通り勉強して
2019.06.02
gitとかgithubとかgitlabを一通り勉強して
githubやgitlabは遠隔でプロジェクト組んで開発する人以外には
必要ないような気がします。
確かにGUIでほぼ面倒な手順は消えてなくなります。
gitとは何かバージョン管理と言われます、
簡単に言えばファイルの世代管理です。
githubやgitlabは何か、リポジトリ管理です。
リポジトリ管理とはなにか、簡単に言えば
バージョン管理を集約したものを管理するものと思ってください。
リポジトリというものを管理したいディレクトリの配下に
置くことでその中のファイルはコマンド打てば
管理下に置くことが出来、世代管理が可能になるということ
ただ、それだけの事です。
ローカルで管理していたものをリモートに置く場合、
プッシュ=アップロード。ダウンロードしたい場合は
プルという事。管理したいファイルはアッドする。
コミットをした時点でファイル履歴となる等など…。
複数人で開発する場合は
グールプを作りその中にユーザを作成し
ローカルからリモートへ接続を行えば良い…
これぐらい覚えとけば良いかなと後はブランチ機能なども
ありますが、この機能を使用すると複雑怪奇になりそうな気がします。
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
git, github, gitlab, GUI, アッド, アップロード, こと, コマンド, コミット, それだけ, ダウンロード, ディレクトリ, バージョン, ファイル, プッシュ, プル, プロジェクト, もの, リポジトリ, リモート, ローカル, 世代, 中, 事, 人, 勉強, 可能, 場合, 手順, 気, 管理, 簡単, 遠隔, 配下, 開発, 集約, 面倒,
tensorflowは簡単にインストールできるけど、そこから何やれば
2019.02.09
tensorflowは簡単にインストールできるけど、そこから何やれば
良いのか、よくわからない。
いま流行りの人工知能ですが、こういうこと出来るよってのは
知っている、例えば画像の仕分けとか。
そこからオリジナルに適応できないのだ。
若造なら画像収集とか考えそうです、、、えぇぇ。
10代なら若気の至りだろうけど、40代間近になると
さすがに無いなと思うわけです。
収集していたらグロ画像が釣れそうな気がしますし
怖くてできません。ちなみに
逃げるは恥だが役に立つグーグル画像検索ダウンロードコンソールアプリを
公開しているのですが、これ変更すればえぇまぁ出来そうですね。
■人工知能を仕事で活用するならば。
人工知能で出来ることで、人の顔にモザイクをかけることが出来るということ。
他には、画像の仕分けとか、本屋さんで小耳に挟んだことですが
工事現場とかでは結構写真を取らないといけないらしく
それを分別するのが面倒だとか、
こういうのには人工知能は大活躍しそうですね。
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
10, 40, tensorflow, アプリ, いま, インストール, オリジナル, グーグル, グロ, こと, これ, コンソール, さすが, そこ, ダウンロード, モザイク, 人, 人工, 仕事, 他, 公開, 写真, 収集, 変更, 小耳, 工事, 役, 恥, 本屋, 検索, 気, 活用, 現場, 画像, 知能, 簡単, 若気, 若造, 適応, 間近, 顔,
VBAオブジェクトを自動生成しイベントを付与する。
2019.01.12
VBAオブジェクトを自動生成しイベントを付与する。
サンプルコードです。
ダウンロードはこちら
https://zip358.com/tool/sample.zip
Dim chg_class(0 To 5) As chg
Public Sub objset()
Dim obj_ctl As Control
Dim i As Integer
For i = LBound(chg_class) To UBound(chg_class)
Set obj_ctl = UserForm1.Controls.Add("Forms.TextBox.1", "Box" & i)
obj_ctl.Top = 10 + 20 * i
obj_ctl.Width = 200
obj_ctl.Height = 20
obj_ctl.Text = "ここを変更してみて、またはダブルクリック(" & i & "番)"
Set chg_class(i) = New chg
chg_class(i).set_evn obj_ctl, i
Set obj_ctl = Nothing
Next i
End Sub
Private WithEvents TextB As MSForms.TextBox
Private index_no As Integer
Public Sub set_evn(hoge_obj As MSForms.TextBox, hoge As Integer)
Set TextB = hoge_obj
index_no = hoge
End Sub
Private Sub TextB_Change()
MsgBox TextB.Text 'UserForm1("Box" & index_no)
End Sub
Private Sub TextB_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
MsgBox TextB.Text 'UserForm1("Box" & index_no)
End Sub
Private Sub TextBox1_Change()
MsgBox TextBox1
End Sub
Private Sub CommandButton1_Click()
End Sub
Private Sub UserForm_Click()
End Sub
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
0, 1, 10, 20, 200, 358, 5, Add, amp, as, Box, chg, class, com, Control, Controls, ctl, Dim, For, Forms, Height, Integer, LBound, obj, objset, public, sample, set, Sub, Text, TextBox, To, tool, TOP, UBound, UserForm, VBA, Width, zip, イベント, オブジェクト, コード, ここ, こちら, サンプル, ダウンロード, 付与, 変更, 自動生成,
DropFTPを配布。
2018.12.01
ドップして一つのファイルを転送するソフトを作りました。
こんなのどうしているのかと疑問を持つ人もいると思いますが
業務上、こんなソフトが要るという会社などもいるのではないかと
思いで作りました。
ダウンロードはこちらから
https://zip358.com/tool/DropFTP.zip
ソースコードは下記になります。
※FTP部分はWinSCPのライブラリを使用しています。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using WinSCP;
namespace dropFTP
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void upbtn_Click(object sender, EventArgs e)
{
String err = "";
if (hostText.Text == "") {
err += "ホスト名が設定されていませんn";
}
if (idText.Text == "")
{
err += "IDが設定されていませんn";
}
if (passText.Text == "")
{
err += "passが設定されていませんn";
}
if (remText.Text == "")
{
err += "アップロード場所が設定されていませんn";
}
if (uplab.Text == "")
{
err += "アップロードファイルが設定されていませんn";
}
var RadioGroup = groupFTP.Controls.OfType<RadioButton>().SingleOrDefault(rb => rb.Checked == true);
if (RadioGroup == null) {
err += "アップロード環境が設定されていませんn";
}
if (err != "")
{
MessageBox.Show(err);
}
else {
if (RadioGroup.Text == "FTP") {
upFTP();
}
if (RadioGroup.Text == "SFTP")
{
upSFTP();
}
}
}
private int upFTP() {
try
{
// Setup session options
SessionOptions sessionOptions = new SessionOptions
{
Protocol = Protocol.Ftp,
HostName = hostText.Text,
UserName = idText.Text,
Password = passText.Text,
PortNumber =int.Parse(portText.Text)
};
using (Session session = new Session())
{
// Connect
session.Open(sessionOptions);
// Upload files
TransferOptions transferOptions = new TransferOptions();
transferOptions.TransferMode = TransferMode.Binary;
TransferOperationResult transferResult;
if (remText.Text.EndsWith("/"))
{
transferResult = session.PutFiles(@uplab.Text, remText.Text, false, transferOptions);
}
else
{
transferResult = session.PutFiles(@uplab.Text, remText.Text + "/", false, transferOptions);
}
// Throw on any error
transferResult.Check();
// Print results
foreach (TransferEventArgs transfer in transferResult.Transfers)
{
MessageBox.Show("アップロードしました");
}
}
return 0;
}
catch (Exception e)
{
MessageBox.Show("Error: {0}" + e);
return 1;
}
}
private int upSFTP()
{
try
{
// Setup session options
SessionOptions sessionOptions = new SessionOptions
{
Protocol = Protocol.Sftp,
HostName = hostText.Text,
UserName = idText.Text,
Password = passText.Text,
PortNumber = int.Parse(portText.Text),
GiveUpSecurityAndAcceptAnySshHostKey = true
};
using (Session session = new Session())
{
// Connect
session.Open(sessionOptions);
// Upload files
TransferOptions transferOptions = new TransferOptions();
transferOptions.TransferMode = TransferMode.Binary;
TransferOperationResult transferResult;
if (remText.Text.EndsWith("/")) {
transferResult = session.PutFiles(@uplab.Text, remText.Text, false, transferOptions);
} else {
transferResult = session.PutFiles(@uplab.Text, remText.Text + "/", false, transferOptions);
}
// Throw on any error
transferResult.Check();
// Print results
foreach (TransferEventArgs transfer in transferResult.Transfers)
{
MessageBox.Show("アップロードしました");
}
}
return 0;
}
catch (Exception e)
{
MessageBox.Show("Error: {0}" + e);
return 1;
}
}
private void Form1_DragDrop(object sender, DragEventArgs e) {
//e.Effect = DragDropEffects.Copy;
string[] fileName = (string[])e.Data.GetData(DataFormats.FileDrop, false);
uplab.Text = fileName[0];
}
private void Form1_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Copy;
}
private void radioSFTP_CheckedChanged(object sender, EventArgs e)
{
portText.Text = "22";
}
private void radioFTP_CheckedChanged(object sender, EventArgs e)
{
portText.Text = "21";
}
private void Form1_Load(object sender, EventArgs e)
{
this.FormBorderStyle = FormBorderStyle.FixedSingle;
this.MaximumSize = this.Size;
this.MinimumSize = this.Size;
}
}
}
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
358, Collections, com, ComponentModel, data, Drawing, DropFTP, Forms, FTP, Generic, Linq, System, Tasks, Text, Threading, tool, using, Wi, Windows, WinSCP, zip, コード, こちら, ソース, ソフト, ダウンロード, ドップ, ファイル, ライブラリ, 一つ, 下記, 人, 会社, 使用, 業務, 疑問, 転送, 部分, 配布,
C# でYOUTUBEダウンロードもどきを作ってみました。
2018.04.28
C# でYOUTUBEダウンロードもどきを作ってみました。ライブラリを使用しているので、結局、楽に作れるわけです。ホントに有り難いものです。YOUTUBEやニコニコ動画をダウンロードするソフトが売られていますけど、おそらくソフトウェアプログラマーは買うことはないだろうなと言う印象を作ってみて思いましたね。
【表示する】buttonを押下後、【ダウンロードする】を押さないとダウンロード出来ない仕様に変更してます。
ライブラリにこちらのライブラリを使用しております。
https://www.nuget.org/packages/VideoLibrary/
追記:ソースコードは控えることとにしました。下記の理由から・・・。今後どうなるか不透明なので使用する場合はご自身の判断の元で!尚、私自身はオススメはしません。
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
button, https, NuGet, org, packages, VideoLibrary, www, youtube, おすすめ, コード, こちら, こと, ご自身, ソース, ソフト, ソフトウェア, ダウンロード, プログラマー, ホント, もの, ライブラリ, 下記, 不透明, 今後, 仕様, 使用, 元, 判断, 動画, 印象, 場合, 変更, 押下, 理由, 私, 自身, 表示, 追記,
datetimepicker-master::でぃーたたいむぴっかーマスター!!日本語化
2017.10.14
datetimepicker-masterが日本語化できない。時刻だけ表示したい、カレンダーだけ表示したいなどに
実は対応しているのだけど、バージョンがアップしてからそのやり方が変わっていて
ググってもそのやり方が出てこないので、じぶんが記載してみました。
ソースを読まないと見えてこないものが有るですが、ぶっちゃけ他人のソースを読むのは面倒くさいでもプラグインは使用したい方。
下記のコードで日本語化可能です。
カレンダー非表示可能です。
時刻非表示可能です。
ちなみにソースを見るとdefault_options(でふぇるとおぷしょん)のオブジェクトで
その他、操作も可能ですのでソースを読みたい人は読んでみてください。
ちなみにちなみにdatetimepicker-masterプラグインはこちらからダウンロード可能です。
https://github.com/xdan/datetimepicker
サンプルプログラムはこちらです。
https://zip358.com/tool/datetimepicker
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>zip358.com:datetimepicker日本語</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="./datetimepicker-master/jquery.datetimepicker.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="./datetimepicker-master/build/jquery.datetimepicker.full.js"></script>
<script>
$(function(){
$.datetimepicker.setLocale("ja");//にほんご
$("#dtp").datetimepicker({
format:"Y/m/d H:i",
formatTime:"H"//時間だけ(分:非表示)
});
$("#dtp2").datetimepicker({
format:"Y/m/d",
timepicker:false//時刻非表示
});
$("#dtp3").datetimepicker({
format:"H:i",
datepicker:false//カレンダー非表示
});
});
</script>
</head>
<body>
<input id="dtp" type="text">
<input id="dtp2" type="text">
<input id="dtp3" type="text">
<div id="ana">
</div>
</body>
</html>
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
com, datetimepicker, datetimepicker-master, default, github, https, options, xdan, アップ, オブジェクト, カー, カレンダー, コード, こち, こちら, サンプル, じぶん, ソース, その他, タイム, ダウンロード, バージョン, ふぇると, プラグイン, プログラム, マスター, もの, やり方, 下記, 人, 他人, 使用, 可能, 対応, 操作, 方, 日本語化, 時刻, 表示, 記載,
アドビインストーラー(AdobeCreateCloud)のダウンロードでエラー207を吐く。
2017.03.10
アドビインストーラー(AdobeCreateCloud)のダウンロードでエラー207を吐く。
原因はサーバが応答していないよとか言う理由なのですが
どうも同じダウンロード率でストップするということは
何かしら原因があるに違いないと思っています。
今のところ原因不明なのです。
分かり次第、記事を追記しますので少々お待ち下さい。
出来れば今日中に謎をときたいです、セキュリティーの関係かなと
思ったのですが、それなら最初からダウンロードできないですよね。
「なので何かの原因があるに違いない!!」
自分の推測ではWindowsのDLLが問題かもなと・・・。
対処方法(サポセンに電話):
http://www.adobe.com/jp/applicationmanagerpatch/downloadwin.html
こちらに進み、ApplicationManager10.0_all.exeをダウンロードすると
自動的にインストール走ります。インストールが終わるとAdobeCreateCloudが
立ち上がりますっていう事です。うまくダウンロードできない場合は
こちらを試してみてください。
古いパソコンにインストールするなどするとこういう事が起きるのかも?
原因については分かりません。
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
AdobeCreateCloud, API, ApplicationManager10.0_all.exe, dll, Windowsプログラミング, アドビインストーラー, インストール, エラー207, サーバ, サポセン, セキュリティー, ダウンロード, ダウンロード率, ところ原因, 今日中, 原因, 古いパソコン, 対処方法, 少々, 推測, 日経BPパソコンベストムック, 理由,
みんなが大好きなマリオが何やら酷評されている。
2016.12.18
みんなが大好きなマリオが何やら酷評されている。
12月15日にリリースされたスパーマリオランのアプリがかなり評価が悪いです。
実際、無料なのでプレイしてみた。
1?3までは無料で遊べるけれど、それ以降はお金を払ってくださいという・・・課金システム!!
※1?4は20秒間無料。
これは酷評を書かれても仕方がない、こんなのだったら最初から有料で売ったほうが良い気がします。
そして不満なのはジャンブ以外はオート操作ということです。
おそらくオートランがココまで叩かれるとは思っていなかった
と開発者は思うと思います。寝ずに開発した?オートランが正直なところ、マリオの楽しみを消している、おそらくスマホ世代はオートランではなくても操作可能だと思います。
オートラン機能を外して有料で売り出したらかなりヒットしたと思いますが、自分がプレイしてみた感想から
言えば、ポケモンGOみたいなヒットにはならないだろうと思います。知名度がかなりあるのでDL数は、そこそこ
ダウンロードされるとは思いますが、今のままではガッカリ度の方が強い気がします。
?
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
1, 12, 15, 20, 3, 4, DL, go, アプリ, オート, オラン, お金, かなり, ココ, こと, これ, システム, ジャンプ, スパー, スマホ, それ, ダウンロード, ところ, ヒット, プレイ, ポケモン, まり, マリオ, みんな, らん, リリース, 不満, 世代, 可能, 実際, 感想, 操作, 数, 最初, 有料, 楽しみ, 機能, 正直, 気, 無料, 知名, 自分, 評価, 課金, 酷評, 開発, 開発者,
FF15、人気なのか?アマゾンの評価は星3つだけど価格変動していない。
2016.12.01
FF15、人気なのか?アマゾンの評価は星3つだけど価格変動していない。むしろ、価格が少し上がっている。
先日、FF15を購入したのですがダウンロード版を購入したら良かったと若干後悔しているじぶんがいます。
PS4で、ディスクを読み込みする時に読み込み音が結構、ウルサイ音がPS4から聞こえてくる。
こんな事ならDL版を購入したら良かったと思うわけです。ディスクのメリットはあまりないかな・・・。
今後はディスク版の購入を極力やめてDL版に移行しようと感じました。
ちなみにFF15のレビューは、ツイッターにでも休日つぶやくことになると思いますw
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
15, 3, 4, DL, FF, PS, w, アマゾン, ウル, こと, さい, じぶん, ダウンロード, ツイッター, ディスク, メリット, レビュー, 事, 人気, 今後, 休日, 価格, 先日, 変動, 少し, 後悔, 星, 時, 版, 移行, 若干, 評価, 購入,
USBを差し込むと自分のPCの環境になるソフトみたいな?
2016.09.16
USBを差し込むと自分のPCの環境になるソフトみたいな事が
出来るソフトの紹介です。
下記のソフトを使用すれば、そういう事が簡単に出来てしまいます。
PortableApps.com Suite ダウンロードはこちら
http://portableapps.com/
このソフトが有れば人の家にパソコンを
持ち運ぶ事が半減します。他人のPC環境を間借りして
Web閲覧や書類を作ったりすることが可能。
また、履歴なども他人の環境には殆ど残りません。
ブラウザ履歴は残りませんが
通信履歴は残ります。
ちなみにMacやリナックス環境でも
動作します。当然のことながらWindowOSでも
動作可能です。
こういうPCのローカル環境を間借りして動くソフトを
USBランチャーと言います。
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
B01HFZJPX0, PortableApps.com Suite, USB3.0 Super Speedインターフェース, USBフラッシュメモリ, USBランチャー, Web閲覧, WindowOS, ダウンロード, パソコン, ブラウザ履歴, リナックス環境, ローカル環境, 並行輸入品, 他人, 動作, 書類, 東芝, 通信履歴,
httpingのインストール方法。centOS7
2015.07.26
httpingのインストール方法ですけど。wgetを使用してダウンロードしインストールするだけでOKです。しかし、gccがインストールされていないとエラーが出てしまいますのでgccもインストールしないといけないです。まず、gccをインストールします。その後、httpingをインストールするとすんなりとインストール出来るはずです。
yum -y install gcc
wget http://www.vanheusden.com/httping/httping-2.3.4.tgz
tar xfz httping-2.3.4.tgz
cd httping-2.3.4
make install
httping https://www.google.co.jp
ちなみにwgetがインストールされていないとダウンロードすることが出来ませんのでこちらもインストールする事もお忘れなく。
yum -y install wget
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
-y, 2.3.4, 7, cd, centOS, com, gcc, http, httping, install, Make, OK, tar, tgz, vanheusden, wget, www, xfz, yum, インストール, エラー, こちら, こと, ダウンロード, パス, 事, 使用, 後, 方法,
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, アップロード, インストール, インポート, こちら, こと, コマンド, サーバ, サービス, ソフト, ダウンロード, データ, ファイル, フリー, プロトコル, ポート, メモ, もう一つ, ログイン, 一括, 下記, 事, 何, 入力, 前提, 可能, 名前, 大量, 度, 昨日, 機能, 気, 環境, 自分, 解決, 転送, 通り, 重宝,
ご注意を:オレオレ詐欺勧誘{若者編}。
2014.11.22
本日、プロバイダ勧誘の電話がかかってきました。内容はこんな感じですプロバイダを変更すると中途解約なしに1200円で弊社のプロバイダに移行出来るというような内容でした。プロバイダの切り着替えもリモートを使用し簡単にできるというようなうたい文句通りで、10分後電話があり、リモート接続のためにリモート接続のためのソフトが必要だということで、DL(ダウンロード)してから初めてくさださいとのことでしたが、実際、サイトを訪問すると、なんだか怪しげなサイトになっていましたので結局、お断りしました。断った理由は、信用のできる会社だった場合、基本的にリモート接続(遠隔操作)は行いません。なので、こういうプロバイダ勧誘の会社から電話がかかってきた場合、お断りしたほうが良いです、尚、会社名と電話番号は聴いておくことが大事になります。
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
1, うたい文句通り, オレオレ詐欺勧誘, ご注意, サイト, ダウンロード, プロバイダ, プロバイダ勧誘, リモート接続, 中途解約, 会社, 会社名, 信用, 内容, 切り着替え, 実際, 弊社, 理由, 若者編, 遠隔操作, 電話番号,
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, いま, インジェクション, コード, こと, コメント, これ, サンプル, ソース, それ, ダウンロード, つもり, バグ, ファイル, マイクロソフト, ヨロシク, 下記, 他, 何, 修正, 削除, 動作, 嘘, 対策, 工事, 改良, 時, 暇, 無駄, 空, 突貫, 若干, 軽量, 追加, 追記, 飯,
Access2013届きましたよ(;´Д`)ハァハァ
2014.08.17
Access2013が手元に届きました。それは良かったのですけどポストに投函されてました。実際、これってメール便ではないので投函ってあり得ないのですが…。1万2千円の品物を投函って!!まぁ田舎だから取っていく人もいないだろうけど・・・と愚痴りながら、中身を開封してたらアレ!?( ´・ω・`)< ショボいぞ!!、プロダクトキーの赤いカードとインストールの手続き書の薄っぺらい紙だけ入ってました{店頭で聞いたとおりだ(´・ω・`)}。さっそくマイクロソフトのアカウントでログインし指定したURLからダウンロード&インストールしました。ちなみに2013の印象ですけど、UI(ユーザーインターフェース)はほぼAccess2010と変わってません、なので2010から移行される方は戸惑うことはないと思います。
今月か来月にはサンプルコードをUPします{忘れているかも(´Д`)、そのうちUPと思ってください}。
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
1, 2, 2010, 2013, access, nbsp, UI, UP, url, アカウント, アレ, インストール, インターフェース, うち, カード, キー, コード, こと, コレ, サンプル, ショボ, ソレ, ダウンロード, とおり, ハァハァ, プロダクト, ポスト, マイクロソフト, メール便, ユーザー, ログイン, 万, 中身, 人, 今月, 千, 印象, 品物, 実際, 店頭, 手元, 手続き, 投函, 指定, 方, 来月, 田舎, 移行, 開封,
良いこと聞いた、今のマイクロソフトの製品は{知らなかっただけ}
2014.08.16
今のマイクロソフトの家庭向け製品は、パッケージとか言いつつも全てダウンロードしてインストールする方式になっているのだと言う事を知ったU>ω<)ノ{情報筋はアプライド}。ちなみにヤマダ電機にも足を運んだのですが、アカデミック版しか在庫がないと言われてアプライドへ行ってきましたが、値段が少々、ヤマダ電機よりお高いので断念。結局、買わずに帰ってきてネットでパッケージ版を購入しました。先ほど言ったようにマイクロソフト製品はダウンロード版に移行したということなので、ネット購入したほうが安くOffice製品は買えるということです!!。メモ書き程度に残しときます。
ちなみに、ひとつ疑問を抱いたのが・・・それってOSの方もなのかなぁっていう疑問です?、次期OS、Windows9になったらOSを移行するつもりなので、それまでは疑問符です{一度、8.1にバージョンアップしていたのですが、結局、7に戻しました。}。
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
7, 8.1, 9, Office, OS, Windows, アカデミック, アップ, アプライド, インストール, こと, ソレ, それまで, ダウンロード, つもり, ネット, バージョン, パッケージ, ひとつ, マイクロソフト, メモ書き, ヤマダ電機, 一度, 事, 今, 値段, 全て, 在庫, 家庭, 少々, 情報, 断念, 方, 方式, 次期, 疑問, 疑問符, 移行, 製品, 購入, 足,