このスレッドはパー速VIPの過去ログ倉庫に格納されています。もう書き込みできません。。
もし、このスレッドをネット上以外の媒体で転載や引用をされる場合は管理人までご一報ください。
またネット上での引用掲載、またはまとめサイトなどでの紹介をされる際はこのページへのリンクを必ず掲載してください。

神が1にPHPとかSQLとかを仕込むスレ - パー速VIP 過去ログ倉庫

Check このエントリーをはてなブックマークに追加 Tweet

1 :以下、VIPにかわりましてパー速民がお送りします :2008/08/28(木) 12:17:42.98 ID:NfG.ntco
友達に月コーラ30本で管理たのまれた

まぁ管理プログラムとかがあってそこに出勤時間とか打てばいいんだな、多分数分で終わるからやってやんよ、OKOK

ちょwwwwwwww毎日全部タグ手打ちでやってたのかよwwwwwwwwwwwwwwwwwwwwww

あまりにも更新めんどくさいのでプログラムを組もうと思って格闘しててだいぶ出来たんだが
ひとつつまずいた

誰かPHPの神いませんか(´;ω;`)

神 光 臨

SQL勉強開始

アク禁\(^o^)/

しこしこ悪戦苦闘中←いまここ
【 このスレッドはHTML化(過去ログ化)されています 】

ごめんなさい、このパー速VIP板のスレッドは1000に到達したか、若しくは著しい過疎のため、お役を果たし過去ログ倉庫へご隠居されました。
このスレッドを閲覧することはできますが書き込むことはできませんです。
もし、探しているスレッドがパートスレッドの場合は次スレが建ってるかもしれないですよ。

旅にでんちう @ 2024/04/17(水) 20:27:26.83 ID:/EdK+WCRO
  http://ex14.vip2ch.com/test/read.cgi/part4vip/1713353246/

木曜の夜には誰もダイブせず @ 2024/04/17(水) 20:05:45.21 ID:iuZC4QbfO
  http://ex14.vip2ch.com/test/read.cgi/aaorz/1713351945/

いろは「先輩、カフェがありますよ」【俺ガイル】 @ 2024/04/16(火) 23:54:11.88 ID:aOh6YfjJ0
  http://ex14.vip2ch.com/test/read.cgi/news4ssnip/1713279251/

【MHW】古代樹の森で人間を拾ったんだが【SS】 @ 2024/04/16(火) 23:28:13.15 ID:dNS54ToO0
  http://ex14.vip2ch.com/test/read.cgi/news4ssnip/1713277692/

こんな恋愛がしたい  安部菜々編 @ 2024/04/15(月) 21:12:49.25 ID:HdnryJIo0
  http://ex14.vip2ch.com/test/read.cgi/news4ssnip/1713183168/

【安価・コンマ】力と魔法の支配する世界で【ファンタジー】Part2 @ 2024/04/14(日) 19:38:35.87 ID:kch9tJed0
  http://ex14.vip2ch.com/test/read.cgi/news4ssnip/1713091115/

アテム「実践レベルのデッキ?」 @ 2024/04/14(日) 19:11:43.81 ID:Ix0pR4FB0
  http://ex14.vip2ch.com/test/read.cgi/news4ssnip/1713089503/

エルヴィン「ボーナスを支給する!」 @ 2024/04/14(日) 11:41:07.59 ID:o/ZidldvO
  http://ex14.vip2ch.com/test/read.cgi/news4ssnip/1713062467/

2 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/28(木) 12:34:06.22 ID:UPpdI7oo
結局どこまでできてどこまでできなかったのか三百行
3 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/28(木) 12:38:49.41 ID:NfG.ntco
テーブルを作るとこまで教えてもらって、それに入力するプログラムを、「改訂新版基礎PHP」のサンプルを流用して作ってみたんだけど、
なぜかDBに書き込めないんだ。

昨日とか体験入店の子が3人も入ってしこしこエディタで手作業でやってたらあっという間に時間が過ぎる\(^o^)/

とりあえず先日作ったコードでひっかかってた部分をクリアして仮運用させて、その間に勉強しようと思うんだけどどうかなぁ。
4 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/28(木) 12:57:39.14 ID:NfG.ntco
ちなみにフォームからのデータを受けるプログラムはこんな感じ

<html>
<head><title>データの追加</title></head>
<body>
<?php

$host = "localhost";
if (!$conn = mysql_connect($host, "ほげ", "ほげほげ")){
die("データベース接続エラー.<br />");
}
mysql_select_db("dbname", $conn);

$no = mysql_real_escape_string($_POST['no']);
$img1 = mysql_real_escape_string($_POST['img1']);
$img2 = mysql_real_escape_string($_POST['img2']);
$img3 = mysql_real_escape_string($_POST['img3']);
$name = mysql_real_escape_string($_POST['name']);
$age = mysql_real_escape_string($_POST['age']);
$zod = mysql_real_escape_string($_POST['zod']);
$tall = mysql_real_escape_string($_POST['tall']);
$bust = mysql_real_escape_string($_POST['bust']);
$cup = mysql_real_escape_string($_POST['cup']);
$waist = mysql_real_escape_string($_POST['waist']);
$hip = mysql_real_escape_string($_POST['hip']);
$charm = mysql_real_escape_string($_POST['charm']);
$hobby = mysql_real_escape_string($_POST['hobby']);
$food = mysql_real_escape_string($_POST['food']);
$skill = mysql_real_escape_string($_POST['skill']);
$comment = mysql_real_escape_string($_POST['comment']);
$op01 = mysql_real_escape_string($_POST['op01']);
$op02 = mysql_real_escape_string($_POST['op02']);
$op03 = mysql_real_escape_string($_POST['op03']);
$op04 = mysql_real_escape_string($_POST['op04']);
$op05 = mysql_real_escape_string($_POST['op05']);
$op06 = mysql_real_escape_string($_POST['op06']);
$op07 = mysql_real_escape_string($_POST['op07']);
$op08 = mysql_real_escape_string($_POST['op08']);
$op09 = mysql_real_escape_string($_POST['op09']);
$op10 = mysql_real_escape_string($_POST['op10']);
$op11 = mysql_real_escape_string($_POST['op11']);
$op12 = mysql_real_escape_string($_POST['op12']);
$op13 = mysql_real_escape_string($_POST['op13']);
$op14 = mysql_real_escape_string($_POST['op14']);
$op15 = mysql_real_escape_string($_POST['op15']);
$op16 = mysql_real_escape_string($_POST['op16']);
$op17 = mysql_real_escape_string($_POST['op17']);
$op18 = mysql_real_escape_string($_POST['op18']);
$op19 = mysql_real_escape_string($_POST['op19']);
$op20 = mysql_real_escape_string($_POST['op20']);
5 :続き [sage]:2008/08/28(木) 12:58:01.38 ID:NfG.ntco

$op21 = mysql_real_escape_string($_POST['op21']);
$op22 = mysql_real_escape_string($_POST['op22']);
$op23 = mysql_real_escape_string($_POST['op23']);
$op24 = mysql_real_escape_string($_POST['op24']);
$op25 = mysql_real_escape_string($_POST['op25']);
$op26 = mysql_real_escape_string($_POST['op26']);
$sche01_1 = mysql_real_escape_string($_POST['sche01_1']);
$sche01_2 = mysql_real_escape_string($_POST['sche01_2']);
$sche01_com = mysql_real_escape_string($_POST['sche01_com']);
$sche02_1 = mysql_real_escape_string($_POST['sche02_1']);
$sche02_2 = mysql_real_escape_string($_POST['sche02_2']);
$sche02_com = mysql_real_escape_string($_POST['sche02_com']);
$sche03_1 = mysql_real_escape_string($_POST['sche03_1']);
$sche03_2 = mysql_real_escape_string($_POST['sche03_2']);
$sche03_com = mysql_real_escape_string($_POST['sche03_com']);
$newflg = mysql_real_escape_string($_POST['newflg']);
$newframe = mysql_real_escape_string($_POST['newframe']);
$expflg = mysql_real_escape_string($_POST['expflg']);

if ($name == ""){
exit ("名前が入力されていません");
}


$sql = "INSERT INTO dbtable(img1, img2, img3, name, age, zod, tall, bust, cup, waist, hip, charm, hobby, food, skill, comment, op01, op02, op03, op04, op05, op06, op07, op08, op09, op10, op11, op12, op13, op14, op15, op16, op17, op18, op19, op20, op21, op22, op23, op24, op25, op26, sche01_1, sche01_2, sche01_com, sche02_1, sche02_2, sche02_com, sche03_1, sche03_2, sche03_com, newflg, newframe, expflg) VALUES('$img1', '$img2', '$img3', '$name', '$age', '$zod', '$tall', '$bust', '$cup', '$waist', '$hip', '$charm', '$hobby', '$food', '$skill', '$comment', '$op01', '$op02', '$op03', '$op04', '$op05', '$op06', '$op07', '$op08', '$op09', '$op10', '$op11', '$op12', '$op13', '$op14', '$op15', '$op16', '$op17', '$op18', '$op19', '$op20', '$op21', '$op22', '$op23', '$op24', '$op25', '$op26', '$sche01_1', '$sche01_2', '$sche01_com', '$sche02_1', '$sche02_2', '$sche02_com', '$sche03_1', '$sche03_2', '$sche03_com', '$newflg', '$newframe', '$expflg')";

mysql_query($sql, $conn)
or die("登録できませんでした");
print("登録しました。");
?>
</body>
</html>
6 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/28(木) 12:59:39.16 ID:NfG.ntco
これを走らせると「登録できませんでした」のエラーが出る。

個数を増やしただけなんだけど、どっかおかしいのかな。
7 :以下、VIPにかわりましてパー速民がお送りします :2008/08/28(木) 13:02:22.12 ID:HGaA62DO
PHPわかりたくもないけど遊びに来た
8 :1 :2008/08/28(木) 13:07:15.71 ID:NfG.ntco
>>7
やぁやぁよくきたね

つ 旦
9 :以下、VIPにかわりましてパー速民がお送りします :2008/08/28(木) 13:14:26.89 ID:rHJfrgQo
俺も来た

MySQL触ったこと無いけどさ、普通SQLってやつは
失敗したら「何がどう失敗したのか」がとれるはずなんだ。

その方法を探して、単に「登録できませんでした」じゃなくて
エラーの内容を表示するようにするんだ!
10 :1 :2008/08/28(木) 13:20:12.52 ID:NfG.ntco
ちなみに以前ひっかかった所(これがクリアできれば仮運用できる)

ログファイルにはこんな感じでデータが入ってる
ぬこA<>20<>157<>80<>58<>84<>12:00〜20:00<>お休み<>
ぬこB<>22<>162<>88<>62<>90<>14:00〜20:00<>お休み<>
ぬこC<>18<>148<>78<>56<>82<>お休み<>お休み<>

これを時間の入っている要素で並べ替えしたい
お休みとかは一番下に持って行きたい

usort array_multisort とか使うらしいんだけどいまいちうまくいかないんだ。
11 :1 :2008/08/28(木) 13:21:22.50 ID:NfG.ntco
>>9

ご足労すまないねぇ。
SQLにエラー吐かせるにはどうしたらいいのかな。
12 :1 :2008/08/28(木) 13:22:53.07 ID:NfG.ntco
まずぐぐってみる
13 :以下、VIPにかわりましてパー速民がお送りします :2008/08/28(木) 13:24:49.15 ID:rHJfrgQo
>>11
それを自分で調べるんじゃぼけえええええ

直前のSQLSTATEのとりかた
http://www.bumblebury.com/function.mysqli-sqlstate.html

で、SQLSTATEがわかったらここで調べる
http://dev.mysql.com/doc/refman/4.1/ja/error-returns.html
14 :以下、VIPにかわりましてパー速民がお送りします :2008/08/28(木) 13:26:35.76 ID:rHJfrgQo
俺タイミングワルスww
とりあえずSQLを発行して、エラーだったら
必ずSQLSTATEを表示することだね、今後UPDATEやら作ったときも。
15 :1 :2008/08/28(木) 13:31:57.52 ID:NfG.ntco
SQLでエラー吐かせたら原因があっさり解明したww
フィールド値の書き間違えが1個あったorz

今まではサーバーのログ追えばよかったから、エラーを吐かせるって発想がなかったなぁ。
16 :1 :2008/08/28(木) 13:34:09.12 ID:NfG.ntco
これで次に進める・・・

けど今日もエディタでしこしこ更新作業しなきゃいけないんだ(´・ω・`)
とりあえず>>10の問題を解決して、作業効率を上げて、出来た時間で勉強すすめたいんだけどどうかな。
17 :以下、VIPにかわりましてパー速民がお送りします :2008/08/28(木) 13:36:49.27 ID:rHJfrgQo
あとはsortか、俺はPHP関係はググってまで付き合うモチベーション無いわ
与えられた関数を使わずに自力でソートしたっていいんだぜ。
プログラマーならソートのアルゴリズムくらい3つ4つ組めないとな!

…とCプログラマーが申しております
18 :1 :2008/08/28(木) 13:41:53.12 ID:NfG.ntco
>>17
PHPも始めてまだ1週間だからなぁ・・・
もともとHTMLが書けるだけの人間だったから、全部1から勉強だよww

プログラマーって大変だなぁ・・・全部覚えなきゃいけないんでしょ・・・
19 :以下、VIPにかわりましてパー速民がお送りします :2008/08/28(木) 13:47:31.30 ID:rHJfrgQo
組むだけならわりと馬鹿でもできる仕事だよ
スケジュールうんぬんとか上司や顧客とのこみゅにけーうんぬんが大変なだけ

ちなみに>>10はログファイルがどうとか言ってるのはよくわからんが
>>4-5でフォームから得た値のどれかのことなんだよな?
具体的にその変数を教えてくれ。
どっからどこまでを、どういう順番でソートしたいのか正確に。
20 :以下、VIPにかわりましてパー速民がお送りします :2008/08/28(木) 13:47:56.99 ID:qecZS4w0
ソート?  ソートならSQLにある。SELECT文の修飾句の一つだ。


・・・と、簡単なSQLなら使えるプログラマーが今北産業すら読まずに脊髄反射で申しております。
21 :1 :2008/08/28(木) 13:53:33.98 ID:NfG.ntco
>>20

DBにいれてしまえば
SELECT * FROM ほげ ORDER BY でいけるってのはこの前教わったんだ。

ただ、PHP+SQLの管理プログラムが出来るまで結構かかりそうだから、それまでの間に合わせのプログラムにPHPとテキストベースのデータファイルでやりたいんだ。

毎日TABLEタグの手打ちとかもう嫌だお・・・これに割く時間で勉強が出来るんだけどな。
22 :1 :2008/08/28(木) 13:57:17.75 ID:NfG.ntco
とりあえず今グーグル先生に多次元配列のソートのやり方を聞いてるけど、ファイルを読み込んで配列につっこむとこからやってるのが少ないんだね。
23 :以下、VIPにかわりましてパー速民がお送りします :2008/08/28(木) 14:01:47.17 ID:rHJfrgQo
データファイルを読み込んで、なのか。
なら、ソートのやり方を調べるというよりは
ファイルの読み方、データの取り方を調べろという話かね。
24 :1 :2008/08/28(木) 14:11:02.28 ID:NfG.ntco
独り言。
とりあえずソートの第1段階目をグーグル先生に聞いてきた。

$list = File("data.txt");

/* 名前比較用の関数 */
function schedcmp($a, $b)
{
$as = explode("<>", $a);
$bs = explode("<>", $b);
return strcmp($as[40], $bs{40});
}

foreach ($list as $line) {
// 一度配列に格納
$arr[] = explode("<>", $line);
}

// ソート
usort($arr, "schedcmp");

for($i = 0; $i < count($arr); $i++) {
list($no,$img,$name,$zod,$age,$tall,$bust,$cup,$waist,$hip,$charm,$hobby,$food,$skill,$comment,$op01,$op02,$op03,$op04,$op05,$op06,$op07,$op08,$op09,$op10,$op11,$op12,$op13,$op14,$op15,$op16,$op17,$op18,$op19,$op20,$op21,$op22,$op23,$op24,$op25,$op26,$sche01,$sche02,$sche03,$newflg,$newframe,$expflg,$host) = $arr[$i];
if ($sche01) {
print $name . ":" . $sche01 . "<br>\n";
}
}

ただこれだと逆並びになるなぁ。
出力例
ぬこA:満員御礼
ぬこC:あと1枠
ぬこD:14:00〜20:00
ぬこB:12:00〜25:00
25 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/28(木) 14:13:33.67 ID:UPpdI7oo
count($arr)-1から0まで回せばいいじゃないか
26 :以下、VIPにかわりましてパー速民がお送りします :2008/08/28(木) 14:28:20.96 ID:HGaA62DO
>>24
なんかデジャブ
27 :1 :2008/08/28(木) 14:33:07.98 ID:NfG.ntco
>>25
($i = 0; $i < count($arr); $i++) ここを変えるのか。

↑は0から$arrの行数分やるってことだよね。
っつーことは・・・

($i =count($arr)-1; 0 < $i; $i = $i-1 ) かな?

error\(^o^)/


28 :1 :2008/08/28(木) 14:35:26.48 ID:NfG.ntco
書き方が悪いか。

わかる人ならpgrものなんだろうね・・・(;^ω^)
29 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/28(木) 14:35:28.35 ID:AahCr6.o
今北産業
でもPHP知らない
SQLは知ってる
Java、C系は多分大丈夫
今なら暇だ
30 :1 :2008/08/28(木) 14:36:53.73 ID:NfG.ntco
>>29
SQLは
まだ
まってくれ

SQLと平行しながらなんて器用なことはできね(;^ω^)
31 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/28(木) 14:41:11.33 ID:AahCr6.o
んと、じゃぁ、SQLやる時にでも
メモ帳でSQL文だけを別ファイルに保存しとけよー


で、よくわかんないけど
schedcmpを昇順用と降順用の二つ作ればダメ?
32 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/28(木) 14:44:59.00 ID:UPpdI7oo
>>27で何故エラーになるんだ?
0<=$i になってないから値がヘンになるのは確かだが
33 :1 :2008/08/28(木) 14:51:43.77 ID:NfG.ntco
>>32
0<=$i にしてみたけどエラーになるね。

Parse error: syntax error, unexpected '@', expecting ')' in C:\xampp\htdocs\test4.php on line 25
25行目は($i =count($arr)-1; 0 <= $i; $i = $i-1 ) のあるとこで、括弧内しかいじってない

とりあえず、元に戻して
usortの下に
$arr = array_reverse($arr);

をいれてひっくり返したけど、これでなんか問題でるかな?
34 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/28(木) 14:55:48.87 ID:AahCr6.o
>>33
まず、$iを左辺にもってきて
それと、++ができるなら−−もできるはず

それと、array_reverseが完全に真逆にできるならおkだけど
その分時間がかかることを頭の片隅に
35 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/28(木) 14:56:23.40 ID:AahCr6.o
あ、こうね

($i =count($arr)-1; $i >= 0; $i-- )
36 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/28(木) 15:00:06.34 ID:UPpdI7oo
@…だと…?

エスパーすると、全角スペースと半角スペースを間違えている
37 :1 :2008/08/28(木) 15:00:18.67 ID:NfG.ntco
$iを左辺に持ってきたらできた( ^ω^)

あとこれは気になったんだけど、
>>24
print $name . ":" . $sche01 . "<br>\n";
↑のピリオドって何を示すんだろ?

「.」とか「ピリオド」でググってもよくわかんね。
38 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/28(木) 15:04:29.65 ID:AahCr6.o
>>37
俺の勝手な妄想だけど
結合
かなぁ
39 :1 :2008/08/28(木) 15:04:56.94 ID:NfG.ntco
あれ、やっぱ出来てなかった(;^ω^)
($i =count($arr)-1; $i >= 0; $i-- )にしたら
Parse error: syntax error, unexpected T_VARIABLE in C:\xampp\htdocs\test4.php on line 24
と出た。
40 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/28(木) 15:06:38.99 ID:AahCr6.o
--を前のに戻してもエラーになる?
41 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/28(木) 15:08:43.32 ID:UPpdI7oo
>>38あたり

"文字列"."文字列"

"文字列文字列"
と同じ
42 :1 :2008/08/28(木) 15:16:07.65 ID:NfG.ntco
>>40
うん、同じエラーを吐く。

>>41
へー。試しに
print "$name:$sche01<br>\n";
にしたら$sche01の値しか出さなかった。
print $name . ":$sche01<br>\n";
なら両方出た。
何でだろ。

43 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/28(木) 15:31:35.94 ID:UPpdI7oo
>>42
恐らく文字コードの問題
php.ini の中身を弄って見ろ
44 :1 :2008/08/28(木) 15:52:44.71 ID:NfG.ntco
>>44
default_charsetはエスケープされてるけど外せばいいのかな?

つかレン鯖にうpして実行してみたらずーっと読み込み中になる・・・
45 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/28(木) 15:57:56.73 ID:AahCr6.o
>>44
ファイルのパスってどうなってる?
カレントでもいけるの?

46 :1 :2008/08/28(木) 16:08:35.91 ID:NfG.ntco
>>45
ファイルパスはとりあえず同じディレクトリ内なのであのまんまでおkのはず。
47 :1 :2008/08/28(木) 16:37:16.18 ID:NfG.ntco
とりあえずarray_reverse使ったのを組み込んで、動作確認した。
うまく動いたww

あとはCronで定時に<><><>sche01<>sche02<>sche03 から

sche01のところにsche02、sche02のところにsche03をずらして、sche03を空欄にしたいので、グーグル先生と相談してくる
48 :1 :2008/08/28(木) 16:42:37.81 ID:NfG.ntco
メモ

ファイルを読み込み、配列にいれる
[40]に[41]を入れ、[41]に[42]を入れて、[42]の値を消去する
ファイルに書き出す

もっと効率いいやり方はないかな・・・
49 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/28(木) 16:48:02.35 ID:AahCr6.o
その40の意味がわからんから何とも言いがたいwwwwwwすまそwwwwww
50 :1 :2008/08/28(木) 16:56:04.68 ID:NfG.ntco
>>49
ああごめんww

[40]とかは読み込んだ配列の40番目の要素ってことね。
51 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/28(木) 17:00:20.72 ID:AahCr6.o
いや、それは分かるwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

なんで、なんで大和ハウ・・・いや、なんで40なんだ?wwwwww
40番目の意味が・・・うぇwwwwww
話中途半端に入ってごめんよ><
52 :1 :2008/08/28(木) 17:08:44.33 ID:NfG.ntco
重ねてごめんwwwwwwww

んと40番目の要素が当日の勤務時間で、41・42番目がそれぞれ明日、明後日の勤務時間なんだ。

cronでやろうと思ったのは、営業時間が早朝までになるから、単純に日付獲得して動かすと、夜中0時に明日のデータが表示されてしまうから。
早朝5時くらいに更新できるといいなーと思って。

今はエディタで作った更新ファイルをFTPクライアントで5時にアップしてる。
53 :1 :2008/08/28(木) 17:11:07.71 ID:NfG.ntco
ここまでの考え方は正しいかな?

<?php
//読み込み書き込みOKモードでファイルを開く
$datafile = "data.txt";
$file=fopen($datafile ,"r+");
//ファイルロック
flock($file,LOCK_EX);

ここで処理

書き出し
fputs($file,$line."\n");
//ロック解除
flock($file,LOCK_UN);
//ファイルを閉じる
fclose($file);
?>
54 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/28(木) 17:16:35.39 ID:AahCr6.o
>>52
把握

勤務予定時間とかの読み込みタイミングの兼ね合いねwwwwww

その勤務予定時間は今のところ、ファイルで持つって考え、よね?
で、それをcronで起動させて、shで更新させる・・・で合ってる?
55 :1 :2008/08/28(木) 17:19:19.44 ID:NfG.ntco
>>54
そのとおり。
普通に日付の変更と同時に切り替わったら怒られただろうなぁww
早い時点で気づいてよかった。

これが出来ればSQLの勉強に入れるんだ・・・ww
56 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/28(木) 17:23:17.97 ID:AahCr6.o
勤務表ってのは一月分あるんだよな?

アクセスがあったときに、嬢の情報を取得する時に
システム時間が0〜5時までの間なら、前日の勤務時間を参考
っていう風にしたら?
0〜5時ってのは設定ファイルか、設定テーブルに持つようにしてさ
57 :1 :2008/08/28(木) 17:28:40.46 ID:NfG.ntco
>>56
勤務表
そんなまともな商売じゃないからせいぜい明後日のスケジュールまでしかわからんのよwwwwww
一週間分のスケジュールくれって言ったらどうせ未定だから3日分しか聞いてない だっておwwwwww

>システム時間が0〜5時までの間なら、前日の勤務時間を参考
>っていう風にしたら?
>0〜5時ってのは設定ファイルか、設定テーブルに持つようにしてさ

何かすごい発想な希ガス。
プログラマーの発想力にはかなわないな。

いずれにせよどっかのタイミングでログファイルの更新をしないといかんね。
58 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/28(木) 17:32:14.61 ID:AahCr6.o
>>57
三日分wwwwwwwwwwwwwwww
それは辛いwwwwwwwwwwwwwwwwwwww
せめて1週間は欲しいよなwwwwwwwwwwwwww
更新するのが億劫になるwwwwwwwwwwwwwwwwwwww

前の40ってのも、定数にするのをオヌヌメしとくww


ログファイルの更新・・・?
59 :1 :2008/08/28(木) 17:40:21.02 ID:NfG.ntco
>>58

さ、定数・・・?
調べてみる。

ログファイルってのはスケジュールデータも含んだ女の子のデータのファイルね。
中身は
1<>jpg!:240!:376!:1!:jpg!:240!:155!:1!:!:!:!:!:!:!:!:!:<>ぬこ<>射手座<>0.8<>80<>40<>B<>40<>50<>タレ目<>昼寝<>とりにく<>ねずみとり<>ヾ(*´∀`*)ノキャッキャ<>△<>△<>×<>×<>×<>×<>×<>△<>×<>×<>×<>×<>×<>×<>×<>×<>×<>×<>×<>△<><><><><><><>14:00〜20:00<>23:00〜27:00<>14:00〜20:00<>1<><><>*.*.ne.jp<>
みたいなのが人数分。
40個目からスケジュール。
60 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/28(木) 17:44:04.20 ID:AahCr6.o
>>59
C言語で書くと


#define IDX_TODAY_SCHEDULE 40 //今日のスケジュールタイム
#define IDX_TOMMOROW_SCHEDULE 40 //今日のスケジュールタイム
 :
 :
 :
arr[IDX_TODAY_SCHEDULE] = arr[IDX_TOMMOROW_SCHEDULE];


こんな感じ


で、そういうのはログファイルとは言わないYO!!wwwwww
ってか、「,」じゃなく「<>」で区切ってるのねwwwwww
まぁありっちゃぁありか?ww
61 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/28(木) 17:44:25.64 ID:AahCr6.o
あ、TOMMOROW〜は、41だ><
62 :1 :2008/08/28(木) 17:52:59.24 ID:NfG.ntco
>>62
>で、そういうのはログファイルとは言わないYO!!wwwwwwwwwwww
そうかwwwwwwすまんwwwwwwwwwwwwダメな子でごめんねwwwwwwww

>ってか、「,」じゃなく「<>」で区切ってるのねwwwwwwwwwwww
perlで掲示板作ったときのクセが・・・(;^ω^)
PHPとかだとカンマが主流なのか。
クセつけるために後で直しとく。

PHPだとdefine("定数名", "値");になるのか。

define("IDX_TODAY_SCHEDULE", "40")とかにすりゃいいのね。

63 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/28(木) 17:54:58.27 ID:AahCr6.o
>>62
いや、一般的に、だよwwwwwwww
CSVファイル、ねwwwwww
まぁ「,」は紹介文とかに入る恐れがあるから、あんまり今回のには向かないだろうけどねwwwwww

あ、紹介文とかに<>が入ってた場合を考慮してる?



>PHPだとdefine("定数名", "値");になるのか。
>
>define("IDX_TODAY_SCHEDULE", "40")とかにすりゃいいのね。
PHPだと、そうなるのかwwwwwwwwww
64 :1 :2008/08/28(木) 17:59:02.74 ID:NfG.ntco
>>63
>あ、紹介文とかに<>が入ってた場合を考慮してる?

友達の作る文章は基本的にアホだし、せいぜい使う記号は♪くらいだから何も考えてないww

つかperlもPHPもCも微妙に書き方似てるね。
なんで言語統一してくれないんだ\(^o^)/
65 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/28(木) 18:02:43.03 ID:AahCr6.o
>>64
ま、ま、まぁ大丈夫だろうwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
""で紹介文がくくられていると安全、かもなwwwwww
PHPとかの仕様にもよるけどwwwwww



書き方は、まぁどれも似てるよwwwwww
よっぽどの言語じゃないかぎりwwwwwwww


統一・・・は絶対無理だなwwwwww
66 :以下、VIPにかわりましてパー速民がお送りします :2008/08/28(木) 18:04:11.95 ID:rHJfrgQo
>>64
いざ<>を使われたときに大慌てする様子が手に取るように見える…
本運用時には入力フォームの時点でチェックするようにね
67 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/28(木) 18:06:21.73 ID:UPpdI7oo
念のため書き込む前に

&→&
<→<
>→>

読み込んだ時に

>→<
<→>
&→&

しとけ
68 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/28(木) 18:07:35.42 ID:UPpdI7oo
&→&amp;
(ry



&amp;→&
(ry

69 :1 :2008/08/28(木) 18:09:16.00 ID:NfG.ntco
>>65−66
perlのときもやったけど、今見たら< >の処理はデータ入力プログラムに仕込んであった。

表現の似方に標準語と関西弁をわざわざ通訳するようなもどかしさが感じられるのは俺だけかなww
70 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/28(木) 18:12:30.07 ID:UPpdI7oo
表現の似方って、PHPとPerlの文法がか?

実際大して変わらん
71 :1 :2008/08/28(木) 18:14:43.78 ID:NfG.ntco
>>70
でも関西弁聞いても理解できるし、何か言われても言い返せるけど、
PHPの中でPerlの構文つかっても PCとか鯖が空気読んで理解くれないのがもどかしくなんないのかなーと思ったり。
72 :1 :2008/08/28(木) 18:52:44.12 ID:NfG.ntco
知らないことばっかの情報を処理し続けて、ちょっと脳が疲れてきたから休憩して腹筋スレ逝ってくる。

今日もみんなありがとう。
73 :1 :2008/08/29(金) 01:17:03.77 ID:z5LoBcoo
しこしこ手打ちで更新作業・・・

新人の女の子入ったけど、こんなぶっさいk(ryで客くるのか・・・?
74 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/29(金) 10:40:31.76 ID:BCSTlEEo
おいすー

>>73
だだだっだだだだだ大丈夫だって><
75 :1 :2008/08/29(金) 18:22:35.46 ID:z5LoBcoo
よし 今日もやるぞー

>>74
満員御礼って入れといてくれって言われたけど、どうみてもブラフです 本当に(ry

昨日の反省

実はソートがうまく行ってなかった件
配列の要素増やして対応することにした
76 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/29(金) 18:26:30.97 ID:BCSTlEEo
>>75
おいすー


で、だ
仕様書とまではいかないが、細かい決まりごとみたいなのを
箇条書きでいいから、残しとけよ

あとフローチャートまではいかなくていいから
流れみたいなのもな


じゃ、今日は帰るww
77 :1 :2008/08/29(金) 18:45:58.86 ID:z5LoBcoo
>>76
おーおつかれーww
78 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/29(金) 19:24:46.01 ID:3amlOzco
今北産業。
79 :1 :2008/08/29(金) 21:59:33.96 ID:z5LoBcoo
仕様書って
どんな
書き方なんだろ
80 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/31(日) 00:13:00.80 ID:R0GxgbMo
今北
なんかマターリしたスレだなww

「仕様書」の書き方なんて覚えなくていいんじゃね?
「仕様」さえちゃんと決まってれば。
>>76は仕様が分からんと
的確なアドバイスがしにくいのを懸念してるんだとオモタ。
と、仕事でWEBアプリやってるヘタレが申しております。
81 :1 :2008/08/31(日) 00:47:22.42 ID:HZRyHsko
>>80
仕様ってのは
・メニュー:新規登録 女の子データ変更
・一覧画面:女の子のリスト(名前(年齢)身長B(CUP)-W-Hのみ表示) [データ変更][スケジュール変更]
とか各変数の該当要素とか書いたメモみたいなのは一応あるけど、これが仕様書かと言われると(;^ω^)?となるなー。
82 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/31(日) 01:17:43.26 ID:R0GxgbMo
>>81
それを箇条書きにすればいいと思うよ。
少なくともプログラム考える時に役にはたつ。
もうちょっと突っ込むと、
・メニュー:新規登録 女の子データ変更
⇒登録項目:名前、年齢、身長、3サイズ、登録日・・・
・一覧画面:女の子のリスト(名前(年齢)身長B(CUP)-W-Hのみ表示) [データ変更][スケジュール変更]
⇒(50音順でソート)
みたいな感じで、詳細が書かれてると尚良い。
どういうデータを扱ってどう表示すべきか、が分かるからね。
83 :1 :2008/08/31(日) 03:06:35.00 ID:HZRyHsko
>>82
なるほどなぁ。
やたらめったら欲しい機能でググってコード突っ込んで、よし動いた!次!みたいにやってると確かに死にそうになるww
勉強の仕方って0からフルスクラッチを目指す方がいいのかな。
うおおおおこのコードを探してたんだ!とかやってると0から作れなくなりそう。

今日も新人さん1人入った。爆乳だがタトゥーとまぶたにピアス・・・顔は・・・
俺ならチェンジを断固要求する。

今日の分の更新\(^o^)/
明日はプログラム頑張ろう・・・
84 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/31(日) 03:19:22.38 ID:R0GxgbMo
チェンジワロタww
風俗か?

仕事でプログラムするんじゃないから、フルスクラッチする必要はない希ガス
PHPならサンプルコードなんていっぱい転がってるし、
使えるもの使っていった方が効率いいんじゃない?
仕様書あっても使えるサンプルコード探して流用したりってのは
普通にするしね。
仕様を元に、使えるコードは使う、サンプルなければ自作。
てのが一番良いとおも。

てか、遅くまでご苦労さんだなww
85 :1 :2008/08/31(日) 13:59:30.43 ID:HZRyHsko
>>84
みんなとっかかりはコード流用してやるもんなのか、安心したww

仕様書書いてみた。こんなんでいいのかな。

管理プログラム仕様

TOPページ
・メニュー:新規登録 女の子データ変更 
・本日の出勤、新人表示枠の女の子、名前(年齢)のみ表示

新規登録
⇒登録項目:no(自動生成),名前,年齢,星座,身長,B,CUP,W,H,チャームポイント,趣味,好きな食べ物,得意なプレイ,お店からのコメント,オプション01〜26(○、△、×で表示、無記入だと?にする。オプション個数は多めにとってある), NEW表示,新人の枠, 体験入店,画像3枚
 画像登録時に1枚目をサムネイル化(width 50px,2kb前後まで縮小)→GDを使う?(鯖にインスコされてることはチェック済)
 データファイルには上の項目に加えて、後記のスケジュールを登録

女の子データ変更:女の子のリスト(名前(年齢)身長B(CUP)-W-Hのみ表示) [データ変更][スケジュール変更]
⇒(no降順でソート)
 ・データ変更:項目:名前、年齢、身長、3サイズ、登録日・・・
 ⇒画像の削除が出来るように、画像1枚目が変更された場合、サムネ再作成
 ・スケジュール変更:今日、明日、明後日 [開始時間(各種フラグ)$sche0*_1]〜[終了時間$sche0*_2]をプルダウンメニューで
 ⇒各種フラグ内容:残り1枠、満員御礼、受付終了、当日欠勤→数値化してソート出来るようにして、case switchで元に戻すといいとか?

データファイル更新
⇒更新内容:明日のスケジュールを今日に移動、明後日を明日に移動、明後日を空欄にする

・cronで定時(AM4:00)に行う。
・毎日0:00で更新して、>>56のような方法を使う(具体的手法はわかんね\(^o^)/)
の2案アリ
86 :1 :2008/08/31(日) 14:10:26.58 ID:HZRyHsko
//PCサイト

index2.php
・データファイルを読み込んで、本日出勤の女の子だけ抽出、時間で昇順ソートして表示 →case switchが必要か。
・新人表示枠フラグの女の子を抽出して、表示
既製のHTML内に突っ込む

girls.php
・データファイルを読み込んで、女の子一覧をnoで降順ソートして表示
既製のHTML内に突っ込む

shift.php
今日の出勤
・データファイルを読み込んで、本日出勤の女の子を抽出、時間で昇順ソートして表示 →case switchが必要か。
明日の出勤
・データファイルを読み込んで、明日出勤の女の子を抽出、時間で昇順ソートして表示 →case switchが必要か。
既製のHTML内に突っ込む

reserve.php
・データファイルを読み込んで、女の子一覧をnoで降順ソートしてプルダウンメニューに入れる
既製のHTML内に突っ込む
87 :1 :2008/08/31(日) 14:10:44.23 ID:HZRyHsko
//携帯サイト

girls.php
・データファイルを読み込んで、女の子一覧をnoで降順ソートして表示
既製のHTML内に突っ込む

shift.php
今日の出勤
・データファイルを読み込んで、本日出勤の女の子だけ抽出、時間で昇順ソートして表示
明日の出勤
・データファイルを読み込んで、明日出勤の女の子だけ抽出、時間で昇順ソートして表示
既製のHTML内に突っ込む

reserve.php
・データファイルを読み込んで、女の子一覧をnoで降順ソートしてプルダウンメニューに入れる
既製のHTML内に突っ込む
88 :1 :2008/08/31(日) 14:12:21.42 ID:HZRyHsko
見直したら 掲示板のスクリプトを流用したら出来そうな気がしてきた。
更新の問題はあるけど。
89 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/31(日) 15:04:30.17 ID:UebEJP.o
おぉ、仕様頑張ったな。
それがあるだけでも全然違うぜ。

一つ気になったことだけ書いとく。
今ってデータはファイルに書かれてて、
それを読み込んだり、書き換えたりしようとしてるんだよな?
で、それはいずれデータベースで管理するように変更する。
この認識であってるか?
もしそうなら、データ読み込みとデータ書き換え(新規登録、更新)は
関数にしといたほうがいいぞ。
使いまわせる上に、データベースに置き換えた時も、
その関数だけを修正すればいいからな。

>>53のコードで実装するなら、
function writeGirlData($datafile $girldata) {
$file=fopen($datafile,"r+");
flock($file,LOCK_EX);

// ここで処理

fputs($file,$line."\n");
flock($file,LOCK_UN);
fclose($file);
return ture;
}

$data = array("hoge1","hoge2", ・・・); //女の子のデータ。
$filename = "data.txt";
writeGirlData($filename, $data);

てな感じだ。
writeGirlDataを別のPHPファイル(aaa.php)にしておけば、
この関数を利用したいPHPファイル(bbb.php)から読み込めば使える。

bbb.php
<?php
require_once("aaa.php");

$data = array("hoge1","hoge2", ・・・); //女の子のデータ。
$filename = "data.txt";
writeGirlData($filename, $data);
?>

既にそういう実装になってたらすまん
>>1頑張れよ
90 :1 :2008/08/31(日) 16:30:41.42 ID:HZRyHsko
>>89

おぉありがとー。
今ちょうど関数とは何ぞやってのを見てたww
登録と更新は同じことやってるから一緒にしてもいいのか。

全部1回1回やってたから、perlのsubみたいなのないかなーと思ってたんだ。

今悩んでるのは、画像うpのとこ。
3枚の画像をうpできるようにして、ファイル名を$no-1,jpg、$no-2.jpg、$no-3.jpgにして保存ディレクトリに保存、ファイル名を$img1,$img2,$img3に入れようかと思ったんだけど、
ファイル名のフォーマットが決まってるならデータとして保存しなくてもいいのかなと思ったり。

91 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/31(日) 16:57:52.97 ID:k.pzUOko
>>1
登録と更新はとりあえず一緒でもいいかな。
データベースで管理するとなるとSQL文が違うから、
その時は別の関数になるか、
関数の中で処理の分岐が必要だけどね。

画像データをファイルの中で持とうとしてた?
画像データはテキストデータじゃないから、
ファイル名だけを保存する方がいいと思う。
というか、HTMLに流し込む時って
<img>を使うと思うし。
保存ディレクトリのファイルパスは固定なら、
プログラムの中で定数として持っておけばいいよ。
92 :1 :2008/08/31(日) 17:54:26.96 ID:HZRyHsko
>>91

画像データじゃなくてファイル名ね(;^ω^)
3枚分のファイル名を保存した方がいいのか、表示側で画像ファイル$no-1.jpgの有無を確認しながら表示させる方がいいのかなって話。

まだ関数内で分岐をやると頭狂いそうになるだろうから、素直に登録、更新別にしとこうww
93 :1 :2008/08/31(日) 18:41:54.32 ID:HZRyHsko
画像3枚うpされたものに$no-1.jpg,$no-2.jpg.$no-3.jpgにリネームしてファイル名を$img1〜$img3に渡す方法がわからん・・・

ttp://www.php.net/manual/ja/features.file-upload.phpから流用

foreach ($_FILES["img"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["img"]["tmp_name"][$key];
$name = '$_POST["no"]-[$key].jpg'; // これって$noから$keyを引いた値が入ったりしないかな(;^ω^)
move_uploaded_file($tmp_name, "img/$name");
    $img[key] = $name[$key];       //これまったくでたらめwwwwww何となく想像で書いてみた。
}
}
94 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/31(日) 21:05:57.27 ID:k.pzUOko
>>1
あ、勘違いすまん<ファイル名

んーと、$img1〜3の配列じゃなくて、$imgを配列にしたら分かりにくいかな?

foreach ($_FILES["pictures"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["pictures"]["tmp_name"][$key];
$name = $_POST['no'] . '-' . $key . '.jpg'; //シングルクオート内は変数で評価されないね。変数と文字列は分けておいて、文字列結合にした方が見やすいと思う
move_uploaded_file($tmp_name, "data/$name");
$img[] = $name; //配列に順に追加していく
}
}

$keyって1、2、3・・・って具合にインデックスが入ってる?
だったら
$img[0] ⇒ no-1.jpg
$img[1] ⇒ no-2.jpg
$img[2] ⇒ no-3.jpg
ってぐあいにファイル名を取れるよ。
意図したインデックスが入ってないならそこは直さないとね。
これじゃダメかね?
95 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/31(日) 21:07:43.46 ID:k.pzUOko
× んーと、$img1〜3の配列じゃなくて、$imgを配列にしたら分かりにくいかな?
○ んーと、$img1〜3の変数じゃなくて、$imgを配列にしたら分かりにくいかな?
96 :1 :2008/08/31(日) 21:59:10.82 ID:HZRyHsko
>>95

うおおおさんきゅうううううう
なんとなく正解に近かったんだな・・・(;^ω^)

$imgを配列ってことは、フォームサイドで
<input type="file" name="img[]">
<input type="file" name="img[]">
<input type="file" name="img[]">
ってやればいいんだよね
やってみるわ。

$keyは多分0,1,2が入るんじゃないかなぁ・・・自信はないけど(;^ω^)
($_FILES["pictures"]["error"] as $key => $error)の部分を、自分の中でわかりやすい
( i = 0 ; i<2 ; i++)みたいに最大枚数分ループさせるやり方に変えるとと$keyが使えないのかー。
97 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/08/31(日) 22:28:41.73 ID:k.pzUOko
>>1
重くて書き込めねぇww

フォームのnameのとこはなんでも良いよ。
そこに指定した名前が、
$_FILES["pictures"]の"pictures"だから。
name="img[]"なら$_FILES["img"]になるだけね。
foreachと連想配列は使えると楽だよ。
$keyにインデックスが入ってるならfor文でも回せるけど。

for ($i = 0; $i < count($_FILES["pictures"]["error"]); $i++) {
  $name = $_POST['no'] . '-' . $i . '.jpg';
}
こんな感じね。(他の行は省略。)
98 :1 :2008/08/31(日) 23:15:17.19 ID:HZRyHsko
>>98

おぉ $iを使いまわすのか。
正直そっちの方がわかりやすいねww
99 :1 :2008/08/31(日) 23:52:05.22 ID:HZRyHsko
とりあえずforは大体把握出来たから、foreachを使って覚えるようにしよう。

perlで組んだ掲示板スクリプトを眺めて、それをPHPに移して考えてるんだけど、
SQLのauto incrementって便利だね。
perlならわざわざ

open (IN,"$nofile") || &error("OPEN ERROR"); $no = <IN>; close IN;
$no++;
open (OUT,">$nofile") || &error("OPEN ERROR"); print OUT $no; close OUT;

みたいにやって、最初の$noを決めてたから画期的に見える。
テキストデータで保持するとなるとこれも移植か。

$in = fopen($nofile , "r");
$in = $no;
fclose($in);

$no++;

$out = fopen("$nofile" , "w");
$size = fwrite( $out , "$no" );
fclose($out);
ってな感じで作ってみたけど、どうもカウントアップされて保存されてないようだ。
なんでPHPってファイル入出力のコマンドがたくさんあるんだ\(^o^)/
100 :1 :2008/08/31(日) 23:54:22.08 ID:HZRyHsko
$no++; が問題のような気がする。
これだと文字列で見られちゃうか。
101 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/09/01(月) 00:57:27.86 ID:tspWKIAo
$noはファイルから読み込んだデータで数字が入ってる
であってる?
それをインクリメントしてデータファイルに追記したいけど
インクリメントされてない?

PHPは文字列の数字でも数値計算できたりするww
例えば、
$no='1'//シングルクオートで囲ってるから文字列の「1」
$no++;//インクリメント
echo $no;//「2」が表示される

一応、
$in=intval($no);
ってやると$noが文字列の数字なら$inには数値が入るよ。

なんか他の問題なきがするんだけど、
もうちょっと具体的なソースある?

てか、俺と>>1しかいないなww
102 :1 :2008/09/01(月) 02:46:03.77 ID:I0gMuHso
>>101
具体的ソースと言われてもperlのコードはあのまんま載ってた。
$noはファイルに入ってた数字て、初期値は0。

読み込んでインクリメント(っていうのねww)して、ファイルを上書きしたいだけなんだけどねぇ・・・
ファイルの読み方が違うとかなのかな・・・PHPだとパーミッションも関係ないだろうしなぁ・・・

簡単だからこれはつまずかないと思ったのに\(^o^)/

>てか、俺と>>1しかいないなwwww
それについては感謝の一言に尽きる。いつもありがと。
103 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/09/01(月) 03:09:23.55 ID:BjXeQoso
なん・・・だと・・・?
PHPのソースは>>99が全てか?
なんかを省略してるのかと思ってたww

ちょっとサンプル書いてくるわ。

>それについては感謝の一言に尽きる。いつもありがと。
そういうつもりで言ったんじゃないんだ、気にスンナww
パー速のプログラミングスレは人こねーなってこったwwwwww
104 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/09/01(月) 04:32:39.55 ID:BjXeQoso
ちょっと仕事してたら遅くなってもた。

data.txt(データファイル)
1<>hoge1<>hoge2<>1-1.jpg

2<>fuga1<>fuga2<>2-1jpg

3<>hage1<>hage2<>3-1.jpg

105 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/09/01(月) 04:33:06.38 ID:BjXeQoso
sample.php
<?PHP
// 読み込むデータファイル名
$fname = 'data3.txt';
// データ格納用配列
$data = array();

// ファイルが空じゃなければファイルを読み込み専用で開く
if (filesize($fname) != 0) {
  $fp = fopen($fname, 'r');
  // ファイルの読み込みに成功したら
  if ($fp) {
    // ファイルの終端まで
    while (!feof($fp)) {
      // 1行ずつ読み込み
      $line = fgets($fp, 10000);
      // 区切り文字で分割して、配列に格納
      $data[] = explode('<>', $line);
    }
    fclose($fp);
  }
}
;
// noは1から始まると仮定
$nextNo = 0;
if (count($data) != 0) {
  $tmp = array();
  // データがある場合はno(配列のインデックスがゼロ)の最大値を探す
  for ($i = 0; $i < count($data); $i++) {
    $tmp[] = $data[$i][0];
  }
  $nextNo = max($tmp) + 1;
} else {
  $nextNo++;
}

// 追加するデータ
$writeDataArray = array($nextNo, 'foo1', 'foo2', $nextNo.'-1.jpg');
$writeDataString = implode('<>', $writeDataArray);
$writeDataString = "\n" . $writeDataString;

// 追加モードでファイルを開く
if (!$fp = fopen($fname, 'a')) {
  die($fname . 'が追加モードで開けません');
}
// 追加データの書き込み
if (!fwrite($fp, $writeDataString)) {
  die($nextNo . 'のデータの書き込みに失敗しました');
}
fclose($fp);
?>
106 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/09/01(月) 04:33:15.03 ID:BjXeQoso

見やすくするためにインデントは全角スペース使ってるから
流用するなら半角スペースに置換してくれ。

インクリメントの値($nextNo)なんだけど、
これってデータファイルに存在するnoの最大値プラス1になってるんだが、
例えば10件データがあって、noが1〜10だったとした時に、
10のデータが要らなくなって消してしまったとする。
そうすると最大値は9だからプラス1したら10になるよな?
もし、このnoが他のデータファイルのデータと紐付いてると
違うデータが結びつく可能性があるんだよな。
その辺は仕様を考えた方がいいよ。

参考になるといいが。
107 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/09/01(月) 04:36:48.14 ID:BjXeQoso
要らないセミコロンが混じってた・・・。
>// noは1から始まると仮定
の上の行ね。
108 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/09/01(月) 04:49:19.60 ID:BjXeQoso
うがー、もう一個間違ってた。
× $fname = 'data3.txt';
○ $fname = 'data.txt';
3てww
109 :1 :2008/09/01(月) 04:49:52.53 ID:I0gMuHso
>>106

うおおお読み解くのに時間かかりそうだ(;^ω^)
とりあえずnoがリストの番号の最大値で、消去されたnoに上書きされて困るのは画像ファイルとのすり合わせかな。

今日の更新\(^o^)/

寝て頭すっきりさせてからじっくり読むとするよ。
今日もありがとー

(^o^)ノ<んじゃおやすみー
110 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/09/01(月) 10:47:10.45 ID:Uv4.EM.o
お、仕様、ちゃんと書いてるww
おkwwすまらしいwwwwww

本当のお仕事だと、あれからもっと細かく書いていく必要があったりするんだけど
今この段階であれば、あれぐらいでおkかとwwwwww
111 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/09/01(月) 19:54:57.48 ID:F6slI3co
>>4-5
今更だが
それだとフィールド追加する度に書き換えでミスが増えると思う

$host = "localhost";
if (!$conn = mysql_connect($host, "ほげ", "ほげほげ")){
die("データベース接続エラー.<br />");
}
mysql_select_db("dbname", $conn);

if ($_SERVER["REQUEST_METHOD"] == "POST") {
$form = array();
$temp1 = "INSERT INTO dbtable (";
$temp2 = ") VALUES (";

foreach($_POST as $valname => $value) {
$value = mysql_real_escape_string(trim($value));

if ($valname == "name" && $value == "")
exit ("名前が入力されていません");

$temp1 .= "{$valname},";
$temp2 .= "'{$values}',";
}

$query = substr($temp1, 0, strlen($temp1) - 1) . substr($temp2, 0, strlen($temp2) - 1) . ")";

mysql_query($query, $conn) or die("登録できませんでした");
print("登録しました。");
}
?>

こんな感じにすると楽かも
即興で書いたから間違いあったら直してくれ
112 :以下、VIPにかわりましてパー速民がお送りします :2008/09/01(月) 21:41:07.96 ID:Km6Ra.Uo
>>111
DBのカラムって全部charとかtextなんかいな?
int使ってるなら、foreachで回さず一つずつ精査したほうが良い希ガス。
intval()とかかましてキャストしたりしてたけど。
テーブル定義が無いから分からんねww
113 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/09/01(月) 22:37:54.87 ID:F6slI3co
>>112
あくまで>>4-5のソースを書き直しただけだから細かい所はまったく知らない
114 :1 :2008/09/02(火) 00:09:02.83 ID:Z6OIE0wo
おいすー

知恵熱が出た・・・(;^ω^)
39.5度って超気持ちいい

うっひょー(ノ^ω^)ノ

すまん、今日は寝る_ノ乙(、ン、)_
115 :以下、VIPにかわりましてパー速民がお送りします :2008/09/02(火) 00:38:15.96 ID:9OrXD9so
うっひょーじゃねえよwwwwww
やばいじゃねーかwwwwww

ゆっくりやすんでくれ。
116 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/09/02(火) 10:07:49.75 ID:KtTT.q2o
>>114
知恵熱ってwwwwwwwwwwwwwwwwww
無理すんなよ
117 :1 :2008/09/02(火) 17:13:54.32 ID:Z6OIE0wo
おいすー

熱は下がったがまだだるいな。
perlの掲示板スクリプトを改造して作った管理スクリプトをずっと比較用に眺めてたんだけど、
phpの勉強に回す時間が更新で取られてしまうので、perlのまま仮運用させようと思う。
あとはデータファイルの更新部だけだし。
更新タイミングは手っ取り早くcronでphp実行させるつもり。
cronはいじったことあるから大丈夫だろう。

それで、今データファイルを更新するコードを書こうとしてるんだけど、
やることは
1:データファイルを読み込んで配列にどーん →>>105の前半部そっくり使えそう
2:$sche01_1と$sche01_2(今日の出勤の開始、終了時間ね)に$sche02_1、$sche02_2(明日の分)の値を入れ、
  同様に$sche02_1、$sche02_2に$sche03_1、$sche03_2の値を入れ、$sche03_1、$sche03_2は中身を空にする。
  foreachでいけるかな。
3:書き込みモードでデータファイルオープンして上書き →>>105の下半分を上書きモードにしたらいけそうな予感
4:\(^o^)/

2:のforeachループの内容を考えてるんだけど、
 1:行数分だけループ
 2:処理(配列に入れなおす)
この処理って、読み込んでる段階で配列につっこめるのかな。それとも、配列に入れなおす用のループも必要なのかな。


118 :1 :2008/09/02(火) 21:36:46.09 ID:Z6OIE0wo
とりあえず書いたけどやっぱ動かね\(^o^)/
脳が熱い・・・誰か赤ペン先生plz。

<?php
$fname = 'data.txt';
$fp = fopen($fname, 'r');// 読み込みモード

if ($fp) {
// ファイルの終端まで
while (!feof($fp)) {
// 1行ずつ読み込み
$line = fgets($fp, 10000);
$data[] = explode('<>', $line); // 区切り文字で分割して、配列に格納
}
fclose($fp);
}

// データ更新ってこれでいいのかなぁ
for ( $i=0; $i < Count($data); $i++ ) { //行数分ループ
区切り文字外して変数にどーん
List($no,$img,$name,$zod,$age,$tall,$bust,$cup,$waist,$hip,$charm,$hobby,$food,$skill,$comment,$op01,$op02,$op03,$op04,$op05,$op06,$op07,$op08,$op09,$op10,$op11,$op12,$op13,$op14,$op15,$op16,$op17,$op18,$op19,$op20,$op21,$op22,$op23,$op24,$op25,$op26,$newflg,$newframe,$expflg,$sche01_1,$sche01_2,$sche02_1,$sche02_2,$sche03_1,$sche03_2,$host) = explode("<>",$data[$i]);
$sche01_1 = $sche02_1; //しこしこ移動
$sche01_2 = $sche02_2;
$sche02_1 = $sche03_1;
$sche02_2 = $sche03_2;
$sche03_1 = "";
$sche03_2 = "";
//ここらへん流用してみたけど今いち自信ない
$renewDataArray = array($no,$img,$name,$zod,$age,$tall,$bust,$cup,$waist,$hip,$charm,$hobby,$food,$skill,$comment,$op01,$op02,$op03,$op04,$op05,$op06,$op07,$op08,$op09,$op10,$op11,$op12,$op13,$op14,$op15,$op16,$op17,$op18,$op19,$op20,$op21,$op22,$op23,$op24,$op25,$op26,$newflg,$newframe,$expflg,$sche01_1,$sche01_2,$sche02_1,$sche02_2,$sche03_1,$sche03_2,$host);
$renewDataString = implode('<>', $renewDataArray); //区切り文字入れてくっつける
$renewDataString = "\n" . $writeDataString; //改行! 改行!
}

//動作確認取れれば実際は出力は何もいらないけど
if (!$fp = fopen($fname, 'r')) {
  die($fname . 'が書き込みモードで開けません');
}
// 追加データの書き込み
if (!fwrite($fp, $renewDataString)) {
  die('データの書き込みに失敗しました');
}
fclose($fp);
?>
119 :以下、VIPにかわりましてパー速民がお送りします :2008/09/02(火) 21:40:44.49 ID:2UXL5hgo
PerlもPHPもわからんが、
具体的にどう動かないのか、コード丸投げじゃなくてもうちょっと原因の切り分けはできないのか。

あやしいところをコメントアウトして実行してみたり、
あやしいところの近くにprint仕込んでみたりして
問題がどこにあるのかを探すんだ!
120 :以下、VIPにかわりましてパー速民がお送りします :2008/09/03(水) 00:06:11.87 ID:yAJcxnco
>>1
熱のせいか?
ファイル読み込みの時点で配列に入ってるから、
list()で受け取ってるところがマズイんじゃね?

配列使うのが分かりにくいなら、ファイル読み込みの時に配列に入れるな。
$data[] = $line;
これで、1行丸まるStringで入ってることになる。

俺が配列で格納するようにしたのは、list()で受けると関係ない変数を用意するのが面倒だから配列にしたんだ。
数えるの面倒だから適当にインデックスふるけど、
$sche01_1が31番目の要素だったとするだろ?
そうすると$sche01_1に該当するのは、$data[30]になるんさ。
$sche01_2は$data[31]
$sche02_1は$data[32]
以後インクリメントな。
そうするとだな、
$sche01_1 = $sche02_1;
のコードが
$data[30] = $data[32];
となるわけさ。
コレだとlist()で受けてるところをダラダラ書かなくていいのな。


for ($i = 30; $i <= 33; $i + 2) {
  $data[$i] = $data[$i+2];
}
$data[34] = "";
$data[35] = "";

これだけだ。
121 :120 :2008/09/03(水) 00:19:23.60 ID:tYHE7cSO
ID違うのは無視で。

すまん、間違ってた。
$dataはニ次元配列だからループのネストが必要だ。
122 :1 :2008/09/03(水) 01:56:47.04 ID:KzxCZe6o
>>119
なるほどね。
ループ内にprint仕込む時はループの最後がやっぱいいのかな。それもトライ&エラーで入れてくのかな。

>>120
熱は下がったけど、そもそもPHPやりはじめて1週間くらいだから、知識に穴が開きまくってるんだぜ(´・ω・`)
でも確かにんぼーっとしながらやってることは確かだわ(;^ω^)

list()と配列がごっちゃになってたね。
でもこう書いてもらうとなるほどと思うねー。
要素分の変数用意すんのめんどいもんなぁ。

明日の更新しながら書き直してみる。
123 :1 :2008/09/03(水) 02:09:07.39 ID:KzxCZe6o
× 知識に穴が開きまくってる
○ そもそも知識が全然つまってない

嘘ついてましたサーセンwwwwww
124 :120 :2008/09/03(水) 02:54:07.21 ID:0wMSDzso
>>123
ワロタww

すまん、もう一個間違ってたww
終電間際に書くもんじゃねーなと言い訳(´・ω・`)
foreachの方が楽だが>>1はforのほうが分かりやすいみたいだから、

$renewDataString = array();
for ($i = 0; $i < count($data); $i++) {//行数分ループ
  for ($j = 30; $j <= 33; $j++) {//$sche01_1〜$sche02_2に該当
    $data[$i][$j] = $data[$i][$j+2];//次の次の要素のデータを代入
  }
  $data[$i][34] = "";
  $data[$i][35] = "";

  $renewDataString[] = "\n" . implode('<>', $data[$i]);
}

こんな感じか。
動かしてないからちゃんと動くかは知らんww

>>118のfopen()のモードは違うな。
あと、fwrite()は配列の書き込みだから・・・分かるな?

デバッグは確認したいところに入れるのが基本だぜ?
print出力がいやならログに書き出してもいいしな。
配列の中身、boolean値が見たいなら
var_dump()とか便利。
125 :1 :2008/09/03(水) 11:50:55.49 ID:KzxCZe6o
寝ちゃった。

顔にはキーボードの痕がくっきり、キーボードによだれががががが
FとVが打てなくなった・・・

買ってくるわorz
126 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/09/03(水) 11:59:59.02 ID:Nxi3w1ko
洗えよww
127 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/09/03(水) 13:05:01.17 ID:G1IoeyU0
PHPならかなり的確なエラーメッセージでるから
動かなかったらそれをここにコピペ汁!
128 :1 :2008/09/03(水) 18:35:14.07 ID:KzxCZe6o
書き直した。ってかほとんどコピペ(;^ω^)
何とか希望どおりの動作をしたけど、どっか穴あるかな。

<?php
$fname = 'data.txt';
// データ格納用配列
$data = array();

// ファイルが空じゃなければファイルを読み込み専用で開く
$fp = fopen($fname, 'r');
// ファイルの読み込みに成功したら
if ($fp) {
// ファイルの終端まで
while (!feof($fp)) {
// 1行ずつ読み込み
$line = fgets($fp, 10000);
$line = rtrim($line); //行末の改行を削除
// 区切り文字で分割して、配列に格納
$data[] = explode('<>', $line);
}
fclose($fp);
}

$renewDataString = array();
for ($i = 0; $i < count($data); $i++) {//行数分ループ
for ($j = 44; $j <= 47; $j++) {//$sche01_1〜$sche02_2に該当
$data[$i][$j] = $data[$i][$j+2];//次の次の要素のデータを代入
}
$data[$i][48] = "";
$data[$i][49] = "";

$renewDataString[] = implode('<>', $data[$i]);
}
$writeDataString = join("\n",$renewDataString);//配列をくっつけるにはこれってグーグル先生が言ってた

//動作確認取れれば実際は出力は何もいらないけど
if (!$fp = fopen($fname, 'w')) {
die($fname . 'が書き込みモードで開けません');
}
// 追加データの書き込み
if (!fwrite($fp, $writeDataString)) {
die('データの書き込みに失敗しました');
}
fclose($fp);
?>
129 :1 :2008/09/03(水) 18:36:58.74 ID:KzxCZe6o
ロックしないとやばいかな・・・
130 :1 :2008/09/03(水) 23:07:48.25 ID:KzxCZe6o
とりあえずこうしとくか。

//書き込みモードで開く
if (!$fp = fopen($fname, 'w')) {
die($fname . 'が書き込みモードで開けません');
}
flock($fp, LOCK_EX); //ロック開始
// 追加データの書き込み
if (!fwrite($fp, $renewDataString)) {
die('データの書き込みに失敗しました');
}
flock($fp, LOCK_UN); //ロック解除
fclose($fp);
131 :以下、VIPにかわりましてパー速民がお送りします :2008/09/04(木) 01:07:29.29 ID:bqnksOko
書き込み時はロックしといた方が安全。

join()はimplode()のエイリアス(別名)だから、
実際の処理は一緒。
好きな方でいいよ。

PHPスクリプト的には意図した動作なら問題ないと思う。
ただ、これってcronで動かす所謂バッチ処理だよな?
バッチ処理が正常に行えたという保障はどこで取る?
俗に異常系といわれる部分だけど、
例えば、データファイルを誤って削除してた、
とかっていう状況だと、データファイルは読み込めないよな。
そこで実行時エラーが出たときの対処は?
まぁ、これは運用、保守(管理)での話だから、
ランニングコストによるし、
ちょっとスレの本質とは離れるかもしれんから
ここから先は自重しとくわww
132 :1 :2008/09/04(木) 14:14:54.24 ID:UXkAfW6o
>>131

>join()はimplode()のエイリアス(別名)だから、実際の処理は一緒。
こんなことも知らなかったorz

とりあえず本運用鯖に設置してcronの動作もチェックして問題なかったのでひと安心。

異常系って初めて聞いた言葉だけど、プロはそこまで考えなきゃいけないんだね(;^ω^)
cronの処理結果はメールでPCと携帯に飛ばすようにしてある。
どうせニートだしその時間たいてい起きてるからなんかあったらすぐ対処できるかな。
一応データファイルは毎日更新5分前にFTPで自動ダウンロードするつもり。

普通の企業はいわゆる運用奴隷が24時間体制でつめてて何かの時に対処するのかな。
133 :以下、VIPにかわりましてパー速民がお送りします :2008/09/04(木) 22:16:39.50 ID:Ajebh5.o
>>132
>cronの処理結果はメールでPCと携帯に飛ばすようにしてある。
それでおkだと思う。

>普通の企業はいわゆる運用奴隷が24時間体制でつめてて何かの時に対処するのかな。
24時間詰めててとかやってるとコスト高いから普通はやんないよww
何らかの監視体制は作ってるけどね、大きなサイトは。


次はSQLの勉強か?
134 :1 :2008/09/05(金) 01:24:34.28 ID:HmE7eWgo
>>133
とりあえず1日休んで頭切り替えるよ。
また考えすぎて知恵熱出たんじゃかなわんからww
135 :1 :2008/09/08(月) 22:49:09.28 ID:HjUtAyIo
めでぃ・・・っく・・・
136 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/09/09(火) 10:32:04.12 ID:Jo.U0k6o
お、がんがってるか?ww

ってか、なんだ?ダイジョウブか??
137 :1 :2008/09/15(月) 16:39:08.71 ID:QTwkiOoo
只今生還しまんた _ノ乙(、ン、)_

死ぬかと思うくらいの腹痛で我慢しきれずに病院

盲腸あばばばば

入院即手術

やっと退院←今ここ
138 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/09/15(月) 17:52:05.54 ID:YTlJAK.P
うはwwwwパイパン乙wwwww
139 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/09/27(土) 13:10:21.33 ID:oLb/kRYo
>>1
まだ居るかい?
140 :1 :2008/09/27(土) 13:28:00.07 ID:EgS/Y3Mo
いるさ!
退院したはいいものの、寝ぼけて階段から落ちて傷口くぱぁ→病院に逝って来た哀れな男がここに
141 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/09/27(土) 14:56:03.58 ID:oLb/kRYo
>>140
おお居たか
今の状況をkwsk
142 :1 :2008/09/27(土) 15:57:49.26 ID:EgS/Y3Mo
退院

2日くらいぼーっとする

HPの件で友達と話す

訳わからんフォルダがあったから消したよー
ちょwwwwwwそれ俺の血と汗と盲腸の結晶・・・

3日前に階段からすっころぶ

やっとくっついた傷口がくぱぁ→流血

再入院

退院

HPは俺がいない間に人雇ったらしく、コーラ2箱持ってきてお仕事\(^o^)/

さーて何しようかな ←今ここ
143 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/09/27(土) 16:25:07.23 ID:oLb/kRYo
> HPは俺がいない間に人雇ったらしく、コーラ2箱持ってきてお仕事\(^o^)/
クビになったのかwww
144 :1 :2008/09/27(土) 20:45:42.11 ID:EgS/Y3Mo
ぱい(´・ω・`)
145 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/10/06(月) 10:34:54.66 ID:6CHtNVAo
このスレもういらないよね
146 :1 :2008/10/06(月) 15:39:43.57 ID:TqRxKBoo
もう・・・ネトゲしかやることがない\(^o^)/
147 :以下、VIPにかわりましてパー速民がお送りします [sage]:2008/10/06(月) 15:52:33.25 ID:6CHtNVAo
じゃあ仕方ないからもうログ削除するね
148 :1 :2008/10/06(月) 18:43:05.90 ID:TqRxKBoo
あい。いままでありがとね(´;ω;`)
57.92 KB   

スポンサードリンク


Check このエントリーをはてなブックマークに追加 Tweet

荒巻@中の人 ★ VIP(Powered By VIP Service) read.cgi ver 2013/10/12 prev 2011/01/08 (Base By http://www.toshinari.net/ @Thanks!)
respop.js ver 01.0.4.0 2010/02/10 (by fla@Thanks!)