【PHP】下らねぇ質問はID出して書き込みやがれ 127
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2013/03/19(火) 22:13:49.76ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 126
http://kohada.2ch.net/test/read.cgi/php/1359808868/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0173nobodyさん
2013/03/26(火) 21:07:53.64ID:???はぁ?なにこいつ
最初出てなかっただろうが
万引きで捕まってから
お金払えばいいんでしょ!とか逆ギレするDQNと同じ精神構造
>>166共々消えろ
0178nobodyさん
2013/03/26(火) 21:41:24.07ID:p9pFyvrsみんなで仲良くPHPしましょう
0179nobodyさん
2013/03/26(火) 21:44:07.30ID:???0180nobodyさん
2013/03/26(火) 21:52:43.45ID:kZMtE//2初めてやったのがphpで、それで事足りてるからほかの言語をやるきになれない...
サーバサイドで使ってるのはPHPだけだと思う。
MySQLとの連携とかはあるけど。
0181nobodyさん
2013/03/26(火) 21:59:36.70ID:???http://www.youtube.com/watch?v=VBm5m1-Eonw
0183nobodyさん
2013/03/26(火) 22:15:55.27ID:kZMtE//2フレームワークあれば開発速度ものすごい上がるしな。
0184nobodyさん
2013/03/27(水) 04:49:18.79ID:???echo "こんにちは";
?>
として、test.phpを保存しても、
ブラウザで読み込むとそのまま出てしまうんですが、コンパイル的なのが必要なんですか?
0185nobodyさん
2013/03/27(水) 05:07:28.83ID:???0186nobodyさん
2013/03/27(水) 07:44:23.93ID:???その test.php はどこに保存されてて、ブラウザはどうやって開いているのかな?
ローカルに保存してローカルで開いたらそうなるけど。
ブラウザは PHP解釈しないから。
php解釈するモジュールを組み込める Apache などの Webサーバーにアップロードしておくか、
phpをcgiで実行できるようにWebサーバーに設定して同じくアップロードする。
そんでブラウザから Webサーバーを通じてアップロードしたしたファイルにアクセス。
というのがニワカの俺の知識。
0187nobodyさん
2013/03/27(水) 09:02:47.30ID:???0189nobodyさん
2013/03/27(水) 10:16:02.44ID:KYdi+aYHドメインが違っても出来てしまいますか?
0190nobodyさん
2013/03/27(水) 10:17:53.52ID:???0193nobodyさん
2013/03/27(水) 11:04:48.30ID:KYdi+aYHつまり相対パスで呼び出さない限りincludeは出来ないということで良いのですね
安心しましたありがとうございます
0194nobodyさん
2013/03/27(水) 11:22:45.13ID:o3YcYIdidataCheck($b,"txtB");
function dataCheck($str,$name){
if(strlen($str) == 0 || !preg_match('/^[0-9]$/',$str)){
print("<html><head><title>入力エラー</title></head><body>");
print($name." は半角数字を入力してください。<br /><br />\n");
print("<a href=\"#\" onClick=\"history.back(); return false;\">再入力</a>\n");
print("</body></html>");
exit;
}
}
txtAとtxtBの両方がfalseの場合、両方のエラーを表示させたいのですが
この場合だとどちらか片方しか表示されません。
両方表示できる方法をお願いします。
0196nobodyさん
2013/03/27(水) 13:50:15.93ID:???PHPだけのファイルの場合は付けない方が良く、その理由は明確。
PHPだけのファイルはrequireされるが、そのときそのファイルに?>に続くスペースなどがあると、
それが出力に影響を及ぼす場合がある。
また、PHPのコードでHTTPヘッダを出力するとき、requireしたファイルに?>に続く余分なスペース
や改行などがあると、もうHTTPヘッダは出力できなくなる。
そのため、?>は省略した方が良い。
ちなみに、PSR-2というコーディングガイド(PSRが何者かは要google)では、?>は省略が必須と
なっており、( http://www.infiniteloop.co.jp/docs/psr/psr-2-coding-style-guide.html )、
コーディングルールを静的にチェックするツールでは、エラーとして報告されるだろう。
0197nobodyさん
2013/03/27(水) 14:00:57.53ID:???dataCheck2($b,"txtB");
print("<html><head><title>入力エラー</title></head><body>");
print("</body></html>");
function dataCheck($str,$name){
if(strlen($str) == 0 || !preg_match('/^[0-9]$/',$str)){
print($name." は半角数字を入力してください。<br /><br />\n");
print("<a href=\"#\" onClick=\"history.back(); return false;\">再入力</a>\n");
}
}
function dataCheck2($str,$name){
if(strlen($str) == 0 || !preg_match('/^[0-9]$/',$str)){
print($name." は半角数字を入力してください。<br /><br />\n");
print("<a href=\"#\" onClick=\"history.back(); return false;\">再入力</a>\n");
}
}
適当にやったらなんとなく目的の動作に使づきましたが、「再入力」というのが2つ表示されたりと
なんとなくもっと簡単にできると思うんだが・・・
もし両方入力が不正の場合は、
「txtA txtBは半角数字を入力してください。」
と表示されるのが理想。$nameにtxtA txtBが代入されてるんだけど
それを配列で取り出す方法がわかりません。
0198nobodyさん
2013/03/27(水) 14:06:09.03ID:GIbhyuNjデータベースから100件のデータを取得して、PHP側にて、whileで処理する場合、
そのwhileループ内で、更に、5回ずつデータベースに問い合わせると、
合計500回データベースにアクセスすることになってしまいます。
こういう場合には、どうするのがベストですか?
テーブルを結合して取得すればよいかとも思うのですが、
問い合わせが、5回、10回と多くなるとテーブルの結合も難しいです。
0199nobodyさん
2013/03/27(水) 14:11:15.14ID:???PHP以前の問題だ。
function validate($str){
// 妥当なデータならtrueを、そうでない場合はfalseを戻す
return strlen($str) !== 0 && preg_match('/^[0-9]$/', $str);
}
$buf = '';
if (!validate($a)) {
$buf = "txtA,";
}
if (!validate($b)) {
$buf .= "txtB";
}
if (strlen($msg) > 0) {
$html = <<<EOB
<html><head><title>入力エラー</title></head><body>
$buf は半角数字を入力してください。<br /><br />
<a href="#" onClick="history.back(); return false;">再入力</a>
</body></html>
EOB;
}
0200nobodyさん
2013/03/27(水) 14:12:42.17ID:???> こういう場合には、どうするのがベストですか?
> テーブルを結合して取得すればよいかとも思うのですが、
それしかない。
> 問い合わせが、5回、10回と多くなるとテーブルの結合も難しいです。
難しくてもやれ。
0201nobodyさん
2013/03/27(水) 14:13:28.39ID:???誤:if (strlen($msg) > 0) {
正:if (strlen($buf) > 0) {
0202198
2013/03/27(水) 18:47:39.02ID:MD7cwBMvなにか、他にテクニックがあるかとも思ったのですが、
やはり、テーブルの結合をするしかないようですね。
有難うございました。
0203nobodyさん
2013/03/27(水) 19:02:19.68ID:???出しようが無いだろw
必要な呼び出しなら何回だろうが必要なだけ呼ぶしかないと言うだけのこと。
0204nobodyさん
2013/03/27(水) 19:12:48.33ID:???> そのwhileループ内で、更に、5回ずつデータベースに問い合わせる
これがそもそもなくなるんじゃないかっていうのが回答者の意見だと思う
でも
> テーブルを結合して取得すればよいかとも思うのですが、
> 問い合わせが、5回、10回と多くなるとテーブルの結合も難しいです。
これがわからない
もうちょっと詳しく頼むわ
0205198
2013/03/27(水) 19:26:24.23ID:MD7cwBMv不明瞭な点が有り、すみません。
意図していることは、結合するテーブルが5個、10個と多くなると、
SQLが複雑化するということです。
また、DBの設計上、結合が無理な場合も有り得るということです。
0206nobodyさん
2013/03/27(水) 19:28:37.44ID:???0207nobodyさん
2013/03/27(水) 19:34:59.92ID:???Sqliteメインからかもしれないが、分けるなら別ファイルにする。
0208nobodyさん
2013/03/27(水) 20:19:03.85ID:r73Jwrfnそうなってくると、DB設計見直してもいい気がします。
0209nobodyさん
2013/03/27(水) 20:36:36.55ID:???今スマホなんでURLは示せないけど、Oracle SQLパズルってサイト検索してみて。
一個のクエリで驚くほどいろんなことできるから。
ループ内のクエリは絶対だめ。
0210nobodyさん
2013/03/27(水) 20:38:31.67ID:2iOdM1fpイマイチ練習法がわかんなくて
0211198
2013/03/27(水) 20:55:59.05ID:I26BQZQ8DB設計についても再考してみます。
>>209
http://www.geocities.jp/oraclesqlpuzzle/
これですね。かなり高度のようですが勉強してみます。
>ループ内のクエリは絶対だめ。
肝に銘じます。有難うございました。
0212nobodyさん
2013/03/27(水) 21:39:21.74ID:???昨日まで平和に進行してたスレが1日で50レス近く荒れてるんですよ
かなり迷惑なので他のスレにお願いします
0213nobodyさん
2013/03/27(水) 21:49:56.92ID:???0215nobodyさん
2013/03/28(木) 09:21:24.03ID:???0217nobodyさん
2013/03/28(木) 12:53:36.30ID:???> これなんでダメなん?
実行時間が長くなり、サーバにも負担がかかるので。
例えば1000行戻ってくるクエリをループして、それぞれの行で5回検索をしたとすると、
ループ内では合計5000回のクエリ実行が必要。
対ローカルでもクエリの実行は数ms程度かかる。
1回のクエリにつき1msかかるとすると、このループの実行時間は5秒。
ネットワーク経由だと、10ms以上かかったりするので、数十秒〜数分のオーダーになるかもしれない。
一方、全部JOINして1回のクエリで終わらせられれば、数十〜数百msくらいで終わる。
> PDOなんかだとループ前提の仕組みもあるよね。
MDB2しか使ったことないんだけど、PDOのその仕組みってどういう奴なの?
0218nobodyさん
2013/03/28(木) 12:55:27.85ID:???hashを参照する方法もある。
が、大抵はJOINした1回のクエリより遅い。
0219nobodyさん
2013/03/28(木) 13:33:51.38ID:Cp6GJ5bL【PHPのバージョン】5.3.10
【連携ソフトウェア】MySQL
phpでPDO使ってMySQLいじってる初心者です
指定の行の取得ってどうやるんでしょうか
$stmt = $dbh->prepare('select xxx from xx', array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_ABS, $num);
ってやっても最初の行しか取れなくて困ってます
0220nobodyさん
2013/03/28(木) 13:42:08.01ID:???0221nobodyさん
2013/03/28(木) 13:50:16.41ID:???fetchAll使って解決しました
0222nobodyさん
2013/03/28(木) 13:51:36.21ID:???マルチwwwwwww
http://toro.2ch.net/test/read.cgi/tech/1363522503/224
0223nobodyさん
2013/03/28(木) 13:54:46.08ID:???これでいけないか?
PDO limit句
http://phpgo.info/?PDO%20limit%E5%8F%A5
0224nobodyさん
2013/03/28(木) 14:09:19.06ID:???そこまでして自己顕示欲を満たしたいの?
0225nobodyさん
2013/03/28(木) 14:16:34.23ID:???0226nobodyさん
2013/03/28(木) 14:17:01.51ID:???0227nobodyさん
2013/03/28(木) 14:21:40.28ID:???俺がマ板からこの板に誘導したから。
が、よく>>222をみたらム板にもマルチしてたのか。どうでもいいけど。
0228nobodyさん
2013/03/28(木) 14:27:57.85ID:???0231nobodyさん
2013/03/28(木) 16:33:27.95ID:???言い合えるってだけで羨ましいス…
別に何も無いヨ…
0232nobodyさん
2013/03/28(木) 22:53:42.51ID:???> PDOなんかだとループ前提の仕組みもあるよね。
PDOでそういう仕組みは見たことないけど。
これと勘違いしてるんじゃない。
http://www.php.net/manual/ja/pdo.prepared-statements.php
プリペアドステートメントを使用して、繰り返し挿入処理を行う
0233nobodyさん
2013/03/29(金) 00:31:56.83ID:???使えないんですけど何でですか?
0234nobodyさん
2013/03/29(金) 00:53:54.84ID:G7mP7j2Chtmlspecialchars()とか前に使ってない?
'>' (大なり) は '&gt;' になります。
0236nobodyさん
2013/03/29(金) 01:09:24.93ID:???0237nobodyさん
2013/03/29(金) 01:09:49.75ID:???0240nobodyさん
2013/03/29(金) 11:16:19.88ID:???0241nobodyさん
2013/03/29(金) 11:31:22.70ID:???一概にダメとは決めつけられない、というか決めつけるのは大抵の場合よくない
0242nobodyさん
2013/03/29(金) 11:51:07.51ID:???0246nobodyさん
2013/03/29(金) 13:44:23.45ID:???0248nobodyさん
2013/03/29(金) 14:02:33.34ID:???0250nobodyさん
2013/03/29(金) 19:01:31.30ID:YTM0Vtw2【PHPのバージョン】5.4
【質問内容】
サブクラスに定義していない(スーパークラスの)関数
の中でサブクラスの変数は利用できないのでしょうか
これができればサブクラスの関数をスーパークラスに
引き上げることができて少しエレガントになるのですが
0252nobodyさん
2013/03/29(金) 20:05:29.23ID:???0253nobodyさん
2013/03/30(土) 13:44:04.73ID:???【PHPのバージョン】5.3.10
【連携ソフトウェア】MySQL
データが1行のテーブルに記録された情報をmysql_fetch_assocなどの取得系で求めると必ずfalseが帰ってきます。
ただ2行以上ある場合はしっかりと帰ってくるのですが、肝心の1行目の情報がスルーされて2行目以降のデータが帰ってきます。
例)AAAのみ : bool(false) 、 AAA BBB CCCの三行 : BBBとCCCのみ帰ってくる
この場合ってどうしたらいいんでしょうか。SQL側の問題になるのでしょうか?
0254nobodyさん
2013/03/30(土) 13:50:33.39ID:???0255nobodyさん
2013/03/30(土) 13:55:28.58ID:???一行の場合でも結果がしっかり返ってきます。
書き忘れてましたがこのケース、whileで回すときだけ発生するのです。
0260nobodyさん
2013/03/30(土) 21:59:35.99ID:OzKgLCO2例えば
$a = $hairetsu['unko'];
unkoに対応する値はない。
このとき$aにはなにがはいるの?
こうしたとき、
isset($a)
ってしたときfalseかえってくる?
0262nobodyさん
2013/03/30(土) 23:15:19.20ID:???0263nobodyさん
2013/03/31(日) 00:35:53.39ID:???だれもテメーみたいなksに期待なんかしてないんだからfalseが返ってこようがこまいが関係ないだろ
一生電子ゴミを生産してろ
0264nobodyさん
2013/03/31(日) 02:21:28.12ID:???3回繰り返されず1回出力されるだけなんですがどうしてでしょうか?
<?php
$result[0] = 34;
$result[1] = 22;
$result[2] = 76;
for ($i = 0; $i < 3; $i++){
print $result[$i].'<br />';
}
?>
0266nobodyさん
2013/03/31(日) 07:47:45.45ID:???3回出るけど
0267264
2013/03/31(日) 12:16:43.33ID:???出ない理由を聞いているのであってあなたが試した結果はきいていません。
うっとうしいのでわざわざアンカうってレスしてもらわなくて結構です。
0268nobodyさん
2013/03/31(日) 12:29:24.24ID:???何もおかしくない
0269264
2013/03/31(日) 12:31:32.34ID:???3回ってのは
34 22 76
34 22 76
34 22 76
こういうことです。for文は繰り返しですよね?
0270nobodyさん
2013/03/31(日) 12:32:33.16ID:???■ このスレッドは過去ログ倉庫に格納されています