トップページphp
1001コメント286KB

【PHP】下らねぇ質問はID出して書き込みやがれ 109

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2011/07/28(木) 06:53:37.45ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 108
http://hibari.2ch.net/test/read.cgi/php/1309599473/

◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0304nobodyさん2011/08/07(日) 10:39:31.59ID:FuUx9FA/
>>302
あああああああああ!!!!
0305nobodyさん2011/08/07(日) 11:42:36.56ID:???
西暦350万年か
2000年問題が小さい事よ
0306nobodyさん2011/08/07(日) 11:49:17.10ID:???
答えは42だな
0307nobodyさん2011/08/07(日) 11:49:55.89ID:???
>>305
いちいち計算してんじゃねぇよ クソが
0308nobodyさん2011/08/07(日) 11:50:22.79ID:???
>>306
いちいち計算してんじゃねぇよ クソが
0309nobodyさん2011/08/07(日) 11:59:19.32ID:???
>>306
まさかphpスレで銀河ヒッチハイクガイドネタ出てくる奴を見れるとは
0310nobodyさん2011/08/07(日) 12:09:48.53ID:???
>>309
こっち見んじゃねぇよ クソが
0311nobodyさん2011/08/07(日) 12:10:47.97ID:???
>>307>>308>>310
お前最高にうんこ
0312nobodyさん2011/08/07(日) 12:15:11.87ID:???
>>311
俺はクソとしか言ってないのに、うんこだなんて、ひどすぎ。
しかも最高のうんこ。
0313nobodyさん2011/08/07(日) 13:06:16.12ID:???
>>312
最高の褒め言葉だと思うんだが
もしかして最低のうんこの方がよかったのか?
0314nobodyさん2011/08/07(日) 13:17:40.38ID:???
>>313
最低のクソの方がいいです。うんこはなんだか生っぽいので。
0315nobodyさん2011/08/07(日) 15:06:51.68ID:???
http://www.youtube.com/watch?v=gZCUHR9DfUs
0316nobodyさん2011/08/07(日) 16:36:40.07ID:???
>>315
ウィルス注意
0317nobodyさん2011/08/07(日) 17:26:35.32ID:???
う○ことかち○こで喜ぶのは小学生までってじっちゃがいってた
0318nobodyさん2011/08/07(日) 18:09:04.88ID:???
そのじっちゃは嘘つきだな
0319nobodyさん2011/08/07(日) 18:14:28.43ID:???
大人はま○こで喜ぶってばっちゃがいってた
0320nobodyさん2011/08/07(日) 18:29:45.47ID:???
そのばっちゃは正直だな
0321nobodyさん2011/08/07(日) 18:32:43.69ID:???
子供の戯れ言に耳を貸すなってかあちゃがいってた
0322nobodyさん2011/08/07(日) 18:35:25.19ID:???
そのかあちゃは賢明だな
0323nobodyさん2011/08/07(日) 21:07:53.36ID:???
子供はま○こなんて知らないってねえちゃがいってた
0324nobodyさん2011/08/07(日) 23:32:41.12ID:???
精神年齢的な意味だろ>子供
0325nobodyさん2011/08/07(日) 23:33:52.83ID:???
おま、空気読めよ・・・
0326nobodyさん2011/08/07(日) 23:41:19.64ID:???
子供のおま○こなんて興味ないってにいちゃがいってた
0327nobodyさん2011/08/07(日) 23:51:57.43ID:???
キモイ
0328nobodyさん2011/08/07(日) 23:54:49.59ID:???
こういう流れは下らん
0329nobodyさん2011/08/08(月) 00:42:16.32ID:???
これだからコミュ障は・・・
0330nobodyさん2011/08/08(月) 01:15:47.57ID:???
ホントはキモくないくせに
0331nobodyさん2011/08/08(月) 02:20:33.57ID:???
XYZ 明日の夜7時新宿公園で待つ KN
0332nobodyさん2011/08/08(月) 03:11:13.54ID:z33upbGp
phpが自由自在に扱える漢になったらニートのオレでも
就職できますか?
0333nobodyさん2011/08/08(月) 03:30:34.84ID:???
無理
0334nobodyさん2011/08/08(月) 03:56:03.84ID:???
>>332
そういう輩は仕事の需要があるから自分で社長でやればいい。
0335nobodyさん2011/08/08(月) 06:27:40.45ID:z33upbGp
>>334
毎日C言語、C++、Javascript、PHPのプログラムの
本を読んでプログラム作りまくって勉強しています。
なんせニートなんで時間はたっぷりあります。
今、23歳なんで30までには起業してみます。
だいたいどのプログラムも同じような感じですが、
htmlとネットワークの知識のいるphpに苦戦してます。
とりあえずブログサービスやSNSサービスをやってみたいです。
0336nobodyさん2011/08/08(月) 06:57:53.72ID:???
>>335
他の同業者に対する優位性は?
0337nobodyさん2011/08/08(月) 07:22:55.16ID:z33upbGp
>>336
日本の20代の若者ですら、パソコンにデジカメの写真を取り込めない人から
ゲーム作って売ってる人まで幅広い層がいます。しかし、初心者ともいえず、
上級者ともいえない中間層がネット上には居場所がないような気がします。
プログラムの解説サイトでも超初心者向けと理解不能な上級者向けの
両極端で中間層がない気がします。なのでそのプログラムなどの勉強してる
中間層を日本全国から集めたようなコミュニティーを作りたいです。
アメブロやmixiよりも匿名性を重視して情報の真偽を明確にする
コミュニティーを作ろうと予定してます。
友達同士で馴れ合いをするようなコミュニティーでなく主に情報の交換
が目的ですかね。
0338nobodyさん2011/08/08(月) 07:33:12.50ID:???
>>337
SEになりたいのかコミュニティ主催者になりたいのかどっちなんだ?
>>336は前者の意味で聞いたんだが。
0339nobodyさん2011/08/08(月) 07:58:35.86ID:z33upbGp
>>338
SEかな、コミュニティー主催者とかは全部大学生バイトとかに試験的
にやらせてみようかなと思ってます。
0340nobodyさん2011/08/08(月) 08:06:38.30ID:???
通常業務のニーズをこなすテクと地図との連携など独自のテクの2本立てで行くのがイイ
0341nobodyさん2011/08/08(月) 09:38:24.91ID:???
スレチだからよそでやれ
http://hibari.2ch.net/test/read.cgi/hp/1311593778/
0342nobodyさん2011/08/08(月) 14:20:21.46ID:ZpEfNsVt
print_r(glob('[example].txt'));

glob 関数において、角括弧が含まれるファイルが返りません
角括弧が含まれるファイル名に一致させるにはどうすれば良いでしょうか
0343nobodyさん2011/08/08(月) 14:30:40.65ID:???
>>342
やった事無いけどエスケープすりゃなんとかなるんでないの
0344nobodyさん2011/08/08(月) 14:34:23.42ID:4ZN6sWYK
数百行のコードがあるとします
その処理の先頭から末尾まででいろんなPHP関数が使われてて、
どこかでエラーが発生したとき(falseが返って、以降のコードの実行が不可能になったとき)に
そのエラーを捕まえたいと思います
地道にやれば関数の返り値をいっこいっこチェックしていくべきなんでしょうが
そうではない方法で効率的にエラーを捕まえる方法はないでしょうか?
apacheのエラーログをチェックする以外の方法で、よろしくお願いします
0345nobodyさん2011/08/08(月) 14:40:29.02ID:???
>>344
エスパーレスするとset_error_handler
03463422011/08/08(月) 14:51:54.71ID:ZpEfNsVt
>>343
ありがとうございます
以下のようにエスケープしてみましたが、一致しません

print_r(glob('\\[example.txt\\]'));
0347nobodyさん2011/08/08(月) 14:55:31.65ID:???
>>346
print_r(glob('\[example.txt\]'));
0348nobodyさん2011/08/08(月) 15:14:34.35ID:???
>>346
お前何やってんだよ
[example].txt がなんで [example.txt] になるんだよ
0349nobodyさん2011/08/08(月) 15:44:19.78ID:???
うるさい ママのおっぱいでもしゃぶってろ
03503422011/08/08(月) 15:52:29.26ID:ZpEfNsVt
>>347
それは>>346と同じではないでしょうか

>>348
申し訳御座いません。間違えました
結果は同様に、[example].txt が返りません

print_r(glob('\\[example\\].txt'));
0351nobodyさん2011/08/08(月) 16:03:55.44ID:???
>>350
いいからやれ
0352nobodyさん2011/08/08(月) 16:07:26.25ID:???
>>351
自分でやれよ
0353nobodyさん2011/08/08(月) 16:09:12.40ID:???
何を?
0354nobodyさん2011/08/08(月) 16:12:28.03ID:???
>>350
\\[ と \[ は全然違う
0355nobodyさん2011/08/08(月) 16:17:36.90ID:???
>>354
文字列リテラルとワイルドカードの話がごっちゃになってね?
0356nobodyさん2011/08/08(月) 16:21:35.10ID:???
ちょっと試したけど
print_r(glob('[example].txt'));
print_r(glob('\[example\].txt'));
print_r(glob('\\[example\\].txt'));

結果
Array
(
)
Array
(
[0] => [example].txt
)
Array
(
[0] => [example].txt
)
0357nobodyさん2011/08/08(月) 17:05:43.95ID:???
' で囲んでエスケープされるの?
echo 'これで改行される??\n';
0358nobodyさん2011/08/08(月) 17:11:16.66ID:???
globに渡してるんだよ。
globそのものは[]や{}はメタ文字の一種だろ
03593422011/08/08(月) 17:30:03.81ID:ZpEfNsVt
>>356
こちらのファイルシステムの方に問題があるようですね
角括弧の部分は ? で代用することにします
有り難う御座いました
03603442011/08/08(月) 18:53:58.47ID:4ZN6sWYK
>>345
ありがとうございます、そういう機能があるのかと調べてみました。
が、公式のPHPマニュアルの例を見たら、結局該当箇所にtrigger_error()でエラーハンドラ呼び出してますよね
http://www.php.net/manual/ja/function.set-error-handler.php
これだと結局>>344で書いた「エラーが起こりそうな処理の返り値をチェックする」のと
労力的に変わらないですね(自分の理解が間違ってるのかもですが)
コードの任意の範囲内で起きたエラーを自動的に捕まえて、任意の処理を実行するみたいなのは
無理でしょうか?

try{}catch(){}も見たんですが、結局これも処理の途中でこまごまと
チェックしてthrow new Exception(); しなきゃいけないし。
SQLのトランザクションの場合は、try{.....}catch() の間でクエリエラーが発生したら
自動でロールバック処理してくれますが、これはDBがそこまで機能を実装してくれてるからってことかな…
0361nobodyさん2011/08/08(月) 19:00:20.03ID:3C9WKAJH
PHP + MySQLのページングについて質問です。
現在このようにしていますが、$tcnt(総件数)をユーザーが変更できるようにするには
どこをどう変えたら良いでしょうか?

$PAGESIZE = 10; #1ページに表示する件数

$page = $_GET["page"]; # 現在のページ
$tcnt = $_GET["tcnt"]; # 総件数
if (!isset($page)) {
$sql = "select count(*) as cnt from ○○";
$rst = mysql_query($sql, $con);
$col = mysql_fetch_array($rst);
mysql_free_result($rst);
$tcnt = $col["cnt"];
$page = 1;
}
$totalpage = ceil($tcnt / $PAGESIZE); #総ページ数

$sql = "select * from ○○ limit " . $PAGESIZE * ($page - 1) . ", $PAGESIZE";
0362nobodyさん2011/08/08(月) 19:01:51.76ID:???
>>360
trigger_errorで任意にエラー起こしてるだけだよ
0363nobodyさん2011/08/08(月) 19:03:25.88ID:???
>>361
総件数をユーザが変更するってどういうこと?
0364nobodyさん2011/08/08(月) 19:20:09.90ID:???
1ページに表示する件数じゃないかな
limit
0365nobodyさん2011/08/08(月) 19:20:24.76ID:???
それは1行目に書いてある
0366nobodyさん2011/08/08(月) 19:40:32.88ID:???
画面表示件数を選択できるようにする。
10,20,100から選べる。
0367nobodyさん2011/08/08(月) 19:49:30.31ID:???
それは1行目に書いてある
0368nobodyさん2011/08/08(月) 19:54:40.20ID:???
これは難題だ・・・
countでレコード総数をとってきているのにそれを変更したいとは、
ユーザーは自分でレコードを追加したいって事なのかな?

夏休みだから助けてあげたいけど意味わかんねー
0369nobodyさん2011/08/08(月) 19:55:17.88ID:3C9WKAJH
>>364>>366
違います

>>363
たとえば100件のデータがDBに格納されていて
その中の10件だけを取り出したいユーザーもいれば
その中の50件だけを取り出したいユーザーもいるので
そこをユーザーが自由に変えられるようにしたい
0370nobodyさん2011/08/08(月) 20:05:48.50ID:???
>>369
その10件や50件というのはトップページの場合はデータベースの先頭からの件数?
それだと普通にLIMITを使う。
LIMITというのは例えば「LIMIT 0,10」だとレコード0番目から10件のデータを読み出す
50件なら「LIMIT 0,50」になります。

読み出したいデータを検索や指定するならWHEREを使う。
0371nobodyさん2011/08/08(月) 20:06:24.65ID:???
総件数っていったらだいたい取り出したいデータの全データ数だろ。
言いたいのは表示件数って事なのかな。
0372nobodyさん2011/08/08(月) 20:10:09.57ID:???
組み込み関数の戻り値でfalseが返るのは別にエラーじゃないし、
中の人が例外やエラーを投げん限り捕捉できんだろ
0373nobodyさん2011/08/08(月) 20:13:57.43ID:3C9WKAJH
>>370
$PAGESIZE(1ページに表示する件数)は固定したいです。

>>371
表示する総件数ですね。すみません。

「格納されてる総件数」ではなく「ユーザーが表示したい総件数」です。
0374nobodyさん2011/08/08(月) 20:20:11.51ID:???
>>373
$page = $_GET["page"];
$PAGESIZE = $_GET["size"];

if ($page == 1){
$PAGESIZE = 10;
}

目的を果たすだけならこれで済むけど$__GETの内容や
SQLへのクエリーの渡し方がかなり危ないので、
そのあたりも検索して勉強する事をおすすめします。
0375nobodyさん2011/08/08(月) 20:46:55.27ID:3C9WKAJH
>>374
ありがとうございます。
えーと、sizeって何ですか?それと
$sql = "select * from ○○ limit " . $PAGESIZE * ($page - 1) . ", $PAGESIZE"; この部分はこのままでいいんですか?

SQLへのクエリーの渡し方、了解です。
0376nobodyさん2011/08/08(月) 20:54:45.05ID:???
まずSQLのLIMITについて理解してんの?
理解してないならそれを理解するべき
0377nobodyさん2011/08/08(月) 21:03:39.04ID:3C9WKAJH
>>376
してます。ちょっと上のレスにも書いてあります。
0378nobodyさん2011/08/08(月) 21:04:19.30ID:???
それは1行目に書いてある
0379nobodyさん2011/08/08(月) 21:06:24.46ID:???
>>377
$tcnt(総件数)をユーザーが変更できるようにしたいってことだけど、
$tcnt = $_GET["tcnt"]; # 総件数
だからそもそもユーザーが変更できるようになってんじゃないの?
0380nobodyさん2011/08/08(月) 21:23:56.99ID:???
こういうことか?
tcnt設定する意味が微塵にもわからんけど

$PAGESIZE = 10; #1ページに表示する件数

$tcnt = $_GET["tcnt"]; # 総件数
$sql = "select count(*) as cnt from ○○";
$rst = mysql_query($sql, $con);
$col = mysql_fetch_array($rst);
if ($col["cnt"] < $tcnt) {
$tcnt = $col["cnt"];
}
mysql_free_result($rst);
$totalpage = ceil($tcnt / $PAGESIZE); #総ページ数

$page = $_GET["page"]; # 現在のページ
if (!isset($page)) {
$page = 1;
}
else if ($page > $totalpage) {
$page = $totalpage;
}

$sql = "select * from ○○ limit " . $PAGESIZE * ($page - 1) . ", $PAGESIZE";
0381nobodyさん2011/08/08(月) 21:36:42.32ID:3C9WKAJH
>>379>>380
いえ、なってないです。
例えば
PAGESIZE = 2;
tcnt = 1;
とした固定した場合

limit 0,2 つまり0から2件表示することになります。

tcnt = 3とした場合2ページ目でLIMIT 2, 2となり
表示したい総件数が3件にもかかわらず4件目が表示されてしまいます。
0382nobodyさん2011/08/08(月) 21:43:36.92ID:???
余数引くなりなんなり好きにしろよ
0383nobodyさん2011/08/08(月) 21:49:35.68ID:???
>>381
$totalpage = ceil($tcnt / $PAGESIZE); #総ページ数

$totalpageってどこで使われてんだよ。
説明不足だし何がしたいのかよくわからん。
情報を小出しにしないで整理してから質問しろ。
0384nobodyさん2011/08/08(月) 21:54:02.53ID:???
情報の整理というかそもそもPHPもSQLも理解していない。
コピペしてきてどうにかして利用できないのか、初心者が改造からはじめる典型的なパターン。

$_GET["size"]が何のかは以下を読みなさい。
http://php.net/manual/ja/reserved.variables.get.php
0385nobodyさん2011/08/08(月) 21:58:39.48ID:???
$offset = $PAGESIZE * ($page - 1);
if ($offset < 0) {
$offset = 0;
}

$limit = $PAGESIZE;
if ($offset + $PAGESIZE > $tcnt) {
$limit = $tcnt % $PAGESIZE;
}
0386nobodyさん2011/08/08(月) 23:31:58.51ID:3C9WKAJH
>>385
あ、ありがとうございます!
おかげさまでできました。
0387nobodyさん2011/08/09(火) 00:00:56.70ID:???
>>386
つまり・・・どういうことだってばよ?
0388nobodyさん2011/08/09(火) 00:02:21.26ID:???
日本語はさっぱりだけどソースは読めるだろボケ
0389nobodyさん2011/08/09(火) 00:17:38.43ID:???
>>386
他に回答してくれた人にもお礼言おう、な
0390nobodyさん2011/08/09(火) 00:52:15.33ID:???
>>389
あなたの回答は全くの役に立たなかったのでお礼するのが勿体無いです、残念ながら。
0391nobodyさん2011/08/09(火) 01:17:35.57ID:???
くだらねぇこと言ってるんじゃねぇよ。
ID無いのに誰が誰だかわからんだろうが。
0392nobodyさん2011/08/09(火) 01:34:50.20ID:1MO2qAMJ
みなさんに質問なのですが、insertでwhere指定をする時にphp側で定義した変数$sampleの値を持つidをselectするというコードを書きたいのですが、
$result = mysql_query('SELECT id,name FROM sample where id = $sample');
とするとエラーが出てしまいます。どのようにすればよいのでしょうか? 文法的に間違っているのでしょうか?お願いします
0393nobodyさん2011/08/09(火) 01:36:49.50ID:???
>>392
'(シングルクオーテーション)なので$sampleが展開されない。
"(ダブルクオーテーション)で囲むか、下記のように変える
$result = mysql_query('SELECT id,name FROM sample where id = '.$sample);
0394nobodyさん2011/08/09(火) 01:37:06.06ID:???
>>392
"
0395nobodyさん2011/08/09(火) 01:38:08.81ID:???
つーかMYSQLスレで答えてやったけどな
0396nobodyさん2011/08/09(火) 01:47:33.72ID:???
マルチだったのか
0397nobodyさん2011/08/09(火) 10:49:11.51ID:fWpfSW6p
【OS名】TurboLinux
【PHPのバージョン】4.3
【連携ソフトウェア】
【質問内容】
スレ違いでしたら、誘導いただけると助かります。

POSTで送信する際の、最大バイト数はどれくらいなのでしょうか?
検索してみたのですが、明確な答えが得られませんでした。
やりたいことは、テキストエリアをいくつか設置して送信です。
文字数の上限がどれくらいか、知りたいのです。
全角文字で1万文字くらいはありそうなのですが、可能なので
しょうか。
どなたかアドバイスお願いします。
0398nobodyさん2011/08/09(火) 11:53:34.73ID:1MO2qAMJ
>>393
>>394ありがとうございます。そのようにしたら解決しました!ありがとうございます。

mysqlスレで質問したところphpで聞けといわれこっちで質問したのですが、向こうでも答えていただき結果マルチのようになってしまいました。すいません。
0399nobodyさん2011/08/09(火) 11:54:21.81ID:???
>>398
そういう場合はどこそこから誘導された〜って言っとけば良いよ
0400nobodyさん2011/08/09(火) 12:10:57.63ID:???
結構みんな同じとこ見てんだなw
0401nobodyさん2011/08/09(火) 13:30:57.74ID:???
>>397
http://php.net/manual/ja/ini.core.php
post_max_size

あとは使っているhttpサーバの制限にも依存するが
テキスト程度なら気にする必要はない
0402nobodyさん2011/08/09(火) 13:31:03.67ID:???
俺はここしか見てないよ
04033972011/08/09(火) 18:07:10.89ID:fWpfSW6p
>>401
ありがとうございます。
デフォルトで8Mということは、
全角1万文字=20Kbyte程度ということで、他の環境変数とか
あったとしても全然大丈夫ということですね。
ありがとうございました。
0404nobodyさん2011/08/09(火) 18:30:29.93ID:???
具体例を出せなくて申し訳ないのですが
一つ質問させて下さい。

【OS名】Windows 7
【PHPのバージョン】5.3.1

例えば「test.php」から「test2.php」に遷移する時
ある値をスーパーグローバル変数に乗せて「test2.php」に渡したとします。
この時に起こっている現象は

 「test.php」を立ち上げる(「test.php」のスクリプトが動いている)
            ↓
 「test2.php」に遷移する(「test2.php」のスクリプトが動いている)

となりますが、この時、「test2.php」からブラウザの「戻る」で「test.php」に戻り
次いでブラウザの「進む」で「test2.php」に進んだ場合
phpのスクリプトは動いている、と言えるのでしょうか?

私なりに調べてみた限り、単にブラウザのキャッシュを読みに言っているだけのようなのですが
そのキャッシュに格納されているデータはヘッダー情報を含んだもろもろのデータらしく
それが結果として、コーディングした主の想定と画面出力結果との差異を産んでしまっているようなのです。

現在、擬似的なカートシステムを作成中なのですが
どうやらphpのみならず、もっと根本的な理解が足りないのではないのか?と思い
質問させてもらいました。

■ このスレッドは過去ログ倉庫に格納されています