【PHP】ID出さなくても質問OKなスレ【初心者歓迎】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/09/15(月) 18:41:32ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
0304nobodyさん
2008/12/02(火) 21:20:08ID:???っていうか学校でPHPってwww
0305nobodyさん
2008/12/02(火) 21:26:13ID:ZnEnsvHS0306nobodyさん
2008/12/02(火) 21:27:35ID:???0307nobodyさん
2008/12/02(火) 21:33:50ID:ZnEnsvHS受信用ファイルの方で、ユーザーIDとパスワードの配列の使い方がどうすればいいのか分からないんです
0308nobodyさん
2008/12/02(火) 22:02:45ID:???$arrUser = array("guest", "admin", "test");
$arrPass = array("goma", "adm", "test");
//ユーザーIDとパスワードの組み合わせが正しい場合
for ($i = 0; $i < count($arrUser); $i++) {
if ($_POST['txtId'] == $arrUser[$i] && $_POST['txtPass'] == $arrPass[$i]) {
echo "認証成功";
break;
}
}
//ユーザーIDが存在しない場合
if (in_array($_POST['txtId'], $arrUser)) {
echo "ユーザーIDが存在しません";
}
//ユーザーIDは存在するがパスワードが誤っている場合
for ($i = 0; $i < count($arrUser); $i++) {
if ($_POST['txtId'] == $arrUser[$i] && $_POST['txtPass'] != $arrPass[$i]) {
echo "パスワードが違います";
break;
}
}
//ユーザーID、またはパスワードのいずれかが空白の場合
if (empty($_POST['txtId']) || empty($_POST['txtPass'])) {
echo "ユ−ザーIDまたはパスワードが未入力です";
}
今ここで書いて実際には動かしてないから動くかは知らない
0309nobodyさん
2008/12/02(火) 22:17:02ID:???答えて損したな
0310nobodyさん
2008/12/02(火) 22:18:08ID:ZnEnsvHS0311nobodyさん
2008/12/02(火) 22:19:59ID:???0312nobodyさん
2008/12/02(火) 22:22:17ID:???本当の意味での本物は見たことなかったから感動した
0314nobodyさん
2008/12/03(水) 08:44:18ID:???0315284
2008/12/03(水) 16:23:16ID:???var_exportの2番目の引数を TRUE でいけますた。
例:
<?php
$bool_var = TRUE;
echo 'bool_var(TRUE): ' . var_export($bool_var, TRUE);
echo '<br />';
$bool_var = FALSE;
echo 'bool_var(FALSE): ' . var_export($bool_var, TRUE);
?>
出力:
bool_var(TRUE): true
bool_var(FALSE): false
>>285-287
ちょっとしたことだったのですが、できて助かりました。ありがとうございましたー。
0316nobodyさん
2008/12/05(金) 19:50:28ID:???名前のところが空白だった場合 名無し と表示させたいのですが
考えても中々解決できませんでした。
$name=$_POST["name"];
if ($_POST["name"]==""); {
ここから先が OTZ
0317nobodyさん
2008/12/05(金) 20:13:05ID:???0319nobodyさん
2008/12/05(金) 21:19:16ID:???0321nobodyさん
2008/12/05(金) 21:41:23ID:???0322nobodyさん
2008/12/05(金) 21:46:08ID:???0323nobodyさん
2008/12/05(金) 23:01:41ID:???0324nobodyさん
2008/12/05(金) 23:20:20ID:???ご指摘ありがとうございます。
0と入力すると 名無しと表示されました。
>>323
strlenですか、調べてきます。
0325nobodyさん
2008/12/05(金) 23:24:03ID:???0326nobodyさん
2008/12/05(金) 23:24:44ID:???0327nobodyさん
2008/12/05(金) 23:26:18ID:???変数に値があるかどうかチェックするんですね。
これからも使えそうです。
皆さんありがとうございました
0328nobodyさん
2008/12/05(金) 23:27:56ID:???これで良いんですよね?
if ($_POST["name"]==""); {
の所を
if (!strlen($name)) {
$name ="名無し";
0329nobodyさん
2008/12/05(金) 23:30:59ID:???0330nobodyさん
2008/12/05(金) 23:37:59ID:???if ($_POST["name"]==="")でいいっちゅうに
PHPは型が曖昧だからこういうことがおきるわけで
strlenは文字数数える関数だし使い方として不自然
0331nobodyさん
2008/12/05(金) 23:39:27ID:???なんで不自然なの?
0332nobodyさん
2008/12/05(金) 23:49:08ID:???0333nobodyさん
2008/12/05(金) 23:54:50ID:???0334nobodyさん
2008/12/05(金) 23:57:00ID:???>0文字だったら名無しにしたいんだろ?
ようするにこれが強引
0335nobodyさん
2008/12/06(土) 00:18:56ID:???強引?文字列で渡ってくる値を文字列判定用の関数で判定してどこが強引?
0336nobodyさん
2008/12/06(土) 01:09:43ID:???上のほう見ればわかるが
$a = "";
$b = 0;
この時PHPでは$a == $bが成立してしまう
型を意識した場合この現象はおかしいから===で型のチェックまで行うべきということ
型のチェックで回避できるのにそれをせずに別の方法を模索した結果
strlenで文字数数えて0だったらという裏技的なものが強引と言いたい
型を意識しないPHPユーザーらしいといえばらしいし
確かに方法も色々あるしできればそれでもいいと言う考えもあるが美しくない
ようするに演算子で解決できるのにわざわざ関数を使う必要はないということ
0337nobodyさん
2008/12/06(土) 01:20:07ID:???冷静に考えてみれば===で型チェックする必要も
strlenで長さ測る必要もない
なぜなら受け取った値が数値でもそれは文字列だからだ
""と0は同じだが""と"0"は同じでない
ようするに>>321のツッコミが間違っていたわけだ
0338nobodyさん
2008/12/06(土) 01:31:11ID:???肝心なところで理由述べてないから説明になってないよ。
型チェックが良くて関数使うのが「裏技」で「強引」な理由は?
「演算子」が良くて「関数」が悪い理由は?
「美しくない」のは単なる主観では?もし合理的な理由があるならそれは何?
例えるなら「サッカーより野球のほうが優れている。なぜならバットを使うのが裏技だからだ。」
「醤油ラーメンよりとんこつラーメンのほうが優れている。なぜなら色が裏技だからだ。」
と言ってるようなもん。
つか関数使うと裏技と感じちゃうってもしかして初心者?
>>337
http://jp.php.net/manual/ja/types.comparisons.php
残念ながらあなたが間違いです
0339nobodyさん
2008/12/06(土) 01:38:42ID:???十分説明になってると思うがね
では逆に質問させてもらうが
演算子でできるのになぜややこしい関数を使う必要があるの?
>つか関数使うと裏技と感じちゃうってもしかして初心者?
関数を使うことが裏技だなんていっていない
型に起因することだから型のチェックで済ませばいいだけで
それ以外のことでやるのが強引と言っただけ
0340nobodyさん
2008/12/06(土) 01:45:47ID:???せめて実際にやってみてから言えよ・・・
<form method="post" action="<?php echo $_SERVER['SCRIPT_NAME']; ?>">
<input type="text" name="hoge">
<input type="submit">
</form>
<?php
if (isset($_POST['hoge']) && $_POST['hoge'] == "") {
echo "名無しi";
}
?>
0341nobodyさん
2008/12/06(土) 01:49:17ID:???0と入れたのを送信して見てくれ
前者は名無しと表示されるが後者は何も表示されないはずだ
0342nobodyさん
2008/12/06(土) 02:14:52ID:???boolean表が一緒だから同じだと思ったの?
$a = "";
$b = "0";
if (!$a && !$b) {
echo "同じ";
}
これなら同じだろうよ
だけど今比較してるのは文字列の内容だろ?
if ($a == $b) {
echo "同じ";
}
煽るんならそれなりの実力をつけてからにしろな?
0344nobodyさん
2008/12/07(日) 07:12:34ID:???みっともないから引っ込んどけw
0345nobodyさん
2008/12/07(日) 07:56:45ID:???> 残念ながらあなたが間違いです
こういうこと言っちゃうのはどうかと・・・
特に"残念"とか一言余計
匿名で減るものでもないんだし非を認めて謝ればいい
あと匿名といえど言葉は選んだほうがいい
本題だけど
>>338が出してるマニュアルの==による比較表を見てわかる通り
0==""はtrue、"0"==""はfalse
厳密な比較だと表の通り
0===""はfalse、"0"===""はfalse
""と比較してfalseになればいいのでint型の0の時は厳密な比較でいいけど
フォームから受け取った値はString型の"0"なので緩やかな比較でも問題ない
つまり型に起因するというのも今回のケースでは関係ない
>>324はフォームからでなくテスト用に変数に0と入れたのだろうか・・・
そこが気になる
最初のレスでズバリな答えが出てるのに
何か勘違いした人がツッコミを入れるとややこしくなる
ID出すほうのスレの280あたりの話もそうだった
0346nobodyさん
2008/12/07(日) 13:18:29ID:???だから型に起因する問題って何?
(再掲)文字列で渡ってくる値を文字列判定用の関数で判定してどこが強引?
無理に===""や==""で比較することに固執してるから悪いんだろ。
何をもって強引としてるのか要約しなくていいからはっきり説明して下さいな。
0347nobodyさん
2008/12/07(日) 15:27:02ID:???どんな方法で取得できるのでしょうか?
0348nobodyさん
2008/12/07(日) 16:35:38ID:mzpaUA22マニュアル少しは嫁。ググレ糟みたいな質問すんな。
0349nobodyさん
2008/12/07(日) 16:55:54ID:???windowsでmysqlのコマンドラインからバージョンを調べる方法を教えろやゴルァ
0350nobodyさん
2008/12/07(日) 16:58:52ID:???スレ違い
http://pc11.2ch.net/test/read.cgi/php/1158647441/l50
0351nobodyさん
2008/12/07(日) 17:28:40ID:vKPOZAXl貧乏人はさっさと検索してこい
0352339
2008/12/07(日) 17:33:22ID:???いなくなったと思って静観してたがレスがついたので
型に起因すると言ったのは>>321のレスが発端で
なぜ""と0が==になるか?その原因が分かってるからそう言い続けてるだけ
""と0が==なのはPHPの型が曖昧なのが原因
その証拠に型のチェックまでする===の比較では""と0は===ではなくなる
比較演算子に固執してるわけではなくて
>>321で起こりうる原因が何にあるかをわかってるだけ
そもそもこんな問題はC++やJava等の型付けが静的な言語では起こらない
原因が分かってればそれに最適な対処法がある
原因が分からないから他の方法で解決しようとする(←これが強引)
原因が分からない時なら一時的な対処法として仕方ないけど今回は原因は分かっている
(↑この発想はそもそもバグを生みやすいから問題)
それに演算子で解決できるのにややこしい関数を呼び出す必要もない
難しくなるからあまり例えたくはないが
修理すればいいだけなのに原因がわからないから新品を購入するようなもの
とまではさすがにいかないけど
故障原因が分かる正規なとこで修理すればいいのに
めんどくさいから適当に直ればいいやと街の修理屋になおしてもらうようなこと
と偉そうなこといって申し訳ないがフォームから受けとる値が全て文字列になるのは見落としてた
>>345の言う通り関係ない話だったな
話をややこしくしたのは自分にも原因があるので>>346のレス以外黙ってます
0353nobodyさん
2008/12/07(日) 17:40:14ID:???0354nobodyさん
2008/12/07(日) 17:47:02ID:???比較演算子の問題と、文字列が空であるかを判定する問題をごっちゃにしてると思うよ。
うんうん、phpの型がゆるいことに起因する比較演算子の問題は分かったよ、
で、それを何故後者の問題の解決のために必ず使わなきゃいけないの?
そこをずっと聞いてるんだけども。
(あと関数を使うのが、楽するため、面倒を避けるため、だと考えてる理由も何?)
>と偉そうなこといって申し訳ないがフォームから受けとる値が全て文字列になるのは見落としてた
335で既に書いてるのに今更ですか
342の最後の文章が乾いて聞こえますね
0355339
2008/12/07(日) 18:13:10ID:???>比較演算子の問題と、文字列が空であるかを判定する問題をごっちゃにしてると思うよ。
何がごっちゃなの?問題は1つなんだけど?
比較演算子で文字列が空かどうかを判定してるわけで
>それを何故後者の問題の解決のために必ず使わなきゃいけないの?
必ずとまでは言わないが
初心者用の質問スレで対処法があるのに
わざわざバグを生みやすい書き方を教える必要はない
動けばいいっていうゆとり思想はやめたほうがいい
>あと関数を使うのが、楽するため、面倒を避けるため、だと考えてる理由も何?
?
>335で既に書いてるのに今更ですか
>>文字列で渡ってくる値を文字列判定用の関数で判定してどこが強引?
これのことなら上のほうで突っ込まれてるけどそもそもこんなことする必要ないでしょ
最初の>>316と>>317で解決できる
不必要なことはバグの原因なのでしなくていい
>342の最後の文章が乾いて聞こえますね
そうですね
煽りに煽りで返すのはやめたほうがいいと思います
0356339
2008/12/07(日) 18:20:24ID:???>>338のような的外れなこといっといて何言ってるの?という感じなんだけど
>http://jp.php.net/manual/ja/types.comparisons.php
>残念ながらあなたが間違いです
ここね
このレスから察するに原因がさっぱりわからなかったのに
>>335で適当なことを言ってみたら当たってたか
>>335と>>338が別人なのかどうかのどちらかだよね?
でも>>346のようなレスがつくと同じ人なんでしょうね
0358339
2008/12/07(日) 18:33:11ID:???今の発言はなかったことにして下さい
>>337の言ってることが>>338には理解できてないようだから
>>335のレスとは言ってることが違うなと思ったけど
よく読み返してみたら型の概念を理解してないだけっぽいね
でもそうするとなぜ文字列で渡ってくるといったのかちょっと不思議だけど
0359nobodyさん
2008/12/07(日) 18:33:25ID:???===なら判定OKだけど、strlenだとバグになってエラー起こす例あるよ
0360nobodyさん
2008/12/07(日) 18:40:40ID:???質問しにくいんだが
0361nobodyさん
2008/12/07(日) 18:41:41ID:???>>340は正常動作で、>>337が正しくて、
strlenとか===とかはどっちでもいいレイヤーの話にこだわってるってこと?
0365nobodyさん
2008/12/07(日) 19:37:23ID:???0366nobodyさん
2008/12/07(日) 19:37:43ID:???本人反省してるし、これ以上言っても荒れるだけ
0367nobodyさん
2008/12/07(日) 20:12:20ID:???0368nobodyさん
2008/12/07(日) 20:14:08ID:???0370nobodyさん
2008/12/07(日) 22:29:44ID:???新しいスレ作るのでそこでやりますかどうしますか
0372nobodyさん
2008/12/07(日) 22:42:48ID:???その上粘着質で気持ちが悪い
0373nobodyさん
2008/12/08(月) 01:03:29ID:???0374nobodyさん
2008/12/08(月) 02:35:03ID:???0375nobodyさん
2008/12/08(月) 02:45:23ID:???0376nobodyさん
2008/12/08(月) 03:05:11ID:???0377nobodyさん
2008/12/08(月) 13:56:20ID:???$bにhogeを代入するってのは、こういう書き方で
合ってるんでしょうか?
if (!ereg( "$a" , "hoge" )){
$b = "hoge";
}
0379nobodyさん
2008/12/08(月) 14:03:09ID:???凄くすっきりしますね。
自分の書いた!eregだとどのような意味になってしまうんでしょうか?
もしよろしければ教えてください。よろしくお願いします。
0381nobodyさん
2008/12/08(月) 14:11:19ID:???>>378と>>379は同じ意味という理解でよろしいでしょうか。
!eregで正規表現でマッチしない
!=で正規表現を使わないでマッチしない
0383nobodyさん
2008/12/08(月) 14:19:46ID:???でも正規表現使うならereg_系よりpreg_系のほうをお勧めします
文字列が含まれているかどうかを判定するにはstrposのほうがいいです
単に変数の内容が文字列と一致するかどうかだけなら比較演算子で十分です
亀レスになって申し訳ないです。
レスがつかないなと思ってたら専ブラのdatが壊れてました。
preg,strposは調べてみます
詳しく解説していただき本当にありがとうございました。
0385nobodyさん
2008/12/08(月) 23:24:31ID:L5IlDtkePHP4だとDOM XMLの中にDomDocument->document_elementというのがありましたが、
PHP5のDOMに同様の関数がみつかりません。
↓ここを探しました。
ttp://www.php.net/manual/ja/book.dom.php
ルートを取得するには、どうしたらいいんでしょう?
0386nobodyさん
2008/12/08(月) 23:27:11ID:???http://www.php.net/manual/ja/book.domxml.php
0387nobodyさん
2008/12/09(火) 06:30:28ID:???ありがとうございます。これはPHP4用のものだと思っていたのですが、
PHP5でも使ってよいのでしょうか?。教えてくださったページにも
以下のように書いてあったので。DOM XMLよりDOMのほうが標準っぽ
いかんじがするので、DOM XMLを使っていいのか心配です。
-----
注意: この拡張は実験的なものではありません。
しかしながら、PHP 5 版は決してリリースされないでしょう。
PHP 4 でのみ配布されます。 もし PHP 5 でDOM XML をサポ
ートする必要がある場合、 DOM 拡張を使用することができます。
この domxml 拡張は DOM 拡張と互換性はありません。
-----
0388nobodyさん
2008/12/09(火) 11:36:23ID:???DOM XML は非推奨
DOM の documentElement はここよ
http://www.php.net/manual/ja/class.domdocument.php#domdocument.props.documentelement
0389nobodyさん
2008/12/09(火) 15:38:44ID:oaG+U8nzまた、そのトーナメント表を自動更新できるのでしょうか?
0390nobodyさん
2008/12/09(火) 15:42:06ID:???0391nobodyさん
2008/12/09(火) 15:49:22ID:???DB的にはツリー型でプロパティを保存していくんだろうね
↓お勧め構造
ttp://www.sitepoint.com/article/hierarchical-data-database/
トーナメントのロジック部はエントリー、シード方式、
エントリーから表作成、勝敗登録とまぁ、難しくはないが、
手数は多いかもね。
表示部は可変のリストでグラフィカルなトーナメント表を作るとなると
それはまた大変な作業になりそうだなぁ。
0392nobodyさん
2008/12/09(火) 16:02:29ID:???0394389
2008/12/09(火) 16:07:11ID:oaG+U8nzツリーにしなくてもいいとはどういった方法でしょうか?
0396389
2008/12/09(火) 16:11:47ID:oaG+U8nz他に参考となるものはないでしょうか?
わがまま言ってすみません。
0397nobodyさん
2008/12/09(火) 16:13:48ID:???0399nobodyさん
2008/12/09(火) 16:22:12ID:oaG+U8nzどうしたらいいかさっぱりなんです↓
0400nobodyさん
2008/12/09(火) 16:31:51ID:???なんでageてまでこっちのスレで聞くの?ふざけてるの?
0401nobodyさん
2008/12/09(火) 16:39:37ID:???何も分かんないから聞いていただけです。
sageについては分からなかったのですいませんでした。以後気をつけます。
0403nobodyさん
2008/12/09(火) 16:54:04ID:???0404nobodyさん
2008/12/09(火) 17:03:02ID:???君が何を勘違いしてるか、
出力はツリーだろ。=>トーナメント表
それをMySQLに保存したいっていう質問だろ。
DBにツリーを表現する構造を作らなくて何をするというの?
LR方式のツリー格納は今のところもっとも効率のいい方法だぜ。
まぁ、どうせ>>395あたりだと、DBは試合結果だけとか、
再帰処理とか、劇重なこと考えてるんだろうけど。
■ このスレッドは過去ログ倉庫に格納されています