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

【PHP】初心者コーナー 

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。02/01/21 03:21ID:???
長島も阪神のコーチになった。
仕方ない、人気のないPHPを応援してやる。 

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

 >>2-9 誰か情報かいてくれ。
0136nobodyさん02/10/22 22:06ID:???
>>134
【PHP】初心者コーナー では、
PHPの初心者クラスのアホな質問を受け付けております。

PHP + MySQL
http://pc.2ch.net/test/read.cgi/php/983250751/l50

PHP + PostgreSQL
http://pc.2ch.net/test/read.cgi/php/983128806/l50
0137nobodyさん02/10/23 19:59ID:???
例えば

$count = 動的パラメタ...として


for($i;$i<=$count;$i++){
print '<input type=text name=count_'.$i.'>input_'.'$i.'<br>';
}

...で複数のテキストフィールドを動的に作った場合
このテキストフィールドのパラメタを全て回収するには
どすればよいでしょうか?
0138nobodyさん02/10/23 20:48ID:???
動的パラメタって数値なんすか?
forで回してるから$countは123・・・順の最高値なんすか?
<input type=hidden name=count value=$count>で渡して、
受けたら$count以下のを扱うとかいうのは違うすか?
つか、何がしたいのかさっぱりわかりませんずら。詳細キボンヌ
0139hmk02/10/24 00:38ID:???
>>137
私なら、配列を使います。例えば、

<?php for ($i = 1; $i <= $count; $i++) { ?>
<input type="text" name="cnt[<?php echo $i; ?>]">input_<?php echo $i; ?><br>
<?php } ?>

このようなフォームにしておけば、

<?php
for (reset($cnt); list($k, $v) = each($cnt);) {
// このようにして後で回収できます。
}
?>

138の言うようにhiddenで最大値を渡してもできる。
用途に応じて、使いやすい方法でいくのがよいでしょうかね。
014013702/10/24 10:40ID:???
>>137-138
レスどもです。
わたしの意図するところは伝わったようですが
自分なりの常識を押し付けるような書き方になってしまいました。
反省してます。

念のため
php のversion は4.2.3
php.ini のregister_grobals=Off
そのため、フォームから渡されたパラメタは
$param_name=$HTTP_GET_VARS['param_name']
で回収する必要があります。
当初、これをfor でまわして

for($i=1;$i<=$count;$i++){
$param_name[$i]=$HTTP_GET_VARS['param_name[$i]']
}

とできると思ったのですがダメでした。
外部フォームからの変数が格納されている配列
また、その配列から要素を抜き出す方法を教えてください。
0141nobodyさん02/10/24 11:10ID:???
PHPはFORMのnameに配列が使えます。
<form action="<?=$_SERVER[PHP_SELF]?>">
<?php
$count = 10;
for($i = 0;$i<=$count;$i++){
print "<input type=text name=param[]>input_".$i."<br>\n";
}
print '<input type="submit"><br>'
for($i = 0;$i<=$count;$i++){
print "param".$i."=".$_GET[param][$i]."<br>\n";
}
0142nobodyさん02/10/26 20:59ID:???
PHPでBBSを作ろうと思い、
勉強するために本を買おうと思ってるのですがPHP3なんです。
「プロフェッショナルPHPプログラミング」という本なのですが。
しかしサーバーがPHP4なので大丈夫かな?と思い質問させていただきました。
0143nobodyさん02/10/27 09:48ID:???
>>142
その本PHP4.0.4で動作確認してるって書いてるよ。おすすめかも。
おれならマンモンス本の赤と青を買うな。
詳しくしりたいなら -> PHP関連の書籍(但しPHP出版系お断り)
http://pc.2ch.net/test/read.cgi/php/985315574/l50
0144nobodyさん02/10/28 15:24ID:uGqL/qit
PHPでデータをファイルに保存するとき、
普通のテキストファイルよりもデータベースファイルに保存した方がいいんでしょか。
管理し易いとか速いとか。。。
0145nobodyさん02/10/28 18:42ID:b7KIhGgz
>>144
データの出し入れはデータベースの方が圧倒的に便利です。
014614402/10/28 18:47ID:uGqL/qit
厨な質問でスマソ
データベースファイルを扱う場合、
やっぱりMySQLとかインストールしないと無理なんですか。
0147nobodyさん02/10/28 19:02ID:???
当 た り 前 だ の ク ラ ッ カ ー
0148nobodyさん02/10/28 22:02ID:???
お そ れ 入 谷 の 鬼 子 母 神
0149nobodyさん02/10/28 22:03ID:???
>>146
PHPが無くてもPHPは動きますでしょうか?無理なんですか。


        当 た り 前 だ の ク ラ ッ カ ー

0150nobodyさん02/10/28 22:28ID:???
厨な質問でスマソ
ホワイトベースを扱う場合、
やっぱりブライト艦長とかインストールしないと無理なんですか。
0151nobodyさん02/10/29 02:21ID:???
>>150
さむっ。
0152○02/11/02 16:40ID:sGSys/RS
PHPメールで受信したデータをオートで送信するのは可能ですか?
0153nobodyさん02/11/02 18:08ID:KWT88uG8
>>152
「PHPメール」って、何?
0154名無し募集中。。。02/11/03 01:13ID:dBGKbheQ
リア厨ですいません。
「if」をつかって、日ごとに違う文章を表示させたいのです。

もし「11/03」ならば「今日は11月3日なわかけだが」
もし「11/04」ならば「今日もお休みで(・∀・)イイ!!」
もし「11/05」(略


表示させる文章は自分で適当に書くだけです。
ようは、日付を使ってどうやって「if」を使えばいいかを知りたいのです。

よろしくおねがいします☆ミ
0155nobodyさん02/11/03 02:18ID:pFxZ0WjN
PHPのソースを秘密にして、配付する方法はありますか?
0156nobodyさん02/11/03 02:55ID:???
>>155
Zend Encoder 使えばできるよ。
ただし $2400
初心者と言うか貧乏人には無理です。
0157nobodyさん02/11/03 03:04ID:???
>>156
教えてくれて、ありがとう。お金持ちになりたい…。
0158nobodyさん02/11/03 03:43ID:???
>>155

秘密にする必要があるくらいスンゴイのが作れるなら
キミはきっと金持ちになれるよ。
0159nobodyさん02/11/03 03:53ID:???
>>158
別にすごいから秘密にしたいってわけじゃないよ。
2chに書き込みをするスクリプトなんだけど
いたづらで悪用されたら、こまるから、
秘密にできたらいいなって思ってん。
0160nobodyさん02/11/03 04:17ID:???
>>159
> 2chに書き込みをするスクリプトなんだけど

悪用以外に用途が思い浮かばない。
0161nobodyさん02/11/03 04:19ID:???
>>160
えー嘘やん。そんなん、もう公開してるし、どうしよう。
0162nobodyさん02/11/03 04:20ID:???
フリーでエンコード出来るやつがあった気がする
ただZend Encoderと違って速くはならないらしいけど
0163nobodyさん02/11/03 04:53ID:???
>>162
APC (ALTERNATIVE PHP CACHE) というのかな?
でもこれって実行側で環境をインストールせやなあかんみたい。
これやと逆にユーザ対象が狭まれ過ぎて、配付する意味がなくなるわ…。
それに少し古いみたいで、惜しい。
0164nobodyさん02/11/04 22:59ID:???
質問させていただきます〜bbsなスクリプトを作ってます。

./foo.php  (メインファイル)
./subject.txt  (現在存在するログファイル名が書いてある。 一行に一個。)
./dat/xxxxxxxx.dat  (subject.txtに書いてあるログファイル)

subjectのarray[i]を読んで、そこに書かれてるxxxxx.datてゆーのをdatディレクトリから探して表示、
を繰り返すわけなのですが、、、、

Warning: file("./dat/1036411589.dat ") - Invalid argument in 〜
とゆーような感じでdatのあとに半角スペースが入ってしまうんです。 よって読めないと。

ereg_replace()してもダメでした・・・
配列の仕様ってヤツなのでしょうか? そして回避法はあるんでしょうか?
お願いします。
0165nobodyさん02/11/05 10:20ID:iexiejZJ
subject.txtの内容をfile()で配列にしているのなら、
もう一度、マニュアルを読んでみよう。
file()は、\nを除去しないと書いてあるよ。
よって、trim()でもつかうのがよろし。
016616502/11/05 10:24ID:iexiejZJ
>>164
あと、subject.txtに「表示させたいログファイル名」ではなくて、
「現在存在するログファイル名」だけがかいてあるのなら
./dat/を直接readdir()した方が楽でない?
0167名無しさん02/11/05 16:04ID:???
>>163
CVSから最新版とってこれたような。
0168nobodyさん02/11/05 16:50ID:???
>>167
pear/PECL/APCに最新版があるヨ

pear/PECL/APC Cache機能
pear/PECL/APD Debug機能というかプロファイラ
pear/PECL/OPC Optimizer機能(今日レポジトリが出来たみたい-まだ枠組みだけだけど)

これからが楽しみ :)
0169nobodyさん02/11/05 16:59ID:???
>>165-166
ありがとうございます!

> 改行記号はついたままと なります。
て書いてましたね・・汗
ついでにtrim()の存在も知らなかったので大変勉強になりました〜! ありがとうございました!
017016402/11/05 17:03ID:???
レス漏れ
readdir()ってディレクトリの見えないディレクトリで使えるかどうか分からなかったので頭に入れてなかったっす。
あとでちょっち試してみます。
0171nobodyさん02/11/05 18:02ID:WIPa8/Vj
文字列をPOSTで別のPHPスクリプトに送るとき
半角スペースや「"」などの文字が含まれているとそれ以降が消えてしまいます
addslashesを使って「\"」にエスケープしても「\\」と文字化けします
どうやってデータを渡せばよいのでしょうか?
0172nobodyさん02/11/05 20:25ID:Dn6gflHK
>>171
php.iniでmagic_quotes_gpcがonになっていると、
COOKIE,POST,GETで渡された値の中の
これらの文はは勝手にエスケープされる。

ので、
php.ini でmagic_quotes_gpc = off
にするか、
.htaccessで
php_flag magic_quotes_gpc off
にする。

あと、stripslashes() という函数もあったような;
0173nobodyさん02/11/05 20:55ID:WIPa8/Vj
>172
すみませんちょっと説明不足だったようですが
勝手にエスケープされたものをstripslashes()で取り除いても
正常に受け渡しができなくなります。
「aaa"bbb"」→POST→「aaa」
「aaa\"bbb\"」→POST→「aaa\\」
フォームからは正常にエスケープされた文字列が受信できます
環境がおかしいのでしょうか?
対策としては正常に受け渡しできる文字に置換して
受信側で元の文字に戻すということですけど・・・
0174nobodyさん02/11/05 21:28ID:???
PHPのVerが4.2.3の場合はバグ
0175nobodyさん02/11/06 01:26ID:EhYZ0bVt
PHPを1から始めたいのですが、何から始めればよいですか?
サーバースペースはまだ探していないので、local環境で始めてみたいです。

OSはWindows2000かLinux(Red Hat)です。

とりあえずwin2kでやってみようと思って、
phpdevやphpのインストーラ(win用)は落としてみたのですが、
使い方がいまいちわかりません。

初心者は何から始めればよいのでしょうか?
0176nobodyさん02/11/06 01:31ID:???
>>175
ApacheかIISかAnHTTPD
017717302/11/06 07:19ID:yWgDH7Dp
>174
4.2.2に戻してみましたがかわりませんでした・・・
0178PHP ◆DQN/AO/IPw 02/11/06 09:25ID:???
>>175
PHPは1から始めるよりも4から始めた方がいい。
017917302/11/06 17:19ID:???
やっと自己解決
htmlspecialcharsで変換してPOSTすれば
消えずに送信できました
0180nobodyさん02/11/07 11:41ID:QEt0uw4x
PHPでPerlのHTML::Templateみたいなライブラリってないでしょうか
単純な置き換えだけでなくてIFとかLOOPとかあるような・・・
0181nobodyさん02/11/07 11:59ID:Go7yQUbZ
>>180
while (hoge) {
?>
aaaa
<?php
}
0182nobodyさん02/11/07 12:29ID:???
>>180
Smarty
0183nobodyさん02/11/08 01:14ID:Veqht0/Q
>>175
PHPを始めたいとのことですが、やはり「なぜPHPを始めるの?」
という質問に答えられるかどうかがポイントではないでしょうか?
その答えがご自分の中にあるのであれば、それに必要な処理や道筋を
立てて、そのプロセスに必要な関数や仕組みを試行錯誤でやることです。
そうすれば、徐々に覚えることができます。
0184nobodyさん02/11/09 07:47ID:???
Webサイト制作初心者スレで質問したところ、こちらで聞いてみろと
促されたので質問させて下さい。↓は初心者スレからのコピペです。

現在、XHTMLで表示部分を記述しているCGIスクリプトが少ないので
自分でスクリプトを作ってみようと思っています。しかし、色々と
検索しているとPerlよりもPHPの方が動作も軽くていいようなので
PHPでスクリプトを作ろうかと思ったのですが、HTML(XHTML)以外
知らない人間がいきなりPerlではなくPHPを覚えようというのは
無謀なのでしょうか?下らない質問ですみませんが教えて下さい。

#Jsは多少知っています。
0185nobodyさん02/11/09 10:59ID:X+rmQU/4
>>184
こういう本で勉強
http://www.gihyo.co.jp/books/syoseki.php/4-7741-1321-2

そのあとはPHPのオンラインマニュアルを見れば簡単に書ける

何事も基礎が大事
0186nobodyさん02/11/09 11:14ID:E2/H+5gT
>>184
PHPとても簡単
0187nobodyさん02/11/09 11:24ID:???
>>185
>何事も基礎が大事
言われて納得。確かにそうですよね。ありがとう御座います。
PHPやPerlの前に基礎の基礎をしっかり固めたいと思います。
0188連続ですみません02/11/09 11:26ID:???
>>187
そう言えるように頑張ります。
0189nobodyさん02/11/09 11:39ID:rznkVAE5
どこで訊いて良いのか判らないので取り敢えずここに来ました。
サイトを見るのにパスワードとユーザ名を要求されるようになってしまいました。
知らないうちに会員制に移行してたらしいのです。
こうなった以上、もう見るのは不可能なんでしょうか?
0190nobodyさん02/11/09 12:14ID:???
会員になれば閲覧できるでせう。
0191nobodyさん02/11/10 11:26ID:QiAM6QEO
if(eregi("(サポート)", $name)){
echo '管理人の名前は使用できません。';
}

サポートと言う文字を入れると
Warning: REG_EBRACK: in C:\test.php on line 296
みたいなエラーが出るのですがなんででしょうか?
管理人やWebmasterではちゃんと表示されるんですが。
0192nobodyさん02/11/10 11:29ID:???
Shift_JISだと「ー」でひっかかったりするけど
019319102/11/10 12:27ID:???
>>192
どうやら長音記号「ー」のせいみたいですね。
メーリングリストに同じような話題が出ていました。
http://ns1.php.gr.jp/pipermail/php-users/2001-December/004497.html
019419102/11/11 05:10ID:???
stristr関数を使えばとりあえずOKだって事にさっき気が付きました。
0195nobodyさん02/11/22 03:31ID:klMrTIO/
質問です。例えば
SELECT CODE, NAME FROM TABLE1 ORDER BY CODE
とポスグレに流したら、100件帰ってきます。

PHP3で pg_Result($rtn, 80, name)ってすると、80番目が帰ってきますよね。
この時、ポスグレのカーソルは先頭から80回フェッチしているんですか?
0196nobodyさん02/11/22 11:25ID:???
perlから移行中なんですが、ちょっと疑問があります。
print と echo は、まったく同じものでしょうか?
ちょっと違うのかな? 
どっちでもいい事かもしれませんが気になりまして
0197nobodyさん02/11/22 12:31ID:???
>>196

激しく既出。
0198nobodyさん02/11/22 12:55ID:???
>>197
おい、既出みたけど答えになってないぞ。
気になるな。
0199nobodyさん02/11/22 13:01ID:???
だって、このスレは初心者が答えてるんだもん。
0200nobodyさん02/11/22 14:15ID:???
>>196
echo がいいと思う。
たぶんprintとechoの挙動が違うのは連結の時違うと思います。
0201nobodyさん02/11/22 14:46ID:2PtBJ1DA
>>196
printは関数。echoは文
echoは()がいらないので多用している。
0202nobodyさん02/11/22 16:22ID:???
printも()いらんでしょ?
0203nobodyさん02/11/22 16:25ID:???
> print()は実際には関数では(言語構造です)ありません。
> このため、引数を括弧で括る必要はありません。
http://www.php.net/manual/ja/function.print.php
0204nobodyさん02/11/22 16:30ID:2PtBJ1DA
>>202-203
そうだったのか。そうしたら ますます両者の違い側下欄。
0205bloom02/11/22 16:30ID:ouswKb0x

http://www.agemasukudasai.com/bloom/
0206nobodyさん02/11/22 16:35ID:???
Perlから移行する人もいるし、いろいろな方法を提供しているだけでは?
Cのprintfも使って良いわけだし。
0207nobodyさん02/11/22 16:38ID:???
内部レベルまで考えると違うのかもしれんが
このスレタイのようにいわゆる初心者ならば
どれを使っても変わらないだろう。
0208nobodyさん02/11/22 16:44ID:???
>>204
echo print "test data\n";
してみ。
echo echo "test data\n";
も試してみれ。

if(!print("stdout check OK!")) die();

0209nobodyさん02/11/22 18:28ID:???
System.out.println("stdout check OK");
0210version02/11/22 21:56ID:+Mj4l0eA
PHP4.2.3をPHP4.2.2にバージョンダウンさせたいのですが、
どうすればよいか分かりません。
Red Hat Linux 7.2にPHP4.2.3をソースからコンパイルして
インストールしました。それで、本を買って、さぁ勉強しよう
と思ったら、その本がPHP4.2.2の本だったので、
同じバージョンにさせたいのです。
この場合ってどうすればよいのでしょうか?インストールされた
ファイルを探し出して、全部削除とかしてから4.2.2をインストール
するのですか?教えてください。
0211PHP ◆DQN/AO/IPw 02/11/23 00:15ID:???
<?php
/* echo の方が早いね */

function getmicrotime(){
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
$str = "De man cyaan seh dat, aya.\n";

$start = getmicrotime();
echo "<span style=\"display: none\">";
$i = 0;
while ($i < 50000) {
echo $str;
$i++;
}
echo "</span>";
echo "echo: <b>". (getmicrotime() - $start) ."</b><br>\n";

$start = getmicrotime();
echo "<span style=\"display: none\">";
$i = 0;
while ($i < 50000) {
print $str;
$i++;
}
echo "</span>";
echo "print: <b>". (getmicrotime() - $start) ."</b><br>\n";

/* ローカルでテストしてね*/
?>
0212マニュアル嫁 君02/11/23 00:22ID:eY1CU9cS
http://jp.php.net/echo
0213nobodyさん02/11/23 13:54ID:???
どうもPerlの癖でついついPrint書いちゃいますね。
echoのほうが良さそうなのでecho使うようにします。
0214nobodyさん02/11/23 16:53ID:dkREGMIE
FORMタグを使ってPOSTメソッドで通信

PHP では入力された値は直接変数に格納されます。これはPOSTデータも
GETデータも、Cookie データも、FORMも同じです。

その変数は連想配列です。
$HTTP_POST_VARS
$HTTP_GET_VARS
$HTTP_COOKIE_VARS
0215nobodyさん02/11/23 18:44ID:???
何が言いたいのか。
0216nobodyさん02/11/23 20:33ID:UbdTqBEx
PHP触ったことないです。
これから触ってみようと思うのですが
個人でPHP学ぼうと思ったらWEBサーバーが必要なんでしょ?
みんなレンタルサーバーとか使ってんの?
それともインターネットのプロバイダがPHPサポートしてんですか?
スタンドアローンでうごかしてるとか・・・
0217nobodyさん02/11/23 20:53ID:???
>>216
初心者スレだから答えてあげると、
・apacheをインストール
・PHPをインストール
これでローカルで動かせる。
具体的な設定方法は検索すればわかるでしょう。
021821602/11/23 21:02ID:UbdTqBEx
>>217
やっぱりそうですか
実は私もServletをスタンドアローンで動かしてる・・・
0219nobodyさん02/11/23 21:03ID:u57L3WN3
「PHPをCGIモードでインストール」ってどういう意味なんでしょうか?
0220nobodyさん02/11/23 21:40ID:???
>>219
そのまんまでしょ。
意味がわからないならCGIとは何かを勉強する必要がある。
mod_phpとかmod_perlも一緒に調べるとよくわかると思う。
0221nobodyさん02/11/23 22:09ID:dkREGMIE
PHPでgetメソッドを使って通信したい
0222nobodyさん02/11/23 22:10ID:???
初心者さんでもマニュアルすら読まない人は助けてもらえませんよ♪
0223nobodyさん02/11/23 22:27ID:???
PHP日本語マニュアル
http://jp.php.net/manual/ja/
0224nobodyさん02/11/23 23:13ID:???
phpは、HTMLに埋め込んでだいたいは使いますよね。
また、完全CGI(HTMLへの送受信をしない?)として使えますよね。
何が言いたいんだ?

普通は
HTML+php (掲示板などへの書き込み)→php鯖で処理してその結果を→HTML+phpに表示

postメソッドなどの通信
post/getで通信 →php鯖で処理してその結果を →post/get?で通信
0225nobodyさん02/11/23 23:19ID:???
アタマ整理してから書き込んでね♪
0226nobodyさん02/11/24 00:10ID:???
初心者が質問し、初心者が解答する
0227nobodyさん02/11/24 00:20ID:???
formを受け取るかどうかはphp.iniで設定出来るんですよね?

php.iniの設定が書いてるWebサイトキボンヌなのです
0228nobodyさん02/11/24 00:34ID:???
formを受け取んないのか?
0229nobodyさん02/11/24 00:43ID:???
ついでなのれす

グローバルレジスターくらいいじれりゃ十分やけど。。
0230nobodyさん02/11/24 00:45ID:???
>>229
は?
0231nobodyさん02/11/24 00:55ID:???
register_glovals = On
0232nobodyさん02/11/24 02:32ID:???
電波が棲みついたな。
0233nobodyさん02/11/24 09:20ID:???
は?には(゚д゚)ハァ?を
0234nobodyさん02/11/24 13:28ID:???
PHPって演算子のオーバーロードとか出来る?
無くても別に困らないんだけど、気になったので・・・
0235nobodyさん02/11/25 00:32ID:???
>>234
困らないんだったらマニュアルみ。
http://jp.php.net/manual/ja/
0236nobodyさん02/11/25 05:45ID:???
元質者じゃないが、
いつのまにオーバーロードをサポートしてたんだ・・・・?
つかサンクス>>235 & マニュアル嫁>>オレ
エセOOつかえねーと思ってたが、PHP5も楽しみだな
■ このスレッドは過去ログ倉庫に格納されています