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

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

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

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

◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】

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

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

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
0436nobodyさん2009/02/25(水) 15:44:19ID:???
>>435
いや、それブラウザでやってるじゃん
真似してみたらいいじゃん
0437nobodyさん2009/02/25(水) 16:07:13ID:???
>>435

>>434が教えてくれてるのに君はひどい人だね
0438nobodyさん2009/02/25(水) 16:36:21ID:???
>>315と>>322で
どこが違うのか、わからん
0439nobodyさん2009/02/25(水) 16:42:17ID:???
失敗例はキャッチブロックにロールバックが無くて、
成功例はロールバックって書いてあるところかな?
0440nobodyさん2009/02/25(水) 17:03:04ID:???
いやどっちも書いてるやん
0441nobodyさん2009/02/25(水) 23:16:51ID:???
phpの中でjavascriptを連携させるときに、中に入るクオーテーションの種類が3つになってしまって使えん・・
オンクリックの中にさらにクオーテーション入ったときとか、functionしても、引数使うから
結局''で囲うからどうにもならね
0442nobodyさん2009/02/25(水) 23:23:13ID:???
日本語でおk。
0443nobodyさん2009/02/25(水) 23:28:33ID:+kmtnISz
PHPは実行されるまで未定義の関数(若しくは関数名TYPO)が存在するか否か分かりませんが、
ツールなどで未定義の関数や引数の間違いを静的に検出する方法はないですか?
0444nobodyさん2009/02/25(水) 23:33:06ID:???
php_check_syntaxじゃだめか?
0445nobodyさん2009/02/25(水) 23:36:40ID:???
<?php
function hoge(){
echo 'hoge';
}
hage();
?>
とかあったときに、実行前に関数hageが無い事を検出したいって事だろ。

静的解析とかダセェ事せずに自動テスト使おうぜ。
0446nobodyさん2009/02/25(水) 23:41:51ID:LSqAU6YZ
SQL文を発行するのに、

$dbh->exec("UPDATE tb1 SET value = value + 1 WHERE id = '1'");

以外の書き方って、ある?
------------------------
【環境】
PHP5 + PDO + SQLite3

ようはexec以外のやり方で、って意味。
0447nobodyさん2009/02/25(水) 23:43:15ID:???
>>442
クオーテーションがネストしてしまうときに、
どう対処したらいいですか、って意味だろ?

行間読もうぜ
さもないと、30才でホームレスだにょ
0448nobodyさん2009/02/25(水) 23:54:44ID:???
>>446
一発で終わりならexec、ループさせるならprepareで良いんじゃない?
0449nobodyさん2009/02/25(水) 23:59:50ID:???
>>448
ああ、prepareがあったか。
ありがと。
0450nobodyさん2009/02/26(木) 00:27:28ID:tryMdVBh
mysqlのPDOを使ってみたいのですが
php.iniのphp_mysql.dllをコメントをはずせばつかえるのでしょうか?
0451nobodyさん2009/02/26(木) 01:06:52ID:???
使える。
0452nobodyさん2009/02/26(木) 01:23:01ID:???
>>450
自宅でのテスト環境だったら、たぶんそれでいける。
確認はphp.infoを見る。

無料のレンタルサーバーではほとんど
ドライバが入っていない(ので無理)
0453nobodyさん2009/02/26(木) 01:55:08ID:???
>>441
スクリプト中でechoとかprint()使ってるのかなぁ。。
なら、heredocにすれば少しは気を使う部分が減るかもしれない。

$text = 'ちんこ' ;
echo <<<__E_O_T__
<button name="tinko" onclick="alert( '{$text}' ) ;" />
__E_O_T__


HTMLとかJavaScriptは完全に別ファイルにして
<button name="tinko" onclick="alert( '<php echo $text ?> ' ) ;" />
のほうがいいと思うけど。
0454nobodyさん2009/02/26(木) 02:05:21ID:91pUGaxV
おそらく、PHP4とPHP5での違いだと思うのですが、

<input type="text" name="test" value="">←に、test'sと入力して送信すると、

PHP4だと、
$_GET["test"]の値は、test'sとなりますが、

PHP5だと、
$_GET["test"]の値は、test\'sとなります。

送信された時点でエスケープされているのですが、これはphp.iniで変更可能でしょうか?
0455nobodyさん2009/02/26(木) 02:08:20ID:???
うん
マジックなんちゃらやね
0456nobodyさん2009/02/26(木) 02:20:57ID:???
magic_quotes_なんちゃら

SQLインジェクションの対策で
そういう変なオプションがある。

自動的に'とかを勝手にエスケープしてくれるっていう。
0457nobodyさん2009/02/26(木) 03:45:51ID:91pUGaxV
さんくす!
04584182009/02/26(木) 04:00:48ID:GtV/r+in
昨日は有り難うございました。
http://www.stackasterisk.jp/tech/php/php02_06.jsp

【form.html】
<html><body>
<form action="display.php3" method="POST">
<input type="text" name="fName" size="30"><br>
<input type="submit" value="submit">
</form>
</body></html>

【display.php3】
<html><body>
<?
print $fName;
?>
</body></html>

今日はこれにチャレンジしてみたのですが、うまく動きません。
どこが悪いのかご指摘下さい。
0459nobodyさん2009/02/26(木) 04:06:33ID:???
$_POST['fName']
そこの情報古すぎるから違うとこのほういいよ
0460nobodyさん2009/02/26(木) 04:07:45ID:???
>>458
ほんとにPHP3が動いているのか?
とかいうオチじゃないの。
0461nobodyさん2009/02/26(木) 04:08:51ID:7qsKyuky
ファイルに100って数字を入れておいて、
5分ごとに1減らす、ってどう書けばいいの?

cronとかじゃなくて。
04624182009/02/26(木) 04:08:56ID:GtV/r+in
>>459
有り難うございます。
> $_POST['fName']
をドコと入れ替えるのでしょうか?
04634182009/02/26(木) 04:10:48ID:GtV/r+in
>>460
あ、なるほど。.php3ってそういう意味なんだ。
私の環境はPHP Version 5.2.6でしたw
0464nobodyさん2009/02/26(木) 04:10:55ID:7qsKyuky
そのPHPファイルにアクセスするたびに
計算してるようなんだけど。

だから、例えばページが過疎ってて、
3日間アクセスがなかったら、その間は
計算しない感じ。

そんで3日ぶりにアクセスがあったら、
「えーーっと、、、、前回のアクセスから
3日だから、3(日)X24(時間)X12(5分の単位)
減らせばいっかな、、、」
とかって計算しているようなんだけど??
04654182009/02/26(木) 04:17:39ID:GtV/r+in
じゃあ、PHP Version 5.2.6の環境で動く、>>458を誰か書いて下さい。 お願いしますっ。
0466nobodyさん2009/02/26(木) 04:21:18ID:???
【form.html】
<html><body>
<form action="display.php3" method="POST">
<input type="text" name="fName" size="30"><br>
<input type="submit" value="submit">
</form>
</body></html>

【display.php3】
<html><body>
<?
print $_POST['fName'];
?>
</body></html>
0467nobodyさん2009/02/26(木) 04:22:17ID:???
>>465
>>459 に書いてある。
0468nobodyさん2009/02/26(木) 04:24:25ID:???
ちょっと間違えた。
【form.html】

<html><body>
<form action="display.php" method="POST">
<input type="text" name="fName" size="30"><br>
<input type="submit" value="submit">
</form>
</body></html>

【display.php】

<html><body>
<?
print $_POST['fName'];
?>
</body></html>
0469nobodyさん2009/02/26(木) 04:24:57ID:???
>>467
だからどこを変更したらいいのか
わからないから聞いてるんだろ?

自閉症もたいがいにしろや
04704182009/02/26(木) 04:42:12ID:GtV/r+in
>>468
有り難うございます。
form.htmlこれで入力枠が表示されます。
で、aaaaaとか入力して、ボタンを押すと、真っ白の画面に変わり何も表示されません。
どうしたらいいでしょうか?
0471nobodyさん2009/02/26(木) 04:44:09ID:???
<form action="display.php"

この行はあってる?

それと、
display.php
ファイル名これに変更したから。
04724182009/02/26(木) 04:47:29ID:GtV/r+in
>>471
はい。 >>468をそのままコピペしました。
0473nobodyさん2009/02/26(木) 04:51:12ID:???
>>472
アパッチは起動してる?

ブラウザのURL欄に

http://localhost/form.html

とかって入力しないとだめだよ

ダブルクリックしてブラウザで見たらだめってこと
今はURL欄に
file:///C:/display.php
とかって表示されてるでしょ?それだとだめ
04744182009/02/26(木) 04:56:26ID:GtV/r+in
>真っ白の画面に変わり何も表示されません。
つーか、この状態でソースを表示させると、
<html><body>
<?
print $_POST['fName'];
?>
</body></html>
これがマンマ表示されます。
だから、変数の中に何も代入されてなくて、print関数でnullを表示してるのではないでしょうか?
04754182009/02/26(木) 04:57:41ID:GtV/r+in
アパッチは動いてます。
http://localhost/php/phpinfo.php
これを入れると、紫色の表がずるずる出て来ます。
04764182009/02/26(木) 05:01:07ID:GtV/r+in
file:///C:/display.php
これではなく、
http://localhost/php/display.php
これになってて、真っ白の状態です。
04774182009/02/26(木) 05:24:06ID:GtV/r+in
解決しました。
<?
を
<?php
としました。
有り難うございました。
04784182009/02/26(木) 06:41:16ID:GtV/r+in
おかしいな、色々いじってたら、form.htmlに入力してクリックすると、
display.phpが表示されなくて、ファイルのダウンロードってのが表示されるようになったw
0479nobodyさん2009/02/26(木) 06:56:40ID:zwlsZYIS
pcntl_forkでフォークした時、
外部とのIOはどうなりますか?
たとえば、オープンしてあるファイルとか、
DBとの接続とか。
複数プロセスからファイルがオープンされているような状態になるのはまずいんじゃないかと
思うのですが・・
04804182009/02/26(木) 06:57:27ID:GtV/r+in
ああ、わかった、form.htmlをつまんで、ieに落とすだけじゃダメなんだ。
ちゃんと、http://localhost/php/form.htmlと打つと。
0481nobodyさん2009/02/26(木) 07:10:01ID:???
ワラタ
0482nobodyさん2009/02/26(木) 08:12:14ID:WDGjNsPd
DB使えないレンタル鯖で、情報をインサートする手段を考えていて、
txt、cgiや、datファイルなどなどに書き込めることがわかったのですが、
ふと、.phpにもインサートできるのかな?と疑問におもいました。
phpに書き込んで、それぞれ変数に格納していって、参照〜
みたいなのを1000件くらいしたときtxt cgi dat などと比べて速度は変わらないでしょうか?
0483nobodyさん2009/02/26(木) 09:10:36ID:???
君は何をいってるんだい?
拡張子が変わったところでプレーンテキストのデータということには変わりないんだろ?
0484nobodyさん2009/02/26(木) 09:45:22ID:???
>>482
DBが使えないといっても、txtが使えるならSQLiteぐらい使えるんじゃない?
まぁ、それが無理として、更新が重ならないという条件が付くなら、phpファイルに
var_export($hoge, true);の結果を書きこむ手はある。
速いよ。
しかし、一気に読み込むからメモリは食うけどな。メモリ割り当て次第。
0485nobodyさん2009/02/26(木) 10:20:05ID:???
>>484
なんでvar_export?
取り出すときevalすんの?しかも遅いじゃん

serializeの方が安全で高速
0486nobodyさん2009/02/26(木) 10:24:40ID:???
たかだか1000件
マイクロ秒単位の誤差などどうでもいい
好きにしろ
0487nobodyさん2009/02/26(木) 10:36:38ID:???
parse error syntax $endうんたらわけわかんね
0488nobodyさん2009/02/26(木) 10:45:56ID:???
凡ミスするやつはIDE使え
0489nobodyさん2009/02/26(木) 12:49:24ID:???
aptanastudioとPDT2がうめえwwww
0490nobodyさん2009/02/26(木) 12:49:59ID:???
僕の大好きなあぷてぃーなちゃんがこんなに進化するとは思わなかったw
dw8から乗り換えるわwwwwwwwww
0491nobodyさん2009/02/26(木) 12:50:37ID:???
PHPEclipse使ってるけどAptanaって使いやすいのか?
0492nobodyさん2009/02/26(木) 12:54:45ID:hOiLi7h5
先生方!
文字列を1byteじゃなく1bitを取得することってできますか?
0493nobodyさん2009/02/26(木) 13:06:37ID:???
できる
0494nobodyさん2009/02/26(木) 13:15:31ID:???
aptanaは単品よりaptanastudioのほうがいいよ
0495nobodyさん2009/02/26(木) 13:22:02ID:???
>>485
はぁ?
試したのかよ。$data = 付けて保存したら、includeするだけだぜ。
unserializeの方が遅いよ。
0496nobodyさん2009/02/26(木) 14:12:33ID:YD+Z+nCM
サーバー全体で404エラー画面をhtaccessで設定しています。
しかしPHP内で
header("Not Found", true, 404);
と書くと、設定している404エラー画面ではなくブラウザの404エラー画面が出ます。
設定しているエラー画面を表示させるにはどう書けばいいでしょうか?
0497nobodyさん2009/02/26(木) 14:15:08ID:???
location
0498nobodyさん2009/02/26(木) 14:22:20ID:???
locationとかMETAタグだと、ブラウザに表示されるアドレスが
404エラーのファイルになりませんか?
0499nobodyさん2009/02/26(木) 14:27:22ID:???
>>498
それならinclude(error.html);exit();で良いじゃないか
0500nobodyさん2009/02/26(木) 14:28:09ID:???
>>496
そのheaderを出した後、自前のエラー画面をreadして出力。
ブラウザは404ヘッダーと404用のソースを受け取る
0501nobodyさん2009/02/26(木) 14:35:56ID:???
>>496
その問題に関係あるか分からないけど
IEだと512バイト?以下のエラーファイルは無視して
自前のエラーファイル使うらしい。

インターネットオプションの詳細設定から変えられるけど。
0502nobodyさん2009/02/26(木) 15:03:08ID:???
>>499->>501
まとめて失礼します。
たくさん教えてくださってありがとうございます。
無事できるようになりました。
>>501
それは知りませんでした。デザイン頑張ります。
0503nobodyさん2009/02/26(木) 15:32:12ID:6qh6YAhf
2人以上のn人を3人グループと2人グループに分け、それぞれのグループ数を出すにはどうしたら良いですか?
なるべく3人グループができるようにします
関数にて処理したいと思います
よろしくおねがいします

function get_group (n) {
/*
計算するところ
*/
return array('3' => ? ,'2' => ?);
}


n=2の場合
array('3' => 0 ,'2' => 1);

n=7の場合
array('3' => 1 ,'2' => 2);

n=9の場合
array('3' => 3 ,'2' => 0);

n=11の場合
array('3' => 3 ,'2' => 1);
0504nobodyさん2009/02/26(木) 15:34:16ID:???
>>503

$a = 10 % 3;

10を3で割った余りが$aに入る($a → 1)

これ使え
0505nobodyさん2009/02/26(木) 15:35:02ID:???
nを3で割って余りが1か2で判断すればいいじゃん
0506nobodyさん2009/02/26(木) 15:37:50ID:???
switch mod
0507nobodyさん2009/02/26(木) 15:38:09ID:???
余りが1だったらどうすればいいの?
0508nobodyさん2009/02/26(木) 15:39:00ID:???
>>507
1組減らしたら何人余るか計算してみろよ
0509nobodyさん2009/02/26(木) 16:03:26ID:6qh6YAhf
すっきりしたコードではないですが、一応できましたのでのせときます
ありがとうございました

function get_group ($n) {
if((int)$n < 2) return false;
$total = (int)$n;
$sannin = 0;
$futari = 0;
$amari = $total % 3;
if($amari === 1) {
$sannin = floor(($total / 3)) - 1;
} else {
$sannin = floor($total / 3);
}
$futari = ($total - ($sannin * 3)) / 2;

return array('3' => $sannin ,'2' => $futari);
}
0510nobodyさん2009/02/26(木) 16:04:28ID:???
なにそのきめえコードwwww
0511nobodyさん2009/02/26(木) 16:06:21ID:???
いま書いてやるから待ってろ
0512nobodyさん2009/02/26(木) 16:11:53ID:???
なるべく三人グループにしたいってのになんで
n=7のときは2人グループが二つできるの?
0513nobodyさん2009/02/26(木) 16:18:30ID:???
一人ぼっちになった奴の気持ちになってみろ
0514nobodyさん2009/02/26(木) 16:21:51ID:???
function group($n) {

switch ($n) {

case 1 : return false;
case 2 : return array(0, 1);
case 3 : return array(1, 0);
case 4 : return array(0, 2);
case 5 : return array(1, 1);
case 6 : return array(2, 0);
case 7 : return array(2, 1);

・・・略

}

}
0515nobodyさん2009/02/26(木) 16:32:40ID:???
if (is_numeric($n = $_SERVER['QUERY_STRING'])) getGroup($n);
print_r(getGroup($n));
function getGroup($n) {$a=floor($n/3);$b=fmod($n,3);switch ($b) {case 0:return array('3'=>$a,'2'=>0);break;case 1:return array('3'=>$a-1,'2'=>2);break;case 2:return array('3'=>$a,'2'=>1);break;}}
0516nobodyさん2009/02/26(木) 16:33:56ID:???
GMP関数使えばもうちょっと行数減らせるけど鯖によるから今回は使わなかった
0517nobodyさん2009/02/26(木) 16:35:59ID:???
break;はreturnで返してるから書かなくてもいいけどね
あとは好きにしろ
0518nobodyさん2009/02/26(木) 16:37:58ID:???
>>515
横からだけど、fmodなんて関数あったのか
しらんかったわw
0519nobodyさん2009/02/26(木) 16:44:24ID:???
今思い出したけど、switch構文の中にreturnってなんか気持ち悪いと思うのは俺だけなんだろうか
ループ処理内にreturnもなんか違和感を感じる
0520nobodyさん2009/02/26(木) 16:46:25ID:???
>>519
俺もなんか気持ち悪い。
でも、やってる人も多いんだよね。
まぁ、好き嫌いのレベルなのんだよね。たぶん。
0521nobodyさん2009/02/26(木) 16:53:00ID:???
気持ち悪いって人は少数派だから使っとけ
ttp://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla%3Aja%3Aofficial&hs=9eG&q=return+switch+%E6%B0%97%E6%8C%81%E3%81%A1%E6%82%AA%E3%81%84&btnG=%E6%A4%9C%E7%B4%A2&lr=lang_ja
0522nobodyさん2009/02/26(木) 16:59:46ID:???
プログラミングっつうのはなシンプルでメンテナンスしやすいように見やすく書くことを頭に置いておくんだ
0523nobodyさん2009/02/26(木) 17:02:39ID:???
プログラムを複雑怪奇にしてオレしかメンテできないようにすれば、なかなかクビにならない。
0524nobodyさん2009/02/26(木) 17:05:39ID:???
>>523
そういって辞めたやつがいるんだがまじでしばきたい
0525nobodyさん2009/02/26(木) 17:14:45ID:???
あひゃひゃ。
もしかして、まじでオレだったりしてな。
0526nobodyさん2009/02/26(木) 17:21:44ID:???
>>524
それは、そういう奴をさっさと見抜いてクビにできなかった上司の責任。

ふつうに考えればよいコードを書く方がクビになりにくいのは自明だから、
それができなくて辞めた奴を憎んでもしょうがないべ
逆に、良いコード書いても評価されないならとっとと辞めたほうがよさげ
0527nobodyさん2009/02/26(木) 17:24:01ID:???
良いコード書くだけで評価される職場なんて終わってる
0528nobodyさん2009/02/26(木) 17:29:28ID:???
貴様らこの長くてコピペくさいコードを改良できるかな?

$fp=fopen($filename1,"a");
flock($fp,LOCK_EX);
fwrite($fp,$str)
fclose($fp);

$fp=fopen($filename2,"w");
flock($fp,LOCK_EX);
fwrite($fp,$str)
fclose($fp);
0529nobodyさん2009/02/26(木) 17:30:58ID:???
>>528
既にそれの簡易版コードあるじゃん・・・
0530nobodyさん2009/02/26(木) 17:32:11ID:???
>>528
ID出てないよ
0531nobodyさん2009/02/26(木) 17:33:13ID:???
コードゴルフしたい奴もコーディングスタイルについて語りたい奴もスレチだ
雑談でネタ振りしてろカス
0532nobodyさん2009/02/26(木) 17:38:21ID:???
>>528
function ahoaho( $filename, $filemode, $str ){
$fp=fopen($filename, $filemode); flock($fp,LOCK_EX); fwrite($fp,$str) fclose($fp);
}
ahoaho( $filename1, "a", $str1 );
ahoaho( $filename2, "w", $str2 );
0533nobodyさん2009/02/26(木) 18:02:42ID:???
継承の質問なんですが
0534nobodyさん2009/02/26(木) 18:07:13ID:???
継承の質問なんですが継承で子、孫と作っていくと
class sql {
function getUser() {}
}
class subsql extends sql {
function getParam(){}
}
class sub2sql extends subsql
0535nobodyさん2009/02/26(木) 18:12:54ID:???
sqlしか必要がないファイル、sql,subsqlが必要なファイル、全部必要なファイル
この3つからgetUserを呼び出す際
呼び出しを統一のクラスで管理したいのですがsql,subsql,sub2sqlとクラス名が違うためできません。
クラスを上書きみたいなことはできないのでしょうか?

subsqlではなくsqlの追加ファンクションとして別ファイルで定義したいのです

途中で送信してしまい変な分になってます。ごめんなさい
0536nobodyさん2009/02/26(木) 18:40:47ID:???
>>533-535
おまえさん、スレタイが読めないように、クラスのこともわからないんだろうなぁ。
自分が何を聞きたいのかもう一度整理して、ID出してやりなおしてみたらどうよ
■ このスレッドは過去ログ倉庫に格納されています