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

【PHP】下らねぇ質問はID出して書き込みやがれ 98

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2010/09/18(土) 19:20:37ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 97
http://hibari.2ch.net/test/read.cgi/php/1279833891/

◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0603nobodyさん2010/10/01(金) 22:01:40ID:???
全然上手いこと言ってないような気が
0604nobodyさん2010/10/01(金) 22:05:52ID:???
>>602
すぐに正しい回答が出てたのを故意に伏せてる辺りがざんねん
0605nobodyさん2010/10/01(金) 23:17:39ID:???
あんまおもしろくなかったが
スレ相応しいくだらないくだりを必死で考えたことは褒めてやろう
0606nobodyさん2010/10/02(土) 00:20:26ID:2C+2SXQ6
オープンソースとして公開されているPHPのシステムがあるのですが、
もうしばらくメンテナンスがされておりません。

それを使ってみたのですが、いくつか動かない個所を見つけました。
apacheのエラーログにエラーが残ってないので、スクリプトのエラー
はなくバグで動いていないかと思うのですが、こういったものの一般的な
デバッグはどのように行うのでしょうか?

PHPはほぼ初めてで、でバッギングツールがあるのかどうなのかもわかっていません。
0607nobodyさん2010/10/02(土) 00:34:52ID:???
PHPのエラーログってなかったっけ
0608nobodyさん2010/10/02(土) 00:49:00ID:???
>>606
デバッグはxdebugを使う
開発環境と連携するには
http://www.vkazoo.com/?p=260
0609nobodyさん2010/10/02(土) 03:18:46ID:???
>>606
設定次第でどこにでもエラーログを作れるので
必ずしもapacheのログにある訳ではない
あとそのオープンソースのって何?有名所のなら
ちゃんとコミュニティとかはあると思うけど・・・

>>608
別にxdebugじゃなくても良いけどな
デバッガなんて開発環境に合わせて選べば良いんじゃない?
0610nobodyさん2010/10/02(土) 06:50:18ID:???
>>606
ソース読めるならおかしいと思う辺りにデバッグ用のprint文とかを
入れてみるのが早い。
あぁ、PHP初めてでしたか
0611nobodyさん2010/10/02(土) 11:36:38ID:???
デバッグはprintよりvar_dumpのほうが
0612nobodyさん2010/10/02(土) 11:45:41ID:???
print_rでやってる人も多くね?
0613nobodyさん2010/10/02(土) 11:57:15ID:???
俺はprint_r派だけど状況によってvar_dump使うこともある
printはprint_rの書き間違いだと思うけど
0614nobodyさん2010/10/02(土) 12:10:07ID:???
オレオレprint_r超便利
0615nobodyさん2010/10/02(土) 12:13:19ID:???
値がfalseなのかnullなのか空白なのかを調べるときはvar_dumpだな
たいていはprint_rでやってるけど
ログに書き込むときに便利だし
0616nobodyさん2010/10/02(土) 12:42:53ID:???
function pr($var) {
echo '<pre>';
var_dump($var);
echo '</pre>';
}
0617nobodyさん2010/10/02(土) 13:36:21ID:???
手動デバッグは効率が悪い
0618nobodyさん2010/10/02(土) 14:34:56ID:???
デバッガー使いたいが
鯖で動かしていると無理だな
0619nobodyさん2010/10/02(土) 14:59:48ID:???
デバッガーの使い方がわからない
0620nobodyさん2010/10/02(土) 16:05:29ID:???
デバッガーにバグがあったら使えない
0621nobodyさん2010/10/02(土) 17:36:19ID:???
print_rはないな
var_dumpかvar_exportで2番目の引数をtrueにする
0622nobodyさん2010/10/02(土) 17:40:42ID:???
PHP使ったことないからしらんけど、
某大手家電メーカの情報部はみんなprint_r使ってるぞ。
(みんなっちゅうか教育でそう教えられるのかも知れんが

何かあるごとにprint_rみせて print_rみせて って聞こえるし
「すみません。ココが動かないんですけど」って新人の問いに print_r使えばいい
って言ってる。

ちなみに今そこの会社の人間に
「PHPのバグではまった」ってメール送ったら
「print_rで見ればいい 」 っていわれた。
0623nobodyさん2010/10/02(土) 18:00:31ID:???
>PHP使ったことないからしらんけど、

>「PHPのバグではまった」ってメール送ったら

矛盾してないか?
0624nobodyさん2010/10/02(土) 18:12:17ID:???
他のプラットフォーム上(SNSとか)で動かすもの作ってるとvar_dumpが吸収されちゃって見れないことあるから
エラー文字列をDBに保存して見てるわ
0625nobodyさん2010/10/02(土) 18:13:43ID:???
>>623
どういう返事が来るか試すためにメール送ってみただけよ
0626nobodyさん2010/10/02(土) 18:35:03ID:???
>>625策士wwwww
0627nobodyさん2010/10/02(土) 18:35:41ID:l4wTIWl0
URLをクリックでページ遷移&POSTでデータ渡しって可能ですか?
空白のある文字列をそのまま渡したいんですが、GETだと空白の所で途切れてしまうんです。
どうやればいいんでしょうか?
0628nobodyさん2010/10/02(土) 18:42:58ID:???
>>627
urlencode
06296272010/10/02(土) 18:55:08ID:l4wTIWl0
おお。ありがとうございます。
0630nobodyさん2010/10/02(土) 19:11:10ID:???
PHPで数百ステップ程度のコードなら何度か書いたことがあるのですが、(非オブジェクト指向)
次は人が書いたコードのデバッグにチャレンジしてみようと思っています。

PHPってCの用に頭から読んでいくのが一般的なのでしょうか?
0631nobodyさん2010/10/02(土) 19:41:48ID:???
頭からっていうか動く順じゃねえの
0632nobodyさん2010/10/02(土) 20:07:54ID:???
そんな読み方してたら最近のCMSのコード読む場合
何カ月かかるんだよ
0633nobodyさん2010/10/02(土) 20:15:19ID:???
632はどうやって読んでんの
0634nobodyさん2010/10/02(土) 20:17:02ID:???
PHP ステップ実行でググるといいよ
0635nobodyさん2010/10/02(土) 20:25:46ID:???
ってかPHPに頭なんてねえだろ
Cはmainから動くことが決まってるけど、PHPなんてどこから呼び出されるかわからん
0636nobodyさん2010/10/02(土) 20:39:32ID:???
phpも頭からだろ
0637nobodyさん2010/10/02(土) 20:53:14ID:???
あたまってどこかくわしく
0638nobodyさん2010/10/02(土) 21:48:54ID:???
リクエストされたスクリプト(例:index.html)の先頭
0639nobodyさん2010/10/02(土) 22:03:17ID:???
HTMLwwwwwwwwwww
0640nobodyさん2010/10/02(土) 22:10:28ID:???
>>638
どこからよばれるかわからないでしょ。
0641nobodyさん2010/10/02(土) 22:21:36ID:???
拡張子で判断するのはただの馬鹿

エントリポイントとなってるスクリプトの<?phpが先頭だろ
そこからおってけばどーとでもなる
0642nobodyさん2010/10/02(土) 22:32:23ID:???
例えばindex.htmlから読んでいっても、C言語と違って
全コードを網羅しているわけではないっしょ。

マジであほなの?
それともマジでわかってない?
0643nobodyさん2010/10/02(土) 22:39:52ID:???
拡張子で判断できないけど、今ここで.htmlを出すのはただのバカ。
0644nobodyさん2010/10/02(土) 22:41:05ID:???
網羅が何を指してるかはしらないが
一旦includeしてるファイルを読み込んだあとに
エントリポイントから順に実行してくだけだろ

それ以外での実行順序があるなら知りたいわw

ちなみにエントリポイント=mainという事を指してるわけじゃないからな?
0645nobodyさん2010/10/02(土) 22:46:23ID:???
環境によっては<?や<%や<?=だったりするから<?phpが先頭とは限らないけどな
と揚げ足を取ってみるテスト
0646nobodyさん2010/10/02(土) 23:31:14ID:???
search.phpってのがあるとかんがえてみたら?
0647nobodyさん2010/10/02(土) 23:57:04ID:???
このスレ読んでたらPHPの評価が悪い理由がよくわかった

扱う人のレベルが低すぎるんだな…
0648nobodyさん2010/10/03(日) 00:09:36ID:???
そりゃPHPは憧れプログラマホイホイだからな。
CとかPythonに挫折した連中の巣。
0649nobodyさん2010/10/03(日) 00:19:15ID:???
挫折した連中が作った言語がWebの中で一番使われてるとか凄いな
PHPの中身がCとC++なのに挫折したのに作れるんだな
0650nobodyさん2010/10/03(日) 00:20:45ID:???
挫折した連中の方が多いから人数が多いんでしょ

あと一番使われてるってどこの数字?
明らかに数でいえばPerlだろ。
0651nobodyさん2010/10/03(日) 00:23:01ID:???
PerlはLinuxの標準スクリプト言語(の一つ)だから多い
GNOMEとかPerl無いと動かないし
0652nobodyさん2010/10/03(日) 00:24:21ID:???
制作言語が上位言語とどういう関係?

日本語がわかりづらくてどういう意味かわからないけど、
それで言ったらアセンブリは全プログラマができるってこと?
0653nobodyさん2010/10/03(日) 00:29:49ID:???
「挫折した連中が作った」じゃなくて「挫折した連中が使ってる」だろ
使ってる、なんて断言できるもんでもないと思うけど

まあ、簡単だしPHP。
0654nobodyさん2010/10/03(日) 00:31:45ID:???
ああ ごめん。俺も読み違えてた。
C言語が扱える時点で挫折してない連中が作ってるだろ

結局苦労して難しいことやってるのはそのCプログラマであって
PHPプログラマはプログラマって呼べるかどうかも怪しい
0655nobodyさん2010/10/03(日) 00:43:45ID:???
言語の習得レベルなんてどれも一緒だろ?
なんかC言語にコンプレックスがあるやつがいるみたいだけど。
0656nobodyさん2010/10/03(日) 00:44:50ID:???
まあ、Cは書きやすくなったアセンブリだし・・・
0657nobodyさん2010/10/03(日) 00:58:15ID:???
>>654
それをいってる時点で、他の言語経験がないのまるだし
PHPがいかに楽な機能が揃っているか
0658nobodyさん2010/10/03(日) 01:07:08ID:???
>>657
それは他の言語も同じだろ。オープンソースでなんでも揃う。
大抵のプロジェクトでは独自の便利な部品持ってるし。
言語よりも、「層」を理解した方がいいぞ。
0659nobodyさん2010/10/03(日) 01:12:02ID:???
オープンソースっっっっっっw
0660nobodyさん2010/10/03(日) 01:14:07ID:???
オープンソース嫌ならIISのようなプロプライエタリ使えばいいじゃん
0661nobodyさん2010/10/03(日) 01:16:18ID:???
PHPプログラマが低レベル加減がわかるスレだな
PHPでつくったらなんでもオープンソースだと思ってるのかこいつ・・

こいつがかいたコード危ないな・・
0662nobodyさん2010/10/03(日) 01:18:20ID:???
PHPプログラマは自分がおかれている環境をわかっていないといういい例
0663nobodyさん2010/10/03(日) 01:19:59ID:???
アホはスルーしろよスレが荒れるだけだえろアホ共
0664nobodyさん2010/10/03(日) 01:20:56ID:???
暇なんだからアホの相手くらいさせてくれてもいいだろ

こいつの知識にもなるんだし
むだかもしれんけど
0665nobodyさん2010/10/03(日) 01:53:25ID:???
PHP(笑)って以前から言われてることじゃん

今さら議論することでもないな
0666nobodyさん2010/10/03(日) 02:13:59ID:???
いまだにc言語のcgiに拘ってる会社もあるぞ
0667nobodyさん2010/10/03(日) 08:50:34ID:xREippUy
mdb2で、全ての特定のカラムを0に書き換えるっていう場合、なにか簡単な書き方ありますでしょうか?
今はwhileで全ての行を書き換えています。
0668nobodyさん2010/10/03(日) 09:03:09ID:V+S/ga5Q
> 全ての特定のカラム

全てだけど特定なのね。
0669nobodyさん2010/10/03(日) 09:04:17ID:???
>>668
全ての行の、特定のカラム。です。
0670nobodyさん2010/10/03(日) 09:05:39ID:???
>>669
MDB2は関係ないように見えるが
UPDATE t SET c = 0
0671nobodyさん2010/10/03(日) 09:11:59ID:???
>>670
ありがとうございます。
最初に覚えたのが、where foo = $barみたいに特定の行を指定してのUPDATE方法だったので、
わざわざwhileで$barを++させながら1行ずつやってました
whereで行を特定させなければよかったんですね
0672nobodyさん2010/10/03(日) 11:23:57ID:xREippUy
重ね重ねすみません
項目に数値を追加したくて、
SET `foo` = foo+1
としたのですが、
フィールドfooが数値があれば+1されるんですが、NULLだとされません
NULLの場合に追加する方法教えてください
0673nobodyさん2010/10/03(日) 11:31:47ID:???
自己解決しました
if($row[foo] == NULL){
でNULLだったら0入れてやればいけました
0674nobodyさん2010/10/03(日) 12:17:47ID:3FmHKfz0
【OS名】Linux系
【PHPのバージョン】5.2.5
【質問内容】 preg_match_allの最短一致で、下記のデータから
<TR>と</TR>タグで囲まれた部分を取り出したいんですが、うまくいきません。

$pagedata
<TR><TD>YAMAHA1</TD></TR>
<TR><TD>KORG2</TD></TR>
<TR><TD>KORG3</TD></TR>

preg_match_all("/<TR>.*?KORG.*?<\/TR>/sui", $pagedata, $match);
上記のデータに対しこのコードを実行すると、
$match[0][0]には<TR><TD>YAMAHA1</TD></TR><TR><TD>KORG2</TD></TR>、
$match[0][1]には<TR><TD>KORG3</TD></TR>が格納されるのですが、
ちっとも最短一致ではない気がします。
最初に一致した文字列の後に同じ文字列が出た場合、
.*?の量指定子は最短にならんから開始位置を変更とか
気を利かしてくれるわけではなく、最後の文字列が見つかった時点で
検索をやめる、というだけの機能を持つのでしょうか。
ちなみに$pagedataに格納されるデータには改行がありません。
どなたかご存知の方、お教えください。
0675nobodyさん2010/10/03(日) 12:33:43ID:???
>>674

申し訳ないが、質問の意図を理解するために、以下の部分を解説ください。

> ちっとも最短一致ではない気がします。

あなたが考えている最短一致であれば、どの様な結果が得られることを想定されていたのでしょうか?
また、preg_match_all がどの様な動作をすることを想定されてたのでしょうか?

0676nobodyさん2010/10/03(日) 12:36:42ID:???
>>674
一番最初に引っかかったものだけとりたいならpreg_match使うと思うけど
preg_match_allは引っかかるもの全部取るから
0677nobodyさん2010/10/03(日) 12:43:06ID:???
>>674
ちなみにそのパターンの<TR>.*?KORGで.*?の部分に<TD>YAMAHA1</TD></TR><TR><TD>が入って当たり前です
06786742010/10/03(日) 13:31:10ID:???
>>675-677
なるほど、よく分かりました。
<TR>で始まりKORGを含み</TR>で終わる文字列で最短のものを抜き出そうとしていたのですが、
あのパターンでは抜き出せなくて当たり前なのですね。
改行を加えてもう一回作り直すことにします。ありがとうございました。
0679nobodyさん2010/10/03(日) 18:23:34ID:xcbjzXzr
<?=$error>

ネットでこのようなコードを見かけたのですがこれは変数の中身をそのまんま出力するという意味ですか?
0680nobodyさん2010/10/03(日) 18:40:10ID:???
<?php echo $error; ?>
と同義
使わないほうがいい
0681nobodyさん2010/10/03(日) 18:47:13ID:???
ファイルの先頭に<?php書いて閉じないほうが見やすくて良い
0682nobodyさん2010/10/03(日) 18:57:08ID:???
htmlに書いてる場合は閉じるのは必要だろ
全部phpの場合はむしろ閉じたらいけない
理由は忘れた
プログラムの終端に改行を入れたらだめとか
なんかそういう説明してるHPに書いてあったな
0683nobodyさん2010/10/03(日) 19:09:20ID:???
>>682
画像・バイナリファイルを出力するとかの場合 ?>の後に改行があったら一緒に出力されるから壊れちゃうね
0684nobodyさん2010/10/03(日) 19:11:41ID:???
pearかzendのコーディング規約に入ってたはず
0685nobodyさん2010/10/03(日) 19:42:45ID:V+S/ga5Q
>>682

> ファイルの先頭に<?php書いて閉じないほうが見やすくて良い

「閉じる」そんな言葉に憧れる年頃なんです。許してやってください。

0686nobodyさん2010/10/03(日) 20:32:02ID:???
>>682
zendの公式に書いてますよ
0687nobodyさん2010/10/04(月) 00:03:39ID:2MPeos+U
hoge
0688nobodyさん2010/10/04(月) 00:05:45ID:0ApRMxGi
PHPで協調フィルタリングの勉強がてらにデータマイングしたい年頃なんですけど・・・

データマイニングのデータがなくて困っている。
0689nobodyさん2010/10/04(月) 00:34:07ID:???
テストデータ 生成とかでググるといい
0690nobodyさん2010/10/04(月) 00:37:55ID:0ApRMxGi
>>689
協調フィルタリングのデータを生成したら意味ねーだろ(笑)
なんていうのかな、はてなブックマークみたいにタグで関連付けられたデータ
みたいなAPIでもcsvでもいいんだけど・・・
0691nobodyさん2010/10/04(月) 00:46:16ID:???
Twitterとかどうよ、API揃ってるぞ
0692nobodyさん2010/10/04(月) 01:16:04ID:???
2chがあるじゃないか
0693nobodyさん2010/10/04(月) 03:41:46ID:???
フォームからPOSTでMySQLに画像を入れようとしているんですが、ローカルでのテストでは
Xamppの同フォルダにある場合はINSERTできたのですが、デスクトップ等に置いてあるが画像はINSERTできませんでした。
画像のパスの関係のようですが、どうすれば解決できますか?
0694nobodyさん2010/10/04(月) 04:19:32ID:???
フォームをどう書いているか見せたほうがいいよ。
0695nobodyさん2010/10/04(月) 06:59:11ID:oDHTZ/dy
echo"<table border='0' width='320'><tr><td><br>";
echo"    【画像を選んでください】<br><br><br>";
echo"<form method='post' action='image.php' enctype='multipart/form-date'>";
echo"<input type='file' name='image' />";
echo"<input type='submit' name='submit' />";
echo"</form><br><br>";
echo"</tr></td></table></div>";

このように書いています。
同一フォルダ以外の画像を選ぶと

Warning: file_get_contents(003.jpg) [function.file-get-contents]: failed to open stream: No such file or directory in C:\xampp\htdocs\osusume\image_2.php on line 18
Warning: getimagesize(003.jpg) [function.getimagesize]: failed to open stream: No such file or directory in C:\xampp\htdocs\osusume\image_2.php on line 19

このように出ます。
0696nobodyさん2010/10/04(月) 07:03:18ID:???
すみません。
色々と駄目なのは分かっているんですが

×action='image.php'
○action='image_2.php'

でした。これでも駄目です。
0697nobodyさん2010/10/04(月) 07:12:29ID:???
htmlを見るだけでやばそうな気配がプンプンしてくるね
echoでフォームを出力しちゃってるところもさらに・・・
がんばれ・・・超頑張れ・・・としかいいようがない・・・
自信のPHPにPOSTする場合は
$_SERVER['SCRIPT_NAME']使うといいよ
アップロードされたファイルはサーバのtmpに格納されるので
それを自分のホームディレクトリに移動(コピー)しないといけない
たぶんその処理ができてないからファイルが見つからないと言われてるんじゃないかな
アップロードはされてるが移動(コピー)ができてないってオチだと思う
あとマルチはいかんよ
0698nobodyさん2010/10/04(月) 07:37:50ID:???
>>693
> フォームからPOSTでMySQLに画像を入れようとしているんですが、
> ローカルでのテストではXamppの同フォルダにある場合はINSERTできたのですが、
> デスクトップ等に置いてあるが画像はINSERTできませんでした。

>>695

何回も読み直したが「MySQLに画像を入れる」をどこでやっていますか?
どこにもMySQLに入れる処理が見当たりません。

INSERTできたといいますが本当にできていますか?

0699nobodyさん2010/10/04(月) 07:45:46ID:???
すみません。
入れる方の処理はPOST先でやってます。

$dbh = new PDO($dsn, $user, $password);
$dbh->query('SET NAMES utf8');

$sql = "insert into image(member,img,mimetype) values (?,?,?) ";

$stmt = $dbh->prepare($sql);
$stmt->execute(array($member,$image,$mimetype[mime]));

これで一応、入れられています。
0700nobodyさん2010/10/04(月) 08:10:39ID:???
>>697はスルーかね?
データベースのエラーじゃないんだし
そんな名前の画像が見当たらないよ言われてるんでしょ
画像を見当たるようにしないと

>Xamppの同フォルダにある場合はINSERTできたのですが、
これはアップロードされたファイルではなく
xamppの同じフォルダに元から入ってる画像を参照したからうまくいったわけで
アップロードしたファイルを参照したわけではないのでいわばバグ
xamppの同じフォルダにアップロードしたファイルを移動する処理をすればええのよ
0701nobodyさん2010/10/04(月) 11:59:17ID:???
$_FILES['image']['name']じゃなくて$_FILES['image']['tmp_name']を使うんだよ
file_get_contentsに前者入れてない?
0702nobodyさん2010/10/04(月) 12:37:50ID:???
>>695
form-dataな
■ このスレッドは過去ログ倉庫に格納されています