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

【PHP】質問スレッドpart17【php】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/05/17 17:14ID:AT+bUkag
・PHP全般の質問スレです。
・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。


■本家
 http://www.php.net/

■日本 PHP ユーザ会
 http://www.php.gr.jp/

■PHP マニュアル
 http://www.php.net/manual/ja/

■PEAR マニュアル
 http://pear.php.net/manual/ja/

過去スレ, 関連スレ等>>2-4


抜けているものがあったら補足願います
0002nobodyさん04/05/17 17:16ID:AT+bUkag
・過去ログ

Part1 : http://ebi.2ch.net/php/kako/982/982687820.html
Part2 : http://pc.2ch.net/php/kako/1003/10032/1003283567.html
Part3 : http://pc.2ch.net/php/kako/1013/10139/1013919792.html
Part4 : http://pc.2ch.net/php/kako/1022/10229/1022999539.html
Part5 : http://pc.2ch.net/php/kako/1031/10317/1031721334.html
Part6 : http://pc5.2ch.net/php/kako/1038/10389/1038988518.html
Part7 : http://pc5.2ch.net/php/kako/1044/10444/1044478561.html
Part8 : http://pc5.2ch.net/php/kako/1050/10502/1050249148.html
Part9 : http://pc5.2ch.net/php/kako/1057/10579/1057947512.html
Part10: http://pc5.2ch.net/php/kako/1064/10641/1064104114.html
part11: http://pc5.2ch.net/php/kako/1067/10676/1067635640.html
part12: http://pc5.2ch.net/test/read.cgi/php/1070639208/
part13: http://pc5.2ch.net/test/read.cgi/php/1073291978/
part14: http://pc5.2ch.net/test/read.cgi/php/1076163015/
part15: http://pc5.2ch.net/test/read.cgi/php/1078592587/
part16: http://pc5.2ch.net/test/read.cgi/php/1081267619/

※前スレからの引用修正
0003nobodyさん04/05/17 17:16ID:AT+bUkag
・関連サイトなど


2ch Pear Wiki
http://pear.sakura.vg/

PHP Kitchien
http://www.phpkitchen.com/

PHP Developer
http://www.phpdeveloper.org/

phpPatterns
http://phppatterns.com/

Perl/PHP Translation
http://www.cs.wcupa.edu/~rkline/perl2php/
0004nobodyさん04/05/17 17:17ID:AT+bUkag

・参考スレとか

質問される方は聞く前に調べたほうが良いと思われます。


2ch 総合ガイド
http://www.2ch.net/guide/


CGIに関する質問はこちらで
[CGI: Common Gateway Interface part 11 ]
http://pc5.2ch.net/test/read.cgi/php/1055597189/l50


CGIとPerlの区別がつかない方はこちらも
[△▲ WebProg 初心者の質問 Part8 ▼▽ ]
http://pc5.2ch.net/test/read.cgi/php/1078568723/


※過去ログに行っている場合がありますので、
見れない方は同じような名前の板を探してください
0005nobodyさん04/05/17 21:56ID:???
PHP5!!
0006nobodyさん04/05/17 22:39ID:???
>>1乙
0007104/05/17 22:57ID:???
  ☆  P  H  P  5  ☆
http://pc2.2ch.net/test/read.cgi/php/1056969979/

Pear
http://pc2.2ch.net/test/read.cgi/php/985665522/

【PHP】Smarty【Template】
http://pc2.2ch.net/test/read.cgi/php/1047225437/

■PHP関連の書籍(但しPHP出版系お断り)
http://pc2.2ch.net/test/read.cgi/php/985315574/


見落とした...。
前スレからのコピペだけどアドレスこれで合ってる??
0008nobodyさん04/05/18 00:01ID:???
>>7
PHP5のスレ間違ってる
0009nobodyさん04/05/18 04:30ID:???
最近PHP+MYSQLをはじめたというか、プログラム自体初心者にちかいのですが
require( 'config.php' ); //$db_host user passのデータ
$dname='create'; //データベースname
$dtable = 'test'; // テーブルname
$fname = 'name'; //フィールドname
$data = 'data'; //DATA
$db=mysql_connect($db_host,$db_user,$db_pass)
 or die("error [$db]");
$check=mysql_select_db($dname);
if(! $check){
 print ("{$dname}を作成しました<br>");
 $check=mysql_select_db($dname);
}
$test = mysql_query("SELECT $fname FROM $dtable WHERE name='$data'");
if (!$test){
 mysql_query("CREATE TABLE $dtable ($fname varchar(50) NOT NULL default '')");
 print("テーブル作成<br>");
}else{
 $rows = mysql_num_rows($test);
}
if ($rows <= 0 || !$test){
 mysql_query("INSERT INTO $dtable ($fname) VALUES ('$data');");
 print("レコード作成<br>");
}
mysql_close($db);
てな感じでデータベースが無ければ作成しテーブルやレコードもなければ作成するというのを試しに作ってみたのですが、
望む結果は得られましたがこんな感じでいいのでしょうか?
よい見本などがみあたらず手探りで作ってみたので非常に不安です。
あと、もっと複雑なデータベースを作りたいときに外部のSQLファイルを読み込んで作成とかさせる場合どうしたらいいのでしょうか?
0010nobodyさん04/05/18 06:31ID:jcKTntda
ショッピングカートを設置しようと思い、
ttp://syokunin.no-ip.org/で配布されてるweb_cart 1.02を落としました。
手順に従って設定して、設置はできたんです。
試しに注文してみたら注文者側には確認メールが届いたんですけど、
こっち(発売側)にはメールが届かないんですよね。。。
よくよく設定ファイルを見てみたら、
メールフロムという箇所しか、メールを設定するとこがないんです。
どうやったら、発売側にメールが届くんでしょうか。。。
どなたか解る方、いらっしゃいましたら、ご教授願います。
0011nobodyさん04/05/18 07:07ID:???
>>10
それだけの情報で、ここで解決を求めるのは無理。
然るべき場所にサポート情報を求めるか、誰か雇って解決しる。
0012nobodyさん04/05/18 07:11ID:???
>>9
何を作ってるのか・作りたいのかにもよるけど
一般的にはテーブルはあらかじめ作っておくもの
あなたが何を知りたいのかがよくわからないけど
文章から察するにもうちょっとDBをどうやって扱うか、
どういうものなのかっていうのを調べた方がいいような気がする
0013nobodyさん04/05/18 07:14ID:???
>>10
ttp://syokunin.no-ip.org/setumei/settei_php.htm
注文者が入力したアドレスと同時に、$mail_fromに設定されている
アドレス(店側)にもほぼ同じメールを送信する仕様っぽい。
その辺はちゃんと設定してあり、かつ受信できるようになってる?


・・・と言うか板違いだ(゚Д゚ )ゴルァ!!
0014nobodyさん04/05/18 07:22ID:???
早起きしたんで暇つぶしにダウンロードして中を見てみたんだけど、
ぱっと見た感じ $mail_fromに設定すれば動くはずだよ。
同じ場所でTo:違いのメールを2通送信しているので片方が届いていれば鯖のメール設定も問題なさそうだし。
ああ、リロードしたら先に書かれてるよ...鬱だ寝よう...
00151004/05/18 07:31ID:jcKTntda
朝から板違いスマソ。。。
サーバーのPHPのバージョンが4みたいなんだけど、
それのせいでしょうか?
$mail_fromの箇所をhotmailに設定してみたんだけど、全然届きません。
ウワァァァァァァヽ(`Д´)ノァァァァァァン!
00161004/05/18 07:47ID:???
自己解決しました。
どうやらhotmailのせいでした。。。
プロバイダから割り当てられたメアドで試したところ、
ちゃんとメールが帰ってきました。
板違いすいませんでした。。。
m(_ _)m
>>13 
>>14
ありがとうございました。
0017nobodyさん04/05/18 12:49ID:???
>>13,14
わざわざ個別アプリケーションの内容まで調べて面倒みてやってるのか、、すげぇな。
0018904/05/18 13:38ID:???
>>12
何がつくりたかというかというと、遠い道のりですが最終的にはXOOPSとかみたいなかんじで
使う人があまりDB意識せずつかえるものをつくりたいと

まずは初心者らしく
てはじめにカウンターをとおもい、MYSQL使わないものと使ったものを作り
その後ipとusernameとpassword設定しておけば
データベースやテーブル、レコードなどを自動的に作るようなカウンターにしてみたいなと思い
テーブルやレコードなどがあるか?無い場合の作成はどうすればいいのか?
を調べる意味でつくってみましたが
一般的な方法としてはどんな方法があるのかきになりまして。。
0019nobodyさん04/05/18 13:51ID:???
>18
勉強の一環として試しに作ったのであればいいんだけど
そのソースを発展させて作り上げていくつもりなら
通常のDBアクセスと、DB構築の処理は切り分けておくべき。

一番無難なのはDB周りの処理を1つまたは複数のクラスとしてまとめて、
DB構築部分は、install/install.phpのようなスクリプトにしておく。
あとは初期化時に直接install.phpを手動で開くようにしてもいいし、
index.phpなどからinstall.phpにLocationで飛ばしてもいい。

XOOPS含め大抵の物はこういった手法でやってるよ。
先人が残してくれてるソースコードを参考にしなきゃ損々。
0020名無しさん@お腹いっぱい。04/05/18 14:48ID:w7i8F8Vx
echo $hoge[$i][1];
echo "$hoge[$i][1]";

上だと値がちゃんと表示されます。
下だとArray[1]表示されてしまいます。
""で囲った形で値を表示するにはどうすりゃよいでしょうか?!
0021nobodyさん04/05/18 14:51ID:???
echo "{$hoge[$i][1]}";
00222004/05/18 15:07ID:???
なるほど。できました。
ありがとうございます。
0023nobodyさん04/05/18 15:12ID:???
マニュアル読もう
ttp://jp.php.net/manual/ja/language.types.string.php#language.types.string.parsing.complex
0024nobodyさん04/05/18 21:30ID:???
PHP(コマンドラインではなくwebアプリとして使用)から
外部コマンドを非同期で呼ぶ方法を教えてください。
時間のかかる夜間バッチを、PHPの画面からボタンをクリックして
起動するようなイメージです。
当然バッチの戻りを待つ必要はありません。

環境
RedHat 9 / PHP 4.3.5 / apache 1.3.29

exec() 等で起動したいコマンドを指定すると、起動したコマンドが終わるまで
PHPが待ってしまいますが、どうやったら待たずに、即座にPHPに処理を戻せますか?

調べたところ、下記のようにコマンドの標準出力を /dev/null にリダイレクト
させるとうまくいきましたが、これしかないのでしょうか?
exec("batch.sh > /dev/null");

下記にも似たようなことが書いてありました。
http://ns1.php.gr.jp/php-jp/archives/msg07476.html
http://www.php.net/manual/ja/function.exec.php

exec("batch.sh &");
ではうまくいきませんでした。
0025nobodyさん04/05/19 00:02ID:???
htmlがShift-JISに設定してあって
FormからpostでUTF-8の日本語ファイルを選択(ここまでは正常)してsubmitすると$_FILEで取得した日本語ファイル名が空白(NUL)になってしまいます。

なんででしょーか? $_POSTを試してみます。
0026nobodyさん04/05/19 01:42ID:???
reloadボタンが押されたらインラインフレーム内に$_POST['reload']を渡して再読み込み
させているのですが、再読み込みをするとインラインフレームの中が全画面で表示されてしまいます。
インラインフレームの定義を保持したままでリロードする方法を教えてください。
0027nobodyさん04/05/19 02:01ID:???
>>25
ファイル名が空白?ちゃんとファイルがPOSTされてるのは確かなの?

>>26
Javascriptでインラインフレーム内のフォームにPOSTさせるとか
0028nobodyさん04/05/19 02:28ID:???
ファイル名はactionで指定していますが何故でしょう、出来ません。

JavascriptからPHPへの受け渡して経験ないんですが、それにしてみます。

0029nobodyさん04/05/19 09:30ID:???
target間違えてない?
00302504/05/19 13:02ID:???
>>27
ファイル名の最初が日本語だと「日本語」がカットされます。
例 あいうえお.zip

ポストすると
.zip(2000Pro+IE6)
NUL(OSX10.3+IE5.2)
NUL(OSX10.3+サファリ)
あいうえお.zip(OSX10.3+モジラ)
あいうえお.zip(OSX9.2+IE5.1)

などなど

最初はOS9でPHP作ってたから気が付かなかった...
0031nobodyさん04/05/19 14:01ID:???
すいませんでした。。org

targetてフレーム名でも指定できるんですね。ありがと
0032nobodyさん04/05/19 14:02ID:OfngxgLc
連想配列から、キーを元に、キーと値を削除するって事は出来るんでしょうか?
0033nobodyさん04/05/19 14:09ID:???
>>32
unset($array[$key]);
00343204/05/19 15:49ID:???
>>33
ありがとうございマス〜
0035nobodyさん04/05/19 16:22ID:7KZLVZlc
p2をやろうと思いphpを入れました。

入れたパソコンは問題なくp2が動作したのですが
他のパソコンから見ようとするとネットワークパスワードを求められます。
ここが問題なのですが正しいパスワードを入れても認証に失敗します。

環境
windows2000pro / PHP 4.3.5 / IIS5.0

どうすれば他のパソコンから見れるようになるでしょうか?
0036nobodyさん04/05/19 16:36ID:???
>>35
お ま え は め く ら か

板違いだボケ
0037nobodyさん04/05/19 16:44ID:7KZLVZlc
>>36
めくらってなんですか?
2ch語?
0038nobodyさん04/05/19 16:45ID:???
>>35
p2/data/p2_auth_user.phpを一度消して見れ。あと板違い。こういう質問はどこ逝っても嫌われるぞ。
0039nobodyさん04/05/19 16:46ID:???
>>37
差別用語ですよ
0040nobodyさん04/05/19 16:53ID:7KZLVZlc
ありがとうございました
以後気をつけます
0041nobodyさん04/05/19 17:30ID:???
>>40
http://www.google.co.jp/search?q=%E3%82%81%E3%81%8F%E3%82%89%E3%81%A8%E3%81%AF&ie=UTF-8&hl=ja
0042nobodyさん04/05/19 17:34ID:???
よろしくお願いします。

csv形式のテキストから一文字ずつ配列に取ってきているんですが、fgetcsvでエラーが出てしまいます.
print_r ($csv)とすると
2004,記念の,テスト
となり
print "$csv[0]$csv[1]$csv[5]$csv[6]"とすると
20,記
となります。
$data = fgetcsv($csv, 10000, ",");
にするとえらーがでてしまうのですが、どうやったら$dataに","を抜いた形で配列に入れることが
できるんでしょうか?よろしくお願いします。
0043nobodyさん04/05/19 17:50ID:???
>>42
よし、とりあえずプログラミングよりも日本語を勉強しよう!
0044nobodyさん04/05/19 17:54ID:???
すいません、わかりづらかったですか・・
0045nobodyさん04/05/19 17:55ID:???
>>42
そのfgetcsvのときの$csvはファイルポインタなのか?
質問を読む限りそうじゃなさそうだよな...
0046nobodyさん04/05/19 18:23ID:???
>>45
配列です
0047nobodyさん04/05/19 18:26ID:???
>>46
恥ずかしげもなくそのレス書く前にマニュアル嫁
0048nobodyさん04/05/19 18:41ID:???
$data=file(sample.csv);
$lines=count($data)

for($i=0; $i<$lines; $i++){
 mb_ereg_replace(",","",$data[$i]);
}

0049nobodyさん04/05/19 18:41ID:???
さっぱりわからん
$csvには何が入っているのさ?

質問内容を整理して、マニュアル読んで、ぐぐって、それでもわからんかったら書き込めよ
0050nobodyさん04/05/19 18:43ID:???
見てきた、正直すまんかた
0051nobodyさん04/05/19 19:32ID:???
マルチバイト文字列関数が使えないPHPを使用してます。
PHPはApacheのモジュールとして動かしてるのでこのマルチバイト文字列関数を

/usr/lib/pgsrl.so

などのようにコンパイルする事は出来ますか?
PHPをソースコンパイルしろってのはナシで。そうするとApacheのコンパイルもsslやらなんだかんだoption付けないといけんので手間が掛かりすぎるからです。

ぶっちゃけマルチバイト文字列関数が使えるRHL9のrpmさえあればいいんすが...
0052nobodyさん04/05/19 23:14ID:???
jcode.php使うという手は?
0053nobodyさん04/05/19 23:41ID:???
jcode.phpは持ってるんだけど、レンタルサーバでPHPを自由に変えられないって環境ならともかく、自鯖なんでPHPをなんとかしたいと思って。

まぁLinux板にも質問してるんだけどw

http://www.teu.ac.jp/chiit/~yuhei/rpms.html
ここから手に入れてrpm -iしてんだけど、入れ替わってくれん...
0054nobodyさん04/05/19 23:47ID:???
# rpm -Uvh php-4.2.2-17.2.mbsupport.i386.rpm

# rpm -qi php-4.2.2-17.2.mbsupport.i386.rpm
パッケージ php-4.2.2-17.2.mbsupport.i386.rpm はインストールされていません

なんでだ??
0055nobodyさん04/05/20 00:16ID:???
>>51
PHPをソースから入れるにはApacheもソースから入れなきゃならんと思っているのに、偽造500ウォン
んで、モジュールのみコンパイルしてインストールすることも可能なはずですよ。
0056nobodyさん04/05/20 09:17ID:???
数字に後ろから3桁おきにに「,」をいれたいのですが
どうすればよいでしょうか?
たとえば「12000」という数字を「12,000」として表示したいです。
0057nobodyさん04/05/20 09:32ID:???
>>56
number_format()
0058nobodyさん04/05/20 10:19ID:???
質問する前にマニュアル嫁よ
頼むから
0059遅くなって申し訳ない104/05/20 10:19ID:q5E1Ags3
>>8
#亀レススマソ…

  ☆  P  H  P  5  ☆  
http://pc5.2ch.net/test/read.cgi/php/1056969979/

#次スレのテンプレ作成時に指摘ヨロ>>980あたり
0060nobodyさん04/05/20 10:21ID:???
Σ( ̄д ̄;)! #sage忘れ
0061nobodyさん04/05/20 10:30ID:???
>>57
サンクス。できました。
0062nobodyさん04/05/20 10:52ID:WaBVWaFV
PHPは「ペー林家パー子」の逆回転文字列結合で合ってますか?
0063nobodyさん04/05/20 11:33ID:???
>>61
>>58
0064nobodyさん04/05/20 12:13ID:NShBOzWM
PHP普及の原因は、イスラエル・Zend社のマーケティングの成功にある。
�@Perlでは別インストールで多くの人が知らないデーターベース利用を標準で使用できるようにし、「データーベースが簡単に取り扱える」というイメージを特に強く植えつけた。
�Aウェブサイト作成への特化。例えば、セッション管理がそうだ。
�Bソースの隠蔽による著作権保護を可能にした。
データーベースを使いたいが、使い方がわからない。そこに、PHPなら使えるという情報が先に入る。これで、PHPに入った人もかなり多いはず。
PHPの言語仕様はZendに大きく左右される。
二年ほど前、PHPが出始めた頃には、変数のスコープがPerlとまったく同じ仕様だった。
もともと、Perlのソースコードを改編して作成されたPHP。
↓PHPの歴史
http://php.planetmirror.com/manual/ja/history.php
PHPには、Perlコードの退行による高速化の意図が言語のいたるところに見える。
マイクロソフトは、オブジェクト指向への対応というのが大義にVB6.0からVB.NETに言語仕様を大幅に変えた。
今後も大きく言語仕様が変わることはないのか?
オープンソースとは言っても、Zend社の
http://www.zend.com/management.php
の数人のスタップによって大きく左右される。
再帰的定義とされる「PHP:Hypertext Preprocessor」という名前にも理由がある。これは、要するに、正確には、「Perl Hypertext Preprocessor」としたいところだが、GNUの「GNU is Not UNIX」という再帰的な定義をもじったものだ。
要するに、「GPLのフリーソフトのライセンスには違反していませんよ!」と一つには主張し、また、一つには、「PHP is Not Perl」とでも言って、Zendの社としての姿勢を、先人の「Perl開発者たち」から擁護する意図があったのだろう。
Nではなく、Hなのが、そのための味噌だ!Perl開発者たちは、当然、面白くないはずだ。
PHP信奉者は、六芒星(hexagram)マークのユダヤ教にでも、入信せよ!
…といいつつ、かく言う私も、PHPに乗り遅れまいと必死だが…。(^^;)


0065nobodyさん04/05/20 12:23ID:???
>>51
ぶっちゃけ55氏の指摘に追加で500ラデック

PHPのビルドは、はまると結構掛かるので
ttp://www.softagency.co.jp/mysql/LAMP/download.html#aka9
辺り使っといたら?MySQLサポート外すならSRPMからリビルドね。
0066nobodyさん04/05/20 12:29ID:???
>>64
まんま信じる馬鹿が多いから、嘘の中に少量の本当を混ぜる技法は止めとけって...
0067nobodyさん04/05/20 14:50ID:???
PHP4.3.1を使っています。

素人ながらオブジェクト指向なコーディングをするように考えていますが、
なるべく単純で、良いお手本となるソースを公開してるところはありますか?
0068nobodyさん04/05/20 15:00ID:???
ない
0069nobodyさん04/05/20 15:01ID:???
javaから入った方がいいと思われる。
0070nobodyさん04/05/20 15:13ID:???
ためになる用語辞典
めくら:目が見えない人
文盲:字が読めない人
明盲(あきめくら):字は読めるが文章が理解できない人
0071nobodyさん04/05/20 16:24ID:YWvMGF1q
メールフォームを作っていて、
通常のメール送信はできるのですが
メール送信を行った後、別のページ(例:thanks.html)
へ飛ばしたいのですが、

if (mb_send_mail($To, $MailSubject, $MailMessage, "From:$From")) {
header("Location: thanks.html");
}
else {
echo "$cnf_NgMsg\n";
}

これだと下記のエラーがでます。

Warning: Cannot add header information - headers already sent by (output started at /home/***/***/***/index.php:6) in /home/***/***/***/mail/mail.php on line 140

form/index.php にフォームがあり、form/mail/mail.phpへ引数を渡して、
mail.phpでメールを送信している感じです。

このような場合locationを使うのは不適当なのでしょうか?
00727104/05/20 16:26ID:YWvMGF1q
すいません。日本語変でした。

メール自体は送信できるのですが、別ページに飛ばす事ができませんです。。。
00737104/05/20 16:35ID:YWvMGF1q
すいません。自己解決しました。

お邪魔しました。。
■ このスレッドは過去ログ倉庫に格納されています