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

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

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


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

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

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

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0391nobodyさん2010/08/26(木) 17:16:00ID:T8D7cHt2
>>390
略にはちゃんと DB接続 ⇒ クエリの発行 というお決まりコードを入れてます。

調べてみたところ どうも2回目の実行時に $mdb2 が Invalid expression になっていました。
0392nobodyさん2010/08/26(木) 17:42:07ID:???
dbへのconnectってそれなりに重いから、チェックする関数とかそういう
レベルで接続して使い捨てってのはあまり感心しないな。規模が小さい
それでも動くけどね。
03933912010/08/26(木) 18:14:42ID:T8D7cHt2
今のところ小規模です。

どうも DB接続部分を外出しにしているのですが ( db_con.php ) 
2回目の関数のコール時にこの部分が読み込まれない事が原因の様です。

static public function CheckIsExists( $p_val )
{
  //DB接続用外部スクリプトの読込み
include_once ( "db_con.php "); // ←2回目の関数のコール時にこの中が読み込まれない
  // 〜 略 〜
}

外部ファイルを連続で読み込もうと

include_once では無く、 include を指定すると cannnot redeclare エラーが出てしまうのですが
このエラーを出さない様にして、外部スクリプトを連続で読み込むにはどうすれば良いでしょうか?
0394nobodyさん2010/08/26(木) 18:26:39ID:???
それは根本的に作りが悪いね。
0395nobodyさん2010/08/26(木) 18:29:34ID:i8uPcobC
一つのPHPファイルが長くなってしまうのが嫌なので、
可読性をあげるためだけに処理を一部関数化して外出ししてしまう、
ということを考えているのですが、可読性をあげるためだけに関数化、
外部ファイル化をおこなうというのは普通にあることなのでしょうか?
そのへん、他人のソースを見たことが無いのでよくわからなくて・・・。
0396nobodyさん2010/08/26(木) 18:29:46ID:T8D7cHt2
>>394
作りは悪いかもしれませんが
どうしても目前のこれを何とか解決したいです。

どうすれば、
同一の外部スクリプトを連続してコールすることが出来る様になりますか?
0397nobodyさん2010/08/26(木) 18:34:03ID:???
>>396
多分インクルードしてるファイルで関数かクラス定義してるんで、2回読み込まれると
グローバルで関数を2回定義するんで エラーになるから、複数回読んじゃだめ。
include_once ( "db_con.php ");  そのクラスの外にだしても動くんじゃね?
全部見ないとちゃんと回答出来んけど。
0398nobodyさん2010/08/26(木) 18:42:46ID:???
include_onceで駄目だったから駄目かもなw
0399nobodyさん2010/08/26(木) 18:46:01ID:???
いろんな意味で間違ってるからな
0400nobodyさん2010/08/26(木) 18:47:44ID:8YbqyEw3
>>391
include_once は外部ファイルを読み込もうとした際にすでに読み込まれていたら再読込はしない
include だと同じ関数を再度定義しようとするから既に存在しているからエラーとなる

>>395
ファイルが長くなるのが嫌だとかで考えていたら>>391みたいな事になったりする
0401nobodyさん2010/08/26(木) 18:50:22ID:T8D7cHt2
>>397
外出しにしてる db_con.php の中身なんですが、
実行環境が

ローカル(Windows)
サーバ(Linux)


となっており、ローカルとサーバとでDB接続文字列等が異なる為に
db_con.php の中で、いずれの環境で実行されているかを判定し、
DB接続文字列を生成した上でDB接続を行う様にしています。

外出にしている部分を関数の中に直接記述したところ問題無く
functionの連続実行をする事が出来ました。

これまでは、DB接続文字列をサーバへアップロードする場合に書換えていたのですが、
毎度アップロードする際に修正するのは大変なのでスクリプト内で分岐させる様に変更しました。

0402nobodyさん2010/08/26(木) 18:50:42ID:???
つまりdb_con.phpの中には何かの定義してる部分とdb接続を行ってる部分
の両方が含まれていて、何かの定義をしているところは2回読み込むとエラー
になるのだが、db接続は毎回行いたいという、あちらを立てればこちらが立たず
な状況と見た。

あまりに作りが悪すぎるので全部捨てて作り直したほうがいいと思うが
どうしてもというならその2つを分離して別ファイルにすればなんとかなる
んじゃないかな。汚いけど。
0403nobodyさん2010/08/26(木) 18:52:05ID:???
何故かsage外れてるし…
0404nobodyさん2010/08/26(木) 19:01:58ID:???
http://mypage.com?var=aaaaa

というURLなら、$_GET['var']で取得出来ますが、

http://mypage.com?aaaaa

のようなURLから、aaaaaの部分を取得する術はありますか?
0405nobodyさん2010/08/26(木) 19:10:25ID:???
http://mypage.com/?aaaaa
ならできるけど
0406nobodyさん2010/08/26(木) 19:13:11ID:???
ああ失礼
同じか

$p = explode('/', $_SERVER['PATH_INFO']);
$p[1] に aaaaa って入ってると思う
0407nobodyさん2010/08/26(木) 19:15:13ID:???
ごめんw間違えた

$_SERVER['QUERY_STRING'] に aaaaaaa って入ってる
04084042010/08/26(木) 19:18:21ID:???
>>406
ありがとうございます!
$_SERVER['PATH_INFO']という値は初めて知りました。
04094042010/08/26(木) 19:19:38ID:???
ありゃ?更新しないで送信してしまいました。
QUERY_STRINGってのもあるんですね。
ありがとうございます。
0410nobodyさん2010/08/27(金) 16:45:01ID:1VS1YiRM
Smarty以外にオススメのやつ教えてください
0411nobodyさん2010/08/27(金) 16:56:03ID:???
Smartyが何か分かって言ってるのか?
0412nobodyさん2010/08/27(金) 16:58:36ID:1VS1YiRM
>>411
分かってますよ^^
もしかして、Smartyしか知らないんですか?
0413nobodyさん2010/08/27(金) 17:06:24ID:???
>>410
Twig

Smartyの何が気にくわないのか(それとも単にSmarty以外が知りたいだけなのか)
を書くとレスがつきやすいかもしれない
あとSmarty3で結構変わってるみたいだからsmarty2使ってるなら3も試した方がいいかも。
0414nobodyさん2010/08/27(金) 17:12:22ID:???
3のstable出てるの?

Smartyってこれ流行ってるのか?
これ使うと何か素人がソース見た時に「PGのレベル低!誰でもできそう」
とか思われそうなので出来る限り使いたくない。
0415nobodyさん2010/08/27(金) 17:22:39ID:???
>>414
質問はID出せよ
0416nobodyさん2010/08/27(金) 17:23:24ID:???
>>414のソースはごちゃごちゃしてそうだな
0417nobodyさん2010/08/27(金) 17:32:00ID:???
smartyを単体で使う気にはなれねーなぁ・・・
0418nobodyさん2010/08/27(金) 17:33:11ID:???
素人「PGってすごい!こんなに複雑なソースを書いてるんだ!」
玄人「プッ」
0419nobodyさん2010/08/27(金) 17:37:58ID:???
>>414
素人にどう思われようが良いだろうがw

仕事だとPHP(Smarty/Zend Framework)というのは昔からよく見る

>>417
逆にフレームワーク使ってると、さらにsmartyまで使うのは面倒ってならないか?
viewは素のPHPの場合が多いよ俺は
0420nobodyさん2010/08/27(金) 17:42:10ID:???
Smartyは専用スレでやれよ、荒れるんだからさ
0421nobodyさん2010/08/27(金) 17:42:43ID:???
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0422nobodyさん2010/08/27(金) 17:43:21ID:???
>>416
他人が「見る気もしない」ソースにしとくと色々安全なのさ。
勿論社内で使う奴だけだけど。

俺が辞めた後に入った奴は悲惨だと思う。
勿論コメントも全部消してある。
0423nobodyさん2010/08/27(金) 17:58:38ID:???
インデントも消しとけよ
0424nobodyさん2010/08/27(金) 18:00:05ID:???
>>422
自己満足、オナニーだな。
0425nobodyさん2010/08/27(金) 18:01:23ID:???
ついでに改行も
0426nobodyさん2010/08/27(金) 18:06:53ID:???
出力するHTMLソースは
出来る限りそういうの消えるようにしてるな

0427nobodyさん2010/08/27(金) 18:18:15ID:???
汚いソース書いてたらアホ扱いされるだけだろ
0428nobodyさん2010/08/27(金) 18:20:57ID:???
-----------------------------------------------
0429nobodyさん2010/08/27(金) 18:46:13ID:mDlhgxIh
ところで、インデントというかタブを多用した結果、ソースが非常に横長になっていく。
フルHDモニタで開発していればさほど問題は無いが、モバイルPCで開発やってる
時なんかは死ねる。

これってもしかしてテキストエディタで書いてるから悪い、とかそういう問題かな?
いや、そもそもEclipseとかPHPプラグインがどれほど便利なのかとか、使ったこと
無いから全然知らないんだが。
0430nobodyさん2010/08/27(金) 18:54:20ID:???
本当にあった怖い話

* ディレクトリ構成がプログラマの名前
* 関数の頭にプログラマの名前が付く
* バージョン管理システムを使わないまたはVisual SourceSafe
* コミットは朝しろ,帰る前にするなと言う
* 手動でビルドテストしなければならない
* オレオレコンテナしか信じない
* ハッシュは遅いから使うべきでないと言う
* 「よくわからんから」多重継承は禁止すべきとか言う
* 正規表現を使うよりCで書いたほうが速いと言う
* クラスがわからないのでクラスを使ってくれない
* 1つのソースコードが10,000行でも気にしない

http://gihyo.jp/dev/clip/01/orangenews/vol58/0007
0431nobodyさん2010/08/27(金) 18:55:05ID:???
>>429
タブの文字数変えろよ・・・メモ帳かよ
0432nobodyさん2010/08/27(金) 18:57:32ID:???
>>429
自分のphpソースを確認してみたけど、横長で死ねるようなとこは見当たらなかった。
横900pxぐらいの領域だけど、ほとんどが700〜800ぐらいに収まってたよ。
0433nobodyさん2010/08/27(金) 19:04:18ID:???
死ねてる部分をちょっとコピペしてみろよ
きっといろいろ問題が見つかるのではあるまいか

個人的にはこの書き方が嫌いで
$untarakantara = array(1,
/*ここのインデントをタブやらスペースやらで調整*/ 2,
/*ここのインデントをタブやらスペースやらで調整*/ 3);

この書き方をオススメしたい
$untarakantara = array(/*ここで改行*/
/*タブひとつ*/ 1,
/*タブひとつ*/ 2,
/*タブひとつ*/ 3,
);
0434nobodyさん2010/08/27(金) 19:04:20ID:???
>>429
可読性のためにZendとか大抵のコーディング規約で80文字を目安に改行するようになっている
これはシェルの文字数が横80文字だった名残。
テキストエディタでも80文字で改行される設定になってることが多いのはそのため。

要はコーディング規約の通りに書いていけば見やすいコードになる
0435nobodyさん2010/08/27(金) 19:41:54ID:???
ソースコードフォーマッタなりIDEなりで整形するのをお勧めする。
人力整形は時間の無駄。
0436nobodyさん2010/08/27(金) 19:48:28ID:???
んあ?
0437nobodyさん2010/08/27(金) 20:46:43ID:???
つーかそんな階層深くなるようなコード書くなよ
0438nobodyさん2010/08/27(金) 22:01:47ID:???
いまどき80桁制限は勘弁してくれ。
0439nobodyさん2010/08/28(土) 13:30:13ID:???
PHP+SQLiteで掲示板サイトを作っています。

記事には、タイトル、投稿者、本文、投稿日時の属性があります。
投稿日時順に並び替えることはSQL文で出来るのですが、

全ての記事のタイトルと本文を走査して全文検索する

機能をどうやって作ればいいのか分かりません。
これはSQLiteのSQL文だけでは無理なのでしょうか?
PHPのライブラリなどが必要になりますか?
一般的にはどのように実現するものなのか、教えてください。
宜しくお願いします。
04404392010/08/28(土) 13:30:58ID:l4dMcbQQ
すいません、ID出し忘れました。
0441nobodyさん2010/08/28(土) 13:34:32ID:???
>>4339
正規化
0442nobodyさん2010/08/28(土) 13:50:57ID:???
>>439
手っ取り早く簡単に済ませるならSQLのLIKE構文だな

>>441
正規化関係ないなw
0443nobodyさん2010/08/28(土) 15:07:30ID:???
>>442
関係あるな
正規化を知らないない奴はミジンコ
0444nobodyさん2010/08/28(土) 15:26:05ID:???
タイトル、投稿者、本文、投稿日時

これからどこを正規化したら検索できるようになるんだよ
0445nobodyさん2010/08/28(土) 15:31:42ID:wQv57lt/
PHPではないけどこういうものもあるよ
http://www.namazu.org/index.html.ja

ただ組み替えないと行けないからめんどくさいだろうけど
0446nobodyさん2010/08/28(土) 15:45:15ID:???
>>443
多分正規化という言葉を最近知って使いたいだけなんだろうけど
意味も理解して本当に正規化が必要かどうか判断してから言おうな
0447nobodyさん2010/08/28(土) 15:46:55ID:???
>>446 お前がなwwww
0448nobodyさん2010/08/28(土) 15:53:37ID:???
ここは下らねぇ質問スレであって
下らねぇ喧嘩スレじゃねーぞカスども
0449nobodyさん2010/08/28(土) 19:25:42ID:???
>>441
>>439の項目を見たら正規化って言葉は普通出てこないな

全文検索でSQLのLIKEを使うとINDEXが効かなくて全レコードを舐める事になるから遅くなる
仕様を見て予め後々の事を考える必要はあるかも知れんけどね

0450nobodyさん2010/08/28(土) 20:07:53ID:???
>SQLのLIKEを使うとINDEXが効かなくて

0451nobodyさん2010/08/28(土) 20:25:40ID:???
SQLiteの場合は効く方法もあるらしいな

まぁ正直な話し>>439がどういう物を想定してるのか
解らない限り正規化含め何が最適解かなんてわからんな

どちらにせよそのテーブルで
正規化する必要性が本のちょっとでもある場所なんて
投稿者名ぐらいしか無いし。それを分けた所で
アプリとしての実行速度が遅くなってはあれだしなw
0452Perl忍者 ◆M5ZWRnXOj6 2010/08/28(土) 20:32:58ID:kvWFLXrw
    X
  ∠ ̄\∩
  |/゚U゚Lノ   PHPをやる理由はなんですか
 〜( ニ⊃  
  ( 丶/
  ノ>ノ
  UU
0453nobodyさん2010/08/28(土) 20:36:18ID:???
Rubyスレ落ちたので誰か立てて
0454Perl忍者 ◆M5ZWRnXOj6 2010/08/28(土) 20:37:46ID:kvWFLXrw
    X
  ∠ ̄\∩
  |/゚U゚Lノ   てめえが立てろカス
 〜( ニ⊃  
  ( 丶/
  ノ>ノ
  UU
0455nobodyさん2010/08/28(土) 20:45:14ID:???
>>450
LIKEで先頭一致の場合はINDEXが使われるが部分一致を使う場合INDEXを定義していても総当りするエンジンが多い
SQLLiteの場合は全文検索のモジュールがあるみたいだから良いかもしれんが
0456nobodyさん2010/08/28(土) 22:46:12ID:???
>>439
「SQLite 全文検索」でぐぐってみたら、SQLiteにも全文検索の機能が
あるみたいじゃん。
まあ、和文でやろうと思ったら、SQLiteに備わってるそのままだけじゃなく、
N-gram化か形態素解析との組み合わせになるみたいだけど。
0457nobodyさん2010/08/28(土) 23:10:43ID:???
SQLite使う時点で(ry
0458nobodyさん2010/08/29(日) 01:25:10ID:???
2chなんかテキストそのままだしw
0459nobodyさん2010/08/29(日) 01:33:27ID:???
アクセス元のIPが固定かDHCPか分かる方法ありますでしょうか。

04604592010/08/29(日) 01:41:13ID:???
解決しました
0461nobodyさん2010/08/29(日) 09:43:53ID:???
お前らエディタは何を使ってるんだ?
0462nobodyさん2010/08/29(日) 09:50:32ID:???
>>1
0463nobodyさん2010/08/29(日) 13:54:07ID:???
Ruby会議での調査によると
50%はemacs系
40%はvim系
5%はxyzzy
5%はその他
みたいな感じ
0464nobodyさん2010/08/29(日) 14:20:54ID:???
自分は根っからのemacs好きだがwebプログラミングではvimになる。
vimの機動性は素晴らしい。
メールとか原稿書くときはEmacs
0465nobodyさん2010/08/29(日) 18:48:58ID:istLGNW8
Cannot use output buffering in output buffering display handlers
ってどうすれば直るんでしょうか?
php.iniのoutput_bufferingをOnにしても直りません。
0466nobodyさん2010/08/29(日) 20:53:19ID:???

◆質問する時の注意
・ 己の行った操作、変更などを詳しく明記すること。
0467nobodyさん2010/08/30(月) 08:36:22ID:???
フレームワークでよく
array('abc'=>array('a'=>'orz', 'b'=>'orz=');
みたいな方法でコンフィグを書く事があるのですが
これって一般的にはどうやって値を取り出してるのでしょうか?
0468nobodyさん2010/08/30(月) 10:21:00ID:???
var_dump
0469nobodyさん2010/08/30(月) 10:52:17ID:???
$hoge = array('abc'=>array('a'=>'orz', 'b'=>'orz=');
としたら
$hoge['abc']['a']
$hoge['abc']['b']
でしょ
0470nobodyさん2010/08/30(月) 11:15:04ID:???
>>469
フレームワークでって言ってるでしょ。
その程度のお馬鹿は出てこなくていいよ。
0471nobodyさん2010/08/30(月) 11:30:22ID:???
お前がその程度のこともしらないお馬鹿だと思って答えたんだが
0472nobodyさん2010/08/30(月) 11:32:56ID:???
PHPのソースとしてincludeもよし、 evalでもよし。
パースする処理を自分で書いてもよし。  というような方向の回答がご希望?
0473nobodyさん2010/08/30(月) 11:34:35ID:???
喧嘩するなよ
あとID出して無い質問にマジメに答える事は無い
0474nobodyさん2010/08/30(月) 11:55:04ID:???
普通にforeachで良いだろ
気になるなら色んなFWのconfig関連の所みてみれ
0475nobodyさん2010/08/30(月) 12:49:52ID:njG8UTwt
PHPを久しぶりにやったら苦戦してます。

function urltest($text)
{
$url = ここら辺がうまいこといかない。1行下もだめかも?
$link = "<A Href=\"$url\">http://などを除いたURL</A>";
$newtext = str_replace('$url', '$link', $text);
return($newtext);
}
?>

http:// や ftp:// 、メールアドレスを置換させようとすると
全く置換してくれないですorz
最終的には、行始めがhttp://で始まらないURLもリンクさせたいです。
例としてhttp://www.2ch.net/というような感じのURL
0476nobodyさん2010/08/30(月) 13:04:26ID:???
$newtext = str_replace('$url', '$link', $text);

そりゃー変数をシングルクォートでくくったらダメだろう。
0477nobodyさん2010/08/30(月) 13:21:49ID:???
urlは正規表現でとってこればいいんじゃないのかね
$res = preg_replace('/(https?|ftp)(:\/\/([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+))/',"<a href=\"$0\">$3</a>",$text);

こんな感じで
0478nobodyさん2010/08/30(月) 14:51:25ID:yNaLEgzn
>>476
あ、やってしまったぽいorz

>>477
http:// から始まるURLにはマッチするけど

www.google.com
photo.google.com

こういうURLには、マッチしないよね・・・orz
0479nobodyさん2010/08/30(月) 14:59:24ID:???
それはURLなのか?
0480nobodyさん2010/08/30(月) 15:10:21ID:???
>>478
それは正規表現でどーとでもできるだろ・・・
0481nobodyさん2010/08/30(月) 15:37:40ID:yNaLEgzn
$newtext = preg_replace("/([a-z0-9\-\.]+\.(com|org|net|jp)).*/i", "<a href=\"$1\">$1</a>", $text);

http://<;a href="www.google.co.jp" rel="nofollow">www.google.co.jp</a>
<a href="www.google.com" rel="nofollow">www.google.com</a>
hoge@<a href="hogehoge.com" rel="nofollow">hogehoge.com</a>

メールも置換するの?
俺の技術だと無理だわorz
0482nobodyさん2010/08/30(月) 15:48:50ID:???
php 自動リンク で検索
0483nobodyさん2010/08/30(月) 17:50:00ID:VlaMGgSY
<?php

function 関数名(ここって何??) {
実装したい処理
}

?>

() の中っていまいちわからないのですが
$abc って書けば、$abcの値のデータ以外は処理しないってことでしょうか?

独学でPHP学んでたら早速躓きましたorz
0484nobodyさん2010/08/30(月) 17:59:41ID:???
そこは引数です
0485nobodyさん2010/08/30(月) 18:05:32ID:???
>>483
そのfunctionに渡したい値(引数)

この程度で質問にくるようだとキリがないよ
何か本買った方がいいんじゃない?
0486nobodyさん2010/08/30(月) 18:13:57ID:???
>>483
http://jp.php.net/manual/ja/index.php
0487nobodyさん2010/08/30(月) 18:56:15ID:H9RFX+D7
SQLが成功したかどうかってどうやって調べたら良いのですか?
結果によってメッセージ等を表示させたり処理を分岐したいのですが・・・。
0488nobodyさん2010/08/30(月) 18:59:28ID:???
pgr
0489nobodyさん2010/08/30(月) 19:13:35ID:???
>>487
DBの接続は何を使ってる?
PDOならこんな感じ

try{
// クエリを発行
} catch (PDOException $e){
// エラー処理
}
0490nobodyさん2010/08/31(火) 00:42:22ID:???
PHPの変数のスコープって関数の内外だけって考えればOKですか?
JavaScriptみたいにブロックがスコープ持たないんですよね?
■ このスレッドは過去ログ倉庫に格納されています