【PHP】質問スレッドpart21【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/08/27 18:00ID:???・新規質問の方は上げてください。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
0314nobodyさん
04/09/01 18:18ID:???<form method="post" action="hogehoge.php">
<button type="submit" name="hage" value="tsurupeta">push!</button>
</form>
において、hogehoge.phpで$_POST[hage]の値が、
"tsurupeta"ではなく、"push!"が入っています。
valueで設定した値を取り出すことはできないのでしょうか?
0315nobodyさん
04/09/01 18:24ID:???<input type="hidden" name="hage" value="tsurupeta" />
<input type="submit" value="push!" />
</form>
こうやってみたら?
0316314
04/09/01 18:33ID:???すいません。言葉足らずでした。
実はボタンを複数置きたいのです。
質問を書き直すと、
<form method="post" action="hogehoge.php">
<button type="submit" name="hage" value="tsuru">push!</button>
<button type="submit" name="hage" value="peta">push!</button>
<button type="submit" name="hage" value="tsurupeta">push!</button>
</form>
として、
hogehoge.phpでどのボタンが押されたか判別したいのです。
ボタンのnameは同じにしたい
formタグはひとつですませたい
htmlタグ以外の技術はなるべく使いたくない
というのが希望です。
$_POST[hage]にvalueの値でなく、nameの値が入っているのは正常な動作なのでしょうか?
そうだとするとvalueの値ってのはいったい何の意味が。。。
よろしくお願い致します。
0317nobodyさん
04/09/01 19:03ID:???<form method="post" action="hogehoge.php">
<button type="submit" name="hage[tsuru]" value="push!" />
<button type="submit" name="hage[peta]" value="push!" />
<button type="submit" name="hage[tsurupeta]" value="push!" />
</form>
って感じにして、
$hoge=key($_POST['hoge']);
$hoge=pop($hoge);
ってのはどうよ?
試してないからうまくいくか知らないけど。
0318nobodyさん
04/09/01 19:05ID:???セットで送信されるに ''==ァ-‐‐,'゙<l _,,
決まってるじゃん `、:/::r'゙゙'_ェ'゙゙i、._ /ラノ マタ
,=キヅ `'ラ/ヾ/ (シフ マタァ〜 ゴジョウダン ヲ
,ケ:: ',. / ,:'゙
と思って試してみたら、ほんとにおかしな挙動をする。
有名なバグなのかなぁ。オイラは初めて知った。
(buttonはトリガーにしか使ったことがない。)
で、検索してみると http://d.hatena.ne.jp/nekoshiki/?of=4 がヒットした。
検索ワードは、「仕様 していない button value」。
0319nobodyさん
04/09/01 19:48ID:???IE 5.5, IE 6.0 → ボタンに表示されているものが入る。
Mozilla 1.7, Opera 7.54, Lynx 2.8.4 → valueが入る。
IEは「正常に」動作しているので改心してください。
0321nobodyさん
04/09/01 19:59ID:???0322nobodyさん
04/09/01 20:02ID:???一つの問題には多数の解法があるのに、何故それにこだわってやってるのかと…
0323nobodyさん
04/09/01 20:52ID:???>出力すると \r\n に変換されて記録されるよね。
だれか突っ込んであげないの?
0324nobodyさん
04/09/01 20:59ID:???<input type="submit" name="hage" value="push2>
<input type="submit" name="hage" value="push3>
でhageの中身見ればいいじゃん
0325nobodyさん
04/09/01 21:11ID:eg9a6m5n0326nobodyさん
04/09/01 21:12ID:/v+NW53mhttp://www.yuyuweb.com/garden/bbs/ccbmbs1/bbs1.cgi?room=1234
0330314
04/09/01 21:39ID:???IEの方言だったのですね。。。
ということはこのまま進めて解決してもIE以外では使えないって事か。。。
>>317
keyでは用意されたボタンの一番初めのキーが返ってくるようです。
つまり、例の場合だと、何を押してもtsuruが返ってきます。
用は、連想配列の要素にpush!が入ってるのはどのキーか探せばいいわけですね。
使えそうな配列関数を探してみます。
>>322
すんません。
はじめたばかりなんで、調べたこと以外のことはなかなか思いつかなくて。。。
ボタンの数が変動する上、キーの名前が固定されていないので、
issetでではむつかしいかな?
よくわかんないんですが。
>>324
ボタンに表示される名前をすべて同一にしたいのでダメかな。。。
>>325
その皮肉?すらわからない初心者でして。。。すんまそん。
みなさん、ありがとうございました。
もうちょい苦しんでみます。
0331nobodyさん
04/09/01 21:45ID:???<form method="post" action="hogehoge.php">
<input type="hidden" name="button" value="1">
<input type="submit" name="hage" value="push>
</form>
<form method="post" action="hogehoge.php">
<input type="hidden" name="button" value="2">
<input type="submit" name="hage" value="push>
</form>
<form method="post" action="hogehoge.php">
<input type="hidden" name="button" value="3">
<input type="submit" name="hage" value="push>
</form>
0332317
04/09/01 21:57ID:???実験してみたら、押してないボタンの内容まで全部送られてるっぽいから、どのボタンが押されたかの判定は無理っぽい。
>>318 の問題そのまんま。
button じゃなくて input を使うといいっぽいよ。
<form method="post" action="hogehoge.php">
<input type="submit" name="hoge[tsuru]" value="push!" />
<input type="submit" name="hoge[peta]" value="push!" />
<input type="submit" name="hoge[tsurupeta]" value="push!" />
</form>
って感じにして、
$hoge=key($_POST['hoge']);
$hoge=$hoge[0]; // さっきは pop を使ったけど、これでいいよね
これで OK じゃない?
0333nobodyさん
04/09/01 22:03ID:2OWt62Va$a = substr("abcdefg",1,3);
こんな感じでやっていたのですが、
「二文字目からからfに当たるまでを切り出したい」
というような場合はどうしたらいいのでしょうか?
0334317=332
04/09/01 22:04ID:???ボタンは同時に 1つしか押されないから、$_POST['hoge'] に含まれるキーの数は 1つってことで、
$hoge=key($_POST['hoge']);
これは Array が返るんじゃなくて、そのままキーが返るね。
だから、この 1行だけで OK みたい。
$hoge=$hoge[0] の行はいらない。
>>325
それを使ってどんな解決法があるのか教えてくれ。
ぜひ参考にしたい。
0335314
04/09/01 22:13ID:???formタグを複数使うと段落の成形がずれていくので。。。
すいません。
>>332>>334
デキタ━━━━━(゚(゚∀(゚∀゚(☆∀
理論がわかんないので調べますw
ありがとうございました。
0340nobodyさん
04/09/01 22:29ID:???PerlのファイルからPHPのファイルに変数を送ることはできますでしょうか?
例えば、Perlファイルで $a=3 という変数を
PHP側でも使用できるようにしたいのです。
0341nobodyさん
04/09/01 22:46ID:???0342nobodyさん
04/09/02 00:22ID:???0343nobodyさん
04/09/02 14:25ID:???何がやりたいのかよくわかんないけど、
Perl のファイルから Perl のファイルへ変数を送ることはできるんですか?
そのサンプルコードを提示すれば、きっとあなたのやりたい事が理解できると思いますし、
だれかからなんらかのアドバイスももらえるんじゃないでしょうか。
0344nobodyさん
04/09/02 15:54ID:???ファイルのサイズが大きいのでreadfileを使わず
読み込みバイトを区切って出力していくにはどうしたらよいでしょうか
0347344
04/09/02 16:22ID:???分割ではなくて、
$fd = fopen($filename, "rb");
while(!feof($fd)) {
echo fread($fd, 4096);
};
fclose ($handle);
ってやってみたのですが、だめだったんです。
0348344
04/09/02 16:23ID:???$fd = fopen($filename, "rb");
while(!feof($fd)) {
echo fread($fd, 4096);
};
fclose ($fd);
でした
0350nobodyさん
04/09/02 16:33ID:???ファイルを copy() させたいのですが
failed to open stream: Invalid argument
と言われます。パスに空白があるせいなのですが、どうしたらいいでしょうか?
0351nobodyさん
04/09/02 16:46ID:???だめって、どうだめなのよ?
で、そのコードは readfile とほとんど同じことをするものに見えるけど、なんで readfile じゃいけないの?
0352nobodyさん
04/09/02 16:49ID:???アップロード先ディレクトリのパーミッションが777以外で使えないのですが
他のパーミッションで使える方法ってありませんか?
0353nobodyさん
04/09/02 16:51ID:???Linux上で動いてるPHPだけど、スペース入りのパス作って Copy したけど、ちゃんと動いたよ。
スペースの問題じゃなくて、\ 記号をエスケープしてないとかじゃない?
0354344
04/09/02 16:54ID:???if ($fd = fopen($filename, "rb"))
としてやってみましたが、成功しているようです。
>>351
ファイルサイズが小さいものであればreadfileでできたのですが
ファイルサイズが大きいものをreadfileすると
ブラウザ上でサーバーが見つかりません
と表示されてしまいます。
0357nobodyさん
04/09/02 17:06ID:???なにが原因かはわかんないけど、サーバが見つかりませんってのは解せないね。
ループ一回ごとに Ob_Flush でも入れてみたらいいことあるかな?
0358nobodyさん
04/09/02 17:19ID:???0359nobodyさん
04/09/02 17:24ID:???0360344
04/09/02 17:37ID:???if ($fd = fopen($filename, "rb")) {
while(!feof($fd)) {
echo fread($fd, 4096);
ob_flush();
}
fclose ($fd);
}else{
echo "open error";
};
正しいかわかりませんが
でうまくいきました!ありがとうございました。
0363nobodyさん
04/09/02 21:12ID:???707はchmodとか使わない限り不要だろ
0364nobodyさん
04/09/02 21:34ID:???0365nobodyさん
04/09/02 21:39ID:???0366nobodyさん
04/09/02 22:55ID:???formの値がクリアされるが値を残す方法はありまつか?
0367nobodyさん
04/09/02 23:39ID:???JavaScriptとCookieで実現するのが一番常道だとは思う。
一応できなくはない、と。
0370nobodyさん
04/09/03 01:38ID:???テンプレート使ってるんだけど、そのページからsubmitして
confirmページへ飛ばして確認させて、間違いがあった人って
大半が「ブラウザの戻る」で戻しちゃんうんですよ。
0371nobodyさん
04/09/03 02:33ID:???0373nobodyさん
04/09/03 17:06ID:J5j4fe3Zphp /path/to/a,php
と起動すると問題なく実行できるのですが、
cron から 起動すると cronの実行は行われているのに、
a.phpの処理は行われないようです。
a.phpはエラーを吐くと思うのですが、
どうやってエラーを拾えばいいでしょうか?
php.ini の
log_errors = On
error_log = /path/to/error.log
を設定しましたが、エラーログははかれていないようです・・・
1行目のCGIコマンドを追加すべし。
#!/usr/local/bin/php
0375nobodyさん
04/09/03 17:43ID:???php コマンドにパスが通っていないだけでは?
cron に登録際に絶対パスで php コマンドを呼び出すとか。
/usr/local/bin/php /path/to/path/a.php
エラーを拾いたければ以下のように cron に登録すると簡単。
書き込み権限の確認を忘れないように。
/usr/local/bin/php /path/to/path/a.php &> /path/to/path/error.log
そういえば、私も別のパスからcron呼び出して相対パスで失敗したわ。
1行目でchdirで修正するのが楽かと。
0377nobodyさん
04/09/03 17:54ID:J5j4fe3Zorz・・・
ご指摘通り
/usr/local/bin/php
にパスが通ってなかっただけのようです。
cronからの起動だと /usr/local/bin/ のファイルもパス通ってないんですね・・・
・・・php側、全てフルパスに書き換えてしまった。
0378nobodyさん
04/09/03 17:55ID:???カレントディレクトリの違いでPHPスクリプトの中の include が失敗してるのかもよ。
cd /path/to/; php /path/to/a.php
ってやるとどうかな。
0379nobodyさん
04/09/03 18:02ID:J5j4fe3Zrequire するファイルのパスは気にしてたんですが・・・
phpのパスを気にしてませんでした。
0381nobodyさん
04/09/03 18:15ID:???705でやってるよ、俺は
0382nobodyさん
04/09/03 23:31ID:???SQLシンタックスエラーで帰ってくるんだけれど、
どうしたらいいの?
0383nobodyさん
04/09/04 00:35ID:???このページを参考に、PHPでメニュー領域とコンテンツ領域に分けたくて
色々やってみました。でもさっぱり分かりません。
リンク先、というかhtmlのフレームで言うtargetに当たる部分が全然わからない。
メニューはincludeできるんですけど、個々のメニューをクリックした時に
リンクされてるファイルを、同じページ内の同じ場所に表示する方法がどうしても分かりません。
今日は夕方位からずっとググりまくりで死ぬほど眠いので
明日また改めて質問させて下さい。その時はどうか宜しくお願いします。
0384nobodyさん
04/09/04 00:49ID:???0385nobodyさん
04/09/04 00:52ID:???コンテンツページすべてでメニューをインクルードすれば
メニューのよこにコンテンツが出力されたように「見える」ところがミソ。
0386nobodyさん
04/09/04 01:48ID:???おまいは騙されてる。
次の手段が考えられる。
1. SSI, PHP といったサーバサイドでの対応。
2. Dreamweaver 等、コンテンツ管理ツールの活用。
結論から言えば参照先の手法はオーバースペック。
自分で安全に運用する自信が無い、または手に余るなら迷わず 2 を選んでおけ。
つーか、俺がコイツと仕事したら良くも悪くも喧嘩になるな。
網羅的に語っているがどれも浅いよ。
営業さんとしては優秀かも知れないが。
0387nobodyさん
04/09/04 02:49ID:???その値に合うコンテンツを右っ側にインクルードするように作れば
ちょっとフレームっぽい感じ? あんま意味ないけど。
0388カポコン
04/09/04 02:57ID:???header("Expires:Sat,1 Jun 1975 00:00:00 GMT");
header("LastModified:".gmdate("D, d M Y H:i:s")."GMT");
header("Cache-Control:no-cache,must-revalidate");
header("Pragma:no-cache");
include("menu.htm");
include("main.htm");
?>
こんなんでいいんじゃないのページの結合は・・・。
header()から中はあってもなくてもいいけど、キャッシュ対策で・・・。
0389nobodyさん
04/09/04 03:04ID:???385の普通さが逆に不思議だ
0390nobodyさん
04/09/04 03:12ID:???電波お花畑も含めて。
0391nobodyさん
04/09/04 03:15ID:???0392nobodyさん
04/09/04 03:34ID:???ネタが思いつきません。
>>383にあって俺に無いものはいったいなんでしょうか?
後日来ますので、その時はどうかよろしくお願いします。
0393nobodyさん
04/09/04 09:18ID:???|| Java厨の特徴 - Learn Once, Boo Anywhere -
|| ○なんでPHPは〜なの? を連発
|| ○他の言語の流儀を学ばずJavaの流儀を強引に持ち込む
|| ○言語仕様に矛先を向ける Λ_Λ
|| ○温室育ちのJavaしか出来ない可哀相な人が \ (゚ー゚*) キホン。
|| 業務で渋々PHPに流された哀れな姿です ⊂⊂ |
||___ ∧ ∧__∧ ∧__ ∧ ∧_ | ̄ ̄ ̄ ̄|
( ∧ ∧__ ( ∧ ∧__( ∧ ∧  ̄ ̄ ̄
〜(_( ∧ ∧_ ( ∧ ∧_ ( ∧ ∧ は〜い、先生。
〜(_( ,,)〜(_( ,,)〜(_( ,,)
〜(___ノ 〜(___ノ 〜(___ノ
0394nobodyさん
04/09/04 13:05ID:vhwDcUgjマニュアルには以下のようにあります。
いくつかのオーペレーティングシステムでflock() はプロセスレベルで実装されています。
ISAPIのようなマルチスレッド 型のサーバーAPIを使用している場合、同じサーバーインスタンスの
並列スレッドで実行されている他のPHPスクリプトに対してファイルを保 護する際に
flock()を使用することはできません!
当方 Linux + Apache2.0 なのですが、サンプルコードでロックがかかるかどうか検証した結果、
きちんとロックされることを確認しました。
ということは、うちの環境では flock は期待通りに動く、ということでしょうか。
以下の試験方法に穴がありそうなら指摘してください。
検証方法は、あるファイルに対して flock して、sleep により数秒待ち、アンロックする、というスクリプトに、
ブラウザから複数アクセスしてみる、という内容です。
flock の直前直後、及びアンロックの直後でタイムスタンプを取得し、ブラウザ上に表示させ、処理が
重なっていないことを確認しました。
0395nobodyさん
04/09/04 13:17ID:???0397753
04/09/04 15:49ID:xk4dCUYphttp://www.php.net/manual/ja/keyword.extends.php
には、「派生クラスは、基底クラスの全ての変数と関数を有します。」
とあるんですが、関数にはアクセスできますが、変数のアクセスがわかりません。
サンプルは下記で考えました。
派生クラスでは、基底クラスのコンストラクタを暗黙的に呼び出さないので、
どこかで明示的に呼び出す必要があると考えてよろしいのですか?
でも、それだと、マニュアルと違うような気もするし。基底クラスのオブジェクトを
たくさん作ってしまうことになりませんか?
class A{
var $a = "value a";
function A(){
$this->a = "this is value \$a !!\n";
}
}
class B extends A{
var $b ;
function B(){
$this->b = "this is value BBB!!\n";
}
}
$obj_b = new B();
// これは"this is value BBB!!"が出力されるが
echo $obj_b->b ;
// これは何も出力されない(出力されるのを期待していたのだが)
echo $obj_b->a ;
// 基底クラスのコンストラクタを明示的に実行すると"this is value $a"が出力
$obj_b->A();
echo $obj_b->a ;
0398nobodyさん
04/09/04 16:23ID:???0400nobodyさん
04/09/04 17:34ID:VbBMSnkV<?=$subject?>
というのが出てきたのですが、これはいったいどういう意味なのでしょうか?
<?〜?>というのは知っているのですが、=が入っていきなり変数と言うのが
良くわかりません。
「<?=」で検索しようとしたのですが、記号だけなので検索できないようです。
誰か教えてください…
0402力不足
04/09/04 17:41ID:XFPNR40zフレームを使用して使いたいので、別窓で開くようにしたいのですが…
<?php
require_once 'rss_fetch.inc';
require_once 'code_table.ucs2jis';
require_once 'jcode.php';
$url = 'http://www.hyuki.com/yukiwiki/wiki.cgi?RssPage';
$rss = fetch_rss($url);
$title = $rss->channel['title'];
//JcodeConvert($str, $from, $to) 0:PASS(無変換)1:EUC-JP 2:Shift_JIS 3:ISO-2022-JP(JIS) 4:UTF-8
$title = JcodeConvert($title, 0, 2);
echo "<h2>$title</h2>\n";
echo "<ul>\n";
foreach ($rss->items as $item ) {
$title = $item[title];
$title = JcodeConvert($title, 0, 2);
$url = $item[link];
echo "<li><a href=\"$url\">$title</a></li>\n";
}
echo "</ul>\n";
?>
echoや $urlの後に" target="_blank"を入れたのですが…
いろいろいじくってみたんですが、わかりません。教えていただけないでしょうか?
0403nobodyさん
04/09/04 17:42ID:???「基本的な構文」も参照
ttp://jp.php.net/manual/ja/language.basic-syntax.php#language.basic-syntax.phpmode
設定によっては使えないので、使わないのが吉
0406nobodyさん
04/09/04 17:53ID:???Perlで以下のようにやっていたことをPHPでやりたいのですが。。
my $a = q(<a href="test.html">test</a>);
これがないと非常に不便かも…。
0409nobodyさん
04/09/04 18:33ID:T4Uqd+Ho0412nobodyさん
04/09/04 19:35ID:???■ このスレッドは過去ログ倉庫に格納されています