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

【PHP】初心者コーナー 2 Released

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/03/24 03:06ID:???

PHPに関するアホな質問はここでやれ。今回からMySQLも受付開始。
アホな質問であっても詳しく質問すること。

PHPが大嫌いなPerl信者もぜひご参加ください。

前スレ
http://pc2.2ch.net/test/read.cgi/php/1011550860/l50  関連>>2-10

普通の質問はこっちな、【PHP】質問スレッド Part7
http://pc2.2ch.net/test/read.cgi/php/1044478561/l50
0151nobodyさん03/04/01 21:35ID:???
>>149
愚痴りたいだけなら消えろ。
0152nobodyさん03/04/01 21:40ID:???
>>147 春休み暇なのか?(w
0153nobodyさん03/04/01 21:47ID:???
>>152
解雇されて暇なんだろう。
0154nobodyさん03/04/01 21:54ID:???
まあ>>147がPHPで大規模サイトを作れば済む話だな
0155nobodyさん03/04/01 22:28ID:???
>>147
まあまあ、PHPもオブジェクト指向言語へと脱皮を遂げるみたいだから
いいじゃん。
015614703/04/01 22:48ID:???
>>148
そうですね。型宣言がないのはある意味みんなでやるとこんがらがりそうですよね。
>>150
ええと、うちの会社はJavaとかが中心です。まだ出来て5年たってない会社で、派遣が中心です。
なので、開発は独自でやっていません。
>>155
調べたんですが、やっぱりオブジェクト指向が大規模向けなんですね。もう少したてばPHPも
認められるようになりますかね。

俺も、>>154のように自分で大規模サイト作って上司をギャフン言わしたいんですが、
まだ小さい掲示板も作れないからこれから頑張ります。
0157nobodyさん03/04/01 22:54ID:???
>>147
春休み厨にみえる
0158nobodyさん03/04/02 00:50ID:???
>まだ小さい掲示板も作れないからこれから頑張ります。


よくそんなやつ雇ってるなその会社。
0159nobodyさん03/04/02 01:26ID:B/samNKd
うちの会社もPHPからJSPに進みつつあるよ。
でも漏れを含めて2人はまだPHPで開発をしている。
もう1人はあと1ヵ月後に会社を辞める予定。
漏れは会社でどういう風な道を歩んでいくのだろうか。
まあそろそろ辞めてプログラマー以外になろうと思ってるんだけどねー。

まったくおもしろくねーんだよプログラムはよ!
ていうかひたすら同じような書き方なPHPばっかりだったらそら飽きるわ!
SQL引っ張ってきてfor文でまわして1行ずつ表示の処理ばっかりなんだよ!
0160nobodyさん03/04/02 01:50ID:???
>159

じゃあ、たまには XML引っ張ってきてXSLTでどかっと表示させてみれば?
0161nobodyさん03/04/02 01:52ID:???
それは、やり方が間違ってる
0162nobodyさん03/04/02 06:11ID:???
>>159
>ていうかひたすら同じような書き方なPHPばっかりだったらそら飽きるわ!
>SQL引っ張ってきてfor文でまわして1行ずつ表示の処理ばっかりなんだよ!

さっさとライブラリにしろよ。
0163nobodyさん03/04/02 07:31ID:???
>>159

飽きたならJAVA勉強すればー?

ったく使えねぇヤツだな。
0164nobodyさん03/04/02 13:19ID:???
>147
一応yahooもPHPを今後使っていくらしいからな。
早くPHPで動けばいいね。
取りあえずPHPで大規模サイトは作れないのか?と賭けてみれば?
yahooがPHP化したら147は勝つんだから。
0165nobodyさん03/04/02 15:13ID:???
javaに将来見えない気がするんですが・・・
0166 03/04/02 15:47ID:???
このスレやな奴多いなって思ってたけど・・。
答える気もないのに(←答えらんないからだろうけど)偉そうな人多いし。
>>164はいい人だねー。たぶん普通のレスだけど、光って見えるよw
0167nobodyさん03/04/02 15:51ID:???
別にYahooは全てPHPでやるってわけじゃないんだけど(汗
0168ぷふぁ〜ん03/04/02 16:17ID:/rVTQekD
はじめまして、perlからPHPに引っ越してきた初心者です。

CGIで外部サーバ上のhtmlファイルのソースを取得する方法を
調べているのですがこれについて詳しく載っているサイトが
見当たりません..

ソケットを使うということは解っているのですが、プログラミング
初心者なこともあってどういうコードを書けばいいのかさっぱりです。
PHPマニュアル等もいろいろ見て回ったのですがどれも私には説明不足で..

ご存知の方、どうか宜しくお願い致します。m(__)m
0169nobodyさん03/04/02 16:25ID:???
まぬある
file
fopen
fsockopen
さんぷるつき
0170ぷふぁ〜ん03/04/02 17:14ID:/rVTQekD
マニュアルを見ても解らないようじゃダメすぎですよね、
もぅ少し勉強してきます、お忙しいところありがとうございました。(ぺこり)
0171nobodyさん03/04/02 18:14ID:PsDG8e3I
フォームからポストして、MySQLをつかって文字をInsertしているのですが、
文字の中に「?」が含まれている場合は、「?」が「?」に化けてしまいます。
処理はEUCに統一しています。urlencodeなどで試しているのですが、うまく
いきません。解決策などありましたら、よろしくお願いいたします。
0172nobodyさん03/04/02 18:15ID:PsDG8e3I
????????????MySQL????????Insert?????????
??????????????????????????????????????????
???EUC?????????urlencode????????????????
???????????????????????????????
?????????????????????
0173nobodyさん03/04/02 18:19ID:PsDG8e3I
なんどもすみません。

>文字の中に「?」が含まれている場合は、「?」が「?」に化けてしまいます。
の文章は、以下の通りです。

>文字の中に半角の「¥」が含まれている場合は、「¥」が「?」に化けてしまいます。
017410803/04/02 19:35ID:???
FreeBSD を使っていてbuildconf を実行したときにlibtool のバージョンチェックに
引っかかってstop してしまう件ですが・・・
結局、ソースに含まれているlibtool 1.4.2 を使う方法が分からなかったので、
/build/buildcheck.sh 内のチェック行のexit 1 をリマークしてしまいました。
いくつかワーニングが出たものの、configure は生成されたので、
「まいっか。。。」しちゃいました。
#FreeBSD でPHP-RCを使ってる人ってどうやってるんだろう??
0175nobodyさん03/04/02 20:37ID:???
そら勿論libtoolの最新を入れてるが。
0176nobodyさん03/04/02 20:39ID:???
>>173

insertのSQLをここに貼ってみ
0177nobodyさん03/04/02 21:05ID:PsDG8e3I
$que = "insert into tb_item(C_TYPE, C_TEXT) values(¥"$hoge¥", ¥"$hoge2¥")";
こんな感じです。

それと、今わかったのですが、フォームで、hoge.phpにポストして、
$hogehoge = $_POST["hogehoge"];
で拾って、
<?= $hogehoge ?>でブラウザに表示させると、
「¥」が化けるのではなく、カットされてしまいます。
たとえば、「¥hogehoge」とポストしたのに、結果は「hogehoge」となります。

なぜなんでしょうか?
0178nobodyさん03/04/02 21:14ID:???
$que = "insert into tb_item(C_TYPE, C_TEXT) values(¥"$hoge¥", ¥"$hoge2¥")";

の次に

echo $que;

入れてどんなSQLが表示されるか見てみれ。
0179nobodyさん03/04/02 21:29ID:PsDG8e3I
エコーしました。う〜ん。
valuesの変数は初期化していませんので、
insert into tb_item(C_TYPE, C_TEXT) values("", "")
というかんじです。見る限り、問題ないように思います。
0180nobodyさん03/04/02 21:43ID:???
valueが分からなきゃなんの判断も出来ないのだが。
018117703/04/02 22:10ID:9OeHk805
あそっか。すんません。

インサート以前に、先ほども、書いたのですが、
$hogehoge = $_POST["hogehoge"];
この状態ですでに、¥が文字化けしているのです。

0182 ◆AngelH/kMI 03/04/02 22:44ID:???
mysqlのvaluesの指定ってダブルクォートでもいいんだっけ?
自分はいつもシングルクォートなんだけど。

$que = "insert into tb_item(C_TYPE, C_TEXT) values('$hoge', '$hoge2')";

んで>177氏のはaddslashesとかmagic_quoteとかで検索すれば
解決する問題な気が。
0183nobodyさん03/04/02 23:15ID:???
試してないけど、ダブルクォートはダメでしょ?
0184nobodyさん03/04/02 23:21ID:9OeHk805
>ダブルクォート
え?そうなんですか?
values(¥"$hoge¥", ¥"$hoge2¥")";
で、インサートできてるのですが・・・
シングルで試してみます。\'でなくていいんですよね?
0185nobodyさん03/04/02 23:32ID:???
いけるんだね。
0186nobodyさん03/04/02 23:33ID:???
>>183
折角翻訳されてるんだからマニュアル読もうよ(目的のものが探しにくいけど)
http://www.mysql.gr.jp/jpdoc/3.23.x/manual.ja_Reference.html#String_syntax

「MySQLでは駄目とは言い切れないが、ANSIのSQL的には不適なので推奨しない」
0187nobodyさん03/04/03 01:03ID:???
mb_strimwidth() http://jp.php.net/manual/ja/function.mb-strimwidth.php 
ですが、丸めた個所の端部の化けの回避方法はありますか?
0188nobodyさん03/04/03 01:14ID:???
>>187
これで丸めると化けないはずだが?
0189nobodyさん03/04/03 01:24ID:???
>>188
ありがとう。
apache + php4.3.1 php.ini extension=php_mbstring.dll 可
何でだろう?
0190nobodyさん03/04/03 01:28ID:???
>>189
mb_string絡みの設定が正しく行われていないのでは。
0191nobodyさん03/04/03 01:35ID:???
>>199 ありがとう。
mbstring.internal_encoding = EUC-JP 可で解決しました。

他に可にしておいた方がいいのがありましたら教えてください。
0192nobodyさん03/04/03 01:56ID:???
>>191
各自の環境や構築するサイトによって違うのでなんともな。
マニュアルをよく読んでくれよ。

個人的にはマニュアルにあるeuc-jpユーザ用設定が一番問題が
少ないと思っている。スクリプトをeucで書く必要はあるけどね。
0193nobodyさん03/04/03 02:18ID:???
>>192
ありがとう。
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
今の所これで落ち着きました。
0194nobodyさん03/04/03 16:12ID:XWfV91pg
php-2.0.2
http://www.php.net/~andrei/php-2.0.2.tar.gz

何なのこれ?
019510803/04/03 17:46ID:???
まだいらっしゃるかな??
>>175さん、libtool の最新を入れるってtar ball からインストール、ってことですか?
#unix 板で聞くべきでしょうか?
0196nobodyさん03/04/03 18:36ID:???
普通に http://ftp.gnu.org/gnu/libtool/libtool-1.4.3.tar.gz から取ってきて

./configure
make
make install

でOKな筈だよ。
0197nobodyさん03/04/03 20:20ID:ywhjyh5K
(すみません。他のスレに誤って投稿してしまいました。)
foreach($array as $card)
{
$query = "insert into tb_hoge(C_TYPE, C_KEYREF, C_YEAR) values('$type', '$keyref', '$i')";
mysql_query($query);
}
という処理をさせると、一回のquery実行にもかかわらず、二回実行されてしまい、
結果として、二つ同じレコードがインサートされてしまいます。
繰り返した回数だけquery実行したいのですが、解決できません。

アドバイスいただけますと、幸いです。
019810803/04/03 20:26ID:???
>>196さん
ports で用意されているのが1.3.4 だったのと、依存性が心配でためらっていましたが
教えていただいたurl からlibtool-1.4.3.tar.gz を取ってきてインストールしてみました。
バージョンチェックを無視したときは、php/Makefile の中のnamazu, kakasi のライブラリ位置
を手で直さないとmake できなかったのが、すんなり通るようになりました。
ありがとうございました。
#他のports との依存性が問題になったときは、ports でlibtool を上書き
することにしました。
0199nobodyさん03/04/04 04:26ID:CWbmmlFZ
PHPLibで、セッションデータの保存にSQLデータベースでは
なく、ファイルを使いたいのですが、できますか?
できるなら、やり方を教えていただけないでしょうか。
0200nobodyさん03/04/04 11:29ID:RZxRYN1N
>>162

ライブラリとは?
0201nobodyさん03/04/04 11:40ID:???
これだからPHP厨は┐(´〜`)┌
0202nobodyさん03/04/04 11:52ID:AYp/uqxl
JAVAにはつきもののDBのコネクションプーリング
見たのはないの それとも 自力で、データベースの
コネクションを引き回すの?

データベースはoracle を使った大規模WEBアプリを
検討しています。

0203nobodyさん03/04/04 12:00ID:???
>>202
> JAVAにはつきもののDBのコネクションプーリング
> 見たのはないの
ない。

> それとも 自力で、データベースのコネクションを引き回すの?
無理。ただ、Persistent接続はある。
0204名無しさん@Meadow03/04/04 12:57ID:xYbXEF6T
>>202
一応できないことはない。使ったことはないけど。
http://sqlrelay.sourceforge.net/
0205nobodyさん03/04/04 13:26ID:AYp/uqxl
>203
レスさんくす
phpでは あんまり需要がないのかな?

>Persistent接続はある。
これのことか? 

Ora_pLogon
Ora_pLogon -- 持続的な Oracle接続をオープンする
0206nobodyさん03/04/04 13:29ID:AYp/uqxl
>204
サンクス
一応は見にいった。

0207nobodyさん03/04/04 18:42ID:???
>>205
Persistent接続はそれのこと。
需要あるなしよりも、効率を考えたらプーリング機能は欲しいね。
0208nobodyさん03/04/04 20:56ID:DPO7NsXp
フォームを使って、適当なファイル名($export_file)を記入し、以下のようにして
fopen("$export_file", 'w+');
データを書き込んでいます。

しかしこれだと、任意のフォルダにデータを書き出すこがはできません。
もちろん、既存のファイルに上書きならできるのですが、新規にファイルを
作成したい場合にはどのようにすればいいのでしょうか?(できるのかな?)
0209nobodyさん03/04/04 20:59ID:???
>>208
フォルダってことはWindowsか。新規作成は普通にできるっしょ。
0210nobodyさん03/04/04 21:10ID:DPO7NsXp
いえ、windowsに限ったことではありません。
osxなどでもできればいいかなと思っています。
windowsで、普通にできるというのは、フォームで、type="file"と指定する
ということですか?
0211nobodyさん03/04/04 21:44ID:9h+fpMt8
掲示板等で
Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)
を、PCとだけ表示させたり

DoCoMo/1.0/P503iS/c10
を、P503iSとだけ表示させるには、どう書いたら良いでしょうか?
0212nobodyさん03/04/04 21:57ID:???
if(ereg("Mozilla",$hen)){echo"pc";}
elseif(ereg("P503iS",$hen)){echo"P503iS";}
else{echo"変ですか?";}
0213nobodyさん03/04/04 22:55ID:???
echo $_SERVER["HTTP_USER_AGENT"];
0214nobodyさん03/04/04 23:07ID:???
$hen = $_SERVER["HTTP_USER_AGENT"];
if(ereg("Mozilla",$hen)){$hen = "pc";}
elseif(ereg("P503iS",$hen)){$hen = "P503iS";}
else{echo"変ですか?";}
echo $hen."です。";
0215nobodyさん03/04/05 00:04ID:???
$user_agent= explode( "/", getenv("HTTP_USER_AGENT"));
switch( $user_agent[0] ){
case "DoCoMo" : $file = "index_docomo.php"; break;
case "L-mode" : $file = "index_lmode.php"; break;
case "ASTEL" : $file = "index_astel.php"; break;
case "UP.Browser" : $file = "index_upbrowser.php"; break;
case "PDXGW" : $file = "index_pdxgw.php"; break;
case "J-PHONE" : $file = "index_jphone.php"; break;
case "PlayStation2" : $file = "index_playstation.php"; break;
default : $file = "index_pc.php"; break;
}
include $file;

でけました!
0216nobodyさん03/04/05 09:10ID:???
>>210
新規作成するフォルダに、ファイル作成のパーミッション(アクセス許可)が無いといけない。
Windowsやmacの場合もそういう制限があるんじゃないの?
021721003/04/05 09:19ID:E09q+9L8
はい。個人で使うものなので、パーミッションは問題ありませんです。
既存のファイルを選択することはできるのですが、
新規ファイルを作成する場所(フォルダ)をどうすれば選択できるように
なるのでしょうか?
0218nobodyさん03/04/05 10:26ID:???
>>217
ファイル名にフォルダ名をつける。
$export_file="./hoge/hoge.txt";
021921703/04/05 18:08ID:RCPiYo/6
う〜ん。もうちょとスマートな方法ないでしょうか?
0220nobodyさん03/04/05 18:25ID:???
fopen($folder.$export_file, 'w+');
0221nobodyさん03/04/05 22:05ID:???
空白か特定の文字列の場合に、処理をやめさせるってのはどうすれば…。
例えば掲示板とかで書き込みする時とか。

初心者です!(←これ言えば何でも許される)
0222nobodyさん03/04/05 22:29ID:???
>>221
逃げを打つ前に説明の仕方を何とか汁(初心者スレ以外でやったら叩かれるぞ)
そもそも、処理をやめさせるって?
FormのTEXTの内容に、ある文字列(”氏ね”とか)があったら、書き込みを反映させたくないって事?
なら、if文の条件の中でpreg_match()関数でも使って、書き込みさせるかさせないか分岐とか。
preg_macth()の使い方はリファレンスでも見てくだされ。
0223nobodyさん03/04/05 22:33ID:???
○書き込みさせるかさせないか分岐とか。
×書き込みさせるかさせないか分岐させるとか。

関数の使い方は>>2のPHP マニュアルへGO。
正規表現がわかんなかったら、それなりのサイトを探すべし。
基本的な内容程度なら載ってるサイトはちょこちょこあったと思う。
0224nobodyさん03/04/05 23:10ID:???
もし、文字列に"初心者です!"が含まれたら投稿中止です。
if(ereg("begin",$moji)){echo"dame";exit;}
elseif(ereg("space",$moji)){echo"dame";exit;}
else{echo"iiyo";}  //正規表現のあたりを調べろと。
022521703/04/05 23:46ID:E09q+9L8
>fopen($folder.$export_file, 'w+');
この場合、テキストフィールドに朱入力して、
$folder,$export_fileに代入ということでしょうか?

ではなくて、ナビゲーションを使って、フォルダを選択して、
そこに任意の新規のファイル名を指定できればいいのですが。。。

0226あぼーん03/04/05 23:48ID:???
             ∩
        ∧_∧   | |   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
       (  ´Д`)//  < 先生!こんなのを発見シマスタ!
      /       /    |
     / /|    /      \  http://saitama.gasuki.com/yuusei/
  __| | .|    |         \
  \   ̄ ̄ ̄ ̄ ̄ ̄ ̄\     \_____________
  ||\             \
  ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
  ||  || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
     .||              ||
0227nobodyさん03/04/06 00:56ID:???
>225
最も楽に作るという前提で。
up可能なフォルダを列挙してラジオボタンを付けて、
チャックしたフォルダにファイルをupする、とか。
フォルダとツリーで表示したいならopendir、readdir、is_dirで再帰しながら表示、とか。
[+]とか[-]でフォルダを閉じたり開いたりだと手間掛かるね。
0228nobodyさん03/04/06 14:18ID:/QV6d5uq
質問です。
PHPでint関数を使うと

Fatal error: Call to undefined function: int()

と出てしまうのですが、PHPでintに該当する関数は何になるの
でしょうか?教えてください。
厨質だったらすいません。
0229nobodyさん03/04/06 14:22ID:???
>>228
settype($i,"integer");
こうか?
023022803/04/06 14:29ID:/QV6d5uq
>>229
ありがとうございます。
調べてみたところsettypeを使うみたいですね。
ただintとは使い方が違うみたいで、そのまま置き換えられないようです。
自分でいろいろ試してみます。
お騒がせしました。
0231nobodyさん03/04/06 14:39ID:???
int関数ってのがどういう動作を期待してるのか分からないけど
float(double)から整数に変換する & 数を0の方にまるめる
だけなら(int)$value のようにキャストできるよ
023222903/04/06 14:41ID:???
そうだ。C同様、PHPにもキャストがあるんだった。
0233nobodyさん03/04/06 15:06ID:???
質問っす。ちょっとPHPとは離れてそうなのですが、
300個近いチェックボックスをPOSTしようとしているんですが、
$_POSTで値が取得できません。
何か制限とかあるものなんですか?
0234aaaa03/04/06 15:27ID:/US/lhYB
http://www5b.biglobe.ne.jp/~ryo-kyo/osu.html

http://my.vector.co.jp/servlet/System.FileDownload/download/ftp/0/279026/pack/win95/game/table/pachinko/sikisai.lzh
0235nobodyさん03/04/06 16:20ID:???
>>233
600個のcheckboxで試してみたけどちゃんと動きました。
getの場合でも問題無し。
制限があるとすれば、apacheの場合だと LimitRequestBody あたりかな。
でもMBのオーダーの設定になってると思うので、たぶん無関係かと。
formやphpソースを疑ってみてはいかがでしょうか?
0236nobodyさん03/04/06 18:41ID:KOyF6yOz
phpでrefereを取る方法はいろいろありますが、
どう書くのが一般的ですか?

どっちが見やすいかで、小一時間討論しました
0237nobodyさん03/04/06 18:49ID:???
どっちって言われてもなぁ....選択肢無しってことは新手の質問の仕方かのお。
マニュアルの「定義済みの変数」に載ってるよ。
0238nobodyさん03/04/06 18:57ID:???
>>236
$_SERVER[HTTP_REFERER]
0239nobodyさん03/04/06 20:02ID:3XWizH/3
http://yahooo.s2.x-beat.com/linkvp/linkvp.html
024023603/04/06 20:33ID:KOyF6yOz
すいません、言い方誤りました。
refererとって、アクセスランキングをつける方法です。

選択肢はいろいろありますが、
私の場合はファイルをキューとして扱う。
つまり、一番最近アクセスがあったものが上の方におく。
という事です。

友人の場合は、ちゃんとアクセス数をカウントして
アクセス数順に並べるとのこと。

他にも方法はあると思いますが、
どんなのがいいんでしょうか?
024123303/04/06 21:01ID:???
>>235
- と _ のみ間違いでした。はやとちりスマソ。
thx!
0242nobodyさん03/04/06 21:45ID:???
>238
初心者スレなんで正確に'HTTP_REFERER'とクォートで括りたいところ。
0243nobodyさん03/04/07 12:16ID:hoqq1ppB
ユーザ関数を1つのファイルにまとめておきたいのですが、その関数を他のファイルから
読み込むには、includeなどで指定しないといけないのでしょうか?
0244nobodyさん03/04/07 13:30ID:vjvunX5V
>>243 そう。
あと、auto_prepend_file/auto_append_fileディレクティブなどで
自動的に、全部のスクリプトに対して付けちゃう事はできるけどね。
0245nobodyさん03/04/07 19:11ID:q77L0+Oc
ある文字列から、URLを含む文を抽出して配列に格納したいのですが
どのようにすればいいですか?
0246nobodyさん03/04/07 19:32ID:???
>>245
正規表現を使う
0247nobodyさん03/04/08 15:00ID:Fj+rJIyE
>244
ありがと。includeを一つ一つのファイルで指定するのは面倒なんですよね。
auto_append_file試してみます。
0248nobodyさん03/04/08 15:41ID:???
perlでいうところの
my にあたる局所変数宣言っていうのはPHPではどうやるんでしょうか?
0249nobodyさん03/04/08 15:51ID:AcET4E/D
PHPのチャットスクリプト探してるんですけど、
ADDS PHPフォーラム(ttp://www.mac68k.com/)のsimple chatってのがかわいかったんでDLして解凍してそのままUPして、index.phpにアクセスしてみたもののなんどログインしようとしても最初のindex画面にもどってしまうんですが、どこか設定いじるのでしょうか?
わかるかた教えてください。
0250nobodyさん03/04/08 15:56ID:???
作った本人きけよ
■ このスレッドは過去ログ倉庫に格納されています