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

【PHP】下らねぇ質問はここに書き込みやがれpart17

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/02/24(金) 22:05:48ID:YHkZgU8b
PHPに関するくだらねぇ質問用スレです。 
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。 

まず読め【PHP マニュアル】 
http://www.php.net/manual/ja/

本スレ【PHP】質問スレッドpart33【php】
http://pc8.2ch.net/test/read.cgi/php/1140027592/l50

前スレ【PHP】下らねぇ質問はここに書き込みやがれpart16
http://pc8.2ch.net/test/read.cgi/php/1139146534/l50

過去スレは>>2
0552nobodyさん2006/03/08(水) 15:55:00ID:???
ある日付から月末日を算出するにはどんな方法があるでしょうか?
色々考えてみたのですが、非常に面倒な方法になってしまいました。

例2005-03-20 → 2005-03-31、2006-01-20 → 2006-01-31
0553nobodyさん2006/03/08(水) 15:58:52ID:???
「php 日付 チェック」でググルとかしてみれ・・
0554nobodyさん2006/03/08(水) 16:06:17ID:vjc8ygyC
>>552
ヒント:翌月1日の1日前の日付が当月の末日
0555nobodyさん2006/03/08(水) 16:15:40ID:???
>>552
http://php.benscom.com/manual/ja/function.date.php
0556nobodyさん2006/03/08(水) 16:24:15ID:???
>>552
ttp://php.benscom.com/manual/ja/function.mktime.php
> 例 2. 次月の最後の日
> 指定した月の最後の日は次の月の -1 番目の日ではなく、"0" 番目の日 として表すことが可能です。
> 以下の例はともに文字列"The last day in Feb 2000 is: 29" を出力します。
> $lastday = mktime(0, 0, 0, 3, 0, 2000);
> $lastday = mktime(0, 0, 0, 4, -31, 2000);
0557nobodyさん2006/03/08(水) 16:31:53ID:???
$foo = '2005-03-20';
$t = explode('-', $foo);
$bar = date('Y-m-t', mktime(0, 0, 0, $t[1], $t[2], $t[3] ))
;
echo $bar;
0558nobodyさん2006/03/08(水) 16:32:58ID:???
あ、ごめん$t[3]は$t[0]のまちがいだ。

$foo = '2005-03-20';
$t = explode('-', $foo);
$bar = date('Y-m-t', mktime(0, 0, 0, $t[1], $t[2], $t[0] ));
echo $bar;
0559nobodyさん2006/03/08(水) 16:40:34ID:???
PHP4.3とMySQL3.23でシステム作ってます。

PEARを使わずmysql〜関数を使用して自作クラス作りました。
INSERTやUPDATEは型判別して自動でクエリ文作る感じです。

mysql_fetch_array() で取得した値が全てstring型になっていたため、
一部のパラメータのみを書き換えてINSERTやUPDATEすると
エラーになり苦労させられたのですが、
この辺どのように回避していますか?

また、PEARを使用すれば上記は回避できるのでしょうか?
0560nobodyさん2006/03/08(水) 16:49:00ID:???
>>555
"指定した月の日数。"なんてオプションがあるんだな。
質問者ではないがありがとう。

print date(t,strtotime("10 April 2006"));
0561nobodyさん2006/03/08(水) 16:56:30ID:???
>>560
エラーになるかと思ったけど動くんだ、それ・・・
0562nobodyさん2006/03/08(水) 16:58:53ID:???
どのへんでエラーになると思ったのかな
tが裸だから?
0563nobodyさん2006/03/08(水) 16:59:17ID:???
>>559
PEAR::DBではクエリ作成の機能を持ってない。
ADOdbではFetchField()でDBネイティブの各カラムのデータ型の取得と、
MetaType()でその型を汎用的な抽象表現への変換ができるようになってる。
PHPの変数は型を厳密に規定できないので、あらかじめDBからテーブルの型を
取得しておこう、って発想なんだと思う。
05645602006/03/08(水) 17:05:25ID:???
>>560
今月でいいなら
print date(t);
でも可

print date(t,strtotime("April 2006"));
でも動くし

>>561
俺もなんで動かないと思ったか知りたい
責めてるんじゃなくて、もっといい記述方法があれば知りたいのだ
0565nobodyさん2006/03/08(水) 17:07:18ID:???
>>564
561じゃないけど、第一引数はちゃんと'〜'なり"〜"で括りましょう。
0566nobodyさん2006/03/08(水) 17:09:55ID:???
>>565
thnx
明示しとけって事ね
05675622006/03/08(水) 17:10:28ID:???
ま、やっぱり裸だったとこかね。
0568nobodyさん2006/03/08(水) 17:27:19ID:???
>>566
明示っつーか、define未定義の動作に頼った記法はあんま良くないよ。
05695592006/03/08(水) 17:29:49ID:???
>>563
レスどうもです。
DB_common::autoPrepare() でINSERT/UPDATEのクエリを
作ってくれるようなんですが、
使うに当たり疑問になりまして。。。
結局型をあわせてやらにゃいかんのかな〜

今PEARのDB関係のメソッド漁ってますが、
型を取得するメソッドが見つからないんですが(;´д⊂
今のままでいっかなぁ・・・
0570nobodyさん2006/03/08(水) 17:42:09ID:???
>>569
ごめん。PEAR::DBでもクエリ作成できたのね。吊ってくる…
autoPrepare()は型を含んだクエリテンプレートの自動生成みたいよ。
実際のクエリ生成はそのテンプレートを元にexecute()で生成するぽい。
0571nobodyさん2006/03/08(水) 17:59:00ID:???
>>570
DB_common::getAll() なり何なりで取得した配列が
全部DBと一致する型・・・とは言わないまでも、
intがstringになってたりしなければ問題ないんですけどね〜

もうちょっと揉まれてきます(´д`)
0572nobodyさん2006/03/08(水) 19:26:32ID:???
string date ( string format [, int timestamp] )
05735592006/03/08(水) 19:34:59ID:???
ガイシュツかもしれないけど一応報告。

DB_common::getAll() の戻り値:軒並みstring

以下テーブルを作り、execute()内でどんなクエリが作成されるか検証。

テーブル名:t_test
key1:verchar(255)
key2:int(11)
key3:tinyint(4)

・ソース1
$data = array( "data1", 2, true );
$ret = $conn->autoPrepare( "t_test", array( "key1", "key2", "key3" ) );
$conn->execute( $ret, $data );

・クエリ1
>>"INSERT INTO t_test (key1,key2,key3) VALUES ('data1',2,1)"

・ソース2
$data = array( "data1", "2", "true" );
$ret = $conn->autoPrepare( "t_test", array( "key1", "key2", "key3" ) );
$conn->execute( $ret, $data );

・クエリ2
>>"INSERT INTO t_test (key1,key2,key3) VALUES ('data1','2','true')"

単にexecuteの第二引き数の型をそのまんま適用しているだけっぽい。
DB次第じゃエラーですなヽ(;´д`)ノ
0574質問2006/03/08(水) 20:55:12ID:MC7d+fja
PHPでJavascriptのtoStringメソッドみたいなことをさせるにはどうしたらいいんやろ?
具体的に言うと文字列を10進数とか16進数とかエンティティ化する方法はないですか?
0575nobodyさん2006/03/08(水) 21:17:17ID:???
>>574
つ【マニュアル】
0576nobodyさん2006/03/08(水) 21:40:22ID:74wPkS3/
Array ( [0] => Array ( [0] => [1] => ) [1] => Array ( [0] => a [1] => b ) )
このときaを$pen bを$con
という変数に置くにはどうしたらよいでしょうか?
0577nobodyさん2006/03/08(水) 21:46:50ID:???
>>576
できない。
0578nobodyさん2006/03/08(水) 21:49:31ID:74wPkS3/
ええ?そうなんですか・・・ありがとうございました
0579nobodyさん2006/03/08(水) 21:50:45ID:???
マテマテww
0580nobodyさん2006/03/08(水) 21:51:00ID:???
>>574
ord()
0581nobodyさん2006/03/08(水) 21:54:42ID:???
>>574
ordかsprintf。
エンティティ化は
preg_replace_callback('/./', create_function('$m', 'return "&#".ord($m[0]);'), $str);
て感じか。
これやってくれる関数あるっけ?htmlentitiesやhtmlspecialcharsじゃ特定文字だけだしな。

>>576
$a = array(array('', ''), array('a', 'b'));という意味だと仮定するとlist($pen, $con) = $a[1];
05825812006/03/08(水) 22:08:04ID:???
アラヤダ
エンティティ化でセミコロンつけ忘れちゃった
0583nobodyさん2006/03/08(水) 22:09:04ID:74wPkS3/
>>582
できますたありがとう
0584nobodyさん2006/03/08(水) 22:16:53ID:???
掲示板やアクセス解析などを作っているのですが、
データベースを使うメリットを教えてください。
それから、今後の普及予想もお願いします。
やはりデータベースを利用したプログラムが増えていくのですか?
0585nobodyさん2006/03/08(水) 22:29:01ID:???
>>584
メリット:安定して動作し、データ破損や消失が少なく、データ件数が多い場合に検索・表示が高速
普及:とっくに普及してると思うが…20年前の人ですか!?
DB利用:これは普及とかは関係なく、システム規模などの条件でどっちを使うか決めるもの
0586nobodyさん2006/03/08(水) 22:29:10ID:???
>>584
掲示板だろうと、アクセス解析だろうと、
データを何かしらの方法で保存して、それを参照すれば、すなわちデータベース

お!君も既に使ってんジャンSUGEEEEEEEEEEEEEeeeeeeeeeeee!。





















と、煽ってみる
0587nobodyさん2006/03/08(水) 22:48:29ID:???
PHPで他のサーバーにあるページにPOST送信するにはどうすればいいのでしょうか?
socket関数を使うというようなことを聞いたことがありますがいまいちやり方がわかりません。
ちなみにhtmlでformタグのactionで指定するのでは目的は達成できないので、phpでよろしくお願いします。
0588nobodyさん2006/03/08(水) 23:07:29ID:???
>>587
PEARのHTTP_Request
05895872006/03/08(水) 23:24:24ID:???
pear使わないと無理ですか?
xreaでは使えないかなぁ・・・
0590nobodyさん2006/03/08(水) 23:34:28ID:???
>>589
>pear使わないと無理ですか?
pearを使わずに自作することは可能。
ただし、それにはHTTPを理解する必要がある。

>xreaでは使えないかなぁ・・・
どこであろうとpearは使える。
例え"pearコマンドでインストール"できないサーバでも、
必要なパッケージを適当な場所に置けばよい。
なぜならpearはPHPで書かれたライブラリ群に過ぎないから。

xreaで使えるかどうかについては板違い。
05915902006/03/08(水) 23:35:26ID:???
しまったID未表示に回答しちまった
0592nobodyさん2006/03/08(水) 23:39:07ID:???
( ´∀`)σ)д`)
0593nobodyさん2006/03/08(水) 23:45:45ID:MQhgDV9r
HTMLのAタグやIMGタグの相対パスを絶対パスに変換する
ライブラリってありますか?
PEARで探したところそれらしきものはなさそうでした。
0594nobodyさん2006/03/08(水) 23:46:16ID:???
なんで皆自作したがるんだ。
0595nobodyさん2006/03/08(水) 23:48:16ID:???
>>594
PEARの手動インストール方法を知らないからじゃない?
0596nobodyさん2006/03/08(水) 23:51:32ID:???
>>594
車輪が好きなんじゃない?
0597nobodyさん2006/03/08(水) 23:53:19ID:???
レン鯖にコマンドラインで接続なんてできるのか?
0598nobodyさん2006/03/08(水) 23:54:52ID:???
>>597
無理
0599nobodyさん2006/03/08(水) 23:56:19ID:???
>>593
Net_URLのresolvePath
0600nobodyさん2006/03/09(木) 00:02:23ID:???
>>597-598
出来る
たとえばSAKURA Internet(http://www.sakura.ne.jp/)
はtelnet/ssh接続で接続できるサービスを提供している
レン鯖といっても専用サバなら当然出来ると思うが。

板違いすまない。
0601nobodyさん2006/03/09(木) 00:06:22ID:???
板違いついでにxreaもsshなら接続できる
0602nobodyさん2006/03/09(木) 00:26:43ID:???
え、マジで?
それは知らなかった。早速やってみよう。
0603nobodyさん2006/03/09(木) 01:07:10ID:???
>>590
HTTP_Requestでできました!!パッケージのインストールすら初心者には大変なもので・・・結構時間かかりました。
本当にありがとうございました!!
0604nobodyさん2006/03/09(木) 01:10:24ID:???
ド初心者が1時間半でインストール〜POST送信までできれば上出来だな。
0605nobodyさん2006/03/09(木) 01:10:53ID:???
20M程度のログファイルをphpで整形するスクリプトを作っているのですがメモリ関係で躓いています。
ファイルをfile関数で取り込むと

error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 15920437 bytes)

と表示されます。
調べてみるとmemory_limitを増やせば解決できるそうなのですが、
増やすとリスクが増えたりする可能性があるきがしましてできれば他の方法で解決を図りたいのですが、

何か良い方法はございますでしょうか。
0606nobodyさん2006/03/09(木) 01:13:54ID:???
file関数は一気にその20MBをメモリに乗せるものだから当たり前だろ。

どういう整形をするかまったく書かれてないので、相談に乗りにくいのだが、
fopenで開いて、1行単位、もしくは、指定容量単位で処理すべき。
0607605じゃないよ2006/03/09(木) 01:17:37ID:???
>>606
おまえニートの癖になんでそんなにえらそうなんだ?PCオタクがそんなに偉いのかよ。
0608nobodyさん2006/03/09(木) 01:19:59ID:dcUpKQFS
別にPEARなんかサイトからダウンロードしてそのまま置けばいいだけじゃん。
0609nobodyさん2006/03/09(木) 01:20:04ID:???
>>607
お前の方が偉そうだ
0610nobodyさん2006/03/09(木) 01:21:00ID:???
>>608
推奨じゃないから
0611nobodyさん2006/03/09(木) 01:21:30ID:???
>>607=>>605
0612nobodyさん2006/03/09(木) 01:28:38ID:???
>>607=ツンデレ
0613nobodyさん2006/03/09(木) 01:32:41ID:SHZr9acF
PEARについて詳しくかかれた本ってあります?
オンラインものじゃなくて、本があったほうがうれしいんで・・・
0614nobodyさん2006/03/09(木) 01:35:37ID:???
>>613
PHP関連の書籍(但しPHP出版系お断り)第2版
http://pc8.2ch.net/test/read.cgi/php/1117066073/

参考書籍推薦スレッド
http://pc8.2ch.net/test/read.cgi/php/1014836425/
0615nobodyさん2006/03/09(木) 01:46:10ID:???
PEARって便利なんだなあ
うふひひふ
0616nobodyさん2006/03/09(木) 02:02:35ID:???
http://pc8.2ch.net/test/read.cgi/php/1140786348/
これをparse_urlで分解するとpath には/test/read.cgi/php/1140786348/が戻されますが、
真ん中の「php」の部分だけを戻したいときはどうしたらいいでしょう。
0617nobodyさん2006/03/09(木) 02:07:54ID:???
>>616
○投げスレではない。
あとIDだして質問しろ
0618nobodyさん2006/03/09(木) 02:11:01ID:???
617 名前:nobodyさん[sage] 投稿日:2006/03/09(木) 02:07:54 ID:???
>>616
○投げスレではない。
あとIDだして質問しろ
0619nobodyさん2006/03/09(木) 02:12:32ID:???
俺も前丸投げスレじゃないって言われたんだけどどういう意味なの?自治したいだけなの?
0620nobodyさん2006/03/09(木) 02:16:29ID:???
>>619
質問スレの自治厨なんて質問に答えられない奴に決まってんだろw
06216172006/03/09(木) 02:19:26ID:???
>>619-620
死ねよバカども
頭悪いくせに2chくるなよwwww氏ね。逝け。クズが。
0622nobodyさん2006/03/09(木) 02:50:21ID:dcUpKQFS
コールバック関数に引数を渡したいのですが、
どうやれば良いでしょうか?
0623nobodyさん2006/03/09(木) 03:07:54ID:???
無理
0624nobodyさん2006/03/09(木) 03:17:09ID:???
>>616
"/"でsplitして、ゴニョゴニョする

というかその条件だけだとどういう方法がベストか分からないかも
0625nobodyさん2006/03/09(木) 04:07:23ID:???
>>622
カプセル化したのをグローバルに使えば?
0626nobodyさん2006/03/09(木) 07:59:21ID:???
>>561
ちゃんとNoticeが表示されるよ
みんなNotice消してるのかな
0627nobodyさん2006/03/09(木) 08:10:27ID:???
php.ini の デフォルトではNoticeも表示されるだろ
消す意味あるの?

たまに配布されているphpスクリプトでもNoticeエラーでまくることあるけど、
エラーは全て表示でコーディングした方がいいよ

0628nobodyさん2006/03/09(木) 09:49:04ID:???
Noticeなんて表示させなきゃ問題ないじゃん
出ても動くんだからさ
0629nobodyさん2006/03/09(木) 09:59:37ID:???
>>628
Warningだって止まりはしないので、表示させなければ問題なしですか。
0630nobodyさん2006/03/09(木) 10:02:23ID:???
Errorだって無視すれば・・・
0631nobodyさん2006/03/09(木) 10:18:29ID:???
>>627
「最近の」デフォルトな。以前はデフォルトじゃなかった。
昨今のPHPブームでNotice出しとかなきゃミスコーディングするやつが続出したんだろ。
PHPなんて本来お手軽に作れるからこそ価値あるものだし、元々の言語構造的に
厳密にコーディングしたところでかなり無駄なんだからわざわざ出すもんじゃないんだがな>Notice
06326272006/03/09(木) 12:23:00ID:???
>>631
そうか?
一般の他の言語なら動けばいいだけだ。
しかし、phpはWebプログラミング用の言語であり、他言語との連携も重視されている。
言語構造的に正しくコーディングすることはセキュリティホールの発生確率を下げることになる。

以前はデフォルトじゃなかった、というが、以前はGETで送信されてきた「hoge」が、$hoge にそのまま入っていたよね。
そして、Noticeエラーも出ないから変数の初期化忘れても気が付かないわけだ。
その2つが組み合わされたら即大変危険なセキュリティホールの完成だったじゃないか。
0633nobodyさん2006/03/09(木) 12:29:30ID:???
noticeの意味考えろや
せいぜい「通知」
気になる人は治しとけってだけ
0634nobodyさん2006/03/09(木) 12:36:57ID:???
>>633
へぇー
変数の初期化をしないことは普通の言語では重大なエラーに相当するんだけどね

おまいさんは、Apacheのログの Notice 全部記録されなくて困らないの?

プログラミング言語を考える時に、もとの単語の意味なんて気にしちゃ駄目。
0635nobodyさん2006/03/09(木) 12:44:57ID:???
ま、下らん煽りあいはやめとけ。
どっちが穴を防げるかっつったら議論の余地も無いだろ。
0636nobodyさん2006/03/09(木) 12:56:51ID:???
>>632
register_globalsがOFFになったのは随分前の話。これは本当にセキュリティホール。
NoticeがデフォルトONになったのはつい先日の話。これはへたくそプログラマが増えたせい。
0637nobodyさん2006/03/09(木) 13:47:54ID:???
言語なんてただの手段。
堅牢なプログラムが必要なら堅牢な組み方しろよ。言語関係なく。
0638nobodyさん2006/03/09(木) 14:06:11ID:???
E_STRICTを付けるか、display_errors = Offかのどっちかだろ。
0639nobodyさん2006/03/09(木) 14:19:09ID:31uVLi9S
HTTP_RequestでaddPostDataやsendRequestを使ってPOST送信するとサーバー側のIPからPOSTされたことになりますよね?
それを使用者のIPでPOSTするにはどうすればいいんでしょうか?
0640nobodyさん2006/03/09(木) 14:31:41ID:???
使用者というかクライアントだろ。
<FORM>タグでフォームを用意して、ユーザーにSUBMITボタンおしてもらう。
PHP使わbネくてもできるb諱B
0641nobodybウん2006/03/09(木) 14:35:46ID:31uVLi9S
>>640
それじゃあやりたいことができないんですよ・・・
0642nobodyさん2006/03/09(木) 14:36:00ID:X3uNYaoU
こんにちわ。PHPで引数を送りたいのですが、
現在file_get_contents("hoge.php?id=35")でやっています。
しかし、いちいちファイルを読み込む為時間がかかります。
引数だけ送ってファイルを読み込みたくない場合はどうすればよい
でしょうか。
0643nobodyさん2006/03/09(木) 14:36:41ID:???
>>642
file_get_contents("hoge.php?id=5");
になおす
0644nobodyさん2006/03/09(木) 14:37:26ID:???
セッションのことがいまいちわからないんですが、
わかりやすく解説しているサイトなどはないでしょうか。
0645nobodyさん2006/03/09(木) 14:37:27ID:???
>>641
POSTの仕組み勉強しなさい。
0646nobodyさん2006/03/09(木) 14:38:33ID:???
>>645
答えられないの?
0647nobodyさん2006/03/09(木) 14:39:52ID:???
>>646
>>645が答え。
車で空飛ぶにはどうしたらいいでしょうといわれても
車とはなにか学べとしか言えん。
0648nobodyさん2006/03/09(木) 14:40:30ID:???
>>646
原理的に無理、と遠まわしに言ってることにも気が付かないか
0649nobodyさん2006/03/09(木) 14:43:24ID:???
悔しくて2連投とかw
0650nobodyさん2006/03/09(木) 14:43:55ID:???
つーか普通にできるけどな
0651nobodyさん2006/03/09(木) 14:45:11ID:???
ヤフオクのストア管理画面とかログインにそれつかってるよな。
当然出る警告がウザイ。
0652nobodyさん2006/03/09(木) 14:46:48ID:???
まあでもPHPの仕事じゃないと思われ。
■ このスレッドは過去ログ倉庫に格納されています