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

【PHP】ID出さなくても質問OKなスレ【初心者歓迎】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/09/15(月) 18:41:32ID:???
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
0348nobodyさん2008/12/07(日) 16:35:38ID:mzpaUA22
gethostbyname

マニュアル少しは嫁。ググレ糟みたいな質問すんな。
0349nobodyさん2008/12/07(日) 16:55:54ID:???
おい人力検索ボランティアども
windowsでmysqlのコマンドラインからバージョンを調べる方法を教えろやゴルァ
0350nobodyさん2008/12/07(日) 16:58:52ID:???
>>349
スレ違い
http://pc11.2ch.net/test/read.cgi/php/1158647441/l50
0351nobodyさん2008/12/07(日) 17:28:40ID:vKPOZAXl
おい!!俺様は公務員だぞ!!!!
貧乏人はさっさと検索してこい
03523392008/12/07(日) 17:33:22ID:???
>>346
いなくなったと思って静観してたがレスがついたので

型に起因すると言ったのは>>321のレスが発端で
なぜ""と0が==になるか?その原因が分かってるからそう言い続けてるだけ
""と0が==なのはPHPの型が曖昧なのが原因
その証拠に型のチェックまでする===の比較では""と0は===ではなくなる
比較演算子に固執してるわけではなくて
>>321で起こりうる原因が何にあるかをわかってるだけ
そもそもこんな問題はC++やJava等の型付けが静的な言語では起こらない

原因が分かってればそれに最適な対処法がある
原因が分からないから他の方法で解決しようとする(←これが強引)
原因が分からない時なら一時的な対処法として仕方ないけど今回は原因は分かっている
(↑この発想はそもそもバグを生みやすいから問題)
それに演算子で解決できるのにややこしい関数を呼び出す必要もない

難しくなるからあまり例えたくはないが
修理すればいいだけなのに原因がわからないから新品を購入するようなもの
とまではさすがにいかないけど
故障原因が分かる正規なとこで修理すればいいのに
めんどくさいから適当に直ればいいやと街の修理屋になおしてもらうようなこと

と偉そうなこといって申し訳ないがフォームから受けとる値が全て文字列になるのは見落としてた
>>345の言う通り関係ない話だったな
話をややこしくしたのは自分にも原因があるので>>346のレス以外黙ってます
0353nobodyさん2008/12/07(日) 17:40:14ID:???
必死に書いてくれて悪いが長すぎて読む気がうせるので3行で
0354nobodyさん2008/12/07(日) 17:47:02ID:???
>>352
比較演算子の問題と、文字列が空であるかを判定する問題をごっちゃにしてると思うよ。
うんうん、phpの型がゆるいことに起因する比較演算子の問題は分かったよ、
で、それを何故後者の問題の解決のために必ず使わなきゃいけないの?
そこをずっと聞いてるんだけども。
(あと関数を使うのが、楽するため、面倒を避けるため、だと考えてる理由も何?)

>と偉そうなこといって申し訳ないがフォームから受けとる値が全て文字列になるのは見落としてた
335で既に書いてるのに今更ですか
342の最後の文章が乾いて聞こえますね
03553392008/12/07(日) 18:13:10ID:???
>>354
>比較演算子の問題と、文字列が空であるかを判定する問題をごっちゃにしてると思うよ。
何がごっちゃなの?問題は1つなんだけど?
比較演算子で文字列が空かどうかを判定してるわけで

>それを何故後者の問題の解決のために必ず使わなきゃいけないの?
必ずとまでは言わないが
初心者用の質問スレで対処法があるのに
わざわざバグを生みやすい書き方を教える必要はない
動けばいいっていうゆとり思想はやめたほうがいい

>あと関数を使うのが、楽するため、面倒を避けるため、だと考えてる理由も何?
?

>335で既に書いてるのに今更ですか
>>文字列で渡ってくる値を文字列判定用の関数で判定してどこが強引?
これのことなら上のほうで突っ込まれてるけどそもそもこんなことする必要ないでしょ
最初の>>316と>>317で解決できる
不必要なことはバグの原因なのでしなくていい

>342の最後の文章が乾いて聞こえますね
そうですね
煽りに煽りで返すのはやめたほうがいいと思います
03563392008/12/07(日) 18:20:24ID:???
ていうか>>335ですでに言ってるじゃんっていう気になってるけど
>>338のような的外れなこといっといて何言ってるの?という感じなんだけど

>http://jp.php.net/manual/ja/types.comparisons.php
>残念ながらあなたが間違いです
ここね

このレスから察するに原因がさっぱりわからなかったのに
>>335で適当なことを言ってみたら当たってたか
>>335と>>338が別人なのかどうかのどちらかだよね?

でも>>346のようなレスがつくと同じ人なんでしょうね
0357nobodyさん2008/12/07(日) 18:22:16ID:???
>>356
どいうこと?
03583392008/12/07(日) 18:33:11ID:???
>>357
今の発言はなかったことにして下さい

>>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とか===とかはどっちでもいいレイヤーの話にこだわってるってこと?
03623392008/12/07(日) 18:44:32ID:???
>>361
そう

趣味の領域で口を出しすぎたのが原因
結果的に荒らしちゃったのでもう黙ってます
0363nobodyさん2008/12/07(日) 19:14:14ID:???
>>362
なんだ結局あんたもまともに反論しないで煽ってんじゃん。
ところでバグって何?
0364nobodyさん2008/12/07(日) 19:20:46ID:???
>>362
てことは全ての元凶は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:???
ガッ
0369nobodyさん2008/12/07(日) 22:25:35ID:???
>>363=>>364
お前馬鹿だろ?
0370nobodyさん2008/12/07(日) 22:29:44ID:???
うるせーよ!質問できねえだろキチガイども!
新しいスレ作るのでそこでやりますかどうしますか
0371nobodyさん2008/12/07(日) 22:31:16ID:???
>>370 質問どーぞ。
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:???
質問を質問で返すとテスト0点になるのを知らないのか?マヌケ
0377nobodyさん2008/12/08(月) 13:56:20ID:???
逆に質問するってことは、わからないんじゃねーの ワラ
0378 2008/12/08(月) 14:00:57ID:???
文字列hogeがスカラ変数$aにマッチしない場合、
$bにhogeを代入するってのは、こういう書き方で
合ってるんでしょうか?

if (!ereg( "$a" , "hoge" )){
$b = "hoge";
}
0379nobodyさん2008/12/08(月) 14:03:09ID:???
if ($a != "hoge")
0380 2008/12/08(月) 14:10:22ID:???
>>379さん、早速の回答ありがとうございます。
凄くすっきりしますね。

自分の書いた!eregだとどのような意味になってしまうんでしょうか?
もしよろしければ教えてください。よろしくお願いします。
0381nobodyさん2008/12/08(月) 14:11:19ID:???
正規表現での判定になる
0382 2008/12/08(月) 14:14:02ID:???
つまり正規表現を用いて判定したい場合は>>378でも正解で
>>378と>>379は同じ意味という理解でよろしいでしょうか。

!eregで正規表現でマッチしない
!=で正規表現を使わないでマッチしない
0383nobodyさん2008/12/08(月) 14:19:46ID:???
そんな感じです
でも正規表現使うならereg_系よりpreg_系のほうをお勧めします
文字列が含まれているかどうかを判定するにはstrposのほうがいいです
単に変数の内容が文字列と一致するかどうかだけなら比較演算子で十分です
0384 2008/12/08(月) 22:14:52ID:???
>>383
亀レスになって申し訳ないです。
レスがつかないなと思ってたら専ブラのdatが壊れてました。

preg,strposは調べてみます
詳しく解説していただき本当にありがとうございました。
0385nobodyさん2008/12/08(月) 23:24:31ID:L5IlDtke
PHP5でXMLのルートを知りたいです。

PHP4だとDOM XMLの中にDomDocument->document_elementというのがありましたが、
PHP5のDOMに同様の関数がみつかりません。
↓ここを探しました。
ttp://www.php.net/manual/ja/book.dom.php

ルートを取得するには、どうしたらいいんでしょう?
0386nobodyさん2008/12/08(月) 23:27:11ID:???
>>385
http://www.php.net/manual/ja/book.domxml.php
0387nobodyさん2008/12/09(火) 06:30:28ID:???
>>386
ありがとうございます。これは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:???
>>387
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
PHPとmySQLでトーナメント表を作成ということは可能でしょうか?
また、そのトーナメント表を自動更新できるのでしょうか?
0390nobodyさん2008/12/09(火) 15:42:06ID:???
できる
0391nobodyさん2008/12/09(火) 15:49:22ID:???
>>389
DB的にはツリー型でプロパティを保存していくんだろうね
↓お勧め構造
ttp://www.sitepoint.com/article/hierarchical-data-database/

トーナメントのロジック部はエントリー、シード方式、
エントリーから表作成、勝敗登録とまぁ、難しくはないが、
手数は多いかもね。

表示部は可変のリストでグラフィカルなトーナメント表を作るとなると
それはまた大変な作業になりそうだなぁ。
0392nobodyさん2008/12/09(火) 16:02:29ID:???
ツリーにしなくてもできる
0393nobodyさん2008/12/09(火) 16:05:31ID:???
>>392
ん?ツリーを一切作らないの?
トーナメント表ってツリーじゃない?
03943892008/12/09(火) 16:07:11ID:oaG+U8nz
皆さん色々ありがとうございます。

ツリーにしなくてもいいとはどういった方法でしょうか?
0395nobodyさん2008/12/09(火) 16:09:38ID:???
>>394
たぶん勘違いしてるだけと思うよ
03963892008/12/09(火) 16:11:47ID:oaG+U8nz
紹介していただいたサイト全て英語でした↓

他に参考となるものはないでしょうか?

わがまま言ってすみません。
0397nobodyさん2008/12/09(火) 16:13:48ID:???
つ辞書
0398nobodyさん2008/12/09(火) 16:18:26ID:???
>>396
辞書片手に、挿絵とソース見ればわかるんじゃない?
てか、それでわかるんならここで聞かないか。
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については分からなかったのですいませんでした。以後気をつけます。
0402nobodyさん2008/12/09(火) 16:45:58ID:???
>>395
DBをツリー型のことだろザコ
勘違いはおまえ
0403nobodyさん2008/12/09(火) 16:54:04ID:???
ザコ、いい響きだ
0404nobodyさん2008/12/09(火) 17:03:02ID:???
>>402
君が何を勘違いしてるか、
出力はツリーだろ。=>トーナメント表
それをMySQLに保存したいっていう質問だろ。
DBにツリーを表現する構造を作らなくて何をするというの?

LR方式のツリー格納は今のところもっとも効率のいい方法だぜ。
まぁ、どうせ>>395あたりだと、DBは試合結果だけとか、
再帰処理とか、劇重なこと考えてるんだろうけど。
0405nobodyさん2008/12/09(火) 17:04:26ID:???
もうテキストに保存しろよ
0406nobodyさん2008/12/09(火) 17:15:18ID:???
>>404
バカじゃねの?ツリーで出力のとツリー型でデータ格納するのは別だろ
0407nobodyさん2008/12/09(火) 17:22:58ID:???
>>406
ツリー型でデータ格納って何言ってるかわかってぇみたいだなw

代案示してみろよw
0408nobodyさん2008/12/09(火) 17:24:21ID:???
モデリングを理解できないレベルのPG厨にそこまで熱くならなくても・・・
0409nobodyさん2008/12/09(火) 17:38:48ID:???
あれだよ、無知の為にコード晒してギャフンと言わせるしかない
0410nobodyさん2008/12/09(火) 17:49:19ID:???
ぼくちゃん、晒す度胸があったら、ザコとか無知とか言わないでちゅw
0411nobodyさん2008/12/09(火) 18:10:52ID:???
>>407
wがついてる時点でテンパッテルように見受けられますが?
0412nobodyさん2008/12/09(火) 18:31:46ID:???
>>407
落ち着け、日本語で書け
0413nobodyさん2008/12/09(火) 18:48:28ID:???
>>396
ttp://www.sitepoint.com/article/hierarchical-data-database/
これの、日本語訳相当のもの、あったよ。
ttp://www.mysql.gr.jp/mysqlml/mysql/msg/12071
図を参照するならここ
ttp://dev.mysql.com/tech-resources/articles/hierarchical-data.html

要約すると、トーナメント表のようにツリー概念をフラットなテーブルで表現するには
Adjacency List モデルとネストセットモデルがある。
Adjacency List モデルは親子を登録しておいて再帰で取りに行く形で
すぐにおもいついて実装はすぐできるが、パフォーマンス的に無駄があるし大量のデータは扱えない。
ネストセットモデル(>>404氏が書いてるLR方式)の方が検索性に優れている。
ネストセットモデルの更新は若干トリッキーなので更新中はロックを正しく実装する必要がある。

カテゴリー管理などツリー構造を扱うときはネストセットモデルがFAなので、
覚えておいて損はないよ。
0414nobodyさん2008/12/09(火) 18:59:25ID:???
XML形式のデータをフラットに書き下す時もネストセットモデルだよね。
もしこれよりうまいモデリング手法があるんなら俺も知りたい。
0415nobodyさん2008/12/09(火) 19:04:23ID:???
検索性に優れるのは衝突を限りなく無視できるハッシュ法だ
0416nobodyさん2008/12/09(火) 19:09:18ID:???
ハッシュで検索が効率がいいのは、ターゲットが限られているとき。
特定ノード配下から条件指定で検索など、実用コードを書いたら一気に重くなる。
もしくは、全データをメモリに読み込むとか、Web用としては使えんと思うが、
ハッシュで実用的なツリー構造を扱う新理論でもお持ちで?
0417nobodyさん2008/12/09(火) 19:13:34ID:???
ないよ
10年後ぐらいには実用になるさ
0418nobodyさん2008/12/09(火) 19:14:59ID:???
おいw
0419nobodyさん2008/12/09(火) 19:15:25ID:???
次の初心者さん、どうぞ
0420nobodyさん2008/12/09(火) 19:17:37ID:???
トーナメント表なのに難しく考えすぎてないかね
0421nobodyさん2008/12/09(火) 19:21:27ID:???
データの探索アルゴリズムと格納法の話がごっちゃになってないか
0422nobodyさん2008/12/09(火) 19:22:11ID:???
トーナメント表をDBでやりたいってことはさ。
甲子園なんかで、決勝進出チームが、本大会、県大会で戦ったチームのうち
左ピッチャーからどのくらい打って何点差で勝てたかとか、
過去のデータを蓄積してデータ検索をサクっとやりたいわけでしょ。
高度な部類だと思うけど、違うのかな?
0423nobodyさん2008/12/09(火) 19:24:36ID:???
>>421
ごっちゃっていうより表裏一体でしょ。
格納あっての探索。探索を考慮しての格納じゃなくて?
0424nobodyさん2008/12/09(火) 20:02:49ID:oaG+U8nz
>>413
わざわざ丁寧に教えて頂きありがとうございました。
0425nobodyさん2008/12/09(火) 20:17:02ID:???
もう全部ファイル書き出して検索はグーグル先生に頼れよ
0426 2008/12/09(火) 23:48:38ID:???
WWW_JAILって何ですか?
0427nobodyさん2008/12/09(火) 23:54:36ID:???
>>424
「教えて下さり」じゃないか?
0428nobodyさん2008/12/10(水) 00:06:02ID:???
>>427
スレ違いの質問でしょうか?

確かに
教えて下さりありがとうございました

または
教えて頂きありがたくおもいます

が正確なのかも知れませんね
04293872008/12/10(水) 01:13:56ID:???
>>388
完璧な回答、ありがとうございます!。プロパティの中にあったんですね!

0430nobodyさん2008/12/10(水) 15:57:45ID:???
WEB上のテキストフィールドで入力した値を、HTMLの変数Cに格納したいのですが、
どうすれば良いのでしょうか・・・・?
0431nobodyさん2008/12/10(水) 16:29:06ID:???
<form method="post">
<?php
$data = '';
$fieldName = 0;
do {
$data .= array_key_exists($fieldName, $_POST) ? $_POST[$fieldName] : "nodata";
echo "<input type=\"text\" name=\"{$fieldName}\" value=\"" . htmlspecialchars($data) . "\" />";
} while( $_POST && error_log("posted value is " . $fieldName++ . ":" . $data));
?>
</form>
0432nobodyさん2008/12/10(水) 17:20:41ID:???
>>430
HTMLの変数ってなんですか?
0433nobodyさん2008/12/10(水) 18:06:52ID:???
htmlはプログラミング言語です
0434nobodyさん2008/12/10(水) 19:32:34ID:???
HTMLがあれば何でも出来る
0435nobodyさん2008/12/10(水) 20:01:00ID:???
htmlはCを超えます
0436nobodyさん2008/12/10(水) 20:15:34ID:???
質問させて頂きたいのですが

PHPプログラムの中で連続してMySQLへデータを書き込みたい場合
どのように記述すれば良いのでしょうか?

例えば指定条件のデータを一度消去してから
改めて幾つかのデータを入れなおすなど

お分かりになる方よろしくお願いいたします
0437nobodyさん2008/12/10(水) 20:16:40ID:???
消去するプログラムのあとに書き込むプログラムを書く
0438nobodyさん2008/12/10(水) 22:08:32ID:???
関数の戻り値が配列の場合での質問なのですが
class hogehoge {
private $hoge = array("1", "2", "3");

public function getHoge(){
return $this->hoge;
}
}

$hogehoge = new hogehoge();
$hogehoge->getHoge()[1];
のように関数の戻り値の配列の要素を1行で取得はできないのでしょうか?
0439nobodyさん2008/12/10(水) 22:11:01ID:???
getHogeの引数で返せばいいんじゃない
0440nobodyさん2008/12/11(木) 09:37:39ID:???
syntax error, unexpected ';'で困ってるんですけど、
どこかおかしいです?
$this->smarty_obj->assign('date_trackbacks_url',spriunf(TEXT_TRACKBACKS_URL, htmlspecialchars(td_get_trackbacks_url(intval($HTTP_GET_VARS['products_id'])), ENT_QUOTES));
0441nobodyさん2008/12/11(木) 09:48:57ID:???
括弧の数も数えられないなら、一行をそんなに長くするなw
0442nobodyさん2008/12/11(木) 09:49:20ID:???
かっこの数
0443nobodyさん2008/12/11(木) 10:47:01ID:???
>>438
構文解析周りが貧弱なので出来ません
array の代わりに ArrayObject を使い、俗に言うメソッドチェインでアクセスする、
またはプロパティ限定でよかったら __get マジックメソッドで代用できます

class Hoge {
  private $hoge = array(1, 2, 3);
  public function __get($name) {
    return $this->$name;
  }
}

$hoge = new Hoge();
echo $hoge->hoge[1];
0444nobodyさん2008/12/11(木) 11:03:02ID:???
こんな感じね
class hogehoge {
private $hoge = array("1", "2", "3");

public function getHoge(){
return new ArrayObject($this->hoge);
}
}
$hogehoge = new hogehoge();
$ahoge->getHoge()->offsetGet(1);
// $ahoge[1]としてもアクセス可能
0445nobodyさん2008/12/11(木) 11:10:35ID:???
>>444
動かないよw
0446nobodyさん2008/12/11(木) 12:43:41ID:???
>>441-442
thx!解決しました。
0447nobodyさん2008/12/11(木) 20:04:24ID:???
テーブル内に
フィールドが2つ japa, engl 行1 a, a 行2 i, b 行3 u, c 行4 e, d 行5 o, e
みたいに入っていたとして
$data = mysql_array(上のテーブルから情報)みたいにMySQLから取得したデータを配列に入れた場合には
フィールド名も含めてどのような形で配列に入っているのでしょうか?

さらにフィールドjapaを選択して頭からa, i, u, e, oと取り出すように
その配列の特定のフィールドだけを選択して次々にデータを取り出す方法は有るのでしょうか

どなたか教えていただけ無いでしょうか
0448nobodyさん2008/12/11(木) 20:14:18ID:???
assign()内で、include出来ますか?
ググっても浅いところでは情報を拾えないみたいなので、
よろしくお願いします。
■ このスレッドは過去ログ倉庫に格納されています