【PHP】下らねぇ質問はID出して書き込みやがれ 89
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001●
2009/10/11(日) 21:18:54ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 88
http://pc11.2ch.net/test/read.cgi/php/1253061577/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0882nobodyさん
2009/11/08(日) 22:33:56ID:???0883nobodyさん
2009/11/09(月) 09:32:56ID:utcN5JBF同じコードを2個書かなくていいのはfunction(関数化)
クラス化は、同じコードを書かなくていいだけでなく、そのときに必要な部分のみ使える感じ
0884nobodyさん
2009/11/09(月) 10:54:46ID:???0885nobodyさん
2009/11/09(月) 10:57:53ID:???0886nobodyさん
2009/11/09(月) 11:09:38ID:utcN5JBFRPGツクールとかそんな感じで
逆にfunctionなどの関数はそのまま関数作ったり
RPGツクールの中の、敵にダメージを与える計算部分とか
0887nobodyさん
2009/11/09(月) 11:12:00ID:???少なくとも出発点はデータの保護、というかデータに対して可能な操作の定義。>>881
つか、もうそれってPHPの質問と違うやん。
OOもしくはOOP一般じゃろ。
0888nobodyさん
2009/11/10(火) 00:04:02ID:???それと同じ意味だよ。
A組 が 廊下掃除担当
B組 が 体育館掃除担当
C組 が プール掃除担当
という感じにクラス毎に役割を振っておけば、
後々管理が楽になるだろう?
「廊下に関する事なら、A組に聞けばいい。」
ってな具合で。
0889nobodyさん
2009/11/10(火) 00:22:25ID:???継承が使える。
これだろ。
0890nobodyさん
2009/11/10(火) 00:28:25ID:???クラスつかうなんてのは、手段であって、目的ではないからな。
0891nobodyさん
2009/11/10(火) 02:31:13ID:???0892nobodyさん
2009/11/10(火) 02:57:15ID:???Animalクラスを継承してDogクラスとかCatクラスを作るって例が多いけど、
わかりやすいようで解りづらいよなw
0893nobodyさん
2009/11/10(火) 03:10:25ID:???>Animalクラスを継承してDogクラスとかCatクラスを作るって例
この手の解説は参考にならないって、歴史が証明してるよなw
0894nobodyさん
2009/11/10(火) 03:44:55ID:???配列でまとめてあると、後で弄り易い。
0895nobodyさん
2009/11/10(火) 05:31:53ID:???0896nobodyさん
2009/11/10(火) 06:59:46ID:???そういう概念の話は腐るほど聞いても、じゃあいざ実装しようとすると
あれどれがDogでAnimalなんだっけ、いやそもそもクラスにする必要あるのかこれ?
と思考の海に沈む
まっとうなOOP本読めばいいんだろうけど
0897nobodyさん
2009/11/10(火) 08:03:12ID:T58KxytEPEARとかでよくファクトリークラス(?)を使って
クラスからクラスを作ってたりするけど、
あれってどういう理由があるの?
0898nobodyさん
2009/11/10(火) 09:28:55ID:???ttp://www.techscore.com/tech/DesignPattern/AbstractFactory.html
0899nobodyさん
2009/11/10(火) 09:41:10ID:lbGcCYju$fmPartsCrass->getUTypePD(10); //DBの登録値10をselectedとするユーザタイプのプルダウンを作る
$fmPartsCrass->uTypeToTXT(10); //フォームの確認画面で、選択値10のユーザタイプを出力する
クラス内のinit()ではプルダウン元になるname,valueの二次元配列を沢山読み込ませてる感じ。
こんなので良いのかな? クラスの使い方って。。
0900nobodyさん
2009/11/10(火) 09:56:23ID:???new classNameで明示的にインスタンス化したいな。
パラメータ指定してインスタンス作ってからaddとかするように
書くだろうな。
ま、好みの話だからさらっと流してくれ。
0901nobodyさん
2009/11/10(火) 09:57:06ID:???アホすぎワロタ
0903nobodyさん
2009/11/10(火) 10:25:02ID:???クラス化する必要なくね?って事だと思う。
俺はそうは思わないけど。
0904nobodyさん
2009/11/10(火) 10:51:32ID:???必要があるかどうかは結局その人の感覚次第でしょ
0905nobodyさん
2009/11/10(火) 11:05:09ID:???でも、殆どの人にとって、クラス化は最初は楽じゃないんだよね。
だから壁を越えようとしない人も多いんだろう。
壁を越えた向こうには、素敵な楽園が広がって・・・ るわけでもないし。
待ってるのは次の壁と、無間壁越え地獄w
0906899
2009/11/10(火) 11:50:11ID:???自分じゃ間違ってないだろって気持ちと、これはfunctionを束ねただけのものじゃないかって
気持ちが半分半分です。
バラしたら関数として独立化できるものはclassにする必要ないのかななんて考えると
全部そうだろうという気持ちがでてくるし…
0908nobodyさん
2009/11/10(火) 11:58:15ID:???0909nobodyさん
2009/11/10(火) 12:01:22ID:???汎用性を持たせればいいんじゃね?
リスト意外にもラジオボタンや複数選択でも出力、クラス指定で見た目も変えれるとか
0910nobodyさん
2009/11/10(火) 12:03:13ID:HgEfIoEeソースを見ていたら
<?= $test ?> という書き方をしている箇所を見つけました。
コードを書くときは<?php ?>で囲うと本には書いてありましたが
<?php print($test) ?> と、どう違うのでしょうか。
あまり見かけないということは何か問題のある記述方ですか?
0911nobodyさん
2009/11/10(火) 12:03:50ID:???「素材があって、料理する方法が複数ある場合」
はクラスにするようにしてる
0912nobodyさん
2009/11/10(火) 12:11:36ID:???これはその通り。ただ、
>全部そうだろうという気持ちがでてくるし…
こっちは、クラス使える言語でなら、そういうのはやめた方がいいぞ。
データってもんを無視すれば全部そうできるかもしれんけど。
「関数/手続きに(引数等で)データを渡す」だけで考えても一応全てのプログラムは書けるよ、確かに。
昔はそればっかだったし。
0915nobodyさん
2009/11/10(火) 12:36:32ID:???0916nobodyさん
2009/11/10(火) 13:07:19ID:n4Nrgy6Lclass Kobun extends Oyabun{function buki(){echo "ピストル";}}
class zako extends Kobun{function buki(){echo "鉄パイプ";}}
クラスKobunからクラスOyabunのメソットbukiを呼び出してマシンガンって表示させることはできましたが
クラスzakoからクラスOyabunのbukiを呼び出してマシンガンと表示させる書き方がわかりません
直接クラスOyabunで呼ぶ出すのではなくzakoから呼び出す方法をどなたかご指導お願い致します
0917899
2009/11/10(火) 13:11:58ID:???>>915
そうなんですか? そうだとしたら安心(?)しました
何度も同じコード書きたくなくて関数化してまとめてみようと思ったのがきっかけでした
クラスの継承とかpublic指定した変数の外部から参照とかしないんで、
複数の関数で使う変数の値やDB接続処理をinit()内部で定義すればいっぺんに書き換えられる、
まとめていつでも呼び出せる以上の利便性なんて感じないんですよね。それで十分だし。
何か損してるのかな。。
0918nobodyさん
2009/11/10(火) 13:16:16ID:???0919nobodyさん
2009/11/10(火) 13:37:25ID:???なんか妙な継承だと思うんだな。子分は親分か?
>クラスzakoからクラスOyabunのbukiを呼び出してマシンガンと表示させる書き方がわかりません
雑魚が親分を使役するのか?
実はPHPはよく知らないが、
Oyabun::buki();
で呼び出せない?
でもなぁ…
interface Kouseiin {
public function buki();
public function setOyabun($oya);
}
class Oyabun implements Kouseiin{略}
class Zako implements Kouseiin{
private $oyabun;
略
public function tasuketeOyabin(){
$this->oyabun->buki();
}
}
$chimpira = new Zako();
$chimpira->buki();
$chimpira->tasuketeOyabin();
0920nobodyさん
2009/11/10(火) 16:32:26ID:k/b4LSiufunction &set() {
↑このアンドマークの意味を教えてください。
0921nobodyさん
2009/11/10(火) 16:45:26ID:???0922nobodyさん
2009/11/10(火) 18:02:30ID:hMuYWgxiDBサーバーはpostgresqlです
0923nobodyさん
2009/11/10(火) 19:01:07ID:???PDOStatementのデストラクタで毎回削除してしまうようだね
ext/pdo_pgsql/pgsql_statement.c
> static int pgsql_stmt_dtor(pdo_stmt_t *stmt TSRMLS_DC)
> {
...
> #if HAVE_PQPREPARE
...
> if (S->is_prepared) {
> spprintf(&q, 0, "DEALLOCATE %s", S->stmt_name);
> res = PQexec(H->server, q);
0924nobodyさん
2009/11/10(火) 19:03:05ID:???http://www.php.net/manual/ja/language.references.php
0925nobodyさん
2009/11/10(火) 20:40:43ID:k/b4LSiuありがとうございます。
こちらで質問して良かったです。
0926nobodyさん
2009/11/10(火) 21:11:57ID:Yr8QXJQkありがとうございます
しかし劇的に軽量化が出来ないかと思いましたが残念です
pgsqlで関数として定義にしておけば計量化したりしないものだろうか…
0927nobodyさん
2009/11/10(火) 21:28:36ID:???0928nobodyさん
2009/11/10(火) 21:31:00ID:Yr8QXJQkちゃんと勉強しましょう…。
0929nobodyさん
2009/11/10(火) 23:50:57ID:efP4W3lX以下のように空白で区切ろうと考えています
preg_split('/\p{Z}+/', $query);
単純な区切りでは問題ないのですが、
test aaaa => array('test', 'aaaa');
以下のように一単語として検索したい場合の正規表現が分かりません。
"test aaaa" test => array('test aaaa', 'test');
分かる方お願いします。
0930nobodyさん
2009/11/11(水) 01:00:21ID:???クラスの存在意義からして分からないならば、下手にクラスを作らず、まずはとにかく片っ端から関数化してみる事を薦める。
お勧めのトレーニングメニューは
・グローバル変数は一切使わない
・グローバルで行うのは関数呼び出し1つのみ
つまり、たとえばmain();という関数の呼び出しだけにして、すべてはこの関数の中で行う
・再代入は集約変数(foreachで合計を出すとか)以外一切禁止
つまり、変数には一度だけしか値を代入してはいけない。値を変えたくなった場合も、別の変数に代入しそっちを使う
・3階層以上のネストを一切作らない(慣れてきたら2階層)
特に、caseの枝では即return以外のことを一切行わない
・20行を超える関数は分割できないか検討する
(慣れてきたら10行くらいで切る)
・関数を追加することで一時変数を除去できるならば、常に関数を追加し、変数を除去する事を選ぶ
このあたりを行うと、「よい設計」が見えてくるはず。
0931nobodyさん
2009/11/11(水) 06:09:15ID:wK8ir+xVDBから商品名を全て呼び出し表示する→呼び出した商品をクリックすると、その商品のIDを持って次のページへジャンプ。
次のページでは、IDを元に商品の詳細をDBから呼び出して表示する。
ということがやりたいです。
ですが、最初のページでfetchを使って商品名を呼び出した時に、同時にIDをSESSIONに格納したのですが、ループの度に新たなIDが格納されてしまうため上手くいきません。
どうすればよいのでしょうか?
0932nobodyさん
2009/11/11(水) 06:34:31ID:???なんでセッションにID入れるの?
0933nobodyさん
2009/11/11(水) 09:41:07ID:wK8ir+xV例えば商品が「にんじん」「りんご」「バナナ」で、それぞれのIDを1、2、3とした時に、「りんご」を選んだらSESSIONに2が代入されるのかな?と思ってたんです。
0934nobodyさん
2009/11/11(水) 09:59:19ID:???最初のページのHTMLはどうなってるんだ?
単に次のページでPOSTで受け取った値を使って
DB問い合わせすればいいだけだとおもうが
0935nobodyさん
2009/11/11(水) 10:58:34ID:???0936nobodyさん
2009/11/11(水) 11:37:39ID:???0937nobodyさん
2009/11/11(水) 20:39:56ID:pZ2zz0+50938nobodyさん
2009/11/12(木) 00:32:56ID:Oiy0tVLqJavaだとjava communication apiでできると思うのですができればPHPで実現したいので
何かあればよろしくお願いします
0939nobodyさん
2009/11/12(木) 10:15:34ID:???0941nobodyさん
2009/11/12(木) 10:28:15ID:IzKnxBIbsmartyほど多機能でなくていいのでシンプルなテンプレートって他にありませんか?
0942nobodyさん
2009/11/12(木) 10:50:49ID:???検索すれば腐るほどあるから、好みでどうぞ。
smarty派生で軽いのはこんなのとか。
Template Lite: The smaller, faster templating solution
http://templatelite.sourceforge.net/
0943nobodyさん
2009/11/12(木) 15:30:57ID:0oRqbSW8すでに運営してます。
正規表現が解決すれば自分で実装しますので、ほかに質問はありません。
正規表現は初心者といったところでしょうか。
0944nobodyさん
2009/11/12(木) 15:34:39ID:???>>929
$query = 'foo "bar bar" baz';
preg_match_all('/"([^"]+)"|\P{Z}+/u', $query, $matches, PREG_SET_ORDER);
$phrases = array_map('end', $matches);
var_dump($phrases);
0945nobodyさん
2009/11/12(木) 20:49:23ID:???0946nobodyさん
2009/11/12(木) 20:59:13ID:???0948nobodyさん
2009/11/12(木) 23:53:51ID:TjILNw+pPEARはブログで紹介されてるのをよく見るけど
Openの方は見たこと無い
0949nobodyさん
2009/11/13(金) 00:26:44ID:???0950nobodyさん
2009/11/13(金) 08:59:06ID:K/C+ymkAimgでcount.phpを呼び出して一枚のイメージにして表示してることがあるけど
普通のレンタルサーバ借りてるところでいちいち画像結合してカウンタ表示させるのって
避けた方がいいですか?
0951nobodyさん
2009/11/13(金) 09:58:58ID:???0953nobodyさん
2009/11/13(金) 11:13:50ID:???0954nobodyさん
2009/11/13(金) 11:15:09ID:???あとphpとmysqlのバージョンぐらい書け出来損ない
0955953
2009/11/13(金) 11:17:47ID:TXCm92bgPHPコードからMySQL使ってブラウザに出力したのですが、文字化けします
OSはWindows XPで、php.iniの設定はdefault_charset = Shift_JIS、my.iniの設定はdefault-character-set=sjisです
PHP側で、
<?php
$s=mysql_connect('localhost','test','1234');
mysql_select_db('db1',$s);
$q=<<<EOT
SELECT bang,AVG(uria)
FROM tb
WHERE uria>=50
GROUP BY bang
HAVING AVG(uria)>=120
ORDER BY AVG(uria) DESC;
EOT;
$re=mysql_query($q);
while($kekka=mysql_fetch_array($re)){
print '社員番号:';
print $kekka[0];
print '売上平均:';
print $kekka[1];
print '<br />';
}
mysql_close($s);
?>
のようなコードを書きました
どのようにすれば文字化けを解消できるのでしょうか?
0956nobodyさん
2009/11/13(金) 11:22:32ID:???0957nobodyさん
2009/11/13(金) 11:24:04ID:???0958nobodyさん
2009/11/13(金) 11:31:36ID:TXCm92bgSQL自体は数字と英字です
社員番号、売上平均という文字が文字化けします
他のコードですが、SQLiteでは文字化けせずに出るので、mbstringの設定がおかしいのではないと思います
0959nobodyさん
2009/11/13(金) 11:37:12ID:???日本語読めますか?
my.iniの文字コードの設定とか確認しろ屋ksg
あとphpとmysqlのバージョンぐらい書け出来損ない
skip-character-set-client-handshakeでもmy.iniに設定してろks
0962nobodyさん
2009/11/13(金) 11:47:37ID:???↑
これが文字化けするならDB関係無い
0963nobodyさん
2009/11/13(金) 11:57:23ID:TXCm92bg単純に上記のコードだけの入力なのですが、HTMLの文字コード宣言かスクリプトの文字コードが影響しているのでしょうか?
それともmbstringの設定がおかしいのでしょうか?
一応、
[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = auto;
mbstring.script_encoding = EUC-JP
が自分の設定です
上でも書きましたが、SQLite3ではこのような事は起きませんでした
>>959
書き込み中でした
skip-character-set-client-handshake設定しても変化なしです
PHP Version 5.2.10、MySQLは最新版で5.1です
0964nobodyさん
2009/11/13(金) 12:02:48ID:???;mbstring.internal_encoding = EUC-JP
mbstring.http_input = pass
mbstring.http_output = SJIS
mbstring.encoding_translation = Off
mbstring.detect_order = auto
mbstring.substitute_character = auto;
;mbstring.script_encoding = EUC-JP
0966nobodyさん
2009/11/13(金) 12:18:08ID:TXCm92bgすみません、そのようにコメントアウトしたのですが、改善されませんでした
>>965
ごめんなさい、あまり良く分かっていないもので、「スクリプト自体の文字コードとHTMLの文字コード宣言」という意味が分かりませんでした
上記のコードを、http://localhost/から行っただけです
<? php 〜 ?>の中に<html>コード等を記入したわけではないです
また、逆に<html>コード内で<?php 〜 ?>を記入したわけでもございません
それとも、何か他に「スクリプト自体の文字コードとHTMLの文字コード宣言」というのがあるのでしょうか?
0967nobodyさん
2009/11/13(金) 12:25:10ID:TXCm92bg例えば、test.phpを作り、http://localhost/test.phpとすると、
<? php
print 'Good Bye';
?>
とするとブラウザにはGood Byeと表示されますが、
<? php
print 'ようこそ';
?>
とすると、ブラウザには ???? と出力されます
どう解決すれば宜しいのでしょうか?
0968nobodyさん
2009/11/13(金) 12:26:10ID:???スクリプト自体の文字コードというのは
そのphpのソースをエディタで書いて保存する時に、何の文字コードで保存しているかって事
0969nobodyさん
2009/11/13(金) 12:37:37ID:TXCm92bg上記のコードは書籍の問題に載ってるコードなので、それをそのまま使ったので分かりません
一応右クリックしてプロパティとかで調べても自分には分かりませんでした
自分のテキストエディタはTeraPad使っているのですが、初期文字コードはSHIFT-JISになっているようです
保存文字コードは自動に設定されています
0971nobodyさん
2009/11/13(金) 12:52:33ID:???サクラエディタUnicode版をおとなしく使え!!!!
0972nobodyさん
2009/11/13(金) 13:00:04ID:???960で965じゃないけど、
>ごめんなさい、あまり良く分かっていないもので、「スクリプト自体の文字コードとHTMLの文字コード宣言」
>という意味が分かりませんでした
自分がよく分からないからといって、もらった回答をシカトするのは最悪の行為だと思うよ
以下のページなども参照のこと。
http://d.hatena.ne.jp/next49/20081107/p1
>指導教員が一番がっかりするのは、一生懸命指導した内容に対して無視されること。それが、故意あるいは
>そうでないとしても「無視した」という結果が重視されるという点をよく理解するべき。理解できない場合、納得で
>きない場合は必ず指導教員に問い合わせるのが重要。
で本題だけど、あと思い当たるのは、
970か、php.iniのコメントを外してないか、
違うphp.iniを編集してるか(phpinfo関数で確認)か、
Apacheの文字コードが変なことになってるか、など
0973nobodyさん
2009/11/13(金) 13:13:01ID:???php.iniなどを見直したら、あとは出力する時に
content-typeもしっかり書くようにしてね
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
</head>
<body>
<? php
print 'ようこそ';
?>
</body>
</html>
0974nobodyさん
2009/11/13(金) 13:23:38ID:LpZjQz1Cpost.phpから
data.txtへ
<img src="fds.jpg"><br>
<img src="ffgg.jpg"><br>
<img src="fdfgd.jpg"><br>
<img src="htrds.jpg"><br>
などとランダムな*.jpgを表示させる行を自動書き込みするようにして
<?php readfile("data.txt"); ?>
で表示させ、表示させたらdata.txtを空にしたい場合どう記述すれば良いでしょうか?
宜しくお願いします。
0975nobodyさん
2009/11/13(金) 13:27:06ID:???0976nobodyさん
2009/11/13(金) 13:30:31ID:???2)data.txtを読む
3)読んだ内容をクライアントに送出
4)data.txt消す
簡単じゃん。
0977nobodyさん
2009/11/13(金) 13:38:12ID:TXCm92bg?????
しかとしてませんよ?
>>963で「HTMLの文字コード宣言かスクリプトの文字コードが影響しているのでしょうか? 」って書いてます
>>957の事でしたら、書き込み中だったのと、それについて調べたり実行中だったので
後でちゃんと謝っています
php.iniのパスコードなど全部見直しましたが、間違っていませんでした
>>970
reStartは一応毎回しております
>>973
わかりました、今からちょっと試してみます
0978nobodyさん
2009/11/13(金) 13:45:01ID:???0979nobodyさん
2009/11/13(金) 13:53:56ID:TXCm92bgなんか色んなところでTeraPadは使うなという事を書かれているので、ちょっと試してみます
>>978
自分、FireFoxの一番新しいのを使っているのですが、変えても文字化けは変わりませんでした
しかし、今昼食を食べてから、>>968さんのアドバイスを受けて、TeraPadの保存文字コードをEUCに変えたところ、やっとブラウザにて日本語が表示されました
今までデフォルトの自動ばかりでやっていたのですが、保存文字コードの重要性を初めて実感いたしました
0980nobodyさん
2009/11/13(金) 13:58:55ID:???0981nobodyさん
2009/11/13(金) 13:59:03ID:TXCm92bgだからTeraPadでEUCで保存しなければ駄目だったのですね?
こういう部分の知識が乏しかったようです
色々と勉強になりました
皆様、有難うございました
レス数が950を超えています。1000を超えると書き込みができなくなります。