トップページ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等)・フレームワークは各該当スレへ
0320nobodyさん2010/08/23(月) 06:34:05ID:e4VGS3vt
【OS名】WindowsXP SP3
【PHPのバージョン】5.2.14
【連携ソフトウェア】Apache2.2.16
【質問内容】

PHPからApacheのエラーログに、エラーを書き込みたいのですが、
可能でしょうか?ご教授お願いします。
0321nobodyさん2010/08/23(月) 07:49:01ID:AYSWgUkV
セッションの読み書きで質問です。

$this->Session->write('item_number[0]',0);
$this->Session->write('item_number[1]',1);
$this->Session->write('item_number[2]',2);
(これはちゃんと動く)

上記の動作をループ構文で、

for($i = 0; $i < 3; $i++){
$this->Session->write('item_number[$i]',$i);
}
(こうすると動かない)

このように書いたのですが、なぜか上手く動きません。
なにが原因なのか分からず、夜も眠れない日々が続いております。
0322nobodyさん2010/08/23(月) 07:57:19ID:gXBBQ3PA
ダブルクォーテーションにしてみたら?
0323nobodyさん2010/08/23(月) 10:05:20ID:???
$this->Session->write("item_number[{$i}]",$i);
0324nobodyさん2010/08/23(月) 11:00:14ID:???
>>322 >>323

ありがとうございます!!

これが原因で、今朝も3時間ぐらいハマっていました!
本当に助かりました!!
0325nobodyさん2010/08/23(月) 11:41:51ID:???
>>320
error_log
03263012010/08/23(月) 15:59:03ID:cmQPcCNw
RSSリーダーを作成してるのですが
$time[0]=12345;
$title[0] ="タイトルです";

$time[1]=123;
$title[1] ="タイトル2です";

$time[2]=1244;
$title[2] ="タイトル3です";





↓を時間でソートすると( >>302

時間は$time[1],$time[2],$time[0]の順になるのですが
タイトルが並び変わってくれないです。
連想配列で出来るかな?と思ったのですが
どうしてもエラーがでてしまって次にいけないのです。
連想配列以外で効率的に並び替える方法ってないですか?

0327nobodyさん2010/08/23(月) 16:09:34ID:???
Array(
  '12345' => "タイトルです",
  '123' => "タイトル2です",
  '1244' => "タイトル3です",  
);
普通に連想配列使えば?
エラーが出るくらいであきらめるならその程度ってこと
0328nobodyさん2010/08/23(月) 16:39:30ID:rqCfSqvP
>>326
>>301の書き方だとtime配列の並べ替えとしか見えない
一度で正しい回答が欲しかったら聞きたい事をまとめて書かないとな
俺としては多次元配列

サンプル
//データ定義
$RSS = array();
$RSS[] = array('time'=>12345,'title'=>'タイトル1');
$RSS[] = array('time'=>10,'title'=>'タイトル2');
$RSS[] = array('time'=>123,'title'=>'タイトル3');
$RSS[] = array('time'=>193,'title'=>'タイトル4');
$RSS[] = array('time'=>143,'title'=>'タイトル5');

//配列データ出力
var_dump($RSS);

//多次元配列ソート
foreach($RSS as $KEY => $VALUE)
{
$SORTKEY[$KEY] = $VALUE['time'];
};
array_multisort($SORTKEY,SORT_ASC,$RSS);

echo "<br><br>------------------------------<br><br>";

//ソート後配列出力
var_dump($RSS);
03293012010/08/23(月) 16:45:16ID:cmQPcCNw
>>327,328
ちょっと研究してみます。サンプルありがとう
0330nobodyさん2010/08/23(月) 16:50:15ID:???
じゃぁ俺ならオブジェクトにs(ry
0331nobodyさん2010/08/23(月) 17:02:27ID:???
楽なのはarray_combineと ksortかなぁ
0332nobodyさん2010/08/24(火) 00:31:47ID:uadaoYhg
pearを使ってDBの値を取得しようとしています。

取得された結果セットから、クエリで指定した値を取得する時に、
クエリ上では大文字で指定しているカラムが
取得時に小文字で指定を行わないと値の取得が出来ません。
これは、MDB2の仕様なのでしょうか?

$sql = "SELECT ID FROM TEST_TABLE";
$res = $mdb2->queryAll($sql);
foreach ($res as $obj)
{
 print "ID=".$obj["id"]."<BR>"; //←出力される
 print "ID=".$obj["ID"]."<BR>"; //←出力されない

}

0333nobodyさん2010/08/24(火) 07:25:57ID:???
http://pear.php.net/manual/ja/package.database.mdb2.intro-portability.php
0334nobodyさん2010/08/24(火) 15:12:25ID:Le4aCLeM
【OS名】Fedora Core 6
【PHPのバージョン】5.1.6
【連携ソフトウェア】
【質問内容】
空メールに対して自動返信するような仕組みを作ろうとしています。

http://my-server.homelinux.com/emptymail.php
とりあえず,このサイトのregist.phpをそのままアップロードしてみたところ、
Fatal error: Call to undefined function mb_convert_encoding()
のエラーが出ます。

phpinfoではmbstringの欄もあります。
Multibyte Support enabled
Multibyte string engine libmbfl
HTTP input encoding translation enabled
Multibyte (japanese) regex support enabled
Multibyte regex (oniguruma) version 3.7.1

また、
echo mb_internal_encoding();
を実行すると、特にエラーもなくUTF-8と表示されます。

mbstringはインストールされているように思うのですが、
未定義エラーがなぜ出るのかわかりません。
よろしくお願いします。
0335nobodyさん2010/08/24(火) 18:53:13ID:???
PearのMDB2でプレースホルダーを使っているのですが、
このMDB2のプレースホルダーは、
?(ハテナマーク)を指定して使う事しか出来ないのでしょうか?

抽出条件として複数の物をセットしなくてはならない場合だと、

SELECT * FROM TEST_TABLE
WHERE USER_ID = @USER_ID

SET_PARAM(@USER_ID , '12345');

といった風な記述が出来れば可読性も高くなると思うのですが。
確か、PDO経由の場合にはこういった使い方が出来ました。

0336nobodyさん2010/08/24(火) 19:03:15ID:???
>>335
ttp://pear.php.net/manual/ja/package.database.mdb2.intro-execute.php
0337nobodyさん2010/08/24(火) 19:04:54ID:???
>>336
ありがとうございました。。。
やっぱりあったんですね。。。
0338nobodyさん2010/08/24(火) 20:58:55ID:???
>>336

マニュアルサイトを参考にし、以下のコードを書いてみたのですが
executeを実行し取得された結果セットより
実際にデータを参照したい場合にはどの様な記述をすれば良いのでしょうか?

★コード
$types = array('integer');
$sql = "SELECT E_ID , E_NAME FROM TB_TEST WHERE E_ID = :e_id";

$sth = $mdb2->prepare($sql, $types);
$data = array('e_id' => 1);
$affectedRows = $sth->execute($data); // ←ここから先の記述方法が不明


次の記述で値の取得を行う事が出来るかと思い
試してみたのですが旨く行きません。

また、クエリの実行後に複数行が返った来た場合には、
for each 文を使うと予想されるのですがそちらの記述方法も不明です。

どうかご指導をお願い致します。

$affectedRows['E_ID']
$affectedRows['E_NAME']
0339nobodyさん2010/08/24(火) 21:18:18ID:???
わからなければとりあえずdumpしてみれ
0340nobodyさん2010/08/24(火) 22:20:29ID:bkJGDZ0S
【OS名】ubuntu10
【PHPのバージョン】5.3
【質問内容】
phpをインストールしたんですが、サイトにアクセスすると、phpファイルのダウンロードが始まってしまいます。
どの辺を見直せば直るんでしょうか?
お願いします。
0341nobodyさん2010/08/24(火) 22:27:14ID:???
ブラウザベースだとして
apache経由でアクセスしてるならapache
//home/user/hoge.php
こんな感じでアクセスしてるならapacheとかいれないと無理
0342nobodyさん2010/08/24(火) 23:55:19ID:???
apache2 が入ってます。
/etc/apache2/mods-available/php5.conf

<IfModule mod_php5.c>
AddType application/x-httpd-php .php .phtml
<FilesMatch "\.ph(p3?|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch "\.phps$">
SetHandler application/x-httpd-php-source
</FilesMatch>
# To re-enable php in user directories comment the following lines
# (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
# prevents .htaccess files from disabling it.
<IfModule mod_userdir.c>
<Directory /home/*/www/webroot>
php_admin_value engine Off
</Directory>
</IfModule>
</IfModule>

という設定がはいってるんですが、なぜかだめっぽいです。
a2enmod でphp5はちゃんと有効にしてはいるんですが。

0343nobodyさん2010/08/25(水) 00:44:45ID:???
phpのファイルどこに置いてるかは知らないが
/homeより下の階層にあるwebrootじゃphpは動かんな

php_admin_value engine Off

これ書くと特定階層でphp実行できなくする事ができる
http://jp.php.net/manual/ja/apache.configuration.php#ini.engine
0344nobodyさん2010/08/25(水) 01:31:14ID:???
>>342
apacheはちゃんと起動してますか?
僕の環境(Ubuntu9.10)だと

sudo /etc/init.d/apache2 start

のように端末から起動してます。
0345nobodyさん2010/08/25(水) 07:45:20ID:HG+GI0Yh
csvファイルを二次元配列に格納するもっとも簡単な方法はなんですか?
0346nobodyさん2010/08/25(水) 07:48:33ID:HG+GI0Yh
>>345
間違えました
連想配列です

二列のcsv を一次元の連想配列にする方法です
よろしくお願いします
0347nobodyさん2010/08/25(水) 08:13:51ID:???
http://jp.php.net/manual/ja/function.str-getcsv.php
ではだめなの?
0348nobodyさん2010/08/25(水) 10:31:14ID:ajT8n1be
1列目が連想配列のキー値
2列目が値

って事なのかい?
0349nobodyさん2010/08/25(水) 11:31:53ID:+buHcWsK
PHPスクリプトのパフォーマンスについて質問があります。

次の様なステップ数(行数)の異なるスクリプトファイルに対して
同じ処理を行うfunctionを挿入する場合、
行数の少ない B.php の方がA.phpに挿入した場合と比べて速いのでしょか?

A.php ⇒ 20,000 ステップ
B.php ⇒  1,000 ステップ


それとも、function内での処理が全く同じあれば
挿入先のスクリプトファイルのステップ数が幾らであるか
というのは関係無いのでしょうか?
0350nobodyさん2010/08/25(水) 11:55:19ID:???
中間コンパイルされるので関係ない
0351nobodyさん2010/08/25(水) 12:09:54ID:???
>>350
まじっすか・・・

折角ファイル分けたのに
0352nobodyさん2010/08/25(水) 12:17:08ID:???
可読性上がるならそれでいいと思うがw
0353nobodyさん2010/08/25(水) 12:19:45ID:???
可読性>>>>>>>>>>実行速度
なことは往々にあると思います
0354nobodyさん2010/08/25(水) 12:36:08ID:???
可読性はかなり上がります。


うーんあとあとのメンテナンスのしやすさを鑑みると可読性だな
0355nobodyさん2010/08/25(水) 12:36:28ID:???
ファイル分けるとかそういうので速度稼ごうとするのは筋が悪い。

どこで時間を食ってるかを的確に測定して効果のありそうな所に
重点的に手を入れないとたいてい無駄な努力に終わるな。
0356nobodyさん2010/08/25(水) 12:37:40ID:???
おもいっきり脱線してしまうが、
2chの規制時の避難所として3chつーのがあるよね?

だがその3chについてどうしても気になる点がある。
3ch管理人が飽きた可能性は十分にあるとは思うけど、
次を想定した場合、どちらもで不思議なんだよね。

(A)生きてると仮定した場合
⇒自腹で鯖代を払っている事になる。
  普通に考えて飽きて更新しないのならとっくに閉鎖した方が金も掛からない筈なのになぜ?

(B)死んでいると仮定した場合
⇒死んでいるのに鯖代は誰が払っているのか?

ずっと不思議でしょうがない。オレの中では都市伝説と化している。
0357nobodyさん2010/08/25(水) 12:44:40ID:???
3ちゃんねるとか懐かしいなw
0358nobodyさん2010/08/25(水) 12:54:55ID:???
あそこの管理人がどうも死亡してる気がする
0359nobodyさん2010/08/25(水) 13:06:31ID:???
鯖代はクレカ払いなので自動で支払われ続ける
死んだなら口座とか止められるのでは?→自宅で白骨化。
0360nobodyさん2010/08/25(水) 13:38:47ID:HG+GI0Yh
>>347
file 関数で取得して
foreach でその関数を配列に入れていくんですか?

>>348
そういうことです
というか設定ファイルを読み込みたいんです
0361nobodyさん2010/08/25(水) 13:51:44ID:???
設定ファイルならini形式にしてparse_ini_file使うのが楽じゃね?
0362nobodyさん2010/08/25(水) 13:52:21ID:???
>>359
だから死んでるとしても生きてるとしても不思議なんだよ
0363nobodyさん2010/08/25(水) 13:54:23ID:???
死亡届出す家族がいない状態の孤独死ってヤツですよ
最近高齢者で流行ってるでしょ
0364nobodyさん2010/08/25(水) 14:04:36ID:???
3ch管理人が孤独死してたとして
レンタル鯖の金は誰が出してるのか・・・?

疑問だ・・・

0365nobodyさん2010/08/25(水) 14:08:57ID:???
クレカ自動更新で、口座にはたっぷりと金があるんでしょ
0366nobodyさん2010/08/25(水) 14:32:24ID:HG+GI0Yh
>>361
うぉぉぉこれめっちゃ便利
ありがとうございます
0367nobodyさん2010/08/25(水) 14:33:19ID:???
>>365
なるほど。。。

とりあえず3ch管理人は死亡したのか。
0368nobodyさん2010/08/25(水) 15:30:57ID:???
エンコードについて質問です。
XMLファイルを保存する際に文字コードを指定したのですが
以下のコードではどうしても変換されせん。
引数の指定を色々変えて試しているのですが、一向に何も変化がありません。
どこに問題があるのか、アドバイスをいただけると助かります。

$data = file_get_contents('http://twitter.com/statuses/user_timeline/44791521.rss');
$data = mb_convert_encoding($data, "utf-8", "sjis");
file_put_contents('log.xml', $data);
0369nobodyさん2010/08/25(水) 15:50:12ID:???
そのコードだと、 utf8のrss を sjisとみなして utf8に変換してますな。
文字コードの変換必要あるの?
0370nobodyさん2010/08/25(水) 16:12:16ID:???
きっとsjisに変換したいんだろう、だとすると逆だな
0371nobodyさん2010/08/25(水) 16:18:51ID:???
rss見たけどたぶんそういうことじゃない気がするな。
mb_convert_encoding($str, 'UTF-8', 'HTML-ENTITIES'); かなぁ。
0372nobodyさん2010/08/25(水) 19:07:24ID:???
>>368
<?xml version="1.0" encoding="UTF-8"?>
0373nobodyさん2010/08/25(水) 19:15:18ID:???
見れば分かるけど、全部数値文字参照で、文字コードどうでもいいというか。
0374nobodyさん2010/08/26(木) 12:08:35ID:???
PHP EXCEL READERを使ってるんですが、、、
http://code.google.com/p/php-excel-reader/

これ、関数の結果の値はセルから取り出せないようなのですが、
取りだす方法は無いのでしょうか?
0375nobodyさん2010/08/26(木) 13:16:07ID:???
若干スレ違いかとは思いますが教えて下さい。
(行き着けのスレが過疎りまくって返答がありません。)

マンションの管理組合招集の封筒が届き指定された期限迄には
参加の有無を管理人に出さなくてはならなかったんだけど、
しばくら忘れてました。

そしたら数日したら、私のメールアドレスを知る筈が無い管理人から

 宛先 :  mansion_kanrinin@hudousan.co.jp
送信元 : mansion_kanrinin@hudousan.co.jp

という風に私のメールアドレスが指定されていないにも
関わらず「***参加の有無をご連絡下さい。」といった旨のメールが届きました。

なぜ、この様にメールアドレスが送信元と同じにも関わらず
私の元にメールが届いたのでしょうか?

もしかして、マンションの管理人にクラッキングされてる!???
0376nobodyさん2010/08/26(木) 13:26:14ID:???
>>375
単にBCCであなたのアドレスに配信しているだけなんじゃないかと思うんだけど、
意味を取り違えてますかね?

互いに面識の無い相手に一斉に配信する場合、BCCに各メールアドレスを入れて、
TOにも何か入れないといけないので自分自身を入れて一斉配信する、というのは
普通によく使う手段なのでそれかと。
0377nobodyさん2010/08/26(木) 13:28:39ID:???
あと、、、、

> そしたら数日したら、私のメールアドレスを知る筈が無い管理人から

これはちょっとわからない。
マニアックな管理人がパケットをスニッフィングしてるとしても、
そんなことして手に入れたアドレスに公的なメールを配信することは
無いと思うので、既にあなたが管理人にアドレスを教えていたのでは
無いでしょうか。もしくはあなたの家族とか。
0378nobodyさん2010/08/26(木) 14:13:22ID:???
>>376
私のメールアドレスをマンションの管理人が知らず、
また、受信したメールアドレスの宛先は送信元と同じにも
関わらず私のWindowsメールへメールが届いていたので不思議なのです。

【届いたメールの形式】
 宛先 :  mansion_kanrinin@hudousan.co.jp
送信元 : mansion_kanrinin@hudousan.co.jp

【これなら理解出来る形式】
 宛先 :  my_mail_address@my.home.co.jp
送信元 : mansion_kanrinin@hudousan.co.jp

うーん、BCCどうたらというでちょっと気になった事がありますが、
もしかしたらマンションに入居した頃にメールアドレスを書いたかも・・・
0379nobodyさん2010/08/26(木) 14:14:03ID:???
>>377
うーん、どうも教えた臭いっすw
0380nobodyさん2010/08/26(木) 14:17:41ID:???
あて先欄に表示されるのがそれでも貴方に送ることは出来ます。
貴方でも可能です。 さてスレ違いなのでこの辺で
0381nobodyさん2010/08/26(木) 15:11:32ID:???
>>380
どういう風にすればできますか?
>あて先欄に表示されるのがそれでも貴方に送ることは出来ます。


最後にこれだけお教え下さい。
0382nobodyさん2010/08/26(木) 15:16:16ID:???
メーラーによって違う
だから使ってるメールソフトのスレっぽい所で聞いてください
0383nobodyさん2010/08/26(木) 15:17:28ID:???
>>381
>>376さんが言ってるようにBCC。
BCCのやり方はメーラー次第。

BCCすら知らないのなら、こっちいったほうがいい
http://hibari.2ch.net/pcqa/
0384nobodyさん2010/08/26(木) 15:41:19ID:8YbqyEw3
届け先と送り元が同じメールアドレスで自分のではない管理会社のメールアドレス
って意味ならBCCでは無理じゃね?

入居者に貸与されるメールアドレスでPOPサーバーの運用も管理会社が行っているなら可能
0385nobodyさん2010/08/26(木) 15:51:42ID:???
今回の話は、単に

To : マンション管理人のメアド
From : マンション管理人のメアド
BCC : マンション住民の人達のメアド(>>375氏のメアド含む)

って事だと思うよ
で、>>380-381は 単にToに表示されてないメアドへメール送信という
意味だと思うのでBCCでいいかと

何にせよスレ違いだな。
0386nobodyさん2010/08/26(木) 16:21:52ID:???
>>385
ちょっと試してみる
0387nobodyさん2010/08/26(木) 16:24:00ID:ldK5AnTQ
ちょっとスレ違いと思いますが、テストの書き方について質問です。
PHPUNITを使っているのですが、依存関係のオブジェクトのテストハーネスが書けません。

class A{
 public function hoge(){
  $obj=new B();
  $value=$obj->fuga();
  //$valueに対するなんらかの処理
  return $value;
 }
}

みたいなコードの時に、オブジェクトBのモックを用意して、
Aに対してテストしたいのですが、オブジェクトA側でコンストラクタや、
メソッドからオブジェクトBのインスタンスを受け取っていないので、
モックオブジェクトに入れ替えできません。
どうやって書くのが普通なんでしょうか?
0388nobodyさん2010/08/26(木) 16:58:59ID:T8D7cHt2
MDB2を使用し特定テーブル内にレコードが存在するか
どうかをチェックする関数を作りました。

そして、次の様に2回連続してそのfunctionをコールしたところ
2回目でなぜかエラーが発生してしまいます。

どうすれば連続実行してもこの様なエラーが出なくなりますでしょうか?

<< コード >>
$p_val = "aaa";
$i = TestClass::CheckIsExists($p_val); // ← 成功

$p_val = "bbb";
$i = TestClass::CheckIsExists($p_val); // ← 失敗(※)

static public function CheckIsExists( $p_val )
{
  //〜略〜
  //※SELECT 〜 を実行してレコードが存在するかどうかのチェック処理
  $mdb2->commit();
  $mdb2->disconnect();

}

<< エラーメッセージ >>
※Call to a member function prepare() on a non-object
0389nobodyさん2010/08/26(木) 17:09:09ID:s6AS28G2
php4.4.8では
redirect($url);
でリダイレクトできるけど、
php5.2.5ではできない?
0390nobodyさん2010/08/26(木) 17:10:14ID:???
略したとこに問題。
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の場合が多いよ俺は
■ このスレッドは過去ログ倉庫に格納されています