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

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

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

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

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

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0002nobodyさん2007/09/09(日) 12:43:46ID:64tYOx8R
■過去ログ
【PHP】下らねぇ質問はここに書き込みやがれ 52
http://pc11.2ch.net/test/read.cgi/php/1186794483/
【PHP】下らねぇ質問はここに書き込みやがれ 51
http://pc11.2ch.net/test/read.cgi/php/1185521566/
【PHP】下らねぇ質問はここに書き込みやがれ 50
http://pc11.2ch.net/test/read.cgi/php/1184143801/
【PHP】下らねぇ質問はここに書き込みやがれ 49
http://pc11.2ch.net/test/read.cgi/php/1182794620/
【PHP】下らねぇ質問はここに書き込みやがれ 45 (※実質48)
http://pc11.2ch.net/test/read.cgi/php/1180181033/
【PHP】下らねぇ質問はここに書き込みやがれ 47
http://pc11.2ch.net/test/read.cgi/php/1180181033/
【PHP】下らねぇ質問はここに書き込みやがれ 46
http://pc11.2ch.net/test/read.cgi/php/1178955837/
【PHP】下らねぇ質問はここに書き込みやがれ 45
http://pc11.2ch.net/test/read.cgi/php/1178955768/
【PHP】下らねぇ質問はここに書き込みやがれ 45
http://pc11.2ch.net/test/read.cgi/php/1177635762/
【PHP】下らねぇ質問はここに書き込みやがれ 44
http://pc11.2ch.net/test/read.cgi/php/1176364487/
【PHP】下らねぇ質問はここに書き込みやがれ 43
http://pc11.2ch.net/test/read.cgi/php/1175368910/
【PHP】下らねぇ質問はここに書き込みやがれ 42
http://pc11.2ch.net/test/read.cgi/php/1174217841/
【PHP】下らねぇ質問はここに書き込みやがれ 41
http://pc11.2ch.net/test/read.cgi/php/1173163186/
0003nobodyさん2007/09/09(日) 12:44:18ID:64tYOx8R
関連リンク
■本家マニュアル   http://www.php.net/manual/ja/
■日本PHPユーザ会 http://www.php.gr.jp/
■PEARマニュアル  http://pear.php.net/manual/ja/
■メーリングリスト   http://ns1.php.gr.jp/mailman/listinfo/
■ZFマニュアル    http://framework.zend.com/manual/ja/

(以下英語)
■Smarty       http://smarty.php.net/
■Zend本家      http://www.zend.com/
■Zend Framework  http://framework.zend.com/
■php | architect   http://www.phparch.com/
■Smartyマニュアル http://smarty.php.net/manual/en/
■PECL本家(英語) http://pecl.php.net/
0004nobodyさん2007/09/09(日) 12:45:05ID:64tYOx8R
【簡易FAQ】
1.文字コードは何を使えばいいの?
 →1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
 → http://example.com/が例文などのために予約されている。hogehoge.comは使っちゃダメ。
3. ブラウザに何も表示されないんだけど・・・
 → Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
4. 記号の意味がわからないけどググりようがない
 → 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
  「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
5. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
 → {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
6. 一定時間ごとに自動的に何かしたいんだけど
 → cronかタスクスケジューラを使え。
7.extractって危険なの?
 →変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
8. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
 → URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
9.include/requireでURLを指定しても何も起きない
 → .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。
0005nobodyさん2007/09/09(日) 12:45:41ID:64tYOx8R
10. そもそもインストールの時点でうまくいかない
 → 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
  Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
11. SQLの質問はどこで?
 → データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
12. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
 → ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
13. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
 → 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
14. echoとprintってどう違うの?
 → よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
  http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40
15. クッキーの情報をユーザから隠したい
 → セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
16. strip_tags()で削除しないタグを複数指定したい
 → strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
17. CSVやTSVのファイルをスマートに扱いたい
 → まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
18. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
 → C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
  参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
19. ファイル入出力関数(fopen等)でリモートファイル(http://〜とか)を扱う際の限界
 → fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
  必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
20. PHPからPOSTリクエストしたい
 →19.を参照
21. 画像処理一般 or GDの限界
 → ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
 → 好きにしてください

0006nobodyさん2007/09/09(日) 13:04:30ID:???
 /:/:.:.:.:.:.:.:/:.:.:.:.:./:.:.:.:.:.:.:.:.:.:.:.:./:.:l:.:.:.:l:.:.:.:.:.:.:.:.:.:.:.:.',:.:.:.:.:.:.ヽ
./:/:.:.:.:.:.:.:/:.:.:.:.:./:.:.:.:.:.:.:.:.:.:.:.:.:.:/:.:/:.:.:.::!:.:.:.:.:.:.:.:.:.:.:.:.:',:.:.:.:.:.:.:.:',
':.:!:.:.:.:.:.:.:.:!:.:.:.:.:/:.:.:.:.:.:.:.:.:.:.:.:.:.:///,:.:./:.l:.:',:.:.:.:.:.:.:.:.:.:.:.:!:.:.:.:.:.:.:.:.l
:.:l:.:.:.:.:.:.:.:.!:.:.:.:/:.:.:.:.:.:.:.:.:.:.:.:.:./// ,:.:/:./:.:.:.',:.:.:.:.:.:.:.:.:.:.:|:.:.:.:.:.:.:.:.:!
/|:.|:.:.:.:.:.:.l:.:.:/:.:.:.:.:.:.:.:.:.:.::/イ/ /:/:./ト、:.:.:.ヽ:.:.:.:.:.:.:.:.:|:.:.:.:.:.:.:.:!|:、 
:.:!:.!:.:.:.:.:.:.l:`l丶、:.:.:.:.:.://., ' ./:/:./ !l ヽ:.:.:.:ヽ:_..- ':.:!:.:l:.:.:.:.:.l:.!:.ヽ
:.:.!:.!:.:.:.:.',:.',:.!:.:.:.:.:>'<、/ //,:./  !l _><\:.:.:.l:./:.:.:.:.://:.:.:.:
:.:.:',:',:.:.:.:.ヽV`ヾ〒_==ミー7/// ーrィ== 〒ア、/:':.:.:.:..://:.:.:.:.:
-、,.ヘヽ:.:.:.:ヽヽ ヾ、_ー'_ノ /'´〃    弋_ー'.ノ '  /:.:.:.:.:.//、:.:r‐‐
 ヽ.-l \:.:.:\、     /´        ヽ   /':.:.:.// ,.-J    下らねぇ質問はここに書き込みやがれ
./  .!   ヽ、:.ヽヽ、      i        ‐,.'ィ":./   !/  `    って言ってるです。
ヽ、  ,!   l l`ヾ.=-    _._ _._   -‐"‐/l !   l )  / 〉
) .! へ!  //  `丶、      ...     ,. '´   l !  !< ,   く
  ヽ_ ̄l   l !       `丶、   _.. '"       !l   !  / -,.、ノ:
ヽ-、 ', !  !l      /::,二 `"´二、:\     ,イl  l  '  /: : : :
: :!: :} l  ! !l     /::/ //:「ト、\ \::\  / l.! l    〉: : : :
0007nobodyさん2007/09/09(日) 13:06:17ID:???
23.PHPでデ(ry
 → CakePHPを使ってください。
0008nobodyさん2007/09/09(日) 15:10:52ID:64tYOx8R
testdir パーミッション777
dir1 パーミッション777

/testdir/dir1/test.php
に、mkdirでパーミッション777でdir2というフォルダを作るように
mkdir("../dir2",0777);
とし、ローカル環境でうまくいったのでレンタルサーバーに上げたらうまくいかない・・・
このときのエラーは
SAFE MODE Restriction in effect. The script whose uid is〜
というエラーが出たのですがこの場合何が原因なのでしょうか
0009nobodyさん2007/09/09(日) 15:12:52ID:???
>>7
デって何?デバッグ?
>>8
セーフモード制限
0010nobodyさん2007/09/09(日) 15:26:10ID:64tYOx8R
>>9
手動で作るしかないんですねorz
0011nobodyさん2007/09/09(日) 16:07:50ID:sHQ1gr/N
これからPHPのDLをWinXPでしたいのですが、
ttp://www.apache.jp/
ttp://www.php.net/

このURLのPHPとApacheはどの組み合わせでDLした方が宜しいでしょうか?
0012nobodyさん2007/09/09(日) 16:11:22ID:???
最新版でおk
0013nobodyさん2007/09/09(日) 16:14:01ID:???
>>7
>デ
CakePHPってところからしてデザインとロジックの分離ってところだろうか...
いずれにせよそんな短い(ryじゃテンプレに入れられないな。
0014nobodyさん2007/09/09(日) 16:16:20ID:sHQ1gr/N
>>12
有難うございます、インストールしてみます。
0015nobodyさん2007/09/09(日) 17:17:49ID:???
WebProgの78で質問したものです。
当時PHP質問スレは無かったのですが、こちらが出来たのでこちらで質問します。

前回はShift_JIS形式のファイルで色々やってもダメだったもので、
今度はPHPファイルをEUC-JP形式にて試しました

mb_internal_encoding ("EUC-JP");
$to = "xxxx@xxxx.com";
$subject = "認証メール";
$body = "本人認証ですhttp//";
$from = "From: test<from@test.com> \r\nContent-Type: text/plain;";
$rs = mb_send_mail($to, $subject, $body, $from);


この状態で[http]と[//]の間に:を入れるとメールが送信されません
その時$rsには戻り値が入っており、if($rs)はtrueを通ります

mb_languageをJAに指定すると、英字が一つでも入ってたら駄目なようです

明確なエラーメッセージも無く解決方法が見つかりません
理由が分かるかた居ましたらよろしくお願いします

PHPはVersion 5.2.3です
0016nobodyさん2007/09/09(日) 17:25:38ID:???
$body = '本人認証ですhttp//';
0017nobodyさん2007/09/09(日) 17:39:56ID:???
>>16
レス有難う御座います
$body = '本人認証ですhttp//'; はいけるのですが、
$body = '本人認証ですhttp://';のように[:] コロンを入れると送信する事が出来ません
[""]でも['']でも同じ結果の様です
0018nobodyさん2007/09/09(日) 18:00:28ID:sHQ1gr/N
php-5.2.4-Win32.zipとapache_2.2.4-win32-x86-no_ssl.msiをDLして一通り設定してみたのですが
phpinf();のファイルを作りlocalhostでアクセスしたのですが設定が反映されません。(WInXP)

php.iniの設定は
output_handler =  → output_handler = mboutput_handler

default_charset = "Shift_JIS"

extension_dir = "./" → extension_dir = "C:/php/extensions" 

#自分が参考書で確認した際上記のC:/php/extensionsの部分のextensionsがextになっていましたが
#phpをインスコした際のテストでモジュール指定がありませんのエラー内容にextでは無くextensionsとなっており
#extというフォルダ名をexitensionsに直してしまいました。ですのでextensionsにしましたが・・・。

extension=php_mbstring.dll  ;を取り有効に
mbstring.language = Japanise      有効
mbstring.internal_encoding = EUC-JP 有効
mbstring.http_input = auto        有効
mbstring.http_output = SJIS        有効
mbstring.encoding_translation = Onにして 有効
mbstring.detect_order = auto       有効
mbstring.substitute_character = none;  有効

以上の設定をphpフォルダのphp.iniのファイル内容にて変更してみました。何が足りない部分があるのでしょうか?
0019nobodyさん2007/09/09(日) 18:09:08ID:jOYDLkNB
質問です。
1時間毎に1度ある数字に+1して通し番号を発行したいのですが
何を参考にすればいいでしょうか?
0020nobodyさん2007/09/09(日) 18:17:46ID:???
>>19
サーバーのcronで+1するPHPを動作させる
0021nobodyさん2007/09/09(日) 18:23:45ID:???
今の日時を時間に直して一時間未満を切り捨てれば良い
0022nobodyさん2007/09/09(日) 18:24:59ID:jOYDLkNB
cron使わないといけないようなので面倒だし諦めます。
ありがとうございました。
0023nobodyさん2007/09/09(日) 18:27:19ID:???
>>18
phpinf();?
0024nobodyさん2007/09/09(日) 18:36:45ID:???
>>23
記述ミス申し訳ありませんでした。設定を一通り終えて、動作確認で
<?
phpinfo();
?>
というファイルをindex.phpとして作りhtdocsフォルダに置きlocalhostにアクセスしてみました。
しかしPHPに関するページの表示はされず、
<?
phpinfo();
?>
というファイル内容がそのまま表示されてしまいますが、色々と試しています・・・
0025nobodyさん2007/09/09(日) 18:40:18ID:???
アパチェ
0026nobodyさん2007/09/09(日) 18:48:09ID:???
>>24
アパチェのコンフィグでアドタイプしてサイキドウすればよろし
0027nobodyさん2007/09/09(日) 18:50:58ID:???
>>18
・php.iniの読み込み指定
その1: Apacheのhttpd.confに PHPIniDir c:\php を書く、そしてApache再起動
その2: 環境変数 PHPRC で c:\php と指定、PCを再起動
好きな方を選べ

・extension_dir
phpのディレクトリに ext ってディレクトリがあるだろ
それがファイル名'php_'で始まる拡張モジュールの収まったディレクトリのこと
extension_dir = "c:\php\ext" って書いてやればいいよ
0028nobodyさん2007/09/09(日) 19:28:15ID:???
>>25-26
<IfModule mime_module>という中に
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
を追加してみたのですが、空白ページに今度はなってしまいました

>>27
その1、その2、extensin_dirすべてをやり最後にindex.phpのファイル内容の
<?
phpinf();
?>

<?php
phpinfo();
?>
このように変換した所ページ表示がやっとできました。やっと自宅でPHPできるようになりました!
設定ミス、長文大変見ずらかったと思いますが付き合って頂いて大変助かりました
皆さん親切に何度も有難うございました!
0029nobodyさん2007/09/09(日) 20:19:51ID:???
よかったのうよかったのう
0030nobodyさん2007/09/09(日) 20:53:02ID:+iLUvfjN
ヒアドキュメントから定数を参照する方法ってある?

define("MAN", 'CO');

print <<<TEXT
{MAN}
TEXT;

みたいな感じで参照できねっすか?
0031nobodyさん2007/09/09(日) 21:41:38ID:???
>>30
ムリ
0032nobodyさん2007/09/09(日) 21:50:17ID:+iLUvfjN
>>31
アリ
0033nobodyさん2007/09/09(日) 21:53:14ID:???
>>19
現在のUNIXタイムスタンプ-基準になる時間のUNIXタイムスタンプを
時間に変換する。
0034nobodyさん2007/09/09(日) 23:45:11ID:???
$string = file_get_contents("./a.txt");
preg_match("/http:\/\/[a-z0-9\/\-_\.]+/i",$string,$match);
foreach($match as $key => $value){
$key++;
echo "$key"."+"."$value";
}
これに何か問題ってあるでしょうか?
0035nobodyさん2007/09/10(月) 00:12:30ID:???
あるかもしれないけどないかもしれない。
答えは君だけが知っている
0036nobodyさん2007/09/10(月) 00:27:05ID:???
>>34
preg_matchの修飾子に s を指定するべし
preg_matchではなく、preg_match_allを使うべし
[a-z0-9\/\-_\.]の中の / - . はエスケープする必要なし
- は最後に書くべし
0037nobodyさん2007/09/10(月) 00:42:18ID:v8+qYSiw
携帯用のRSSリーダーを作っているのですが、

下の、
http://blog.zuzara.com/2006/06/06/84/

この方法を使って、本文抽出しているのですが、うまく本文だけを抽出してくれません。

一応、
http://private.ceek.jp/archives/002039.html

ここに書いてあったことを元に、句読点が存在していれば本文要素として認めて、最後に、

$res .= $val

として結合することで、精度が上がりましたが、まだ読めないサイトがあります。

精度を上げるには他にどうすれば良いでしょうか?


フィードは、はてなRSSの人気のフィード全てを使っています。
0038nobodyさん2007/09/10(月) 00:48:11ID:???
無駄に改行しないことから
0039nobodyさん2007/09/10(月) 00:57:22ID:???
sage
0040nobodyさん2007/09/10(月) 04:56:57ID:iLiEDXXm
phpのconfigure時にpostgresqlがはいっているいないってどう確認
っすればいいの?
自分は
php info();

dbx support enabled
dbx version 1.1.0
supported databases MySQL ODBC PostgreSQL Microsoft SQL Server FrontBase Oracle 8 (oci8) Sybase-CT SQLite
てでたんだがphpのconfigureの部分はなかった。
だめなのかな?
追加できないの?

0041nobodyさん2007/09/10(月) 05:45:14ID:???
>>40

くだらない質問でもど偉そうに聞いていいスレ
http://pc11.2ch.net/test/read.cgi/php/1158647441/
0042nobodyさん2007/09/10(月) 08:51:38ID:???
既存の関数に、フィルタかけたいんですがどうすればできますか?
たとえばecho関数にエスケープフィルタをアタッチして、
echoすれば必ずそのフィルタを経由する、みたいなことがさせたいんです。
ラッパー書けばできますが、
その関数名のままラップしたいんです
0043nobodyさん2007/09/10(月) 08:55:59ID:???
さくらインターネットでは
phpをcgiで動かしていますが
#!を行頭に書かなくてもphpが使えます
どういう設定をしたらそんなことができますか
004442と432007/09/10(月) 09:10:54ID:???
自己解決しました。
0045nobodyさん2007/09/10(月) 11:03:54ID:???
>>40はマルチ
ttp://pc11.2ch.net/test/read.cgi/php/983128806/752

>>44
解決したんだったら解決策を書いてくれると助かる。
0046nobodyさん2007/09/10(月) 11:19:08ID:???
>>45
ID出さないやつは全員自己解決。ってことだろ
0047372007/09/10(月) 11:30:10ID:v8+qYSiw
>>38
なるべく見やすくしたつもりですが・・・
0048nobodyさん2007/09/10(月) 12:25:07ID:???
>>47
ここはブログじゃねえの!
0049372007/09/10(月) 12:52:22ID:v8+qYSiw
>>48
すみません。
これでも詰めたのですが、甘かったのですね。
0050nobodyさん2007/09/10(月) 13:41:02ID:nbKfi6vV
FLASHのactionscriptに値の渡し方について教えて下さい。
ボタンを押すとダイナミックテキストの変数ipに表示させたいんですけど、
これでいいんでしょうか?
<?php
gethostbyaddr(getenv("REMOTE_ADDR".$_POST["ip"]));
?>
0051nobodyさん2007/09/10(月) 13:49:09ID:???
$_SERVER["REMOTE_ADDR"]でいいよ
0052nobodyさん2007/09/10(月) 14:25:24ID:nbKfi6vV
>>51 さん、ありがとうございます。
変数は[ ]の中にいれるんでしょうか?
<?php
 echo $_SERVER["REMOTE_ADDR".$_POST["ip"]] ;
?>
0053nobodyさん2007/09/10(月) 15:04:53ID:???
>>50
src="フラッシュファイル名?ip=<?php echo urlencode(gethostbyaddr($_SERVER["REMOTE_ADDR"])); ?>"
じゃないのかな。
他にも値の渡し方はいくつかあるけど。
0054nobodyさん2007/09/10(月) 15:18:59ID:???
>>52
$_SERVER["REMOTE_ADDR"]がIP調べるの定義済み変数だろ
そんくらい調べろ

echo $_SERVER['REMOTE_ADDR'] . "<br>\n" . gethostbyaddr($_SERVER['REMOTE_ADDR'];
0055nobodyさん2007/09/10(月) 17:26:27ID:???
>>44
あなた誰ですか?
解決してません
引き続き回答をお待ちしております
0056nobodyさん2007/09/10(月) 18:17:34ID:???
Apache関連は自鯖板とかで聞いて来い
IDも出さない馬鹿には誰もまともに答えないよ
0057nobodyさん2007/09/10(月) 18:49:12ID:???
>>55
ID出さないとすぐ騙りが出て自己解決するのがこのスレ
0058nobodyさん2007/09/10(月) 21:10:18ID:nbKfi6vV
皆さんご回答ありがとうございます。
>>53さんの方法でもPHPの変数が渡せるんですね。文字列としてやった事はあるんですけどね。
拡張子をphpにして、param と embedを修正したら表示できました。同じようにURLを入れて見たら文字列としてURLが表示しました。
他の方法も是非ご教授お願いしたいです。
>>54さん勉強不足ですみません。何故だか何度やっても表示しないんですよねー。
0059nobodyさん2007/09/11(火) 01:40:40ID:j/8aPw/k
htmlで<base href="http://www.example.com/";>としておくと
imgタグののsrcやaタグのhrefをルートからのパスで書くことができますよね
例)http://www.example.com/images/a.gif→src="images/a.gif"
例)http://www.example.com/a/b/c/→href="a/b/c/"

このbase hrefはphpのincludeには反映されないようなのですが、
includeでも同じような書き方を可能にする方法ありますか?
./や../などを使いたくないのです
0060nobodyさん2007/09/11(火) 01:59:53ID:???
相対パスが嫌なら絶対パスでも使えば?
0061nobodyさん2007/09/11(火) 02:02:18ID:j/8aPw/k
それはそうなんですけどそのhttp://www.example.com/部分を毎回手打ちで書くのが面倒くさいので
何かいい方法があればと思って聞いてみたんですが
0062422007/09/11(火) 03:04:39ID:zytLbqiK
ぐたぐたうるさいバカはほっといて・・・

だれかよろしくおねがいします
0063nobodyさん2007/09/11(火) 05:54:29ID:???
>>59
>>60
っていうかimages/a.gifも相対パスな罠。
普通にinclude("aaa.php");とか書けばいいじゃん。
相対パスだからって「./」は必須じゃない。

実行ディレクトリが違うという話なら最初に
chdir("基準ディレクトリ");すればいい。
0064nobodyさん2007/09/11(火) 08:45:33ID:???
>>61
つ【include_path 】
0065592007/09/11(火) 10:40:52ID:???
>>63-64
相対パスが嫌な訳ではなく、../../など、階層をページによって書き直すのが嫌なのです
深い階層にいくと、./なのか../なのか、../がいくつ必要なのかよくわからなくなるので

ありがとうございます、調べてみます
0066nobodyさん2007/09/11(火) 10:53:33ID:TKViiXpy
少し聞きたいのですが、
switch文で1つのswitchが60個x12って1ファイルだと多すぎでしょうか?
キチンと動いてるのですが、たまに12箇所で同じ部分が表示されない時はあるのです。
0067nobodyさん2007/09/11(火) 10:55:47ID:???
>>66
日本語でおk
0068nobodyさん2007/09/11(火) 10:56:22ID:???
サーバルートからにすればいいじゃん"/imgdir/himei_butte.jpg"
htmlの下質だな、スレ違いに気づけ。
0069nobodyさん2007/09/11(火) 11:02:47ID:???
$urlに格納すりゃいいじゃん。撃つ文字数がはぶける
0070nobodyさん2007/09/11(火) 11:31:38ID:???
>>66
switchが12個でそれぞれにcaseが60個という意味か
そんなに書いたことないなー
状況がわからないけど自分ならもっとスマートに書けそうな気はする
0071nobodyさん2007/09/11(火) 11:35:29ID:???
>>68
call_user_funcでアクション名を渡せば5行もかからないと思うけど
0072nobodyさん2007/09/11(火) 11:36:04ID:???
>>68>>66
0073nobodyさん2007/09/11(火) 11:48:32ID:???
いくらなんでもswitchに詰め込みすぎ
0074nobodyさん2007/09/11(火) 12:20:06ID:???
>>66
普通に動きそうな気はするが、ものすごく読みにくくて
バグがあっても気付きにくい構造になっちゃってる気はする。
0075nobodyさん2007/09/11(火) 12:28:30ID:???
switch ($value) {
case 1: echo "1";break;
case 2: echo "2";break;
.
.
とかすごく無駄なことをしてそう
0076nobodyさん2007/09/11(火) 13:13:35ID:???
>>66
> 12箇所で同じ部分が表示されない
これが少し気になるんだが、そのx12のswitchって
ひょっとして同じ条件を12回も再評価してるのか?
配列変数を使うとか、もう少し何とかならんのかそれ?
0077nobodyさん2007/09/11(火) 13:25:17ID:???
どういうものなのか気になるな・・・。
720行ものcase文を書き上げた根性だけは立派だよ。
スキルを身につければきっと伸びる。
0078nobodyさん2007/09/11(火) 14:13:16ID:???
>>77
> 720行ものcase文を書き上げた根性
同じ判定を12回やる内容ならコピペでしょ、ふつー。
わざわざ手で全部書いたのならそれこそバカかと。
0079nobodyさん2007/09/11(火) 15:11:05ID:???
レスありがとうございます
/*===以前===*/
$min=現在時間
if(($min >="00")||($min <="15")){
$txta=現在時間00分;
$txtb=現在時間15分;
}else{
$txta=1時間+現在時間00分;
$txtb=1時間+現在時間15分;
}
/*===現在===*/
switch(date("i")){
case 00:
〜〜〜〜省略〜〜〜〜
case 15:
$txta=現在時間00分;
$txtb=現在時間15分;
break;
case 16:
〜〜〜〜省略〜〜〜〜
case 59:
$txta=1時間+現在時間00分;
$txtb=1時間+現在時間15分;
break;
default:
$txta="error";
$txtb="error";
break;
}
以前はifのものでやっていましたが他の条件のもので取得した時間で前後1時間のずれがあったりしていたのでswitchに変更しました。
このほかにそれぞれの時間を表示する時に使うcssやそのほかのテキストも同じswitch内に入れています。
ifでやる方がシンプルだと思うのですが、どうしてかうまくいきませんでした。
0080nobodyさん2007/09/11(火) 15:21:31ID:???
>>75
予想的中おめww
0081nobodyさん2007/09/11(火) 15:30:20ID:TKViiXpy
>>80
いえいえ省略したcaseの部分はbreak; してませんよ。
他にcssや他のテキストも入れていますので実際は省略する部分も少ないですが。
0082nobodyさん2007/09/11(火) 15:32:16ID:dkCdLSVp
まず何をやりたいか書いてくれ
0083nobodyさん2007/09/11(火) 15:38:27ID:???
>>79
文字列は" "で囲めよ
で数値は囲むなよ

どうみても以前の方がわかりやすい
0084nobodyさん2007/09/11(火) 15:41:10ID:???
>>82
現在の時刻で分の部分が0-15なら
$txta = "現在時間00分"
$txtb = "現在時間15分";
それ以上なら
$txta = "1時間+現在時間00分";
$txtb = "1時間+現在時間15分";
を代入したいんだと思うがその使い道はまったく見当がつかない
0085nobodyさん2007/09/11(火) 15:44:50ID:???
トン吉チン平カン太!
0086nobodyさん2007/09/11(火) 15:46:05ID:TKViiXpy
みなさんレスありがとうございます。

ttp://apcube.net/ffxi_memo/chocobo_circuit/index.html
の表の部分です。
ttp://www.playonline.com/pcd/update/ff11/20070828N71VL2/ch04jp.jpg
を元にしています。
やはりifで作る方がいいのかな。
0087nobodyさん2007/09/11(火) 15:46:09ID:dkCdLSVp
>>84
何故一気に1時間飛ばすのかな
0088nobodyさん2007/09/11(火) 15:49:40ID:TKViiXpy
>>87
サイトを見てもらえばわかるのですが、
4コースのレースがあってそれぞれ1時間で1回のレースを行ってます。
なので、1レースが終わると次回は1時間後なのです。
0089nobodyさん2007/09/11(火) 15:49:41ID:???
$min=現在時間
if($min >='00'&&$min <='15'){
$txta=現在時間00分;
$txtb=現在時間15分;
}else{
$txta=1時間+現在時間00分;
$txtb=1時間+現在時間15分;
}
0090nobodyさん2007/09/11(火) 15:53:03ID:???
switchの使い方がおかしいと思うんだがな
0091nobodyさん2007/09/11(火) 15:58:25ID:TKViiXpy
>>89
どうもです。
以前までそのやりかたで書いてたのですが、
レース時間が、00:45〜01:15など時間をまたいだレースなどで
うまく取得できない場合がありました。おそらく条件式をうまく使えてないのが原因だと思うのですが。
if($min >='45'&&$min <='59'&&$min >='00'&&$min<='15'){
のような感じで書いてました。
0092nobodyさん2007/09/11(火) 16:01:21ID:Al3TIDzd
PHPと直接関係ない質問ですみませんが、
DBの設計を学びたいたいです。
とりあえず練習としてMySQL+PHPで掲示板を作りたいのですが、
どういうカラムが必要なのかとかがわかりません。
MySQLスレで過去に聞いてみたのですが返答もらえませんでした。
強引にPHPと結び付けてるようで申し訳ないですが、
MySQL+PHPでDB設計を学べるようなサイトがあったら教えていただけませんか?
また、DBを使った掲示板を作る場合、
自分ならどういったカラムを作るかなど、助言いただけたらよろしくお願いします。
0093nobodyさん2007/09/11(火) 16:08:30ID:???
>>92
フリーの掲示板のログ読んで勉強すればいいと思うんだが
0094nobodyさん2007/09/11(火) 16:10:03ID:???
>>91
forで時間分だけ回して、インクリメントで分を足して行って、
該当分にだけ処理させるように記述すれば良いんじゃないかな?
0095nobodyさん2007/09/11(火) 16:20:51ID:???
>>94
ありがとうございます。
まだphp初めて間もないのでforも少し調べてみます!
0096nobodyさん2007/09/11(火) 16:50:09ID:???
俺ならdate('i')の判定でまわしながらやる。
0097nobodyさん2007/09/11(火) 16:57:38ID:???
if ( ($min >='45' && $min <='59' ) || ($min >='00' && $min<='15')){
0098nobodyさん2007/09/11(火) 17:00:59ID:???
>>97
× if ( ($min >='45' && $min <='59' ) || ($min >='00' && $min<='15')){
○ if ( $min >= '45' || $min <= '15' ){
0099nobodyさん2007/09/11(火) 17:04:34ID:???
沢山レスありがとうございます!

if ( $min >= '45' || $min <= '15' ){
これ有効なんですか!以前のものを修正してみます。
0100nobodyさん2007/09/11(火) 17:13:54ID:???
caseが60個ある原因は分かったが、同じようなswitchが12箇所もある問題は?
0101nobodyさん2007/09/11(火) 17:18:09ID:???
>>92
必要なカラムは表示させたい内容や処理させたい機能によるので
「掲示板だからこのカラム」なんてパターンは無い。
まず掲示板ってどういう仕組みで成り立ってるのかから勉強してこよう。
必要な機能とデータを列挙する段階はPHPやDB以前の問題だ。

その上で、列挙された機能とデータから仕組みを設計するのがPHP(というかWebアプリ)の勉強。
それができた上で、さらにそのデータを効率化・最適化するのがDBの勉強。
■ このスレッドは過去ログ倉庫に格納されています