【PHP】下らねぇ質問はID出して書き込みやがれ 76
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/11/13(木) 04:15:32ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 75
http://pc11.2ch.net/test/read.cgi/php/1224168721/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0266nobodyさん
2008/11/20(木) 01:52:36ID:???Parse error: syntax error, unexpected ';', expecting ',' or ')' in C:\xampp\htdocs\result.php on line 23
ってエラーが出たもんで、
unexpected ';'
って書いてあるもんだから、余計な;セミコロンが
あるんだろうなー、、、てわかったんだけど、
エラーメッセージは見なかったのかな?
0267260
2008/11/20(木) 01:52:55ID:GXD6uC7d付け加えたら氏名がhobbyになりますた
0268nobodyさん
2008/11/20(木) 01:53:02ID:???0269nobodyさん
2008/11/20(木) 01:59:33ID:???print $sports ;
?>
↑これが唐突に出てきてるんだけど、
$sports はどこで定義されてるの?
0270nobodyさん
2008/11/20(木) 02:00:15ID:???0271nobodyさん
2008/11/20(木) 02:02:58ID:YCb8rCMrマニュアルをコピペしてるだけのサイトってなんなの?
検索でひっかかってすげーウザいんだけど。
0272260
2008/11/20(木) 02:08:17ID:GXD6uC7d修正した
>>270
会社ではあいよ
専門学校
>>266
エラー吹いたら英語の時点で読む気がwww
0273nobodyさん
2008/11/20(木) 02:16:54ID:HLYnX99eWindowsでphpファイルを作成しているんだが、
エディタの設定で、改行コードは、windowsの標準のCR/LFで
保存されてるんだが、サーバーにアップロードするときに、
特に何もしないで、CR/LFのままアップロードしてるんだが、
本当はUNIX標準改行コードのLFに直してから
アップロードしないとだめなの?
0274nobodyさん
2008/11/20(木) 02:24:44ID:HLYnX99e自己解決した。
アスキーモードでアップロードするなら、
FTPソフトが自動で改行コードも
変換してくれるそうです。
0275272
2008/11/20(木) 02:24:59ID:GXD6uC7dマジ分からんお手上げです><
誰か修正してくだしあ
0276nobodyさん
2008/11/20(木) 02:35:00ID:HLYnX99e↑ここ見てたら、こんな表現を発見してしまった
# // ボタンが押されたら
# if($_GET['cmd']<>""){
いったい、どれを使えばいいんだ?
0277nobodyさん
2008/11/20(木) 02:36:28ID:HLYnX99eデフォルトではNULLなのか?
0279nobodyさん
2008/11/20(木) 03:57:43ID:8S9SJ1aO31日、毎日違う文を表示させたいのですがどう書いたらいいですか?
フリーで探したんですけどなくて・・・
0280nobodyさん
2008/11/20(木) 04:00:01ID:???んで31個文章作るだろ?
あとはそれ同士をくっつけて取ってくればおk
0281nobodyさん
2008/11/20(木) 05:25:19ID:???0282nobodyさん
2008/11/20(木) 05:34:31ID:???ID:LBY0wnii
ID:uO1yzOV4
ID:WbAApVvS
ID:rh/HC40w
ID:HLYnX99e
0283nobodyさん
2008/11/20(木) 05:36:52ID:8S9SJ1aO<?php
$today = getdate();
if($today[mday] == 1) {
include "1.php";
}
elseif($today[mday] == 2) {
include "2.php";
}
else {
include "3.php";
}
?>
似た感じのソースを見つけたんですけど、
こんな感じで elseif を増やしていけばいいですか?
最後のelseは例えばelseif を1〜30まで作って、
どれにも該当しない場合(31日)でる処理で大丈夫ですか?
よろしくお願いします。
0284nobodyさん
2008/11/20(木) 05:50:31ID:???switch文にしな
というかファイル名と日時が一緒なら
単にinclude($today["mday"] . ".php")でいいのでは?
0285nobodyさん
2008/11/20(木) 06:21:13ID:8S9SJ1aOありがとうございます
<?php
$today = getdate();
include($today["mday"] . ".php")
?>
で、済むということですか!?
0286nobodyさん
2008/11/20(木) 07:30:39ID:???1.phpから31.phpを用意するならね
同じディレクトリだとファイル数が多くなってごちゃごちゃするから
もしやるなら別のディレクトリにしたほうがいい気がするけど
include("./dir/" . $today["mday"] . ".php")
今日は○日ですというだけのスクリプトならば
$today = getdate();
echo "今日は" . $today["mday"] . "日です<br>\n";
だけでいいし
数文字程度の占いみたいなメッセージをechoするだけなら
わざわざ30個ファイル作るよりswitch文使って条件分岐した方がいいと思う
その場合メッセージをreturn値にして関数化したほうがごちゃごちゃにならなくていいと思う
0288nobodyさん
2008/11/20(木) 09:17:44ID:8S9SJ1aOちょっとreturn値とか頭がこんがらがりそうなので
先ほど教えてくれた、
include("./dir/" . $today["mday"] . ".php") でやってみる事にします。
ありがとうございました。
>>287
わかりました!
でもちょっとやり方がわからないので1−31まできちんと用意すれば
大丈夫ですよね?;
0289nobodyさん
2008/11/20(木) 09:31:03ID:???$inc_file = "./dir/" . $today["mday"] . ".php";
if (file_exists($inc_file)) {
include($inc_file);
else {
echo "ファイルがないよ";
}
例外処理でやるのが理想的だけどわからなそうだから
簡素化するとこんな感じかね
0290nobodyさん
2008/11/20(木) 11:19:40ID:8S9SJ1aO助かりました、そのまま使わせていただきます
親切にありがとうございます!
0291nobodyさん
2008/11/20(木) 13:12:48ID:???とかどう
0292nobodyさん
2008/11/20(木) 13:30:28ID:???その時点でincludeされてしまうだろ
is_readableとかならわかるけどさ
きりがないしそこまでやる必要はないと思うけどね
0293nobodyさん
2008/11/20(木) 16:27:48ID:???0294nobodyさん
2008/11/20(木) 16:46:35ID:???2回includeするもんだと思ってたわ
でも条件演算子を普通に使うのは違和感がある
0295nobodyさん
2008/11/20(木) 16:50:28ID:???0296nobodyさん
2008/11/20(木) 17:02:26ID:HLYnX99e変数を初期化する、って言ったら、普通
$a= "";
ってするものなの?
0297nobodyさん
2008/11/20(木) 17:05:27ID:???0298nobodyさん
2008/11/20(木) 17:12:49ID:HLYnX99e↑これでもいいの?
0299nobodyさん
2008/11/20(木) 17:14:55ID:???if文でどう書くの?
if (file_exists($inc_file) && include($inc_file)) {
}
この中身を空にするわけ?
いろいろと構文的にもおかしいよ
0300nobodyさん
2008/11/20(木) 17:20:00ID:???0301nobodyさん
2008/11/20(木) 17:22:23ID:???ここを汲み取れ
ちなみにincludeするファイル内にreturn書いてない限りifにincludeを書かない方がいいよな
読めなければfalseになるが、E_WARNINGを制御出来るわけじゃないし
0302nobodyさん
2008/11/20(木) 17:40:31ID:???includeはできるわけでincludeできることを前提で書いたほうがいい
もしファイルが存在して読み込み可能なのにincludeできないなんてことが仮におこった場合
それは普通の状態でないわけで
書き手がそこまで責任を負うことはない
0303nobodyさん
2008/11/20(木) 17:47:16ID:AwsGLaDAhttp://www.php.net/manual/ja/language.operators.logical.php
>>295 は例1に書いてあることを言っているんじゃないかと思う。
質問者にとってはどうでもいいことだが。
>>302
あなたのところではそうかもしれないが、少なくとも私のところでは
そうではない。
どうでもいいことだが。
同じ人が同じような処理をするコード書いても、前提や目的によって
だいぶ変わるだろ。そういうことを無視して意見されても全く参考に
ならない。
0304nobodyさん
2008/11/20(木) 17:50:08ID:???「仮に」ifの条件中に書いたとしても動作は同じだよってこと言ってるんだと思うが。
ちなみに構文的にどこがだめなん?おかしくないよ。
0305nobodyさん
2008/11/20(木) 17:53:21ID:HLYnX99e<form name="abc" action="abc.php" method="post">
<input type="submit" value="push" name="def">
</form>
<php
print_r ($_POST['abc']);
print_r ($_POST['def']);
print $_POST['abc'];
print $_POST['def'];
?>
これで、何も表示されないんだが、なんで?
0306nobodyさん
2008/11/20(木) 17:53:56ID:???0307nobodyさん
2008/11/20(木) 17:55:57ID:???じゃぁifの中にinclude入れると意味ないんじゃ・・・
includeすることが前提で読み込まなきゃ先に進めないようなものならrequire使うだろうし
でも構文的には間違ってないな、目的の用途しては適してないだろうけど
0308299
2008/11/20(木) 17:56:49ID:???勘違いしてた
if文の中身書かないとなんかwarnが出たと思ったけど気のせいだった
もし中身書くなら条件文を否定にすればいいのかな?
if (!file_exists() && !include()) {
echo "includeできない";
}
0310nobodyさん
2008/11/20(木) 17:57:28ID:HLYnX99eごめん、初心者なんでそれだけだとわかんない。
0313nobodyさん
2008/11/20(木) 17:58:52ID:HLYnX99eあのさ、キミいつも
教え方があまりにも抽象的すぎるんだよ
会社でもそういわれるだろ?
「もっと具体的にわかりやすくしゃべれ」って。
0314nobodyさん
2008/11/20(木) 17:59:24ID:???if (file_exists($inc_file) {
include($inc_file);
} else {
echo 'includeできない';
}
でいいじゃん
0315nobodyさん
2008/11/20(木) 17:59:59ID:???0316nobodyさん
2008/11/20(木) 18:01:37ID:???ずばりそれ
別に短く書くことを競ってるわけじゃないしな
後はis_readableとか、is_file絡めるくらいっしょ
0317nobodyさん
2008/11/20(木) 18:02:29ID:HLYnX99eサンキュー
構文チェックしたら
No syntax errors detected
になるんだけど、なんで??
無料のエディター使ってるから?
0318nobodyさん
2008/11/20(木) 18:02:44ID:???その通り
ファイルの存在チェックとincludeできるかの評価を
一緒の式ですべきでない
もしやるとしたら
if (file_exists($inc_file)) {
if (include($inc_file)) {
}
}
どうみても冗長だけど
0319nobodyさん
2008/11/20(木) 18:04:30ID:???0320314
2008/11/20(木) 18:06:04ID:???ってまぁ>>289で既に書かれてたから蛇足もいいところだけど
>>318
それだったら波括弧いらなくね?
てかifの中に入れる場合の議論をする必要性がわからないw
「ifだったら>>291は動作しない」→「仮にifに入れても動作は同じ」っていう仮定の話だったのにw
0321nobodyさん
2008/11/20(木) 18:06:44ID:AwsGLaDA「すべきでない」理由とはなんですか?
0323nobodyさん
2008/11/20(木) 18:07:52ID:HLYnX99e<form name="abc" action="ghi.php" method="post">
<input type="submit" value="push" name="def">
</form>
<?php
$_POST['abc']="";
print_r ($_POST['abc']);
print_r ($_POST['def']);
print "<br>";
print $_POST['abc'];
print $_POST['def'];
?>
これで
push
push
と表示されるようになったけど、
<form name="abc" の「abc」と、(1)
name="def"> の「def」は、(2)
必ず、違う文字列にしないとだめなの?
もし(1)と(2)を同じ文字列にして(例えば「aaa」とか)
そんでそれをprintするってときに、
どっちのaaaなのか、phpはちゃんと判別できるの?
0325nobodyさん
2008/11/20(木) 18:14:43ID:HLYnX99e<input type="submit" value="push" name="def">
</form>
<?php
$_POST['abc']=""; //配列変数初期化
$_POST['def']="";//配列変数初期化
print_r ($_POST['abc']);//プリント
print_r ($_POST['def']);//プリント
print "<br>"; //改行
print $_POST['abc'];//プリント
print $_POST['def'];//プリント
?>
------------------------
↑これで、画面になんも表示されなくなった。
ということは、ボタンをプッシュする行為では、
変数には、なんの値もセットされない、という
理解でいいのか?
0326nobodyさん
2008/11/20(木) 18:15:17ID:???0327nobodyさん
2008/11/20(木) 18:18:31ID:HLYnX99eさっきボタン押したときに
push
って表示されてたもんねえ
だからボタンを押すと、pushって文字列が
配列変数にセットされるはずなんだけど、
phpのコードの先頭で、配列変数を初期化してしまうと、
そっちの権力のほうが優先されてしまうのか?
0328nobodyさん
2008/11/20(木) 18:18:48ID:AwsGLaDAそれ、321に対する回答でしょうか?
「一緒の式ですべきでない」のが「warning対策」という主張なら、
303に書いたリンクにかかれていることからも、実際に試してみた
結果からも、理解できませんでした。
0329nobodyさん
2008/11/20(木) 18:23:39ID:???変数使う時は初期化するのが原則だもんな。
発想は斬新で素晴らしいと思う。
>>328
322でも307でもないけど、307は
「ifは条件を満たしたときに実行したい処理を書くために使うもので、
Warning防止の目的なら291でいいし、未読み込み時の処理実行を防止したいなら
requireを使えばいい話だ」ということを言ってるんじゃないかな
0330nobodyさん
2008/11/20(木) 18:25:22ID:???includeできるかどうかをチェックするって発想が
includeできる状態かどうかをチェックするっていう発想が正解
その上でincludeするのがプログラム的にも自然
この辺は感覚だからうまく説明できないけど
まぁ慣れてくればわかるよ
0333nobodyさん
2008/11/20(木) 18:43:39ID:???0334nobodyさん
2008/11/20(木) 18:45:25ID:???0335nobodyさん
2008/11/20(木) 18:45:45ID:AwsGLaDA307に書かれていることを質問しているわけではないですし、
その要約も318の「一緒の式ですべきでない」につながりません。
>>330
includeできる状態かチェックしても、includeしたとき
「includeできる状態」かどうかわかりませんよ。
ええ、くだらないこと書いてるのは百も承知です。
だけど、自分の正解がみんなの正解とは限らないんですよね。
0336nobodyさん
2008/11/20(木) 18:46:33ID:???悪文なのが原因
0338nobodyさん
2008/11/20(木) 18:48:54ID:HLYnX99e<input type="submit" value="push" name="def">
</form>
<?php
// $_POST['abc']=""; //配列変数初期化
// $_POST['def']="";//配列変数初期化
if (isset($_POST['abc'])){//もしボタンが押されたら
print_r ($_POST['abc']);
}//プリント
print_r ($_POST['def']);//プリント
print "<br>"; //改行
if (isset($_POST['abc'])){//もしボタンが押されたら
print $_POST['abc'];//プリント
}
print $_POST['def'];//プリント
?>
--------------------------
↑これにしたら、Noticeエラーも出なくなったし、
ボタン押したら、「push」って表示されるようになった。
しかし、変数の初期化ができないではないか?
変数の初期化をすると、画面に何も表示されなくなってしまう。
どうしたらいいんだ?
0339nobodyさん
2008/11/20(木) 18:50:08ID:HLYnX99eしかし、その場合、セキュリティ上の危険性があるのではないか?
0340nobodyさん
2008/11/20(木) 18:51:04ID:???0341nobodyさん
2008/11/20(木) 18:52:39ID:???随分と疑い深い性格だね
要するにPHPの処理機構を信頼できないわけだな?
includeできる状態でincludeできないというのは起こりえない
その起こりえないケースを想定するなんて時間の無駄
0342nobodyさん
2008/11/20(木) 18:53:18ID:AwsGLaDA何を推測していただいたのか判りませんが、
私の頭の思考回路のことなら、たしかに問題あるでしょうね。
0343nobodyさん
2008/11/20(木) 18:56:18ID:???0345nobodyさん
2008/11/20(木) 19:01:31ID:HLYnX99eしかし変数を初期化すると、
ボタンを押しても何も表示されなくなるんだよ
なんでなんだろうね?
0346nobodyさん
2008/11/20(木) 19:01:45ID:AwsGLaDAPHPが信用できないとは書いていませんし、そう思っている
わけでもありません。
状態を確認してから実際にincludeするまでの間に、
何かが起こる可能性を無視できないんではないかと言っている
だけです。
無視できる人は無視すればいいです。私も無視しています。
0347nobodyさん
2008/11/20(木) 19:01:58ID:???0349nobodyさん
2008/11/20(木) 19:03:32ID:HrZmpLyBphpの本を買ったところ、php.iniの設定が必要とありました。内容は
extension = pdo_mysql.so
として、「MySQLのPDOドライバを有効にする」ということでした。
これは、この通りに書けばいいものなのでしょうか?
拡張ファイルpeclを落とさなきゃいけないのかなと思ったのですが不要ですか?
また、拡張ファイルディレクトリ(C:\php\ext)を見たところ
php_mysql.dll があり、phpinfo(); で見ても
pdo_mysql
PDO Driver for MySQL, client library version 5.0.45
とう項目があります。
これは関係ないんでしょうか?
設定関連が皆目わからないのでかなり妙な質問をしてるかもしれませんが
よろしくお願いします。
0350nobodyさん
2008/11/20(木) 19:04:03ID:???>「includeできる状態」かどうかわかりませんよ。
PHPの内部エラーかサーバのエラーとか想定外のエラーが起きた時にどうするんだみたいな?
昔そんな質問してきた新人がいて返答に困ったな。
そういうのは想定しなくていいとしか言えなかった。
というかID:AwsGLaDAは流れ的に>>291の式を支持してるんだよね?
↑の発言からするとID:AwsGLaDA的には>>291の式も信用できないんじゃないのかね?
0352nobodyさん
2008/11/20(木) 19:06:27ID:???0353nobodyさん
2008/11/20(木) 19:08:20ID:AwsGLaDA「ファイルがないケースもあるから、Warningでるとうざいし、
チェックしとこか」というケースなら、291を書くかもしれません。
330の「正解」という言葉に過敏に反応してレスしているだけです。
0356nobodyさん
2008/11/20(木) 19:11:14ID:???>>346では無視してるといいつつ>>303では私のところではそうではない(無視してない)って・・・
0357nobodyさん
2008/11/20(木) 19:12:20ID:AwsGLaDA335で書いているように、
「自分の正解がみんなの正解とは限らない」です。
前提条件を共有しているならその限りではないです。
0358nobodyさん
2008/11/20(木) 19:14:35ID:HrZmpLyBどうもありがとうございます
.soっていうのはリナックス向けなんですかね? とにかく助かりました、ありがとう。
0360nobodyさん
2008/11/20(木) 19:15:48ID:AwsGLaDAあ、ごめんね。
303で書いたのは、302の「書き手がそこまで責任を負うことはない」
の部分へのレスでした。
0361nobodyさん
2008/11/20(木) 19:18:59ID:HLYnX99ephpでは、ハッシュと言わずに連想配列と言うの?
0363nobodyさん
2008/11/20(木) 19:19:56ID:???>自分の正解がみんなの正解とは限らない
めんどくさい人だなw
学校の先生ですか?
この世界は答えは1つなんですよ
includeは制御構造であって関数じゃないんです
0364nobodyさん
2008/11/20(木) 19:23:07ID:AwsGLaDA「この場合」って >>285 とか?
自分で 285 のコード書いたとして、
特に問題があるとは思いません。
1から31まで用意しておけば動くんでしょ?
0365nobodyさん
2008/11/20(木) 19:26:09ID:???includeするタイミングとか方法の話をしてるんじゃないのか?
■ このスレッドは過去ログ倉庫に格納されています