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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2007/04/27(金) 10:02:42ID:H9gF1SfB
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

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

◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0331nobodyさん2007/05/03(木) 11:32:33ID:???
>>328
まとめる為にクラス使ったら
newするのめんどくさくね?

class使わないほうがそのままfunction呼び出せるから便利
0332nobodyさん2007/05/03(木) 11:33:54ID:+5Kuly7D
>>329
どうもありがとうございます。
プロパティの概念はよくわかっていないので、調べてきます。
0333nobodyさん2007/05/03(木) 11:35:23ID:???
>>330
いやそんな基本的なことも分からないってことはオブジェクト設計とかもどこ吹く風っしょ?
まぁ別にいいけど。
プロパティ変数使えばいいともうよ。
0334nobodyさん2007/05/03(木) 12:07:27ID:869V7SM7
PHP5.2でnamespaceもお流れになったから
globalにfunction作りまくるよりはclass使ったほうが良いと思う
newマンドクセならstaticにするべ
0335nobodyさん2007/05/03(木) 12:21:03ID:???
>>331
クラス使う目的は面倒くさいとかそうでないとかではないだろ
インスタンス化が面倒だったらstatic使えば
03363312007/05/03(木) 12:34:04ID:???
>>335
ごめ、今までクラス使ったことないからわかんない
クラスって何だろう?って思うと、皆はまとめるだけとかいうが、
俺は別に必要性を感じないから使っていない
0337nobodyさん2007/05/03(木) 12:38:35ID:???
>>336
つOOP
0338nobodyさん2007/05/03(木) 12:40:48ID:???
>プログラムの部分的な再利用がしやすくなるなどのメリットがある。
functionあるし、やっぱり必要性を感じない俺は末期wwwwww
0339nobodyさん2007/05/03(木) 12:42:34ID:???
>>338
まだ始まってすらいねーよ
0340nobodyさん2007/05/03(木) 12:44:51ID:???
>>339
まだ20歳だし、勉強していこうと思えばなんとかなるかな?


しかし、2年も独学で勉強していてここまで成長がないのは俺だけでいい
0341nobodyさん2007/05/03(木) 12:54:40ID:???
>>338
デザインパターンについて勉強してみると多分有効性が分かる
0342nobodyさん2007/05/03(木) 12:55:15ID:???
無理してOOPなんて使う必要はない。
趣味でやる場合は特に。
会社に入れば使えるようになるし、
覚えようと思って覚える必要はない。
0343nobodyさん2007/05/03(木) 13:00:11ID:???
>>341
それそれデザインパターン
まえから気になってたんだけど良い本がなかったorz
「PHPのデザインパターン」って本はないのかな・・・?

>>342
今までは趣味でしていたけど、
知り合いのWebデザイン関係の人のコネでPHPを使った簡単な仕事が入るようになった
この場合はもう趣味では済まされなくなるよな・・・
0344nobodyさん2007/05/03(木) 13:30:24ID:???
OOPの話が出るととりあえずデザインパターンって
言う奴はどうかしてると思う
0345nobodyさん2007/05/03(木) 13:30:59ID:???
>>343
お前本当に探したのか?
http://www.amazon.co.jp/dp/4798015164/
0346nobodyさん2007/05/03(木) 13:37:19ID:???
デザパタは、まずはOOPの基礎が理解できてないと読んでもわからない。
よってまずはOOP入門が先。デザパタはその次。
0347nobodyさん2007/05/03(木) 13:41:45ID:???
デザパタを意識しだすのは、結構な分量の糞コードを自分で書いてからだな。
最初はstatic,singletonだけで、クラスに関数まとめるだけでも利便性があるし。
0348nobodyさん2007/05/03(木) 13:44:23ID:???
PHP→OOP→デザパタ
0349nobodyさん2007/05/03(木) 13:47:50ID:???
オブジェクト指向を解説してるWebサイトなんて星の数ほどあるだろ。
理解したいなら真剣に読んでみたら?

手続き指向とはプログラムの設計の考え方が根本的に違うわけで、
便利になるとか不便になるとかいう次元の話ではない。
0350nobodyさん2007/05/03(木) 13:49:05ID:???
ああ、便利・不便だと語弊があるかも。
プログラム作りが楽になるとか面倒になるとかいう話ではないってこと
0351nobodyさん2007/05/03(木) 14:10:43ID:???
cURL関数でHTTPコードを参照するにはどうすればいいんでしょう?

リモートサーバが「404」を返して失敗したとか
「200」を返して成功したとか
の判定をしたいと思ってます。
0352nobodyさん2007/05/03(木) 14:26:51ID:???
>>351
curl_getinfo関数は?

あと>>1読んでね
0353nobodyさん2007/05/03(木) 14:32:53ID:???
>>351
以前はcURL結構使ってたけど使いづらい面が多いので、
PEAR辺りのHTTP接続ライブラリ使ったほうが良いよ。

http://jp2.php.net/manual/ja/function.curl-getinfo.php
CURLINFO_HTTP_CODE
0354nobodyさん2007/05/03(木) 14:43:28ID:???
容量を節約する為に、長い文字列を短くしてDBに格納しようと思っているんですが
md5は日本語何文字程度までなら暗号化→複合が可能なんでしょうか?
0355nobodyさん2007/05/03(木) 14:45:02ID:???
>>354
MD5は不可逆
0356nobodyさん2007/05/03(木) 14:45:48ID:???
>>354
MD5は暗号じゃないし、複合もできない。
03573542007/05/03(木) 14:48:49ID:eLSTvBdp
oh...
ありがとうございました。
0358nobodyさん2007/05/03(木) 14:52:21ID:???
>>354
まあ、じっくりよんでくれや
ttp://ja.wikipedia.org/wiki/MD5

たんに圧縮したいならbz2関数でも使えば
0359nobodyさん2007/05/03(木) 16:54:25ID:grlGgfbD
PHPとMYSQLで日本語文字のクエリ抽出でつまずいています。
具具って見るとSQLでのマルチバイト文字抽出はPHPが対応していない
ような記事を見かけたのですが、これを補う方法ありませんでしょうか?
0360nobodyさん2007/05/03(木) 17:14:31ID:???
フィールドで抽出してるんだけど、レコード全体の数も入れときたい場合は
どういうSQL文かけばいいでしょうかね?

DBはMySqlです。
0361nobodyさん2007/05/03(木) 18:11:50ID:???
>>359
普通に日本語もできますよ

>>360
PHP関係あんの?
03623592007/05/03(木) 18:28:20ID:grlGgfbD
>>361
たとえば、下記のようにすると「つて」を含まないレコードも
抽出されてしまいます。
どうすればよいでしょうか?
おねがいします。

$str="つて";
$sql="SELECT * FORM main WHERE fld='$str';";
03633592007/05/03(木) 18:31:35ID:grlGgfbD
間違いしました。
訂正
× $sql="SELECT * FORM main WHERE fld='$str';";
○ $sql="SELECT * FROM main WHERE fld='$str';";

0364nobodyさん2007/05/03(木) 18:31:57ID:???
文字コードの問題じゃないですか?
03653592007/05/03(木) 18:33:08ID:grlGgfbD
何度もすいません、更に訂正です
$sql="SELECT * FORM main WHERE fld='%$str%';";
0366nobodyさん2007/05/03(木) 18:33:12ID:???
>>363
上と下で何が違うか分からんけどSQL文の最後のセミコロンっているんだっけ?
あとできるだけ実際のコードを出したほうが解決しやすいと思いますよ
0367nobodyさん2007/05/03(木) 18:34:06ID:???
likeじゃないの?
03683592007/05/03(木) 18:35:23ID:grlGgfbD
サーバーはwin2003の文字コードはSJISでMYSQLの方がUTF-8です。
0369nobodyさん2007/05/03(木) 18:36:28ID:???
>>368
とりあえず全部utf-8にすればok
0370nobodyさん2007/05/03(木) 18:37:36ID:???
$sql = "SELECT * FROM main WHERE fld LIKE BINARY '%$str%';";
03713592007/05/03(木) 18:37:41ID:grlGgfbD
>>367
あ、すいません。そうですLIKEでした。慌ててしまったもんで間違いましたすいません。
$sql="SELECT * FORM main WHERE fld LIKE '$str';"; でしたね。
03723592007/05/03(木) 18:44:14ID:grlGgfbD
>>370様、ありがとうございました。
うまく抽出できるようになりました。
0373nobodyさん2007/05/03(木) 19:31:00ID:???
他の人はどうでもいいのか
0374nobodyさん2007/05/03(木) 19:39:13ID:???
動的ページを作ってます。
外部ファイルなどに、すべてのタイトルや、タイトルの内容を書いたファイルを用意して。

./xxx.php?title=1 の時は
■タイトル1
■タイトル2
■タイトル3
./xxx.php?title=2 の時は
■タイトル1
■タイトル2
  □タイトル2の内容1
  □タイトル2の内容2
■タイトル3

とアドレスによってメニューを変えたいのですが、どんな風に組めばいいのでしょうか?
0375nobodyさん2007/05/03(木) 19:44:13ID:???
<? if ($title == 1) { ?>
■タイトル1
■タイトル2
■タイトル3
<? } else if ($title == 2) { ?>
■タイトル1
■タイトル2
 □タイトル2の内容1
 □タイトル2の内容2
■タイトル3
<? } ?>
0376nobodyさん2007/05/03(木) 19:44:49ID:???
そのままifなりswitchなりで分岐すればいいんじゃ?
0377nobodyさん2007/05/03(木) 20:19:34ID:???
レスありがとうございます。
やはりifで分岐するのがいいんですね。

タイトルの数が多いのでfile()と組み合わせてやってみます〜
file()で開いて書き出すときにifすればいいのかな?
朝まで悩んでみますw
0378nobodyさん2007/05/03(木) 20:21:19ID:???
>>37
fileと組み合わせるってどういう意味?
番号ごとに行で区切ったらその行のデータだけもってくればいいんじゃね?
0379nobodyさん2007/05/03(木) 20:23:47ID:???
classって呼び出すと、中にあるfunctionまで全部呼び出されるの?
ひとつのclassにfunctionいっぱい書いてたら、そのうちのひとつ呼び出したくても重くならね?
0380nobodyさん2007/05/03(木) 20:31:24ID:Ur5keSLI
変数$wに0〜300まで値が入り、範囲を3種類に分けた処理をしたい場合どうすればいいのでしょうか?
例えば0〜100までの場合は処理1
101〜200までの場合は処理2
201〜300までの場合は処理3

IF分でできるのでしょうか?
0381nobodyさん2007/05/03(木) 20:35:58ID:???
>>379
呼び出されねーよ
0382nobodyさん2007/05/03(木) 20:37:58ID:???
>>380
if文でできるよ
0383nobodyさん2007/05/03(木) 20:41:37ID:???
まじで?
if (($w > 0) or ($w < 100)){
return '処理1';
}elseif(($w > 101) or ($w < 200)){
return '処理2';
}elseif(($w > 201) or ($w < 300)){
return '処理2';
}
こんな感じで合ってる?
$w = 150ってすると処理1が帰ってくるorz
0384nobodyさん2007/05/03(木) 20:45:01ID:???
そりゃ、もし$wが0より大きいか100より小さい場合に処理1を返す、って書いてるんだから
当然そうなるわな
0385nobodyさん2007/05/03(木) 20:46:32ID:???
>>383
orになってるからそれであってるけど、やりたい事とは違うようだな。
0386nobodyさん2007/05/03(木) 20:53:55ID:???
andにしたら出来ました!!
30分無駄な時間をすごしたo... rz
0387nobodyさん2007/05/03(木) 20:55:23ID:???
>>386
>>1
0388nobodyさん2007/05/03(木) 20:59:52ID:4b9rb2Ka
オブジェクト指向の仕組みがわかってない状態なんだけど、

class=functionをグループにしたもの
function=独自関数
__construct=クラスが呼び出されたときに行う処理

こんな感じでいいのかな?
0389nobodyさん2007/05/03(木) 21:01:43ID:???
違う
0390nobodyさん2007/05/03(木) 21:04:11ID:???
全然違う
0391nobodyさん2007/05/03(木) 21:15:21ID:4b9rb2Ka
あれ、おかしいな
本には印鑑にたとえて説明してあった
0392nobodyさん2007/05/03(木) 21:21:29ID:???
印鑑OOPkwskw
0393nobodyさん2007/05/03(木) 21:22:37ID:???
印鑑に例えたら、いんかんだろ
0394nobodyさん2007/05/03(木) 21:25:55ID:4b9rb2Ka
「印鑑」をオブジェクトに見立てる。
彫られた名前、直径、長さなどの属性を「プロパティ」
押すという手続きを「メゾット」

こんな感じで載ってる
(秀和システムの書籍「PHP5逆引き大全500の極意」より)
0395nobodyさん2007/05/03(木) 21:30:28ID:???
押すしかメソッドねーじゃんw
0396nobodyさん2007/05/03(木) 21:32:11ID:???
>>394
また新しいおかしなたとえを考え出したなw
車でアクセルとブレーキがメソッドで、色や馬力がプロパティとかよく見たけど。
日本人向けか?

オブジェクト指向って、本読んで頭で理解してもなかなか使おうと思わないような気がする。
というか、使いどころが解らないと思う。

俺みたいな馬鹿は
>>347の言うとおり、いっぱいコード書いて、「なんかこのコード前も書いたなあ」と何度も思ったりとか
コピペしまくって、後でバグ発見して、全部直すのに手こずって、パニックったりとか
クラスを拡張しすぎて、3000行ぐらいになっちゃって、どこにバグがあるのか解らなくてイライラしたりとか
と言う経験をいっぱいしてやっとOOPを意識するようになった。

とにかく動く物をいっぱい書いてみると良い。
OOPの本をいっぱい読むのもイイ。
あと、OOPで設計されたフレームワークとかのソースを読んでみるのも良い。
(PHPならZendFrameworkあたりが良い)

となんか偉そうに書いてみたけど「デザインパターン」でもいってるように
「OOPを使って再利用可能なプログラムを設計する」のって難しいよね。
でも、出来たときは嬉しい!
0397nobodyさん2007/05/03(木) 21:42:56ID:???
ソフトウェアをモデル化したりモジュール化したりするのに便利なだけであって
趣味でやってるとか個人で完結するプログラムなら別に要らないだろ。
使いどころが解らないなら理解が足りないか必要性がないかのどちらかなわけで。
OOP信仰とでもいうのかね。
0398nobodyさん2007/05/03(木) 21:46:01ID:dREQm95x
class 印鑑
{
....
function 押す($myname)
{
$this->set_name($myname);
$this->put();
}
....
function result()
{
return 'あなたは、'.$this->result.'です。';
}
.....
}

$hoshou = new 印鑑;

$hoshou-> 押す('>>394');

echo $hoshou->result();

----------------------
あなたは、自己破産です。
0399nobodyさん2007/05/03(木) 21:46:46ID:4b9rb2Ka
そだね、必要性を感じてきたらでいっか
いつか必要になるかもしれんので覚えておこうと思っただけなんだ、ごめん・・・
04003982007/05/03(木) 21:49:13ID:???
なぜかIDでちゃったw。質問じゃないよ。

デザパタは
【GoF】デザインパターン 6
ttp://pc11.2ch.net/test/read.cgi/tech/1141846078/
などで
0401nobodyさん2007/05/03(木) 21:55:54ID:???
>>366
PHPのMySQL関数でクエリを送る場合「いれない」が正解。

1行だけしか送れないので不要という理由もあるけど
説明でわざわざ「いれない」との記述があるので
入れると寧ろどこかで悪影響がある可能性も考えられる。
0402nobodyさん2007/05/03(木) 23:48:58ID:???
オライリーの詳細正規表現の本って
通常のと第2版ってのがあるけどどっちがいいのよ?
0403nobodyさん2007/05/04(金) 00:25:28ID:???
複数(10個ほど)のSubmitを配置し、どのボタンが押されたか知る方法ってありますか?
name属性に"Submit_1"もあれば"Submit_158"もあったり数字の部分は動的に変えています。
なにか方法はありますか?
0404nobodyさん2007/05/04(金) 00:26:31ID:???
>>403
ID
0405nobodyさん2007/05/04(金) 00:29:19ID:???
へ?nameで渡るだろ?
0406nobodyさん2007/05/04(金) 00:29:37ID:7svLyDoe
さっきサーバーにPHP5をインストールしたのですが

$a = substr($a,1,2);
↑
substrが使えません。
なぜ?
0407nobodyさん2007/05/04(金) 00:30:52ID:???
>>406
使えないとは?
エラーが出るの?
04084062007/05/04(金) 00:44:29ID:???
解決しますた
0409nobodyさん2007/05/04(金) 00:51:01ID:???
>>403
意味がワカランが・・・「動的」ってのが鍵なのか?
だったら、nameをarrayにすればいい。

<input name="send[120]".....value="foo" />
<input name="send[30]".....value="bar" />
<input name="send[220]".....value="doraemon" />

var_dump($_POST);
すれば、[send]=>array([30]=>bar)とかが取れる
0410nobodyさん2007/05/04(金) 01:19:19ID:???
ID:oManko9x
2chと同じようにこんな感じでユニークなIDを作りたい
uniqidやmd5は小文字しかないのでダメでした。
どうやったら作れますか?
0411nobodyさん2007/05/04(金) 01:24:10ID:???
>>410
ID
0412nobodyさん2007/05/04(金) 01:30:41ID:???
if ( $mailaddress =~ /^(.*)\@(.*)$/ ) { $localpart = $1; $domain = $2; }

perlで上のような構文を見かけたんですが、
phpで似たような構文は可能でしょうか?
それともpreg_match()などの関数を使う必要があるでしょうか?
0413nobodyさん2007/05/04(金) 01:35:21ID:???
>>410
大文字がなきゃだめならランダムで小文字を大文字に変換すれば
>>412
関数使うべし
04144102007/05/04(金) 01:56:19ID:???
だからどうやるのかPHPでおしえてよ
0415nobodyさん2007/05/04(金) 02:10:24ID:4Tv/1S6h
if(isset($_GET['key'])){
 if(is_numeric($_GET['key'])){ $key = intval($_GET['key']); }
}

てやってたんだけど変数セットされてなかったらis_numericがfalse返すから
if(is_numeric($_GET['key'])){ $key = intval($_GET['key']); }
これだけでいい?
04164032007/05/04(金) 02:11:03ID:???
name属性まで配列に出来るのですね
<input type="submit" name="send[30]" value="foo" />
<input type="submit" name="send[120]" value="foo" />
<input type="submit" name="send[220]" value="foo" />
の場合ですと、2番目のボタンをクリックしたときに「120」の値を取得したいのです。
調べて見ましたが「var_dump($_POST);」だと全部でてしまうし
array_slice(var_dump($_POST),0,1);と書いてもダメみたいです。
foreachもやってみましたがダメみたいです。
どうやれば取得できるのでしょうか?
04174032007/05/04(金) 02:15:16ID:???
質問ばかりでもアレなので・・・
>>410
echo md5(uniqid(mt_rand(), TRUE));
とすれば32桁のユニークなIDが取れます。
あとは適当に切って取りたい桁数にしてあければいいのでは?
0418nobodyさん2007/05/04(金) 02:16:52ID:???
>>410
IPとか絡めてDESハッシュにしたら。

>>415
Undefined indexになるからよくない。

>>416
<input type="submit" name="send" value="120" />
ではダメなん?
04194032007/05/04(金) 02:21:09ID:???
>>418
それが出来ると一番簡単なのですが、「訂正」とか「削除」という表記のボタンなのでvalueは変えれないのです。
0420nobodyさん2007/05/04(金) 02:22:08ID:???
>>416
$_POST['name']['30']に渡ってくるんだろ?
だったらそれのキーを取ればいいじゃん。
まぁ俺だったら面倒だからhidden使うけど。
0421nobodyさん2007/05/04(金) 02:28:48ID:???
>>419
そうなると
key($_POST['send'])
かな。
04224032007/05/04(金) 02:35:19ID:???
>>420
取れました!!
$_POSTの後に何も書かなかったのがダメだったのですね
['name']と入れたら取得できました。
夜分にお騒がせしました。

今までtextのサイズを0pxにしていましたがhiddenを今まで知りませんでした。
便利そうですね。早速使って見ます。
0423nobodyさん2007/05/04(金) 02:44:24ID:4Tv/1S6h
>418
Undefined indexだけなら実用上問題ないか
thx
0424nobodyさん2007/05/04(金) 05:32:41ID:???
> 今までtextのサイズを0pxにしていましたがhiddenを今まで知りませんでした。
(;´Д`)
0425nobodyさん2007/05/04(金) 05:52:42ID:???
質問なのにID出さない、かってに自己解決する奴が大杉
自演に必死真面目に答えてる奴もどうかと思うわ
0426nobodyさん2007/05/04(金) 06:48:35ID:???
お前のほうがどうかと思うわ
04274092007/05/04(金) 07:00:45ID:???
自演かどうか別として
>>422
hiddenなんか使ってもあなたのやりたいことは、無理。
form要素をsubmit分使うなら別だけど、それなら、もともとの質問>>403と合わない。
0428nobodyさん2007/05/04(金) 11:05:02ID:/O1lAt+h
wicketだ、wicket!
0429nobodyさん2007/05/04(金) 13:27:04ID:???
PHPって

HTMLもろくに知らないやつでもできるんだーwww
04304032007/05/04(金) 13:46:28ID:???
ASP.NETからPHPに挑戦していますwwwwww
HTMLは多少知っている程度でも出来るみたいですねwwww
今はなんとなく書き方が判ったからなんとなく出来てますwwwwwwwww
■ このスレッドは過去ログ倉庫に格納されています