トップページ⇒php
986コメント299KB

【PHP】初心者コーナー 

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001名無しさん@お腹いっぱい。02/01/21 03:21ID:???
長島も阪神のコーチになった。
仕方ない、人気のないPHPを応援してやる。 

データベース禁止 MySQL PostgreSQL はどっかいけ。
純粋にPHPプログラミングだけ。
初歩的な事ならWebProg板の誰かが素早く教える。
もちろんPerlプログラマーも手伝ってくれ。
ほんじゃ質問してみ。

 >>2-9 誰か情報かいてくれ。
0809nobodyさん03/03/11 09:13ID:???
>>808
ダセぇ。
0810nobodyさん03/03/11 09:39ID:???
>>807
こんなやつ作りたいんですけど…
ttp://xx.alpha-sv.com/vf4/cgi/update_bbs.cgi
0811nobodyさん03/03/11 10:04ID:???
>>810
使い倒して仕様を掴む。ソースがある場合は死ぬ気で読み解く
      ↓
判明した仕様通りにコーディング
0812nobodyさん03/03/11 11:10ID:???
>>808
キャッシュ生成すんのがダサいコーディングか?
バックグラウンドがDBだろうがファイルシステムだろうが、
検索コストに比べりゃキャッシュ使うべきところだろ。

ま、名前と日にち"だけ"のキャッシュってことはありえんだろうが。
0813nobodyさん03/03/11 11:13ID:???
>>812
>検索コストに
一番上。
0814nobodyさん03/03/11 11:13ID:???
>>812
なんかphpスレ一帯に煽り耐性のない学生が出没してるな・・・
0815nobodyさん03/03/11 11:35ID:???
>>811
初心者なので全然わけがわからないです。
一応そこの管理人さんにソース?もらったのですがさっぱり…
081681503/03/11 11:41ID:???
他のとこでも聞いてきます。phpで出来なさそうなので
CGIでがんばります
0817nobodyさん03/03/11 11:41ID:???
>>816
そのレベルだとどこ行っても一緒だとは思うけどね。
0818nobodyさん03/03/11 13:04ID:???
>>815
Hello world
からプログラムやり直せ。
081981203/03/11 21:33ID:???
そうか、隠れた指摘でもあるのかと思って反応したのだが、
単なるカルシュウム不足だったのか。牛乳飲んで出直してくるよ

>813
折れの書き方が悪かった。
検索に掛かるコスト>キャッシュに掛かるコスト だから後者を選ぶべきという事が言いたかった。
ただDBMS使っててクエリキャッシュが効いて、そっちの方がコストが小という場合があるかも知れん。
0820nobodyさん03/03/12 04:29ID:???
>>805
$files = file($dat);
$line = $files[0];
0821nobodyさん03/03/12 09:25ID:???
>>820
キャッシュすれば良いんだってさ。わざわざファイル作って。
0822nobodyさん03/03/12 11:47ID:???
>>806
その通りでした。テーブル定義がtextのカラムをlo_unlinkしていたみたいです。
バージョンアップと共にチェックが厳しくなったんですね・・・。
0823nobodyさん03/03/12 20:28ID:Q/ug/Lhk
初心者ですいません、質問ですが、
mb_convert_encodingを使おうとするとエラーが出ます。
undefined function: mb_convert_encoding() とか言われます。
php4.3.1は使える関数じゃないのでしょうか?
使っているバージョンはphp4.3.1+IISです。データベースはMYSQLです。
どうかご教授ください、お願いします。
0824nobodyさん03/03/12 21:15ID:???
>823
php.ini
0825nobodyさん03/03/12 21:55ID:Q/ug/Lhk
>824
ありがとうございます。
いじってみましたがよくわからないのです・・・
php.iniのどれをいじればよいのでしょうか・・・
0826nobodyさん03/03/12 22:06ID:???
mbなんちゃら;
0827nobodyさん03/03/12 22:22ID:???
>823
php.iniの設定も必要(PHP4.2の頃から設定が変わったので注意)だけど、
その4.3.1が--enable-mbstring付きでコンパイルされてないと駄目。
(RCの頃にはデフォルトで有効だったんだけどね…次回バージョンまでに多言語関係の熟成に期待)
再makeするなら、--enable-mbstring=allとして他の言語も入れといて良いんじゃないかな。
その分大きくなるけど。
0828nobodyさん03/03/12 23:26ID:???
>>827
Windows用として配布されてるのはそんな心配ないよ。
php.ini だけ。
0829nobodyさん03/03/13 11:36ID:???
少しPHPから外れちゃうかもしれないんですけど、
登録してもらうときにとりあえず登録してもらって表示するときにいらない要素を排除するのと、
登録の際に評価して削るのはどっちが素敵ですかねぇ〜?
DBの容量も考えたら後者なのかもしれないんですが、少し迷ってみたり。
0830nobodyさん03/03/13 11:38ID:???
>>829
きれい事を言えば後者でしょう。
083182903/03/13 11:43ID:5jM1K4IS
>>830
ソース的にも後者ですかね?
083282903/03/13 11:44ID:???
ageてもうた・・・ハドゥカティ〜
逝ってきます・・・
0833nobodyさん03/03/13 11:46ID:???
>>831
DB使うなら後者でも良いと思いますけど。どうせマーシャル処理が入るんだし。

テキストファイルの時はそのままPOSTメッセージを保存したりもしますけど。
083482903/03/13 12:22ID:???
>>833
自分も後者がいいような気がしてきました。
とりあえずそっちでやってみます〜ありがとうございました!
0835nobodyさん03/03/13 12:53ID:???
>828
おぉう、IIS(=Windows)って書いてありましたな。確かに
0836nobodyさん03/03/13 14:43ID:???
(; ´∀`)?
0837nobodyさん03/03/14 02:37ID:???
揚
0838nobodyさん03/03/14 03:30ID:bKVRIfIQ
アンケートに協力して!

http://multianq3.uic.to/mesganq.cgi?room=yasuhito

毎月アンケートの内容が変わるよ。
0839nobodyさん03/03/14 13:53ID:???
CSVファイルを使っているページで、検索を行う場合、
どのような処理が理想なのでしょうか。
preg_grepで配列に入れて、該当した順番に吐き出したのですが、
マッチする場合とマッチしない場合が出てしまいます。
084083903/03/14 14:58ID:???
PHP 4.0.4以降、preg_grep()により返された結果は、
入力配列のキーを使用して添字が設定されます。
を見落としてました恥
0841nobodyさん03/03/14 20:32ID:???
Perlだとflockでロックして解除しなかったら
ファイル閉じたときに自動的に解除されるけどphpも同じでしょうか

0842nobodyさん03/03/15 12:24ID:???
>>841
直接システムコールを叩いてるだけなら一緒じゃないの?
どっちにしろ激しく非推奨。
0843sage03/03/16 23:41ID:MfieTvGJ
PHPもPostgreSQLも初心者ですparse errorが続出でデバックにかなりの時間
掛かっています、200行こえるとかなりきついっす
あきらめて一晩たってよく見れば } の付け忘れとかどうしたらこういうケアレスミスをふせげるでしょうか、まじ情けないです。
0844nobodyさん03/03/16 23:44ID:???
ちゃんと集中する。
0845nobodyさん03/03/16 23:54ID:???
parse errorを取ることはデバッグといわない罠
0846nobodyさん03/03/17 00:04ID:???
度々再々とチェックする。
0847nobodyさん03/03/17 00:24ID:WZEdmRHq
>>843
844はもっともな答えだが、PHPはスクリプト言語なので、
ケアレスミス程度なら体が覚えるまでerror→訂正ぐらいの
気軽さで勉強しても構わないよ。

昔、パンチテープ(工作機の制御用にまだ使ってた(笑))の時は
そりゃあ、机上デバッグに力入れたもんだが…
0848nobodyさん03/03/17 01:03ID:???
ちょっと聞きたいんですが
Warning: pg_query() query failed: ERROR: parser: parse error at or near "1" in /home/hoge/public_html/hoge.php on line 83
これって2つのエラーメッセージですよね
Warning: pg_query() query failed
これはpg_queryって関数が無いってことでいいのかな?
parse error at or near "1" in ?
or near "1"っこれがちょっとわからないんですが、教えてけれ。

0849nobodyさん03/03/17 01:12ID:???
>>848
んにゃ、pg_query()に渡したsqlが間違っている。
0850nobodyさん03/03/17 03:56ID:???
>>843
そんなもの防ぐ必要がない。
parseエラーなんか、出たら修正すればいい。
メッセージちゃんと読めばすぐ見つけれるようになる。
エラーメッセージ嫁!
0851nobodyさん03/03/17 10:57ID:???
エラーメッセージを無駄な情報だと思ってる奴は正直プログラマに向いてない。

0852 ◆AngelH/kMI 03/03/17 15:52ID:???
まあ、parse errorに関しては
色分けしてくれるエディタ使うとか
マメにphp -lでエラーチェックするとか
予防は出来るけどそれ以上は無理だね。

ま、書いてる本人のミスなわけだし。

自分もついさっき
$db->query("SELECT * FROM hoge WHERE user = '111');
と最後の"を書き忘れ、かなり長時間悩んじゃったよ(苦笑
0853nobodyさん03/03/17 15:55ID:???
>>851
2chを無駄な情報だと思ってない漏れは、プログラマに向いてますか?
0854nobodyさん03/03/17 16:52ID:eIaELJZp
imap_openを使いたいのですがundefined…というエラーが出てきます。
どうすれば使えるようになるのでしょうか。。
0855nobodyさん03/03/17 17:03ID:???
>>853
最高っす!
0856nobodyさん03/03/17 17:03ID:???
つぅかコンパイルエラーごときで質問しに来てんじゃねぇよぼけ。
0857nobodyさん03/03/17 17:04ID:???
エラーを出すような人は正直プログラマに向いていない。
085885403/03/17 17:04ID:eIaELJZp
環境はWin2kでPHP4.3.1とApache1.3.27です。
085985403/03/17 17:09ID:eIaELJZp
解決しますた。
>http://goinkyo.parfait.ne.jp/script/a_php.shtml#extension
0860nobodyさん03/03/17 18:22ID:???
>>857
んなこたーない。
0861nobodyさん03/03/17 20:02ID:???
外部ファイルから引っ張る時、
<?php
function test(){
?>
aiueo
<?php
}
?>
というのと、
<?php
function test(){
print <<<END
aiueo
END;
}
?>
どっちが便利?
0862nobodyさん03/03/17 21:54ID:???
>>861
上はだめじゃない?
0863nobodyさん03/03/17 22:00ID:???
すまん。だめじゃなかった。でも上はきらい。
0864nobodyさん03/03/17 22:08ID:???
>>861
外部ファイルを引っ張るとき...? ってのが意味不明だが、

秀丸を使っていると、上は色分けをしてくれるのでいいが、
中に変数をそのまま埋め込みできる下を多用してます。
0865nobodyさん03/03/17 22:31ID:???
秀丸いいね
おでは先週くらいから、Emacsにphp-mod.el組みこんで
使ってるんだが、おでがへぼいんでEmacsのパフォーマンスを
引き出せないので悲しい、Emacs使いこなせたらなんでもできそう
な気になりまふでも秀丸のLinux板がでたらそっち使うが
まぁ絶対にありえないだろうけど。
0866nobodyさん03/03/17 22:32ID:???
>>861
ていうかロジックとビューの分離くらいしろよ。と。
0867nobodyさん03/03/17 23:00ID:???
質問します
2チャンネルで字下げするのどうしたらできまふか?
おいらも861みたいになちゃうんだよね。
0868nobodyさん03/03/17 23:12ID:???
        めんどいな。
0869nobodyさん03/03/18 00:12ID:???
ランダムな8桁の英数字(大文字小文字も使いたい)をPHPで発生させたいんだが
どちたらできるの?
マニュアルよんだら数字の乱数の作り方は出てたが英文字はないのでないのかい?
情報キボンヌ
0870nobodyさん03/03/18 00:12ID:???
s/ / /g
0871nobodyさん03/03/18 00:27ID:???
>>869
>英文字はないのでないのかい?

ちょうどASCIIのaやAに当たる文字コードを加算するだけで事足りると思うんだが。

もしくはrandomした数字をMD5にでも渡すとか。
0872nobodyさん03/03/18 00:32ID:???
>>871
MD5だと[0-9a-f]だよ。
俺はsubstr(crypt(uniqid("")),-8)とかやっている。
uniqidに限らず他を使う場合もあるけどな。
0873nobodyさん03/03/18 01:54ID:???
サンクス
マニュアルみたら
$better_token = md5(uniqid(rand(),1));
こんな例がでてまふた、でもこれじゃあ32文字も出るんだ罠
そんなにいらんのだが、最初の8文字とかでもいいのだが
パラミィータ設定してスマートに8文字だせんかの?
マニュアルには prefix を空とした場合、返される文字列の長さは、 13文字となりますと書いてあったがどうしたら8文字にできまふか?
0874nobodyさん03/03/18 02:05ID:???
自分で切れば?てか、切って当然。
0875nobodyさん03/03/18 02:17ID:???
やっぱこれっすか
s/ / /g
切まふ
0876nobodyさん03/03/18 02:18ID:???
文字数を渡して好きなように切れる関数でも作れば?
細かい機能は自分で関数を作れば解決。
0877nobodyさん03/03/18 02:20ID:???
>>875
文字数で切るだけならsubstrでいいでそ。
0878nobodyさん03/03/18 02:23ID:???
>>876
substrすら知らずに偉そうに煽ってる?
0879876=87703/03/18 02:30ID:???
いやいや、$better_token = md5(uniqid(rand(),1))とsubstrをくっつけて、
好きな文字数且つランダムなのが取得できるのを作ったら?
ってつもりだったのだけど…。

873が既存の関数だけでなんとかしようとしてるのが、プログラミングを楽しみ切って
ないようにみえたから。
0880nobodyさん03/03/18 03:12ID:4yQWEX54
>>843
WebStudio
PHPUnit
0881nobodyさん03/03/18 10:46ID:???
>>880
でもエクリプスの最新版は英語ができないときつい罠。

まあ秀丸より便利だしね。
もうもどれね。
0882nobodyさん03/03/18 11:15ID:???
ところでuniqid命令で生成される乱数に英数(大文字、小文字)以外の
文字もでてきちゃうね(^^;)
.とか/とか\とか困ったな、アルファベットの大文字小文字と数字だけ
だせないものなの?
0883nobodyさん03/03/18 11:20ID:???
↑のものですが、ごめんなさい
"\"マークはでないみたいですね、でもやっぱり"."と"/"は出やがるぜ
0884nobodyさん03/03/18 12:02ID:???
MacOSX10.2.4でphp4.1.2です。
自鯖にレッツphpのぁぷろだを入れて使ってるんですが、10MB以上のファイルをupload出来ないです。
post_max_sizeもupload_max_filesizeも30MBとかにしてるんですけど。
他に設定しないといけないところがあるのでしょうか。
0885nobodyさん03/03/18 14:27ID:???
Scriptの実行時間の制限は?
0886nobodyさん03/03/18 14:38ID:???
>>882
range
array_merge
srand
array_rand
0887nobodyさん03/03/18 18:33ID:???
>885
max_execution_timeですかね。
30なんですけど、ローカルでuploadしても10MB以下だと出来るのに、10MB超えるとだめだから、時間ってのは違うっぽいんですよねぇ。
0888nobodyさん03/03/18 18:41ID:???
Apacheの方でも制限なかったか?>サイズ
うろ覚えだけど。

あーあとPHPでも複数制限があったような気がする。
0889nobodyさん03/03/18 18:54ID:???
ログになにか出てないかい?
あとmemory_limitも見たいところだね。
0890nobodyさん03/03/18 20:39ID:???
memory_limitは設定してもphpinfoでは表示されてないです。
Apacheの設定ってのも関係あるかも知れませんね。
調べてみます。
レスありがとうございました。
0891nobodyさん03/03/18 23:04ID:???
>>884
inputのhidden渡ししてる、MAX_FILE_SIZEの値が影響してるってことない?
Apacheの方はLimitRequestBodyディレクティブをデフォルトから変更してると影響するみたいやね
http://cvs.apache.jp/apache-ja/manual/mod/core.html#limitrequestbody
0892nobodyさん03/03/19 00:28ID:???
>891
外野からだが参考になった。
LimitRequestBody ディレクティブは、指定されたコンテキスト (サーバ全体、ディレクトリ、ファイル、ロケーション) 内において HTTP リクエストメッセージボディの許容されるサイズに制限をかけることができます。
089389103/03/19 01:09ID:???
MLのスプール読んでたら同様の指摘が…もはや本家ではFAQだそうな。
なんかシンクロニティ
0894初心者03/03/20 00:35ID:???
あのさ、$_POST['hogehoge']の中身を抹殺するのってどうやるのかな?

<form method=post action='index.php'>
<input type=text name='hogehoge'>
</form>

ってやって index.php が表示されたときに
ブラウザの再描画ボタン押したらもう一度$_POST['hogehoge']送信
されちまうじゃん。

普通こういうのってどうやって処理してる?
0895初心者03/03/20 00:36ID:???
age
0896nobodyさん03/03/20 00:39ID:???
>>894
POST後、refreshしておく。
0897初心者03/03/20 00:48ID:???
>896
refresh関数なんかないけど・・・
もしかして unset($_POST['hogehoge'] ) をいってますか?

やってみて下さい、無駄ですから。
0898nobodyさん03/03/20 00:50ID:???
header('Refresh: 1, URL');
0899初心者03/03/20 01:09ID:???
>898
ぅぉ!出来た!!

さんくすでしたmOm
0900nobodyさん03/03/20 01:26ID:???
>>896,898
偉いねぇ
0901nobodyさん03/03/20 01:37ID:???
何気に邪道な気もしないでもないが。
phpってこういった機能は実装しないのかなぁ
0902nobodyさん03/03/20 02:15ID:???
>>901
HTTPのレスポンスヘッダを全て関数に実装するのもどうかと思うが(w
0903nobodyさん03/03/20 02:18ID:???
>902
違う違う、一度与えた$_変数の有効期間を設けるとかそういう類の
関数って意味。
sessionと併用したスコープなんてのがあれば実現出来そうな気が
するんだけどなぁ。。
0904nobodyさん03/03/20 02:32ID:???
タブと ;; 区切りの文字列をlist()にぶち込みたいのですが、
;; のほうが二文字だからか、上手く機能してくれません。。

いったいどうすればいいんでしょうか?
マニュアル見る限り出来そうなのはわかるんですが・・
0905nobodyさん03/03/20 02:48ID:???
>>904
何を試してみたか書いたほうがいいよ。
preg_split使ってみた。
$array = preg_split("/::|\t/",$str);
0906nobodyさん03/03/20 02:49ID:???
ん、split('(\t|;;)',$str);でいいんでつね・・(´Д⊂ヽ
文字列分割系の関数いっぱいあってようわからん、、(´Д⊂ヽ

板汚し失礼しました
0907nobodyさん03/03/20 02:52ID:???
>>905
あう、時間差ごめんなさい汗
explode()とsplit()で頑張ってたんですが、
preg_split()のマニュアルページ見てるとgoodな例文あったのでそれで何とかなりました・・ありがとうございますっ
0908nobodyさん03/03/20 14:11ID:usTHLNmu
//----------------
// time()
//----------------
$t = time();
$timestamp = mktime('','','',date("j", $t),date("n", $t),date("Y", $t));
$yy = date("Y", $timestamp);
$mm = sprintf("%02d",date("j", $timestamp));
$dd = sprintf("%02d",date("n", $timestamp));

print "time = $yy/$mm/$dd";

と

//----------------
// getdate()
//----------------
$nowtime = getdate();
$year = $nowtime["year"];
$mon = sprintf("%02d",$nowtime["mon"]);
$mday = sprintf("%02d",$nowtime["mday"]);

print "gettime = $year/$mon/$mday";

実行すると

time = 2004/03/08
gettime = 2003/03/20

なんでtime()の方は違うんだ?
レス数が900を超えています。1000を超えると表示できなくなるよ。