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

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

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

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 104
http://hibari.2ch.net/test/read.cgi/php/1297669559/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

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

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0637nobodyさん2011/04/12(火) 02:48:56.55ID:???
PHPはwebプログラミングじゃないと思うぞ。
ネットワークに手軽にアクセス出来るスクリプト言語だろ。
0638nobodyさん2011/04/12(火) 05:32:28.73ID:???
>>636 質問なら >>1 を読み返してから出直しなさい。
0639nobodyさん2011/04/12(火) 06:59:12.81ID:???
>>636
ひたすら書きまくる
0640nobodyさん2011/04/12(火) 08:52:43.77ID:???
>>638
質問ではありませんので>>1は読み返しませんし出直しません。
0641nobodyさん2011/04/12(火) 08:55:53.01ID:???
>>636
書けばいいと思うよ
0642nobodyさん2011/04/12(火) 09:23:19.37ID:???
>>640

そんなあなたには、こちらがお似合い!
【PHP】下らねぇ質問はID出さずに書き込みやがれ 1
http://hibari.2ch.net/test/read.cgi/php/1289117484/l50
0643nobodyさん2011/04/12(火) 22:51:34.82ID:???
簡単なことからやっていく
0644nobodyさん2011/04/13(水) 00:47:25.03ID:appmuAfb
php+mysqlで質問です。
|id|name|age|
|1 |Aさん|10|
|2 |Bさん|15|
|3 |Cさん|13|
(以下略)

上のようなテーブルで、idが1,4,7,11,21,35・・・のいずれかのレコードを抽出したいのですが、クエリは
WHERE id = 1 OR id = 4 OR id = 11 OR ・・・
みたいにひたすらつなげて書くんでしょうか・・・何か短い書き方ありますか?
あと、ORが大量にあると負荷が極端に増えたりしますか?
0645 【東電 71.9 %】 2011/04/13(水) 01:03:10.02ID:???
んん?
変数使えばいいのでは?
0646nobodyさん2011/04/13(水) 06:02:07.82ID:aY/2E/pl
php高速化するAPCをこのようにインストールしました。
$ tar zxf APC-3.0.17p2.tgz
$ cd APC-3.0.17p2
$ phpize
$ ./configure --enable-apc
$ make
$ su -
# make install

思ったほどの性能ではなかったのでアンインストールをしたいと思って
pecl uninstall APC
rpm -ihv --test APC-3.1.7
yum remove php-pecl-apc
yum remove apc
といろいろ試したのですができません。
どうしたらでしょうか?OSはFEDORA14です。


0647nobodyさん2011/04/13(水) 08:08:26.73ID:???
IN >>644

idが、インデックス対象のカラムであっても、OR使ったらインデックスが使われない。

って、PHPの質問じゃねぇじゃん。
0648nobodyさん2011/04/13(水) 10:31:24.37ID:???
>>644
SQL文のほうはIN句を使えば多少短く書ける
PHPのほうは配列にidを格納してimplodeで繋げればいい
0649nobodyさん2011/04/13(水) 10:36:11.94ID:???
>>646
PHPの質問じゃねーし、makeコマンドはソースからのコンパイルビルドであって
パッケージのインストールじゃねえ

make uninstallでビルドしたファイルを削除してくれるソフトもあるから試してみれば?
0650◆oDupeixhZv52 2011/04/13(水) 10:36:32.74ID:???
同じカラム(一つのインデックス)なら使うんじゃなかったっけ?
0651nobodyさん2011/04/13(水) 11:29:49.14ID:???
んなもんDBによる。
どっちにしろPHP関係ないし。
0652nobodyさん2011/04/13(水) 13:44:12.94ID:???
PHPをしようしているのでPHPに関係あります。
0653nobodyさん2011/04/13(水) 13:48:52.85ID:???
MySQLを5.5にしてPHPも5.3にしたんですが、phpMyAdminを起動すると、ライブラリとバージョンが違うから問題起きるかもって出てます。
これって無視していいんですかね?
具体的にはどんな問題が起きるんでしょうか?
0654nobodyさん2011/04/13(水) 15:16:13.97ID:???
>>646
>>649もかいてるけど、make installでインストールされたものをすべて消せばいいよ。
--prefixでディレクトリ指定してれば楽だったんだけどね。

それと、rpm -ihv は、インストール用コマンドだよ。
0655nobodyさん2011/04/13(水) 15:18:54.75ID:???
>>644
そのidの一覧はどうやって取得してるの?DBから取得してるわけじゃないのかな
0656nobodyさん2011/04/13(水) 15:35:08.26ID:???
idは私の優秀な頭脳に記憶されております。
06576442011/04/13(水) 22:36:22.96ID:urwW+Tur
>>645>>648
ありがとうございます調べてみます

>>655
idは別のテーブルにカンマ区切りで格納しています

|1|グループA|1,2,5,7,…|
|2|グループB|1,3,4,5,…|
|3|グループC|2,3,4,6,…|
みたいな感じです
06586442011/04/13(水) 22:41:42.13ID:???
>>647
すみません…mysqlのスレが見つからず
こちらなら分かる人がいるかなと思いまして
0659nobodyさん2011/04/13(水) 22:42:28.18ID:???
>>658
MySQLのスレはDB板です
0660nobodyさん2011/04/13(水) 22:44:29.40ID:???
>>657
カンマ区切りで保持しているのが設計の誤り。
テーブルレイアウトを変更することができないなら、書かれていたように、長いSQLを発行する。
変更することができるなら、短いSQLを発行すれば、それよりもずいぶん速く結果を取得できるようになる。

続きはSQLスレあたりで。
06616602011/04/13(水) 22:46:13.47ID:???
>>658
SQL質疑応答スレ 11問目
http://hibari.2ch.net/test/read.cgi/db/1299305530/

>>659
MySQLスレはややスレ違い。
0662nobodyさん2011/04/13(水) 23:09:19.36ID:???
MySQLスレは厨房やクズのたまり場と化してて機能してない
06636442011/04/14(木) 00:24:00.71ID:???
>>660
なんとなく正解がわかりました。ありがとうございます。
まだテスト段階だったので構造を直してチャレンジしてみます。
0664nobodyさん2011/04/14(木) 00:36:14.23ID:???
短ければ速いという問題でもなかろ
0665nobodyさん2011/04/14(木) 02:31:23.67ID:???

$result = mysql_query("SELECT * FROM Persons
WHERE FirstName='Peter'");


Peterを変数に代入して入れたいんですけど、どうしたらいいですか?

0666nobodyさん2011/04/14(木) 02:33:15.59ID:jIcMQS2c
$omanko = 'peter';

$result = mysql_query("SELECT * FROM Persons
WHERE FirstName= $omanko ");
↑でやっても駄目なんですよね...
0667nobodyさん2011/04/14(木) 03:13:22.44ID:nz/ViMIK
"select * from item where FirstName like '%"$omanko"%'"
0668nobodyさん2011/04/14(木) 03:55:45.55ID:???
omankoっていい歳した空気よめないオッサンか
ひyな言葉ではしゃぐ中2のどちらかだろ
0669nobodyさん2011/04/14(木) 07:55:10.31ID:???
>>666
$omanko = 'peter';

$result = mysql_query("SELECT * FROM Persons
WHERE FirstName= '$omanko' ");
06706442011/04/14(木) 08:25:43.46ID:???
>>647
すみません…mysqlのスレが見つからず
こちらなら分かる人がいるかなと思いまして
0671nobodyさん2011/04/14(木) 10:39:32.64ID:???
sqlのクエリは勝手に最適化されるはず
0672nobodyさん2011/04/14(木) 12:25:02.48ID:???
>>666の書き方だと文字列がそのまま出ちゃうからダメなんじゃないの

>>669
$result = mysql_query("SELECT * FROM Persons WHERE FirstName= '".$omanko."' ");
っていう形にする必要があると思うんだけどどうだろ
0673nobodyさん2011/04/14(木) 12:42:29.02ID:???
今時sqlをphpに埋め込んで書くのはないない
0674nobodyさん2011/04/14(木) 14:11:34.35ID:???
>>673
じゃ、今SQLを埋め込むのは何が主流なの?Perl?
0675nobodyさん2011/04/14(木) 16:00:44.75ID:???
ひまわりかな
0676nobodyさん2011/04/14(木) 18:00:13.96ID:???
ひまわりって何?新しい新幹線の名前?
0677nobodyさん2011/04/14(木) 18:23:00.01ID:???
$result = mysql_query("SELECT * FROM Persons WHERE FirstName='".mysql_escape_string($omanko)."'");
0678nobodyさん2011/04/14(木) 19:38:26.53ID:???
>>664
短くもなるし、速くもなるよと
0679nobodyさん2011/04/15(金) 09:30:39.97ID:vqhPXrat
すみません
$res =& $mdb2 -> exec($sql);
の"=&"の意味が分かりません
マニュアルの演算子を調べたのですが見付かりませんでした
これはどういう意味でどういう使われ方をするのでしょうか?
また、オライリーのPHP本には"&="が載っていますが、コレとは別の意味なのでしょうか?
0680nobodyさん2011/04/15(金) 09:47:44.00ID:???
>>679
右を左に代入
0681nobodyさん2011/04/15(金) 09:57:51.25ID:vqhPXrat
>>680
代入と言うことは、普通の"="演算子と何も変わらないということでしょうか?
代入演算子という名前ということは参照でもないのかと思ってしまったのですが
また、逆に"&="は左を右に代入という事でよろしいですか?
0682nobodyさん2011/04/15(金) 10:08:11.95ID:???
$a = &$b
これは参照渡し

$a &= $b
これはビット演算子で
$a = $a & $b
と等価。
0683nobodyさん2011/04/15(金) 10:10:04.79ID:???
>>679,681
=はコピーによる代入
=&は参照による代入
http://jp.php.net/manual/ja/language.operators.assignment.php
&=は複合演算子で'&'はビット演算子
$a &= 0xff -> $a = $a & 0xff
0684nobodyさん2011/04/15(金) 10:15:11.42ID:vqhPXrat
ありがとうございました
0685nobodyさん2011/04/15(金) 12:09:22.46ID:???
=& が演算子みたいな書き方するなよ。誤解されるぞ
0686nobodyさん2011/04/15(金) 16:50:58.33ID:weEN1v7D
ob.log
1<>挨拶<><>2/9<>1
2<>挨拶<><>2/9<>0
3<>謝罪<><>2/22<>1
4<>挨拶<><>3/21<>0
5<>お礼<><>4/1<>1

こういう文字列から
1
2
3
4
5
これだけを抜き出して取得してファイルに書き出したいのですが
何かいい方法はないでしょうか
0687nobodyさん2011/04/15(金) 17:04:24.01ID:???
explodeか、正規表現かってとこ
0688nobodyさん2011/04/15(金) 17:12:26.54ID:???
>>687
explodeでどうやるんですか?
コードもしよろしければお願いします
0689nobodyさん2011/04/15(金) 17:55:16.54ID:???
<?php
$str = <<<EOL
1<>挨拶<><>2/9<>1
2<>挨拶<><>2/9<>0
3<>謝罪<><>2/22<>1
4<>挨拶<><>3/21<>0
5<>お礼<><>4/1<>1
EOL;

$lines = explode("\n", $str);

foreach ($lines as $line) {
     $items[] = explode("<>", $line);
}

foreach ($items as $item) {
     $result .= $item[0] . "\n";
}

file_put_contents('log.txt', $result);
0690nobodyさん2011/04/15(金) 18:13:59.68ID:???
<?php
foreach(file("test.txt")as$l)$v[]=explode("<>",$l, 2);print_r($v);
0691nobodyさん2011/04/15(金) 18:59:50.34ID:???
ごめんこっちがいいや
<?php
foreach(file("test.txt")as$l)$v[]=current(explode("<>",$l, 2));print_r($v);
0692nobodyさん2011/04/15(金) 19:01:56.32ID:???
foreach(file("test.txt")as$l)$v[]=current(explode("<>",$l, 2));
file_put_contents("ob.log",implode("\n", $v));
0693◆oDupeixhZv52 2011/04/15(金) 19:12:05.59ID:???
$nums =array();
if (($lines = file("ob.log")) !== FALSE)
foreach ($lines as $line)
$nums[] = reset(explode("<>",$line));
print_r($nums);
0694nobodyさん2011/04/15(金) 19:14:27.17ID:???
>>686
cut -d\< -f1 ob.log > ob2.log
0695nobodyさん2011/04/15(金) 19:35:21.58ID:???
>>686
そういう用途にPHPは不向きです。Ajaxを使いましょう。
0696nobodyさん2011/04/15(金) 20:12:11.01ID:???
Ajax…?
0697nobodyさん2011/04/15(金) 20:29:44.96ID:???
>>695
Ajaxアンチ乙
0698nobodyさん2011/04/15(金) 20:54:18.48ID:???
>>692
すげえwwww
0699nobodyさん2011/04/15(金) 21:02:15.42ID:???
>>689-694
久々にいい流れだった
0700nobodyさん2011/04/15(金) 22:23:02.88ID:???
>>695-697
久々にいい流れだった
0701nobodyさん2011/04/15(金) 23:38:57.08ID:???
>>692
$v[]=current(explode("<>",$l, 2));

$work = explode("<>",$l, 2);
$v[] = $work[0];

下のほうが速かった。
上の方がスマートなんだけどなぁ
0702nobodyさん2011/04/15(金) 23:50:42.17ID:???
おまえらすごいな
07036862011/04/16(土) 00:21:27.07ID:MW7RyDow
>>692,701さんの
foreach(file("ob.log")as$l)$v[]=current(explode("<>",$l, 2));
file_put_contents("test.txt",implode("\n", $v));
で成功しました。
>>689-693の皆さんもありがとうございました。

ちなみに>>688は私ではなく煽りの人みたいです
0704nobodyさん2011/04/16(土) 01:04:39.03ID:???
currentのどこがスマートだw
0705nobodyさん2011/04/16(土) 02:03:05.26ID:???
見た目の話やないの?
0706nobodyさん2011/04/16(土) 10:53:26.97ID:???
さすがに>>689のコードはねえよ
0707nobodyさん2011/04/16(土) 11:47:01.53ID:KaV2BHRg
画面A→画面B(正常に表示)

の状態で、もう一度画面Aから画面Bにタブを開いてアクセスしたとします。
すると「一度ウィンドウを開いているのでアクセスできません」
みたいなエラーメッセージを出したいのですが、これってPHPだけで可能ですか?

Cookieを使うことも考えたのですが、画面Aに戻った時、
Cookieを削除したらウィンドウを2つ以上開くことが出来るように思います。
画面AでCookieが切れるわけですから、更新ボタンを押した時とか。

ウィンドウ操作なのでjavascriptのような気もしますが、PHPで可能なら教えてください
0708nobodyさん2011/04/16(土) 11:55:33.38ID:???
そんな処理に労力を注ぐのは時間の無駄
0709nobodyさん2011/04/16(土) 12:04:44.58ID:KaV2BHRg
サーバに負担がかかるようなページがあって、
ウィンドウをいくつも開かれて攻撃されるのを防ぎたいのですが、
そういうのは無駄なんですかね?
0710nobodyさん2011/04/16(土) 13:21:19.97ID:???
>>707 > 一度ウィンドウを開いているのでアクセスできません

これは、画面Aから画面Bを開いたことを言われているのでしょうか?
画面を複数開くことを抑止したいのでしょうか?
画面Aから画面Bを開いた履歴に基づいて再度は開けないように抑止したいのでしょうか?
それとも画面Aから開ける画面Bは1画面に限定して同時に2画面のBを開けないように抑止したいのでしょうか?
0711nobodyさん2011/04/16(土) 13:23:22.04ID:???
できないことはない感じだけど、使い勝手が悪かったり
完全ではないとか。労が多いわりには実が少ない
ということじゃない?
0712nobodyさん2011/04/16(土) 13:44:01.00ID:???
認証制のサイトでたまに見かけるけど確かに使い勝手は悪い
0713nobodyさん2011/04/16(土) 14:41:29.33ID:???
サーバーに負担のかかるページを改善するほうが先じゃないか?
0714nobodyさん2011/04/16(土) 14:46:21.48ID:KaV2BHRg
>>710
>これは、画面Aから画面Bを開いたことを言われているのでしょうか?
そうです。

>>713
それはやっていますが、とりあえず複数ウィンドウを防止したいんです。
PHP側で出来るのか、はたまた他の方法なのかよくわからなくて、
ある程度目星が付いたらググって調べようとは思うのですが・・・
0715nobodyさん2011/04/16(土) 15:18:58.52ID:Bn3j3K6j
【OS名】MacOSX
【PHPのバージョン】5.3.6
【連携ソフトウェア】
【質問内容】
php.ini error_reportingについて
PEAR MDB2,Authを使用したところ
trict Standards: やStrict Standards: がいっぱい出てきた。
それでgoogle大先生に聞いたところ
php.iniのerror_reportingを
error_reporting = E_ALL | E_STRICT
から
error_reporting = E_ALL
に変更すれば問題ないとの教えがあり、変更した。
ところが変更したところ
fatal errorやsyntax errorまで表示されなくなってしまった。
それは困るので何とか表示できるようにしたい。
error_reportingをどのような設定にすれば良いのかご教示頂きたい。
よろしくお願い致します。
0716nobodyさん2011/04/16(土) 16:21:28.81ID:???
>>715
display_errors = offになってるんじゃないの?
0717nobodyさん2011/04/16(土) 16:39:22.59ID:???
>>714
複数ウィンドウを防止するという発想の方を変えたほうがいい。
最初に画面Aから画面Bにタブを開いてアクセスした場合はどうする?
メインのウィンドウで画面Bに遷移できなくなっちゃうね。

そこに労力を割くより、多重アクセスがあっても問題ないようなシステムに
することの方が重要。
0718nobodyさん2011/04/16(土) 16:41:41.43ID:???
>>715
元に戻す
0719nobodyさん2011/04/16(土) 18:29:02.93ID:mJdJuPdX
セッションの解除はどうするの?
0720nobodyさん2011/04/16(土) 19:52:07.39ID:???
unset($_SESSION['test']);
0721nobodyさん2011/04/16(土) 21:01:36.91ID:???
kaijo($sesshon);
0722nobodyさん2011/04/16(土) 23:31:50.34ID:???
unsetでセッションの解除はやりませんよ
0723nobodyさん2011/04/16(土) 23:39:14.45ID:???
session_unsetもunsetもあまりかわらん
0724nobodyさん2011/04/16(土) 23:59:14.71ID:???
>>719

自分で調べなさい。

はい、次の患者さぁ〜ん!
0725nobodyさん2011/04/17(日) 02:18:00.13ID:???
>>719
kaijo($sesshon);
0726nobodyさん2011/04/17(日) 03:52:06.74ID:???
>>724
患者はテメェだボケ〜!
0727nobodyさん2011/04/17(日) 09:09:49.80ID:???
しかしsession_destroyって結構荒い消し方するよな
0728nobodyさん2011/04/17(日) 09:17:54.25ID:???
消し方に荒いとかそんなのあるのか
0729nobodyさん2011/04/17(日) 12:07:08.72ID:???
ひとつずつ、消しますか?YES/NO と聞いてくれなくては紳士的とは言えますまい
0730nobodyさん2011/04/17(日) 12:10:05.87ID:???
session_destroyと書いてる以上、消す意思だろうし
セッションファイルは1つだろうしなにを言ってるのかよくわからんが
0731nobodyさん2011/04/17(日) 12:31:15.22ID:???
俺ぐらいの達人になるとPHPでGUI作ってバイナリ配布できる形式にまで出来るんだけど君たちは?
0732nobodyさん2011/04/17(日) 12:37:31.26ID:???
>>1
0733nobodyさん2011/04/17(日) 12:42:22.75ID:???
俺はPHPでWindowsアプリ作って納品してるよ。先日は画像レタッチソフトを作った。
これぐらい普通でしょ
0734nobodyさん2011/04/17(日) 12:57:48.07ID:???
>>704
逆に、どうすればスマートに記述できますかね。
explode("<>",$l, 2)[0]
という記述ができる言語ならよかったんだけど
0735nobodyさん2011/04/17(日) 14:28:47.08ID:???
>>734
スマートの定義は?
あと>>1
0736nobodyさん2011/04/17(日) 15:43:22.65ID:???
>>735
> スマートの定義は?
質問なら>>1を読んで出直しな
■ このスレッドは過去ログ倉庫に格納されています