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

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

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん04/04/07 01:06ID:HTcWOpWf
PHP全般の質問スレです。
上級者用や雑談スレを立てたくなった場合は後から適宜立ててください。

■本家
 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-5
0867nobodyさん04/05/14 13:43ID:???
>>866
これをループで回せ。
$arr=explode(':',$buff[$cnt],2);
${$arr[0]}[]=$arr[1];

しかし....
0868nobodyさん04/05/14 13:52ID:???
すごい仕様だ
0869nobodyさん04/05/14 13:54ID:???
これでいいじゃね。
while(($s = fgets($fp, 1024)) != NULL) {
  list($var_name, $value) = explode(':', $s, 2);
  ${$var_name}[] = trim($value);
}

まぁ、あれだ。もとデータに他で使ってる変数名と
同じものが紛れた時に正しく動作せん罠
$input_data[$var_name][]
に放り込んだ方がええよ。
0870nobodyさん04/05/14 14:09ID:???
ま、可変変数も久しぶりに使ったし、昼下がりの腹ごなしにちょうど良かったのかもw
可変変数を使うときは、ほとんどの場合それ以前に問題があると思ったりするのだが。
0871nobodyさん04/05/14 14:15ID:vu0WINSD
>867-869
ありがとうございます!
これで、お気に入りなアニメのデータベース的なことができそうです
0872nobodyさん04/05/14 14:18ID:???
可変変数を用いたのは良かったのだが、どういった変数が定義されたのかを
どうやって調べるんだ?
087386904/05/14 14:28ID:???
>> 872
そういう問題もあるから、
>$input_data[$var_name][]
>に放り込んだ方がええよ。
ってしたんだが。

これだと、array_keys($input_data)で
判るし、stdObjectに放り込んだとしても、
get_object_vars()で拾えるし。
0874nobodyさん 04/05/14 15:50ID:Ncoppi/i
PHPのmb_系関数が定義されてなかったのでリコンパイルをかけようと思いました。
そこでphpinfo()のconfigure commandの文字列にmb_系関数をenableにして
configure実行したのですが、とおらないんです。

configure: error: Please reinstall the BZip2 distribution

といわれてしまいます。
phpinfo()のconfigure commandはインストールする際に
指定したコマンドですよね。それでインストールされてるのに
なぜ今インストールができないのか、、、不思議でなりません。

どなたかヒントをください。
087585604/05/14 15:59ID:vu0WINSD
>874
エラーメッセージを見ると、BZip2 が無いので入れてけろと言ってるみたいですが・・
どのディストリュビューションか分からないから
sources.redhat.com/bzip2/
ここでソース拾ってきてインスコすれば、configure通るんじゃないでしょうか?

連想配列順調です♪
0876nobodyさん04/05/14 16:13ID:???
856のお気に入りアニメは、ぽぽたんとぴちぴちピッチと・・・..._〆(゚▽゚*)
ピュアは?
0877nobodyさん04/05/14 16:16ID:???
upload.phpのソース

<html><head><title>test</title></head>
<form enctype="multipart/form-data" method="post">
upload?: <input name="userfile" type="file"><input type="submit" value="submit">
</form>
<?php
if (!empty($_FILES)) {
move_uploaded_file($_FILES['userfile']['name'],'/home/hoge/public_html/upload');
}
var_dump($_FILES);
?>
</doby></html>


php.iniのResource Limits部分は
max_execution_time = 30
memory_limit = 40M

File Uploads部分は
file_uploads = On
upload_tmp_dir =/tmp
upload_max_filesize = 10M

postmax部分は
post_max_size = 10M


となってるのに、sumbitを押すとupload.phpの読み込みに失敗しましたと出ます。1M位のデータならPOSTで送れるんだけど、それ以上だとブラウザでエラーになります。
なんでですかー?
0878nobodyさん04/05/14 16:19ID:???
upload.phpのソース

<html><head><title>test</title></head>
<form enctype="multipart/form-data" method="post">
upload?: <input name="userfile" type="file"><input type="submit" value="submit">
</form>
<?php
if (!empty($_FILES)) {
move_uploaded_file($_FILES['userfile']['name'],'/home/hoge/public_html/upload');
}
var_dump($_FILES);
?>
</doby></html>


php.iniのResource Limits部分は
max_execution_time = 30
memory_limit = 40M

File Uploads部分は
file_uploads = On
upload_tmp_dir =/tmp
upload_max_filesize = 10M

postmax部分は
post_max_size = 10M


となってるのに、sumbitを押すとupload.phpの読み込みに失敗しましたと出ます。1M位のデータならPOSTで送れるんだけど、それ以上だとブラウザでエラーになります。
なんでですかー?
0879nobodyさん04/05/14 16:29ID:???
二重投稿になっちった...

Apacheのエラーログでは
[Fri May 14 16:19:33 2004] [error] [client 192.168.1.10] Requested content-length of 711143 is larger than the configured limit of 524288,
referer: http://192.168.1.1/upload/upload.php

と出てる.... おぃ、ファイル制限が524KBってどーゆーことだー!
0880nobodyさん04/05/14 16:34ID:???
マニュアルくらい読もうね
0881nobodyさん04/05/14 16:38ID:???
>>879

スレ違い
Apacheスレへどうぞ
0882nobodyさん04/05/14 16:38ID:???
>>874
まず、phpinfo()のconfigure情報はそのphpが構築(コンパイルやらリンクやら)された時の情報。
つまり、今動かしているマシンとは全然関係がない。
phpをソースからインストールしようとするとconfigure時に必要なライブラリ等をチェックする。
この時オプションで指定したディレクトリ(あるいはデフォルトのディレクトリ)に
必要なライブラリ等が無いとエラーがでる。

>>875の言うように、bzip2関係を入れれば解決すると思うよ。
これは別にソースからじゃなくてもバイナリでいいんじゃないかな。
088385604/05/14 16:59ID:vu0WINSD
>>876

<?
 require("moe.ini");
 $moe = new moe;
 $sukisuki=$moe.AnimeList("all");
 print $sukisuki;
?>

--結果表示--
ぽぽたん,ぴっちぴちピッチ,ぴちぴちピッチピュア,美鳥の日々,光と水のダフネ,花の魔法使いマリーベル,ガルフォース

0884nobodyさん04/05/14 17:24ID:???
>>878
ちなみに['name']じゃなくて['tmp_name']
0885nobodyさん04/05/15 00:34ID:x/lO/LgB
無理を承知で質問させてください。
写真の加工をしたいのですが、PHPで明るさやコントラストを変える方法ってありませんか?
0886nobodyさん04/05/15 00:46ID:???
>>885
無理を承知で返答させてください。
image_gain();
image_contrast();
0887nobodyさん04/05/15 00:57ID:x/lO/LgB
>>886
image_gainググってみたのですがヒットしませんでした。
image_contrastは英語のサイトがヒットしましたが、これを使えって意味でしょうか?
0888nobodyさん04/05/15 01:26ID:???
オイラもphp.netで検索しちまったよ _| ̄|○
画像処理用の外部プログラムを使うのもありやね。
有名どころだとImageMagickでも明るさやコントラストを変更できる。
088988504/05/15 01:49ID:???
釣りだったことに今気が付きました。
>>888
ImageMagickですね。
今調べてみた所、解説ページも多そうだしよさげです。
どうもありがとうございます。
0890nobodyさん04/05/15 02:15ID:???
あるファイルの中から任意の文字列の個数を数えるには
よいのでしょうか?

substr_count(file($file),"文字列")
とかやったりしてますがかなり見当違いな気がします...
0891nobodyさん04/05/15 02:26ID:???
>>890
int substr_count ( string haystrack, string needle)
array file ( string filename [, int use_include_path [, resource context]])
0892nobodyさん04/05/15 04:25ID:???
>>883
マリーベル・・・
ガルフォース・・・
(・∀・)ニヤニヤ
0893nobodyさん04/05/15 05:10ID:???
print_rしたら

Array ( [100] => 25 [107] => 42 [109] => 15 [105] => 10 [send] => OK )

こういうのが返ってくるんですけどここから
配列$IDに100,107,109,105
配列$avに25,42,15,10
が入るようにするにはどうすればいいですか?
0894nobodyさん04/05/15 05:16ID:???
>>893
foreach($original_array as $key=>$value){ $id[] = $key; $av[] = $value; }
sendの処理は判断基準が書いてないので略。if文でなんとかしる
0895nobodyさん04/05/15 05:19ID:???
まったーーーー

sendの処理はformです。
0896nobodyさん04/05/15 05:20ID:???
POSTです
0897nobodyさん04/05/15 05:29ID:???
おお出来た さんきゅーー
0898nobodyさん04/05/15 06:13ID:???
産休です
0899nobodyさん04/05/15 08:23ID:???
>>894
そんなややこしいことしなくても、
$ID = array_keys($original_array);
$av = array_values($original_array);
でいいんじゃない?
0900nobodyさん04/05/15 10:58ID:???
おおこっちでも出来た さんきゅーー
0901nobodyさん04/05/15 19:26ID:???
教えるヤツも低レベルということを露呈したな
0902nobodyさん04/05/15 19:34ID:???
>>901
まあPHPだからな。
0903nobodyさん04/05/15 21:31ID:???
静的なページだった.htmlの時はブラウザーに関連付けして起動し
エディタで編集できたけど
動的な.phpの場合はブラウザーに関連付けしてもあまり意味ないよね?

というのもapacheなりhttpdなり起動してから
.phpに関連付けしたブラウザーで起動しても正常に動かないわけだし…

みんなどうしてるの?
0904nobodyさん04/05/15 21:35ID:???
.phpをブラウザに関連付けてどうすんのよ??当然エディタでしょ。
0905nobodyさん04/05/15 22:03ID:???
みんなは誰も困ってませんよ(^∀^)ゲラゲラ
0906nobodyさん04/05/15 22:10ID:???
つられすぎ
0907nobodyさん04/05/15 22:42ID:???
お初になります。
早速質問で申し訳ないのですが
現在画像サイトを運営しようと思ってるんですが
○.phpでラージオブジェクトからloreadallにて画像データを出力
×.phpにて<IMG SRC=○.php>というように表示しているんですが
この時に右クリックから「対象の画像を保存」時のファイル名を指定したいのですが
方法はありますでしょうか?
0908nobodyさん04/05/15 22:43ID:???
俺は.phpはphp.exe(Windows)に関連付けてる。
編集は「送る」でエディタに投げてる。
0909nobodyさん04/05/15 22:58ID:???
俺はダブクリで秀丸にしてるけどな
IEに関連付けても、どうせPHP実行されないし
0910nobodyさん04/05/16 01:05ID:???
全体を <?php?>にしているなら別だけどそれが一部だけなら、
ブラウザに関連付ける意味はあるでしょ。

見た目チェックできますよ
0911nobodyさん04/05/16 01:10ID:???
┐(´д`)┌
0912nobodyさん04/05/16 01:18ID:???
好きにすれば?でええんでないの?
オイラはphp-gtkを使ってた時にはダブクリに実行環境、送るにエディタを割り当ててたけど。
0913nobodyさん04/05/16 01:36ID:???
ま、phpは敷居が低いのも一つの特徴だし、htmlにちょこっと付け加えるだけならそれでもいいんじゃね。
以前、users-mlで「phpにテンプレートエンジンはいらんだろ」と言ってた人(それで食ってる人)も居るぐらいだし。

漏れは去年あたりからテンプレートを使い出して、今年からSmartyを利用しているのだが、
完全に分離すれば、それこそ見た目で確認できるし、使い回しも効く。
初めのころは、デザイナー屋とロジック屋が別々に居る様なところ向けだろと思っていたが、
慣れると1から10まで1人でやるようなレベルでも結構便利。

なので、phpファイルをブラウザで開くと言われると(゚Д゚)ハァ? ってなる。
ま、当初からphpファイルをそのままブラウザで開こうなんて
思ったこともなかったがw

なんか、話が途中でそれてるな。スマソ。
0914nobodyさん04/05/16 02:29ID:???
>>910
いや、だから単にhtmlに関連付けただけじゃphpスクリプト等は実行されないだろ
だから、俺はIE開いてローカルにアクセスして見てる。
単なるhtmlファイルならダブルクリックでもいいんだけどね
0915nobodyさん04/05/16 02:34ID:???
mozillaならできたりする
http://www.thomas-schilz.de/MozPHP/
0916nobodyさん04/05/16 02:36ID:???
多分910はスクリプト部分が実行されなくてもある程度体裁は確認できると言いたいんでしょ。
まあたいしたスクリプトじゃなければ、の話だがな。
091790304/05/16 03:25ID:???
903で質問したものですが、「これだ!」っていう方法はないみたいですね。

>編集は「送る」でエディタに投げてる
htmlでしたらブラウザーに関連付けして「送る」でエディタ、
またはブラウザーのソースでエディタにしてますが…
0918nobodyさん04/05/16 03:35ID:???
何でお前ら「送る」にこだわるわけ?
拡張子ごとの設定で、詳細設定すれば、「編集」とか右クリックメニュー増やせるじゃん
これってNT系だけなの?
0919nobodyさん04/05/16 04:36ID:???
さすがそれは人の好み。
0920nobodyさん04/05/16 04:38ID:???
そういう問題じゃなくて
いかに少ない動作でphpを表示させるかを論議しているんじゃないの?

apache起動してブラウザーのお気に入りで表示という手なら
それなりに早いけど、お気に入りしていないファイルは意味ないし…
0921nobodyさん04/05/16 06:14ID:???
*.phpクリックからラッパー用のshなりdatに関連付けして、
ディレクトリとアドレス書き換えてブラウザに渡すだけでなんとかなり
そうだけど・・・。

sedが無いとちょっと悩むかもね、
hoge.datからcgiページに開きたいディレクトリのアドレス引数として渡して、
IEで開くようにしてそっからアドレスに変換して飛ばしちゃうとか。
どっちにしろ10行も書かんでいいのではなかろうか。
092292104/05/16 06:22ID:???
dat→bat
2chしすぎかな、首吊ってくる。
0923nobodyさん04/05/16 11:33ID:???
Windowsの使い方ばっかりでレスいくつ消費してんのよw
0924nobodyさん04/05/16 13:07ID:???
だな。WAMPでも入れて開発用のディレクトリにインデックス自動生成すれば何も不便ない。
0925nobodyさん04/05/16 15:27ID:???
つーかいい加減スレ違い
0926nobodyさん04/05/16 15:28ID:otjJ9NhR
以下のようなログファイルを処理する時に、行の相関関係を保ちつつ
数字の列でソートする為にはどんな方法を使えば良いでしょうか。

aaa,11,ああああ
bbbbb,6,すすす
eeee,33,いい

いつも以下のようにfileで読み込んでforeachとlistを使って
処理しているので相関関係を保つ事ができません。

$line = file ("./log.dat");
foreach ($line as $value){
list ($alphabet, $number, $kana) = explode (",", $value);
処理
}

考え方orヒントを教えて貰えませんか?
0927nobodyさん04/05/16 16:12ID:???
これからphp始めようと思うんですが、4.1.2で勉強するのは時代遅れでしょうか?
4.2以降の普及状況というのはどんなもんなんでしょうか?
0928nobodyさん04/05/16 16:15ID:???
なぜ4.1.2?
0929nobodyさん04/05/16 16:19ID:???
debianの安定版のデフォルトが4.1.2だったので・・・
やっぱり4.2以降がスタンダードですか?
0930nobodyさん04/05/16 16:24ID:???
スタンダードなら4.x.xの最新の(今は4.3.6)を使うべきかと
0931nobodyさん04/05/16 16:30ID:???
なぜdebian
0932nobodyさん04/05/16 16:37ID:???
ビビアン?
0933nobodyさん04/05/16 17:00ID:???
普通にデビアン使うだろ
一括管理できてかなり楽だし
0934nobodyさん04/05/16 17:04ID:3g7G37kU
form のsubmitボタンを押された時にidを取得したいのですがうまく出来ません。
ソースは

print "<form method=\"POST\">\n";
print "<input type="\hidden\" name=\"id\" value=\"$id\">$id番\n";
print "<input type=\"submit\" name=\"send\" value=\"ok\">\n";

if (isset($_POST['send'])){
print "$_POST['id']";
}

こんなかんじです、お願いします
0935nobodyさん04/05/16 17:13ID:???
fromタグを勉強しなおせ
actionプロパティはどうした
0936nobodyさん04/05/16 17:22ID:???
>>935
オマエモナー
0937nobodyさん04/05/16 17:52ID:???
ああ、formタグか。
意味分からんでつっこんできた>>936を殺しかけた。危ない危ない
0938nobodyさん04/05/16 17:57ID:???
>>926
相関関係って何?
意味がわからん。
0939nobodyさん04/05/16 18:08ID:???
>>937
プッ

>>935
×actionプロパティ
○action属性
094092604/05/16 18:19ID:???
>>938
言葉足らずですいません。

aaa,11,ああああ
bbbbb,6,すすす
eeee,33,いい

の場合、数字の列でソートしたいので、最終的に以下の様にしたいんです。

bbbbb,6,すすす
aaa,11,ああああ
eeee,33,いい

自分の脳みそでは方法が思いつかないんで、宜しくお願いします。
0941nobodyさん04/05/16 18:27ID:???
>>940
比較関数を自分で作る
http://jp2.php.net/manual/ja/function.usort.php
0942nobodyさん04/05/16 18:33ID:???
MB関数を使わず、文字列にマルチバイトが含まれているかどうか調べる方法はありますか?
094392604/05/16 18:44ID:???
>>940
ありがとうございます。
なんとかやってみます。
0944nobodyさん04/05/16 19:19ID:???
PHPとFlashを使ったアプリケーションを作成しています。

FlashでXMLを作成し(myXMLとします)、その後以下でサーバーへ送信します。

# myXML.sendandLoad( "http://******/receive.php", receiveXML );

その場合、receive.phpで、どのように送られてきたXMLを受け取ればよいのでしょうか?
_POSTを調べたり、getallheaders()を調べたりしてみたのですが???です。

現在わかっていること
・webサーバーにはアクセスに来ている
・getallheadersでとれる要素、POSTCONTENT_LENGTHに入っている数字は、送信しているXMLサイズ
になっている
・PHPは、4.2.2

よろしくお願いします。
0945nobodyさん04/05/16 19:22ID:???
>>939
しかも属性だったか
スマソ
最近いろいろな言語に手をつけてるものでゴチャゴチャしまくりだ
0946nobodyさん04/05/16 21:34ID:US+BPpRG
すいません、簡単な質問なのですが…。
http://hoge.com/hoge1.jpg
http://hoge.com/hoge2.jpg
(中略)
http://hoge.com/hoge100.jpg
と100個の画像を

C:\
つまりローカルのCドライブ直下にダウンロードしたいんですが、
どうしたらいいんでしょうか。

copy()を使ってC:\\にコピーしようとしたら、
ローカルではなく鯖上に"C:\1.jpg"から"C:\100.jpg"という
おかしなファイル名で連番ファイルが作成されてしまいました。

どなたかローカルのマシンにダウソする方法を…
0947nobodyさん04/05/16 21:41ID:P5TYmVAY
PHPでactiveperlのようなwindows上で動かすものはあるのでしょうか?
0948nobodyさん04/05/16 21:45ID:???
>>946
自分の鯖からDLさせたいならそのファイル達を圧縮してDLさせればいい希ガス。

>>947
http://www.php.net/downloads.php
0949nobodyさん04/05/16 21:56ID:???
>>948
ありがとうございます。
でも自鯖じゃないんです…、公的なデータベースサイトから簡単に連番画像抜こうと思って。

例えばダウンロードソフトのgethtmlとか
http://rd.vector.co.jp/soft/win95/net/se077066.html
ガンガンファイルをローカルに落としてくれるから、
ああいった感じでファイルをローカルに落とす関数はないものかと。
0950nobodyさん04/05/16 22:01ID:???
>>949
他人サーバから自分のローカルへ?
それをなんでPHPで作りたいん?
ダウンロード支援ソフトならいくらでもあるし、
それを使えばええやんって思うんだけど・・・
0951nobodyさん04/05/16 22:03ID:???
phpつーよりSQLなんで恐縮なんだけど。
ついでに今日本屋へSQLの本買いにいったんだけど高くでやめたので恐縮なんだ゛けど。

データを検索するSELECT文で

最新の10レコードのみ取り出す とか
最初の10レコードのみ取り出す とか
次の10レコードのみ取り出す とか

どうやって記述すんでしょうか?

SELECT * FROM data_name WHERE ??????;

だと思うんだけどワカラン。調べないと...
0952nobodyさん04/05/16 22:05ID:???
>>950
いや、そんな本格t的なやつじゃなくて、
5分くらいで自分用の最小機能のを
簡単につくろうと思ったらつまづいちゃったから。

ということはブラウザベースのwebアプリじゃ、
一から作って5分で出来るほど簡単じゃないってことか…。
0953nobodyさん04/05/16 22:14ID:???
>>951
「最新」だとか「最初」だとかを判断するための項目は用意してあるんだろうな?

>>952
ダウンローダをぐぐってインストールして使うほうがよっぽど手軽で早い
ってか話聞く限りローカルPCでPHP動かしてるわけでもないんだろ?
なんで「webアプリ」にそんな作業させようと思うんだか。。。
095495104/05/16 22:16ID:???
サイト調べてもワカラン。

暫定的にIDフィールド(まぁINTの10桁位で)を作って

データが更新されるたびにIDもカウントすりゃいいんだけど、それだとデータを削除したりするとIDはそのままで連続性なくなるし...

基本分かってねーとつらいっすな。誰か教えれ。
0955nobodyさん04/05/16 22:23ID:???
>>954
DB板においで。
とは言っても基本的なことも分かってなさそうなのでそっちでも話が通じるかどうか疑問だな。
安いやつでいいから本を買ったほうがいいぞ。
0956nobodyさん04/05/16 22:28ID:???
>>954
そもそも連続性がなくなったら困るのか?
0957nobodyさん04/05/16 22:29ID:???
てか、連続性がなくなっても困らないIDを用意すればいいし、
そもそも削除しても連続性を維持する方が面倒だな。
0958nobodyさん04/05/16 22:30ID:???
>>951
>次の10レコードのみ取り出す とか
(゚Д゚)ハァ?
095995104/05/16 22:30ID:???
ワリと新しめのSQL本を古本屋で買うことにする。
とりあえずIDフィールド作っておく。データ削除したらUPDATE文使ってIDフィールドに1から連番ふればよさげ。
0960nobodyさん04/05/16 22:32ID:???
limit使え。
PHPとSQL文で望んでいることはできる。
096195104/05/16 22:33ID:???
>>958
わかんだろ、そんくらい?
ブラウザで次をクリックしたら次の10レコードを表示するんだよ。チンカスめ。
096295104/05/16 22:41ID:???
LIMIT-OFFSET句(セッション管理)

LIMIT-OFFSET句はPostgreSQL特有の句で、検索結果の途中から指定件数分表示させる場合に用います。OFFSET句は0(ゼロ)からスタートします。

limit 表示件数 offset 表示開始

■テーブルtblitemの最初の5件のみ全フィールドを検索(表示)

select * from tblitem limit 5;
■テーブルtblitemの5番目からのレコードの全フィールドを検索(表示)

select * from tblitem offset 4;

■テーブルtblitemの5番目から5件分のレコードを全フィールドを検索(表示)

select * from tblitem limit 5 offset 4;


PHPと組み合わせる(つーか最初からPHP)と可能ですね。>>960様、ありがとう。

でもPHP使わずにlimit文のみで 最後のレコードから5件分のレコードを表示 とか表記出来ますか?

いや、DBの基本分かってないから厨房質問ですが...
0963nobodyさん04/05/16 22:43ID:???
>>959
ナニを元に連番を振るんだ?
適当でいいのなら別にorder byで整列させる意味もねぇぞ。

>>960
オトコならCURSOR
0964nobodyさん04/05/16 22:47ID:???
>IDフィールドに1から連番ふればよさげ。
更新した時間でも突っ込んどけ。
096595104/05/16 22:49ID:???
>>963
元々は XからXXまでのXX件のデータを表示 させたいってとこから始まって、

なんらIDつけろヴォケ って言われたから 付けてみたんだよ。連番に意味はねー。
前出のlimit文のようなのあるんなら付けたくもなし。
0966nobodyさん04/05/16 22:50ID:???
>>965
Limit句はorder by で整列させておかないと意味がねぇYO
レス数が950を超えています。1000を超えると書き込みができなくなります。