【PHP】下らねぇ質問はここに書き込みやがれ 45
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/04/27(金) 10:02:42ID:H9gF1SfBPHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 44
http://pc11.2ch.net/test/read.cgi/php/1176364487/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0362359
2007/05/03(木) 18:28:20ID:grlGgfbDたとえば、下記のようにすると「つて」を含まないレコードも
抽出されてしまいます。
どうすればよいでしょうか?
おねがいします。
$str="つて";
$sql="SELECT * FORM main WHERE fld='$str';";
0363359
2007/05/03(木) 18:31:35ID:grlGgfbD訂正
× $sql="SELECT * FORM main WHERE fld='$str';";
○ $sql="SELECT * FROM main WHERE fld='$str';";
0364nobodyさん
2007/05/03(木) 18:31:57ID:???0365359
2007/05/03(木) 18:33:08ID:grlGgfbD$sql="SELECT * FORM main WHERE fld='%$str%';";
0366nobodyさん
2007/05/03(木) 18:33:12ID:???上と下で何が違うか分からんけどSQL文の最後のセミコロンっているんだっけ?
あとできるだけ実際のコードを出したほうが解決しやすいと思いますよ
0367nobodyさん
2007/05/03(木) 18:34:06ID:???0368359
2007/05/03(木) 18:35:23ID:grlGgfbD0370nobodyさん
2007/05/03(木) 18:37:36ID:???0371359
2007/05/03(木) 18:37:41ID:grlGgfbDあ、すいません。そうですLIKEでした。慌ててしまったもんで間違いましたすいません。
$sql="SELECT * FORM main WHERE fld LIKE '$str';"; でしたね。
0372359
2007/05/03(木) 18:44:14ID:grlGgfbDうまく抽出できるようになりました。
0373nobodyさん
2007/05/03(木) 19:31:00ID:???0374nobodyさん
2007/05/03(木) 19:39:13ID:???外部ファイルなどに、すべてのタイトルや、タイトルの内容を書いたファイルを用意して。
./xxx.php?title=1 の時は
■タイトル1
■タイトル2
■タイトル3
./xxx.php?title=2 の時は
■タイトル1
■タイトル2
□タイトル2の内容1
□タイトル2の内容2
■タイトル3
とアドレスによってメニューを変えたいのですが、どんな風に組めばいいのでしょうか?
0375nobodyさん
2007/05/03(木) 19:44:13ID:???■タイトル1
■タイトル2
■タイトル3
<? } else if ($title == 2) { ?>
■タイトル1
■タイトル2
□タイトル2の内容1
□タイトル2の内容2
■タイトル3
<? } ?>
0376nobodyさん
2007/05/03(木) 19:44:49ID:???0377nobodyさん
2007/05/03(木) 20:19:34ID:???やはりifで分岐するのがいいんですね。
タイトルの数が多いのでfile()と組み合わせてやってみます〜
file()で開いて書き出すときにifすればいいのかな?
朝まで悩んでみますw
0378nobodyさん
2007/05/03(木) 20:21:19ID:???fileと組み合わせるってどういう意味?
番号ごとに行で区切ったらその行のデータだけもってくればいいんじゃね?
0379nobodyさん
2007/05/03(木) 20:23:47ID:???ひとつのclassにfunctionいっぱい書いてたら、そのうちのひとつ呼び出したくても重くならね?
0380nobodyさん
2007/05/03(木) 20:31:24ID:Ur5keSLI例えば0〜100までの場合は処理1
101〜200までの場合は処理2
201〜300までの場合は処理3
IF分でできるのでしょうか?
0383nobodyさん
2007/05/03(木) 20:41:37ID:???if (($w > 0) or ($w < 100)){
return '処理1';
}elseif(($w > 101) or ($w < 200)){
return '処理2';
}elseif(($w > 201) or ($w < 300)){
return '処理2';
}
こんな感じで合ってる?
$w = 150ってすると処理1が帰ってくるorz
0384nobodyさん
2007/05/03(木) 20:45:01ID:???当然そうなるわな
0386nobodyさん
2007/05/03(木) 20:53:55ID:???30分無駄な時間をすごしたo... rz
0388nobodyさん
2007/05/03(木) 20:59:52ID:4b9rb2Kaclass=functionをグループにしたもの
function=独自関数
__construct=クラスが呼び出されたときに行う処理
こんな感じでいいのかな?
0389nobodyさん
2007/05/03(木) 21:01:43ID:???0390nobodyさん
2007/05/03(木) 21:04:11ID:???0391nobodyさん
2007/05/03(木) 21:15:21ID:4b9rb2Ka本には印鑑にたとえて説明してあった
0392nobodyさん
2007/05/03(木) 21:21:29ID:???0393nobodyさん
2007/05/03(木) 21:22:37ID:???0394nobodyさん
2007/05/03(木) 21:25:55ID:4b9rb2Ka彫られた名前、直径、長さなどの属性を「プロパティ」
押すという手続きを「メゾット」
こんな感じで載ってる
(秀和システムの書籍「PHP5逆引き大全500の極意」より)
0395nobodyさん
2007/05/03(木) 21:30:28ID:???0396nobodyさん
2007/05/03(木) 21:32:11ID:???また新しいおかしなたとえを考え出したなw
車でアクセルとブレーキがメソッドで、色や馬力がプロパティとかよく見たけど。
日本人向けか?
オブジェクト指向って、本読んで頭で理解してもなかなか使おうと思わないような気がする。
というか、使いどころが解らないと思う。
俺みたいな馬鹿は
>>347の言うとおり、いっぱいコード書いて、「なんかこのコード前も書いたなあ」と何度も思ったりとか
コピペしまくって、後でバグ発見して、全部直すのに手こずって、パニックったりとか
クラスを拡張しすぎて、3000行ぐらいになっちゃって、どこにバグがあるのか解らなくてイライラしたりとか
と言う経験をいっぱいしてやっとOOPを意識するようになった。
とにかく動く物をいっぱい書いてみると良い。
OOPの本をいっぱい読むのもイイ。
あと、OOPで設計されたフレームワークとかのソースを読んでみるのも良い。
(PHPならZendFrameworkあたりが良い)
となんか偉そうに書いてみたけど「デザインパターン」でもいってるように
「OOPを使って再利用可能なプログラムを設計する」のって難しいよね。
でも、出来たときは嬉しい!
0397nobodyさん
2007/05/03(木) 21:42:56ID:???趣味でやってるとか個人で完結するプログラムなら別に要らないだろ。
使いどころが解らないなら理解が足りないか必要性がないかのどちらかなわけで。
OOP信仰とでもいうのかね。
0398nobodyさん
2007/05/03(木) 21:46:01ID:dREQm95x{
....
function 押す($myname)
{
$this->set_name($myname);
$this->put();
}
....
function result()
{
return 'あなたは、'.$this->result.'です。';
}
.....
}
$hoshou = new 印鑑;
$hoshou-> 押す('>>394');
echo $hoshou->result();
----------------------
あなたは、自己破産です。
0399nobodyさん
2007/05/03(木) 21:46:46ID:4b9rb2Kaいつか必要になるかもしれんので覚えておこうと思っただけなんだ、ごめん・・・
0400398
2007/05/03(木) 21:49:13ID:???デザパタは
【GoF】デザインパターン 6
ttp://pc11.2ch.net/test/read.cgi/tech/1141846078/
などで
0401nobodyさん
2007/05/03(木) 21:55:54ID:???PHPのMySQL関数でクエリを送る場合「いれない」が正解。
1行だけしか送れないので不要という理由もあるけど
説明でわざわざ「いれない」との記述があるので
入れると寧ろどこかで悪影響がある可能性も考えられる。
0402nobodyさん
2007/05/03(木) 23:48:58ID:???通常のと第2版ってのがあるけどどっちがいいのよ?
0403nobodyさん
2007/05/04(金) 00:25:28ID:???name属性に"Submit_1"もあれば"Submit_158"もあったり数字の部分は動的に変えています。
なにか方法はありますか?
0405nobodyさん
2007/05/04(金) 00:29:19ID:???0406nobodyさん
2007/05/04(金) 00:29:37ID:7svLyDoe$a = substr($a,1,2);
↑
substrが使えません。
なぜ?
0408406
2007/05/04(金) 00:44:29ID:???0409nobodyさん
2007/05/04(金) 00:51:01ID:???意味がワカランが・・・「動的」ってのが鍵なのか?
だったら、nameをarrayにすればいい。
<input name="send[120]".....value="foo" />
<input name="send[30]".....value="bar" />
<input name="send[220]".....value="doraemon" />
var_dump($_POST);
すれば、[send]=>array([30]=>bar)とかが取れる
0410nobodyさん
2007/05/04(金) 01:19:19ID:???2chと同じようにこんな感じでユニークなIDを作りたい
uniqidやmd5は小文字しかないのでダメでした。
どうやったら作れますか?
0412nobodyさん
2007/05/04(金) 01:30:41ID:???perlで上のような構文を見かけたんですが、
phpで似たような構文は可能でしょうか?
それともpreg_match()などの関数を使う必要があるでしょうか?
0414410
2007/05/04(金) 01:56:19ID:???0415nobodyさん
2007/05/04(金) 02:10:24ID:4Tv/1S6hif(is_numeric($_GET['key'])){ $key = intval($_GET['key']); }
}
てやってたんだけど変数セットされてなかったらis_numericがfalse返すから
if(is_numeric($_GET['key'])){ $key = intval($_GET['key']); }
これだけでいい?
0416403
2007/05/04(金) 02:11:03ID:???<input type="submit" name="send[30]" value="foo" />
<input type="submit" name="send[120]" value="foo" />
<input type="submit" name="send[220]" value="foo" />
の場合ですと、2番目のボタンをクリックしたときに「120」の値を取得したいのです。
調べて見ましたが「var_dump($_POST);」だと全部でてしまうし
array_slice(var_dump($_POST),0,1);と書いてもダメみたいです。
foreachもやってみましたがダメみたいです。
どうやれば取得できるのでしょうか?
0417403
2007/05/04(金) 02:15:16ID:???>>410
echo md5(uniqid(mt_rand(), TRUE));
とすれば32桁のユニークなIDが取れます。
あとは適当に切って取りたい桁数にしてあければいいのでは?
0418nobodyさん
2007/05/04(金) 02:16:52ID:???IPとか絡めてDESハッシュにしたら。
>>415
Undefined indexになるからよくない。
>>416
<input type="submit" name="send" value="120" />
ではダメなん?
0420nobodyさん
2007/05/04(金) 02:22:08ID:???$_POST['name']['30']に渡ってくるんだろ?
だったらそれのキーを取ればいいじゃん。
まぁ俺だったら面倒だからhidden使うけど。
0422403
2007/05/04(金) 02:35:19ID:???取れました!!
$_POSTの後に何も書かなかったのがダメだったのですね
['name']と入れたら取得できました。
夜分にお騒がせしました。
今までtextのサイズを0pxにしていましたがhiddenを今まで知りませんでした。
便利そうですね。早速使って見ます。
0423nobodyさん
2007/05/04(金) 02:44:24ID:4Tv/1S6hUndefined indexだけなら実用上問題ないか
thx
0424nobodyさん
2007/05/04(金) 05:32:41ID:???(;´Д`)
0425nobodyさん
2007/05/04(金) 05:52:42ID:???自演に必死真面目に答えてる奴もどうかと思うわ
0426nobodyさん
2007/05/04(金) 06:48:35ID:???0427409
2007/05/04(金) 07:00:45ID:???>>422
hiddenなんか使ってもあなたのやりたいことは、無理。
form要素をsubmit分使うなら別だけど、それなら、もともとの質問>>403と合わない。
0428nobodyさん
2007/05/04(金) 11:05:02ID:/O1lAt+h0429nobodyさん
2007/05/04(金) 13:27:04ID:???HTMLもろくに知らないやつでもできるんだーwww
0430403
2007/05/04(金) 13:46:28ID:???HTMLは多少知っている程度でも出来るみたいですねwwww
今はなんとなく書き方が判ったからなんとなく出来てますwwwwwwwww
0431nobodyさん
2007/05/04(金) 13:47:53ID:???HTML使わないケースもあるし
0432nobodyさん
2007/05/04(金) 16:31:43ID:tMlUrrmDPHPスクリプトで作ったRep2というスクリプトを動かすと
php_sqlite.dllがロードできないとエラーが出るようになりました。
php.iniの関連がありそうな
extension=php_pdo.dll
extension=php_pdo_sqlite.dll
extension=php_sqlite.dll
のコメントアウトの確認やdllの再コピーを試したのですが全く改善されません。
どなたかアドバイスください。よろしくお願いします。
0433nobodyさん
2007/05/04(金) 16:38:17ID:???・php.iniのextention_dirの設定は?
・正確なエラー文は?
・php_sqlite.dllはちゃんとあるの?
0434nobodyさん
2007/05/04(金) 16:50:51ID:Cy0pzuiX必死真面目とか言うけど、このスレ程解答者が情報出し渋るスレも中々ないから。
昔風の頭の固いお荷物共が答えてる感じしかしない。
0435nobodyさん
2007/05/04(金) 16:56:52ID:tMlUrrmD早速ありがとうございます。
・ApacheのPHPIniDir設定は?
sqlite絡みでないPHPは動いているので大丈夫だと思います。
・php.iniのextention_dirの設定は?
extension_dir = "c:/php/ext/"
Cドライブ直下にPHPをインストールしてます。
同じくsqliteでないほかのextentionは読み込めているので大丈夫だと思います。
・正確なエラー文は?
Error: php_sqlite.dllをロードできませんでした。
です。
・php_sqlite.dllはちゃんとあるの?
>>432で書いたように
PHPのzipパッケージからextフォルダーに
php_sqlite.dll、php_pdo_sqlite.dll、php_pdo.dllの再コピーを行いましたのであると思います。
このrep2、アップグレードするまでは通常に動作していました。
rep2スレでPHPのスレで質問するように誘導されました。
0436nobodyさん
2007/05/04(金) 17:00:11ID:???エラー文はPHPのFatal Errorではなくてスクリプトのエラー表示なのね?
それならコード見せて。
0437nobodyさん
2007/05/04(金) 17:19:13ID:LLBEYpsmpublic $aaa;
public $bbb;
public $ccc;
public function ech($aaa,$bbb,$ccc){
echo $aaa,$bbb,$ccc;
}
}
$obj = new test("aaa","bbb","ccc");
$obj->ech();
この場合、$aaa〜$cccが出力されるはずなのですが、
なぜかエラーが返ってきます。
「Missing argument 1 for test::ech(), called」
function ehc内でglobalで呼び出すしかないのでしょうか?
0438nobodyさん
2007/05/04(金) 17:20:00ID:tMlUrrmD丁寧にありがとうございます。
>PHPIniDir設定は大いに関係ありますです。
とのことなので早速調べてみたのですが
httpd.confの中にPHPIniDirという設定項目がありません。
PHPIniDir "C:/php"
を付け足そうと思うのですが
httpd.confのどこに足せばよいのでしょうか?
自作スクリプトでなくてどこが原因かわかりませんが
ttp://page2.xrea.jp/expack/index.php/download
の
rep2ex-060903-0030.zip (905KB)
を展開して使用してました。
これのread.php、/iv2.phpで前述のエラーが出るようになりました。
0440nobodyさん
2007/05/04(金) 17:23:34ID:???httpd.confの一番最後にでもそれを付け足して再起動して試してみて。
>>437
それだと引数で渡してる先はコンストラクタ。
echメソッドには何も渡してない。
0441nobodyさん
2007/05/04(金) 17:30:29ID:LLBEYpsmclassを宣言するときに、引数をclassに渡して、それをそのクラス内で使いまわしたい場合はどのようにすれば良いのですか?
0442nobodyさん
2007/05/04(金) 17:34:02ID:tMlUrrmD付け加えてPC自体を再起動してみましたが状況は変わりませんでした。
PHPinfoで見るべき場所とかありますか?
0444nobodyさん
2007/05/04(金) 17:39:40ID:???Configuration File (php.ini) Path
extension_dir
mysqliteの段落
0445nobodyさん
2007/05/04(金) 17:40:32ID:LLBEYpsmサンクス
その方法でやってみます
0446nobodyさん
2007/05/04(金) 17:46:22ID:tMlUrrmDConfiguration File (php.ini) Path C:\PHP\php.ini
extension_dir c:/php/ext/ c:/php/ext/
mysqliteという項目が存在しません。
PDO drivers sqlite
PECL Module version 1.0.1 $Id: pdo_sqlite.c,v 1.10.2.6.2.2 2007/03/23 14:30:00 wez Exp $
SQLite Library 3.3.16undefined
というのはありますけど違いますよね。
0447nobodyさん
2007/05/04(金) 17:48:39ID:???0448nobodyさん
2007/05/04(金) 17:52:07ID:???何で合体してるんだwwwwwwwwww
0449nobodyさん
2007/05/04(金) 18:02:04ID:???あとは、会員システムが作りやすくなる補助的なもの
0450nobodyさん
2007/05/04(金) 18:13:49ID:???> PHPのzipパッケージからextフォルダーに
> php_sqlite.dll、php_pdo_sqlite.dll、php_pdo.dllの再コピーを行いましたのであると思います。
PHP5.2.2のWindows用zipパッケージなら最初からextディレクトリにphp_sqlite.dllって入ってるだろう。
それ、どっから何を再コピーしてきたのさ?そんな操作は不要なはずだぞ?
PHP自体を再インストールしてみた方がいいんじゃないの?
ちなみに5.2.2を解凍してphp.iniで
extension_dir = "c:\php\ext"
と設定して
extension=php_pdo.dll
extension=php_pdo_sqlite.dll
extension=php_sqlite.dll
の3つのコメントを外しただけの状態でphpinfoには
> SQLite
>
> SQLite support => enabled
> PECL Module version => 2.0-dev $Id: sqlite.c,v 1.166.2.13.2.7 2007/03/06 02:17:13 stas Exp $
> SQLite Library => 2.8.17
> SQLite Encoding => iso8859
という項目が現れるはず。
0451nobodyさん
2007/05/04(金) 18:21:06ID:tMlUrrmD>それ、どっから何を再コピーしてきたのさ?そんな操作は不要なはずだぞ?
念のためにphp-5.2.2-Win32をDLして解凍して
extフォルダー内からコピーし直しました。
再インストールしてみます。
0452nobodyさん
2007/05/04(金) 18:24:27ID:???そのコピーが問題なんじゃね。
まずphpinfoで認識されるかどうかを確実にすることが先決だな。
0453nobodyさん
2007/05/04(金) 18:31:06ID:tMlUrrmDどーやら再インストールしようとしたら解決しました。
えーとwindowsのsystem32フォルダに以前のバージョンのdllを放置してたのが原因だったようです。
申し訳ありませんでした。
再インストールの段になって以前のバージョンを削除することに考えがいきました。
削除しながらもしかしてと思って一度再起動して確認したところ
SQLite support enabled
PECL Module version 2.0-dev $Id: sqlite.c,v 1.166.2.13.2.7 2007/03/06 02:17:13 stas Exp $
SQLite Library 2.8.17
SQLite Encoding iso8859
このようなメッセージも確認でき無事にスクリプトも動きました。
アドバイスありがとうございました。
0454nobodyさん
2007/05/04(金) 18:41:49ID:???> えーとwindowsのsystem32フォルダに以前のバージョンのdllを放置してたのが原因だったようです。
要らん再コピーとか無駄なアレンジを加えたための単なる自爆だな。
0455453
2007/05/04(金) 18:48:28ID:???これはこれで動くようになったという人の話をググって見つけたので試してみました。
要るかどうか判断できなかったので。。
でもそれ以前の問題だったようですね。すいません。
0459nobodyさん
2007/05/04(金) 19:31:25ID:???でも内容自体がくだらないので決して良スレには化けない。
くだ質スレなんてどこもそんな感じ。
0460nobodyさん
2007/05/04(金) 19:42:29ID:???0461nobodyさん
2007/05/04(金) 19:54:01ID:???■ このスレッドは過去ログ倉庫に格納されています