くだすれPHP(超初心者用)5
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/11/22(土) 06:36:02ID:???もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
PHP使いが優しくコメントを返しますが、
お礼はPHPの布教と初心者の救済をお願いします。
PHP Home Page
http://www.php.net/
http://jp.php.net/
くだすれPHP(超初心者用)4
http://pc11.2ch.net/test/read.cgi/php/1213356756/
適当に関連スレ(マルチはだめぽ)
【PHP】下らねぇ質問はここに書き込みやがれ 69
http://pc11.2ch.net/test/read.cgi/php/1211879073/
0321nobodyさん
2008/12/23(火) 13:04:10ID:???$array=array('name'=>'aki','age'=>23,'karesi'=>'futsu');
foreach($array in $key=>$item) {
echo "$key $item\n";
}
0322nobodyさん
2008/12/23(火) 13:54:23ID:???0324nobodyさん
2008/12/23(火) 17:43:37ID:???0325nobodyさん
2008/12/23(火) 18:14:25ID:???0326nobodyさん
2008/12/23(火) 18:37:45ID:???ってか、Cは却って難しい
0327nobodyさん
2008/12/23(火) 20:41:02ID:???マニュアルにあるSQLite3ってやつとは何が違うんでしょうか
0328nobodyさん
2008/12/23(火) 20:45:19ID:???0329nobodyさん
2008/12/23(火) 21:06:01ID:???ググってもPDOのことしか見当たらずそこからマニュアルに流れ着いて
SQLite3文?って物があるのを知ったのでどういった違いがあるのかなと思ったのですが
どっちを使っても構わないってことでしょうか
0330nobodyさん
2008/12/23(火) 21:06:50ID:???0331nobodyさん
2008/12/23(火) 21:19:15ID:???どちらがいいのかはわかりませんが、せっかくなのでSQLite3も使ってみます
0332nobodyさん
2008/12/23(火) 21:44:59ID:???元々はそのそれぞれに対して、よく似てるけどちょっとずつ形の違う関数がいっぱいあった。
で、それが不便だからって事で、「同じ書き方でどれにでもアクセスできるような仕組みを作ろう!」となった。
それがPDO。
PDOを使って書かれたプログラムは、DBがSQLiteからMySQLに変わっても、PDOクラスをnewしてるところだけ書き換えれば普通に動く。
また、PDOひとう覚えれば、どのDBでも使えるようになる、というメリットもある。
0333nobodyさん
2008/12/23(火) 21:50:29ID:???0334nobodyさん
2008/12/23(火) 21:50:51ID:???0335nobodyさん
2008/12/23(火) 21:57:29ID:???これだけだとバランス取れないので、一応デメリットも。
全DBでなるべく共通の操作を提供する、という仕組みのため、一部のDBに固有の機能が使えなかったりする事がある。
よくある話だと、MySQLの持続的接続が使えなかったりな。あと、パフォーマンスでもPDOは若干劣る。
個人で使う最大のメリットは、プリペアドステートメントのサポートだと個人的に思う。
SQLインジェクションの危険性をほぼゼロにできる上に、プログラムの可読性も上がる。
0336nobodyさん
2008/12/23(火) 21:58:54ID:???それってパフォーマンスに影響するんだっけ?ベンチとった?
0337nobodyさん
2008/12/23(火) 22:14:41ID:???SET NAMES 危ないって聞くし。
0338335
2008/12/23(火) 22:49:27ID:???んな事いったら、sqlite関数やmysql関数を使ってしまえば、将来のDB変更の自由度が失われるわけだが。
俺は自由度や性能云々以前に、DB依存のコードがそこら中にあるのを気持ち悪いと感じる。そんなものはどっかで隠蔽されるべきだ。
(実際問題、DBを置き換えるなんて事態は普通ないだろうけどな)
0341nobodyさん
2008/12/25(木) 05:57:49ID:???>>PDOクラスをnewしてるところだけ書き換えれば普通に動く
SQL文自体がDB固有になるだろうから、現実的にそれはあり得ないんじゃないか?
(標準SQLだけで書かないでしょふつう)
俺的なPDOのメリットは、DB関連関数をどのDBにも共通で使えるため開発の学習量を
減らせること。これはソースコードの可読性の向上、メンテ性の向上にもなる。
0342nobodyさん
2008/12/25(木) 18:01:58ID:???0343nobodyさん
2008/12/25(木) 20:20:04ID:???単純にPDOだけで実現できるわけじゃぁないが、
PDOで標準SQLだけを使うか、
PDOよりも抽象化したFWを使うわけで、
素の関数を使うよりは汎用性が高い。
どっちの言うことも大きく間違っちゃいないわな
0344nobodyさん
2008/12/29(月) 23:28:23ID:hqhRjo690345nobodyさん
2008/12/29(月) 23:37:49ID:???0347nobodyさん
2008/12/31(水) 11:35:34ID:???確認用のダイアログを出すにはどうすれば良いでしょうか?
実行しますか?
【OK】 【キャンセル】
※ダイアログを表示し【OK】が押された場合のみ
submit処理を行ういたいです。
0348nobodyさん
2008/12/31(水) 11:47:59ID:???超JavaScript
ググれば死ぬ程出てくる
一番最初に引っかかったページ http://promptbox.jp/blog/memo/index.php?itemid=785
お年玉くれw
0350nobodyさん
2008/12/31(水) 12:39:59ID:???0351nobodyさん
2008/12/31(水) 13:25:47ID:???0352nobodyさん
2008/12/31(水) 13:30:12ID:???0353nobodyさん
2008/12/31(水) 16:42:47ID:???formのプルダウンメニューの値を送信ボタンで渡すのはわかるのですが
プルダウンで選択しておいてリンクをクリックしたときにその値を一緒に
送るような使い方はできるのでしょうか。
ようはメニューでレイアウトの種類を選択して、リンク先をそのレイアウトで
表示させるといったことをしたいのですが。
0354nobodyさん
2008/12/31(水) 17:24:24ID:???0355nobodyさん
2008/12/31(水) 18:25:42ID:???その後ググってるとJavaScriptでメニューの値が取得できるようですので
これとonClickだかでどうにかできるのかなってことでJSはわからないんですが
少し勉強してみようとおもいます
スレ違い失礼しました。
0356nobodyさん
2008/12/31(水) 18:29:31ID:???工数増えるけどPHPでできないこともない
まぁガンガレ
0357nobodyさん
2008/12/31(水) 18:57:38ID:???プルダウンを変更した時点でリンク先を書き換えるか、クリック時にフォームのsubmitイベントを呼び出すか。
0359nobodyさん
2008/12/31(水) 19:01:23ID:???一度選択したら2回目以降は覚えていて欲しいだろうからな。
0360nobodyさん
2008/12/31(水) 19:49:56ID:???変えたいと思います。
どうすれば同一phpページをパラメータURLを指定する事により表示内容を変更する事が出来ますか?
http://www.test.php=1234
http://www.test.php=1235
0361nobodyさん
2008/12/31(水) 19:52:15ID:???0362nobodyさん
2008/12/31(水) 20:01:42ID:???http://www.example.com/?page=1234
こういう形なら$_GET['page']で1234が取得できるから
これを使って切り替えれば良い
ただしpage=1234の1234は誰でも値を入れる事ができるから
チェック等は必ずするように
0363360
2008/12/31(水) 20:14:49ID:???ヒントをありがとうございます。
>>362
詳しくご解説頂きありがとうございました。
早速「ガキ使い」を見ながらプログラミングしてみようと思います。
0364nobodyさん
2009/01/03(土) 12:58:05ID:???動作確認を行いますよね?
C:\Program Files\Apache Software Foundation\Apache2.2\htdocs
しかし、1つのPCで複数サイトの開発を行う場合には、次の用にフォルダを切った上で
開発を行っているのですが、この方法は正しいですか?
C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\site1
C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\site2
※要するに動作確認をする場合には次の用にしなくてはならないので。(まっ、これしか方法は無いかな?)
http://localhost/site1/index.html
http://localhost/site2/index.html
0365nobodyさん
2009/01/03(土) 13:04:40ID:???0366nobodyさん
2009/01/03(土) 13:12:49ID:???0367nobodyさん
2009/01/03(土) 13:20:37ID:???0368nobodyさん
2009/01/03(土) 13:31:35ID:???0369nobodyさん
2009/01/03(土) 13:31:42ID:???0370nobodyさん
2009/01/03(土) 13:45:12ID:???LinuxじゃないとVirtualHostは使えないのではないですか?
それともWindows環境でも出来るのですか?
>>366
取り敢えず、
http://tech.bayashi.net/svr/doc/apache/mod_rewrite.html
のサイトで勉強してみようと思います。
実務でphpを使ったWEBサイトの開発とかした事が無いのですが、
実務でphpで開発を行う場合にテキストエディタだけを使っているプロジェクトは少ないですか?
あと、複数サイトの開発を1台のPCで行う場合に、>>364みたいな感じで行うのは
能率が悪いでしょうか?
0372nobodyさん
2009/01/03(土) 13:54:52ID:???0374nobodyさん
2009/01/03(土) 14:00:48ID:???0375nobodyさん
2009/01/03(土) 14:19:04ID:???複数サイトをプロジェクト(複数人数)でやるんだから、ファイルのアップロード方式の方が重要。複数の人間がftpでアップするのなら、それを管理しやすい方法で
あと、htdocs/aaa/bbb/ とかでやった場合、mod_rewrite の RewriteBase が後でアレな時あり
プロジェクトを管理できれば良いので、エディタは何でもいい
0376nobodyさん
2009/01/03(土) 14:38:30ID:???サイト側もcheckoutするのだ
0377nobodyさん
2009/01/03(土) 14:55:16ID:???0379nobodyさん
2009/01/03(土) 15:57:48ID:???>370
同時にいじるなら、何も考えずにやってるとアクセスログが同じファイルになってしまうので、やりづらいと思う。
そのままでもできるけど、バーチャルホストの方がエラーログの切り分けが簡単。
あとは両プロジェクトで同名のクッキーを使った場合衝突が発生する点かな。セッション周りが特に危険。
あと、本番環境に持っていく際に、相対リンク/絶対リンクとか周りで絶対いくつかリンク切れが発生すると思う。
以上のような点を気にしなくて良いのならば、そのままでもいいんじゃない?
0380379
2009/01/03(土) 16:44:44ID:???クッキーは発行パスを適切に指定すれば混ざらないが、本番環境への移行の際に適切な修正をする必要がある。
0381nobodyさん
2009/01/12(月) 12:35:49ID:???preg_matchなど公式マニュアルに出ている内容については理解したのですが、
Perlとは微妙に違うリテラルやトークンの使い方について詳しく説明してある
ドキュメント等はないでしょうか?
0382nobodyさん
2009/01/12(月) 13:43:52ID:???だとしたら
ttp://www.geocities.jp/kosako3/oniguruma/doc/RE.ja.txt
補記 3. Perl 5.8.0と比較して存在しない機能
+ \N{name}
+ \l,\u,\L,\U, \X, \C
+ (?{code})
+ (??{code})
+ (?(condition)yes-pat|no-pat)
* \Q...\E
但しONIG_SYNTAX_PERLとONIG_SYNTAX_JAVAでは有効
0383nobodyさん
2009/01/12(月) 15:24:30ID:???参考にメモさせていただきました
0384nobodyさん
2009/01/13(火) 02:11:38ID:???PEAR::Logでログでログ管理をしようと思っているのですが、
手元の参考書やWebで調べると、解説のサンプルプログラムが
<?php
require_once 'Log.php';
$file = &Log::factory('file', 'out.log', 'TEST');
$file->log('ログ内容');
?>
みたいな場合が多いのですが、この場合Log::factoryで作成した
インスタンス(?)の$fileは明示的にcloseか何かしなくて言いのでしょうか?
例えば、普通のファイル操作ならfopenしたら最後はfcloseをするので、
Log::factoryもそれに該当する操作が必要ないのか?と気になりましたので・・・・
0385nobodyさん
2009/01/13(火) 03:08:48ID:???0386nobodyさん
2009/01/15(木) 22:20:46ID:???配列を検索して特定の文字が含まれていた場合そのインデックスを返す
っていうのをやりたいのですが、わかりません。よろしくお願いします。
インデックス1を返して欲しいんですが、何も返ってきません。
***テキストファイルの中身*******
群馬県
栃木県
茨城県
埼玉県
東京都
****************************
<?php
//ファイルを開く
$filename="test.txt";
//配列に代入する
$f1=file($filename);
//特定の文字が含まれる要素を探す
$word="栃木県";
$key=array_search($word,$f1);
print($key);
?>
0387nobodyさん
2009/01/15(木) 22:27:13ID:???ファイルを配列に入れて返します。 配列の各要素はファイルの各行に対応します。改行記号はついたままとなります。 失敗すると file() は FALSE を返します
0388nobodyさん
2009/01/15(木) 22:28:50ID:???0389nobodyさん
2009/01/15(木) 23:00:30ID:???>>388
レスありがとうございます。
この検索の場合は完全に一致するものしか検索できないんですね。
例えば
$word="玉";
とした場合に
埼玉県のインデックスの3を返すというのは無理なんでしょうか?
0392nobodyさん
2009/01/16(金) 15:17:30ID:???strposって、最初に出てきた位置を返す関数じゃない?
「あるかどうか」を調べる関数のほうがいいんだけど。
0393nobodyさん
2009/01/16(金) 15:19:44ID:???0394nobodyさん
2009/01/16(金) 16:25:58ID:???そこまでに\nがいくつあるか
ウマー
0395nobodyさん
2009/01/16(金) 23:23:04ID:???>392
strposは文字列検索としては最速の部類。
他の選択肢はpreg_match位しかないが、preg関数とstr関数じゃお話にならんほど速度が違う。
0396nobodyさん
2009/01/16(金) 23:24:33ID:???0397nobodyさん
2009/01/16(金) 23:28:16ID:???0398nobodyさん
2009/01/17(土) 11:25:45ID:???395ではないが暇なので作ってみた
$imakara_ikude = microtime(TRUE);
$dokowo_sawatte_hosiinya = '検索対象にしたい任意の文字列';
$kokoga_eenka = '検索したい任意の文字列';
$kokoga_eenka_pattern = '/' . preg_quote($kokoga_eenka, '/') . '/';
$itte_itte_ikimakuru = 100000;
for ($i = 1; $i <= $itte_itte_ikimakuru; $i++) {
if (strpos($dokowo_sawatte_hosiinya, $kokoga_eenka) !== FALSE) {}
// if (strstr($dokowo_sawatte_hosiinya, $kokoga_eenka)) {}
// if (preg_match($kokoga_eenka_pattern, $dokowo_sawatte_hosiinya)) {}
}
$doya_yokattaka = microtime(TRUE) - $imakara_ikude;
echo $doya_yokattaka;
■結果 - Windows XP(ペン4 3.2GHz)+XAMPP(PHP5.2.2)
strpos():0.060ぐらい
strstr():0.052ぐらい
preg_match():0.28ぐらい
strstr()の方が微妙に早いが、公式マニュアルでstrstr()の説明見ると
strpos()使えカスと書いてるので俺は素直にstrpos()使う。
0399nobodyさん
2009/01/17(土) 11:38:45ID:???というわけで、
if (strpos($str, 'search') !== FALSE)
を使え。必ず「!== FALSE」にするように。理由は説明ダルいからマニュアル見れ。
>>389
$index = FALSE;
$word = '玉';
if ($ary = file('test.txt')) {
foreach ($ary as $key => $val) {
if (mb_stripos($val, $word) !== FALSE) {
$index = $key;
break;
}
}
}
var_dump($index);
strpos()はマルチバイト対応してないので、mb_系使うように。
0400nobodyさん
2009/01/17(土) 11:43:51ID:???>>384
気持ち悪いなら明示すりゃいい。というか、色んな意味で明示したほうが良いと俺は思う。
phpは、リソースのオープンは明示しなくても自動的に閉じてくれる。(ファイルであれDBであれ)
>>382
PHP5から鬼車。mb_ereg()系で。
preg_match()では使われてないのでは?
0401nobodyさん
2009/01/17(土) 11:53:04ID:???俺の場合
Java : PHP = 5 : 5
ただ、レンタルサーバ代がJavaだと高いから力配分を
1:9程度に持って行こうかと思ってる。
0403nobodyさん
2009/01/17(土) 12:05:09ID:???$a = array('a', 'b', 'c');
foreach ($b as $k => $) {}
実行すれば分かる
0409nobodyさん
2009/01/17(土) 12:29:37ID:???0411nobodyさん
2009/01/17(土) 12:34:40ID:???$ary = file('test.txt') or array();
$ary = file('test.txt') or exit;
とか。もしくは例外使う。
何か関数からの出力を得る度にifで1ブロック使うなんてナンセンスすぎ。
0412nobodyさん
2009/01/17(土) 12:38:43ID:???0413399
2009/01/17(土) 12:39:51ID:???あのな。
言っておくが、>>399みたいな処理は普通はクラスのメソッド通すなりするわ。
めんどくさいからはしょってるだけだろーが。分かるか?あ??
なんか>>411見てると、俺の会社の全然使えないカスPGにそっくりで殴り倒したくなるわw
0414nobodyさん
2009/01/17(土) 12:40:56ID:???0415nobodyさん
2009/01/17(土) 12:41:35ID:???誰かが答えるとそれには文句つけないと気がすまないんだな。
どうしようも無いカスだなw
0416nobodyさん
2009/01/17(土) 12:42:27ID:???たかがPHPでしょ
動けばいいじゃん
ばか?
0417nobodyさん
2009/01/17(土) 12:43:17ID:???0418nobodyさん
2009/01/17(土) 12:46:56ID:???0419nobodyさん
2009/01/17(土) 12:50:26ID:???/⌒ ⌒\ ) 『 開こうとしているファイルが必ず開けるとは限らないわな』っと。
/( ●) (●) \ )/⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y丶
/ ::::::⌒(__人__)⌒::::: \
| |r┬-| |
\ `ー'´ /
ノ \
/´ ヽ カ
| l l||l 从人 l||l l||l 从人 l||l カ タ
ヽ -一''''''"~~``'ー--、 -一'''''''ー-、. タ
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
┌┬┬┐┌┬┬┬┐┌┬┬┬┐┌┬┬┬┐
,. - ''"| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ρ ̄`l
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ノ ̄ ̄
____
/::::::─三三─\ foreach((array)file('〜') as ...)
/:::::::: ( ○)三(○)\
|::::::::::::::::::::(__人__):::: | _____
\::::::::: |r┬-| ,/ .| |
ノ:::::::: `ー'´ \ |
■ このスレッドは過去ログ倉庫に格納されています