【PHP】質問スレッドpart27【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
05/03/03 22:41:23ID:???・新規質問の方は上げてください。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-10辺り
0237nobodyさん
2005/03/23(水) 10:00:02ID:???PHP自体が速いのではなく、Apacheモジュールとして立ち上げたPHPが(既にPHPが起動しているので)CGI版PHPより速い。
Perl→mod_Perl、CGI版Perl
多くのレン鯖はCGI版Perlで、Perlの起動に時間がかかるからmod_PHPと比べるとたいてい遅くなる。だからPHPはPerlより速くて負荷が小さいですよ、とか紛らわしい書き方をしている。mod_Perlとmod_PHPなら差はほとんどない。 であってるのかな。
モジュールとして動作→速い、モジュール限定機能あり
CGIとして動作→SuEXECが効く、Perlが落ちてもHTTPDまで落ちない
0240nobodyさん
2005/03/23(水) 10:44:39ID:???>>230みたいな勘違いしてる人は結構珍しいかも。
0241nobodyさん
2005/03/23(水) 10:51:38ID:???そのPHPを記述したファイルの拡張子(.php)を着メロ用ファイルの拡張子(何かは知らんが仮に.xxxとする)にし、
htaccess使うとかして、.xxxというファイルがPHPとして動作するようにしてみ。
試してないので上手くいくかどうかは知らんが。
あとPHPのバージョン(3使ってる?)の関係であえてそうしてるのだとは思うけど、
5行目 ⇒ mb_http_output('pass');
7〜9行目 ⇒ readfile();
一応、バージョン4以降使ってる人の為に。。
0243nobodyさん
2005/03/23(水) 11:08:37ID:???foreach ($arr[$k] as $key => $value) {
echo $key.$value;
}
}
エラー出る。なんで?
0244243
2005/03/23(水) 11:18:24ID:???ごめん。
0245nobodyさん
2005/03/23(水) 11:41:30ID:7EAkLlhUWarning: copy(): SAFE MODE Restriction in effect. The script whose uid is 574 is not allowed to access / owned by uid 0 in
↑こんなエラーがでるのは、レンサバの設定がセーフモードだからってことですか?
そんなときは、どうやって、fopenしたりmkdirしたりするんですか?
PHP Version 4.3.8
0247245
2005/03/23(水) 11:52:15ID:???ディレクトリは最悪、事前に準備することが可能なんですが、動的にHtmlファイルを生成(書き換え)したいと思っていまして、そんなとき、fopen()使わずにいけますか?
0248nobodyさん
2005/03/23(水) 11:57:35ID:???あらかじめ作ったディレクトリ(所有者がPHPスクリプトの所有者と同じ)内であれば特に制限は無いのでfopenでもcopyでも好きにやってくれ。
0249245
2005/03/23(水) 12:15:22ID:???ありがとうございます。
試してみました。↓
$result2 = copy("test_dummy/test.txt","test_dummy/test2.txt");
。。。でもダメでした。(同じメッセージ)
かなり初歩的なことだと思いますが、引き続きご指南いただけませんか。
0251nobodyさん
2005/03/23(水) 14:29:11ID:???>mod_perl > mod_php > Perl(CGI) > PHP(CGI)
その順番は一般にPHPは最初から拡張モジュールてんこ盛りでビルド
Perlは最初から余り入れずプログラムで必要に応じて採用する傾向のよるもの。
(PHPでdl()させてるところって殆どないやん)
実際に測ると総合力は余り変わらんよ。
0252nobodyさん
2005/03/23(水) 14:30:45ID:???0253nobodyさん
2005/03/23(水) 15:37:48ID:ZnAQR4mO0255nobodyさん
2005/03/23(水) 16:04:12ID:???PHPスレで聞いたって事はPHPにそういう関数はないかってことやね
無い と思う
linuxならduコマンド呼べ
0256nobodyさん
2005/03/23(水) 16:23:40ID:???0257nobodyさん
2005/03/23(水) 16:28:09ID:???http://www.itmedia.co.jp/enterprise/articles/0502/28/news003_2.html
view.php
http://www.itmedia.co.jp/enterprise/articles/0502/28/news003_3.html
漠然とした質問で申し訳ないのですが
練習としてやっていて初っ端でつまづいております・・・。
上のソースの必要個所を修正し、
その後アップロードをしview.phpにアクセスしても真っ白で何も表示されません・・・。
サーバーはlinuxでphpは4です
よろすくおねがいします
0258nobodyさん
2005/03/23(水) 16:29:44ID:???いや できないだろう
ハードディスクの空き容量が出るだけかquotaで割り当てられた容量が出るかじゃないのか
filesize()で一個ずつ足していくのはどうかね
0259PHP初心者
2005/03/23(水) 16:34:27ID:OtBPoiR1seach.phpでデータベースに接続して、検索結果を表示しています。
例えば、データベースは次のようなものです。
number | name | comment
1 | 太郎 | 1番足が速い
2 | 次郎 | クラスで5番目に背が高い
3 | 三郎 | 至ってhutuuな成績
検索フォームは次のようなものです。
<FORM action="search.php">
<INPUT size="20" type="text" name="key"><BR>
<INPUT type="submit" value="検索"><INPUT type="reset" value="リセット">
</FORM>
seach.php には次のようなものを記述しています。
$key = $_GET['key'];
・
・(省略)
・
$result = mysql_query("SELECT * FROM abc WHERE comment LIKE '%$key%'",$db);
「5」で検索すると、次郎君のデータが表示され、
「hutuu」で検索すると、三郎君のデータが表示されます。
しかし、「足」を入力して検索すると、検索ができません(何も表示されません)。
どうすれば、日本語でも検索できるようになるでしょうか?
何かお気付きの点がありましたら、教えていただきたいです。 m(_ _)m
0261nobodyさん
2005/03/23(水) 16:42:32ID:???MySQLのバージョンは?
4.0ならSELECT * FROM abc WHERE comment LIKE BINARY '%$key%'
3ならcommentフィールド自体にBINARYをつける
0262nobodyさん
2005/03/23(水) 16:46:08ID:???その両方の関数のユーザコメントでその手のが色々書いてある。
でもWindowsで試したけど、まあ上手くいかんね。
>>258の言うとおりdir()辺りで一覧とって、ファイルに限って
逐一filesize()で調べて合計出すのが良いと思う。
# du使えればそれが一番楽だけどね。
0263nobodyさん
2005/03/23(水) 16:48:48ID:???MySQLのサーバ設定で「日本語(ujis/sjis等)」ときちんと設定する。
サーバ設定が変更できない場合は、次善の策として>>261の方法で対処。
0264261
2005/03/23(水) 16:56:08ID:???ただ英字のHUTUUとかがhutuuでは検索できなくなります。
0267245
2005/03/23(水) 17:55:48ID:???遅くなりました。すみません。(>>245 >>247 >>249の件です)
パーミッションはrwx r-x r-xです。
所有者は私のFTP接続アカウントと同一です。
よろしくお願いします。
0268nobodyさん
2005/03/23(水) 17:59:15ID:???あらゆる処理の前に print "(行番号):"; てなものを放り込んで、
どこまで実行できているのか調べる。
君にはそれがお似合いです。
0269PHP初心者
2005/03/23(水) 18:49:14ID:2nyWi/q2取り急ぎ、お礼を申し上げます。 m(_ _)m
MySQLのバージョンは4.0.22です。
お教えくださったことを早速、試してみたいと思います。
0270245
2005/03/23(水) 19:32:25ID:???ディレクトリのパーミッションをrwx --x rwxです。
ありがとうございました。
0271nobodyさん
2005/03/23(水) 21:04:21ID:???自分に知識が無いのは分かってまつ(;´Д`)
最後にこれだけ教えてください
ほぼコピペしただけでも動かないってことは
>>257のソースには不備があるってことですか?
0272nobodyさん
2005/03/23(水) 21:17:45ID:???0273nobodyさん
2005/03/23(水) 21:17:52ID:???まず、view.phpのほうで、ちゃんとincludeできてるかどうかとか、
そういうのを>>265の言うとおり、
一個一個表示して確かめないとね。
そうしないと何行目がまずいんです!ってのはわかんないと思うよ。
0274nobodyさん
2005/03/23(水) 21:18:25ID:???同じテレビでも違う地域に引っ越したら、場合によっては受信設定を変える罠
0275nobodyさん
2005/03/23(水) 23:11:40ID:fSPzJGOM$case = '17,241';
?>
<?
print"\\$case(送料等含む)<br>";
?>
これで表示されませんorz
なにかまちがえてますでしょうか・・・?
0278nobodyさん
2005/03/23(水) 23:45:07ID:fSPzJGOMありがとうございました!
0279nobodyさん
2005/03/23(水) 23:46:15ID:???print"\\$case(送料等含む)<br>"; の 変数名の部分$case〜をうまく認識できていないんですよ。
<?
$case(送料等含む) = '17,241';
print"\\$case(送料等含む) (送料等含む)<br>";
?>
これで解決ですね(゚∀´)b
print"\\$case (送料等含む)<br>"; // 次の文字との間をスペースで分離
print"\\".$case."(送料等含む)<br>"; // 文字列演算子で分離
print"\\{$case}(送料等含む)<br>"; // { }で囲む
のように変数名の部分を(PHPの中の人に)分かり易く書くこともできます。
0280nobodyさん
2005/03/24(木) 00:40:10ID:???'\'.$case.'(送料を含む)'."\n"
このくらいから始めとけ。
printf()の説明もついでに見とけ。
0281nobodyさん
2005/03/24(木) 02:41:20ID:03HxTlZF<input type="button" value="a" onclick="javascript:a_check();">
<input type="button" value="b" onclick="javascript:b_check();">
javascriptのa_check()関数b_check()関数でそれぞれ簡単な
問い合わせ等をした後にOKならdocument.form.submit()で
PHPスクリプトに飛ばしてます。
で$_POSTで入力項目の値は取れるのですが、どちらのボタンが押されたか
判別出来ませんでした。ボタンにname属性を指定しても渡りません。
何か良い方法はあるでしょうか?お願いします。
0282nobodyさん
2005/03/24(木) 02:48:48ID:???<input type=hidden name=hoge>
を用意して、JavaScriptで値を渡してからform.submit()している。
面倒なんだけどね。
0284nobodyさん
2005/03/24(木) 03:08:48ID:???function a_check(){
if( ok ){ return true; }
else{ return false; }
}
<input type="submit" name="a" value="a" onclick="return a_check()">
てのもありかと。
0285nobodyさん
2005/03/24(木) 03:15:10ID:???これってJavaScriptでエラーが発生したら問答無用でsubmitされるんだよね
どうせならフェイルセーフにして欲しいなぁ
0286nobodyさん
2005/03/24(木) 03:21:04ID:???submitを用意すると、textのところでEnterキーを押されると飛んでしまうからヤダ。
当然onclickのところも処理されないし。
0287284
2005/03/24(木) 03:55:09ID:???鯖へのsubmit(意図しないものも含めて)をなるべく減らしたい場合には不適ですね。
0288281
2005/03/24(木) 04:30:41ID:???自分のほとんどjavascriptの質問でしたねすいません・・・
0289nobodyさん
2005/03/24(木) 10:48:10ID:RDA5se46やり方でやるのでしょうか?
0290nobodyさん
2005/03/24(木) 11:27:27ID:???0291nobodyさん
2005/03/24(木) 13:00:58ID:qO9+zWTj内容は↓とよく似ていて、php.ini や、configure の条件もほとんど同じなのですが、
この問いにレスがありません;;
ttp://ns1.php.gr.jp/pipermail/php-users/2005-March/025317.html
さらに、ファイルの末端行について↓のようなエラーが出て、ページが表示されません。
Parse error: parse error, unexpected $ in filename on line 316
{ } が閉じていないとこのエラーが出るようですが、全てのスクリプトは移行前は動いていましたし
括弧のチェックも行いましたが、何が悪いのかわかりません。
何かヒントか勘所ありましたらお教えいただければ幸いです。
よろしくお願いいたします。
0292nobodyさん
2005/03/24(木) 15:26:01ID:???dumpして、縦罫を区切り文字に変換、
行頭、行末の区切り文字を削除
残りの罫線文字を全て削除。
で、csvデータの出来上がり!
0294nobodyさん
2005/03/24(木) 18:06:13ID:???受け渡しが上手くいきません。
(画面)推移は[chageAction]->[chageView]->[resultAction]->[resultView]の
各Actionでデータを加工しています。加工したデータのオブジェクトを
[changeAction]から[resultView]まで持ち回したいのですが、[changeView]->[resultAction]へデータが渡りません。
以下の状況です。
[chageAction]で$request->setAttribute['datalist', $datalist];
[chageView]では受け渡しは何もしていません。
[resultAction]で$datalist = $request->getAttribute['datalist'];
とすると、print_r($datalist)は出力されません。(empty($datalist)がTrueです)
[changeView]でprint_r($request->getAttribute['datalist']);するときちんと表示されます。
また、$requestの利用をやめて単純にセッションで持ち回してみると
[changeAction]で、$_SESSION['datalist'] = $datalist;
[changeView]で、print_r($_SESSION['datalist'])は正しく表示されます。
[resultAction]で、print_r($_SESSION['datalist'])とすると
__PHP_Incomplete_Class Object( [__PHP_Incomplete_Class_Name]といった
失敗したクラスオブジェクトという表示がついたデータ(中身は正しそうです)
が表示されます。直前の[changeView]までは正しく表示されているのに
直後の[resultAction]で失敗していると言われます。
何か、怪しいところ、解決のヒントをいただけないでしょうか。
よろしくお願いいたします。
0295294
2005/03/24(木) 18:09:02ID:???あと、sage質問してしまいました。重ね重ねすみません。
0296nobodyさん
2005/03/24(木) 19:20:48ID:vhVEynDRpearのSpreadSheetExelWriter使えば?
0298nobodyさん
2005/03/24(木) 20:16:47ID:???session_start();
session_unset();
session_destroy();
echo "<form method=POST action=test.php>\n";
echo "<input type=checkbox name=checkbox[] value=test1>test1<br>\n";
echo "<input type=checkbox name=checkbox[] value=test2>test2<br>\n";
echo "<input type=checkbox name=checkbox[] value=test3>test3<br>\n";
echo "<input type=submit value=OK>\n";
echo "</form>\n";
-----------------------test.php-----------------------
session_start();
$checkbox = $_POST['checkbox'];
if (!isset($checkbox)) {
$checkbox = $_SESSION['checkbox'];
}
else {
$_SESSION['checkbox'] = $checkbox;
}
echo "<form method=POST action=" . $_SERVER['PHP_SELF'] . ">\n";
echo "<select name=name>\n";
for ($i=0; $i<count($checkbox); $i++) {
echo "<option value=" . $checkbox[$i] . (($checkbox[$i] == $_POST['name']) ? ' selected' : '') . ">" . $checkbox[$i] . "\n";
}
echo "</select>\n";
echo "<input type=submit value=GO>\n";
echo "</form>\n";
--------------------------------------------------
自鯖だとGOボタンを押してもプルダウンメニューが空っぽにはならないのですが
www.tripod.lycos.co.ukでテストしてみたらGOボタンを押すと同時に空っぽになってしまいました。
セッションの使い方間違っているのでしょうか?
0300nobodyさん
2005/03/24(木) 21:29:55ID:6QAMAmhS多次元配列で、指定したキーの要素が存在するかどうか
チェックする時、キーの範囲を絞って検査する方法
はどうやってますか?
幾つかサンプルを探してみましたが、1次元配列の例しか
見当たりません。
array_key_existsやissetを使うことになると思いますが
どうでしょう?
0301nobodyさん
2005/03/24(木) 21:33:01ID:???0302nobodyさん
2005/03/24(木) 22:00:15ID:???考えてるイメージどおりでいいんでね?
絞った範囲を逐次舐めていくか、一旦範囲を切り取った
別の配列用意して、そこを見ても良いと思うけど。
0303nobodyさん
2005/03/24(木) 22:22:14ID:6QAMAmhSレスありがとうです。
issetやarray_key_existsの第二パラメータを
[]付きで指定するとエラーになりますね。
やはり別の配列に切り取って、上記関数を
使う方法しかないでしょうか。
0304nobodyさん
2005/03/24(木) 22:29:27ID:???とか普通にやるけど?
0305nobodyさん
2005/03/24(木) 22:46:10ID:6QAMAmhSすみません、isset内の$Arr['hoge']は多次元配列でしょうか?
0307nobodyさん
2005/03/24(木) 22:53:52ID:???if(isset($Arr['hoge']['fuga'])){
とかも念の為確認したけど普通に通るね
4.3.4で確認したが、レン鯖とかでもエラーでた覚えはないな
0308nobodyさん
2005/03/24(木) 22:56:24ID:???では、'hoge'や'fuga'の部分を配列変数で指定したらどうでしょうか?
当たり前かもしれませんが、教えてください。
0309nobodyさん
2005/03/24(木) 23:09:46ID:???preg_replaceのパターンに配列使うみてーなん期待してんのなら
無理じゃね?そういう引数とれる関数じゃ元からねーだろ
0310nobodyさん
2005/03/24(木) 23:24:39ID:???登録の時は普通に配列変数を指定できるはずですが、
キーが存在するかどうかのチェック時に指定できない
となると、PHPの配列というのは、用途が限定されてきますね。
存在しないキーを指定して値を取り出そうとすると、
ランタイムエラーになるのですよね?
0311nobodyさん
2005/03/24(木) 23:27:47ID:???ttp://www.php.net/manual/ja/types.comparisons.php
0312310
2005/03/24(木) 23:35:17ID:???私はPHPを詳しく理解してないですけど、
あなたは私が何を言いたいのか理解していない気がします。
0313nobodyさん
2005/03/24(木) 23:42:31ID:???限定も何もPHPがどーのこーのの前に配列が何か良くわかってないんじゃない?
指定の仕方がおかしいっつーてるだけの話よ
別に存在しないKeyの連想配列参照したって構文エラーは出んぞ
0314310
2005/03/24(木) 23:56:46ID:???無効なキーを指定した場合、返ってくる値はNULLでしょうか?
マニュアルで配列のところを見てみましたが、どこに書いてあるのでしょう?
聞いてばかりですみません。
0316nobodyさん
2005/03/25(金) 00:22:20ID:???0317nobodyさん
2005/03/25(金) 02:48:05ID:????? ?? ?? ?? ???? ????
??:: ??
???:: ? ??
????::?:: ???????? ???? ? ????
??????::?::: :::?::??? ? ?
???????::?::?::::: :: :: ::::?::????????? ???
?????????::?:::?:::::::?::??????????? ???
0318nobodyさん
2005/03/25(金) 07:14:19ID:???正確には存在しないキーの配列を普通に参照すると
undefind indexでNoticeレベルのエラーは発生してる
(デフォルトのphp.iniでは確かNoticeレベルのエラーはレポーティングされない)
ただしissetで調べる時はNoticeも発生しない
存在しないキーの変数を無理矢理使おうとすると
NULL補完されてそのまま実行される
$array = array();
$hoge = $array['unknown'];
だと$hogeはNULL
でもあくまでPHPが補完してくれるだけであって
ちゃんとキーが存在するか調べてから
参照するコードを書く方がもちろん良い
話を元に戻して
多次元配列でキーの存在を調べるなら
$list = array(調べるキーのリスト);
foreach ($list as $key) {
if (isset($array['hoge'][$key])) {
・・・
}
}
あとはまあ応用で
0319nobodyさん
2005/03/25(金) 10:40:31ID:???0320294
2005/03/25(金) 10:48:05ID:TwEbcJkKどなたかアドバイスいただけないでしょうか。
0321nobodyさん
2005/03/25(金) 12:01:06ID:???chage〜とchange〜はtypoですか?
あと、文系っぽい質問の書き方を改めた方がいいと思った。
0322nobodyさん
2005/03/25(金) 12:59:58ID:???setAttribute[〜]、getAttribute[〜]は 見るからに怪しい。
0324nobodyさん
2005/03/25(金) 17:37:14ID:???0325294
2005/03/25(金) 17:53:55ID:???>321
typoです。文系っぽいというのはすみません。よくわかりません。
>322,323,324
typoです。わざとじゃありません。()です。でなきゃこの状況以前のエラーになります。
[]なしで書いてみたらもっとわかりづらかったです。
typoがおおくてすみません。なるべく状況をわかってもらえるように
書けば書くほどわかってもらえなくなります。
見直しはしてるのですが、気持ちの方があせってます。
わかりずらい書き方ですみませんが、どなたかアドバイスいただけないでしょうか。
よろしくお願いいたします。
0326nobodyさん
2005/03/25(金) 17:59:29ID:???ソースは基本的にコピペ。投稿する前には再確認しろよ。
0329294
2005/03/25(金) 18:29:56ID:???「typoです。
()と[]の区別がつきません…」
とかのネタは実は覚悟してたんですが、意表をつかれました。
わかりづらい書き方についてのアドバイスを拒否するわけではありませんが
できましたら、その、変数(オブジェクト)の引き渡しについても
アドバイスいただけないでしょうか。
0332294
2005/03/25(金) 18:57:30ID:???>>331
いえ、そうしていいならそうさせてください。上手くかけるかどうかわかりませんが。
今夜もう一度書きます。お目汚しすみません。
0334294
2005/03/25(金) 21:57:21ID:???あの、すみません。本当に4のどこに該当したでしょうか。
再度書こうとしているのですが、うまくまとまりません。
あと、他の方からのご指摘ですが文系っぽい文章もよくわかりません。
自覚がないのは手に負えないとは思うのですが…。
なんだか簡潔に書こうとすると省略が増えて、「最初から言えよ」と
言われそうです。コードを中心に助詞とかはぶいて書くと(理系っぽい?)
傲慢な感じです。(「コード見てわかれよ」というような)
結局typo部分を修正する程度になってしまうかもしれません。
といいつつもうすぐイラン戦なので、明日になるかもです。
typoについてご指摘いただいた方には、感謝してます。少なくとも
わかりづらい文章を読んでいただいたので。
>>333
もっと意表を衝かれました。
0335nobodyさん
2005/03/25(金) 22:00:57ID:???どっかにうpした方がよくなくって?
フレームワークスレ(Phrameと銘打ってあるが多分mojaviでも良かったかと)もあるけど、
あの書き方だとレス付かない希ガス
0336nobodyさん
2005/03/25(金) 22:19:34ID:???■ このスレッドは過去ログ倉庫に格納されています