【PHP】質問スレッドpart30【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2005/10/25(火) 06:50:06ID:Q4oGlTH3【基本ルール】
・新規質問の方は上げてください。age進行でお願いします。
・質問者は2回目以降、最初のレス番号を名前欄に入れてください。
・回答者は質問者に対して>>(アンカー)をつけてください。
・煽り・荒らしは放置。荒らしに反応した香具師も荒(ry
・解決しなくてもこたえてもらったら礼を。
【質問テンプレ】
・マニュアルを調べたか、google検索したか(調べたキーワード)
・タイトル(禁:教えてください!etc) 例:requireとinclude
・内容 例:requireとincludeはどう違うのですか?
・質問する際には環境も明記。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
【PHP マニュアル】
http://www.php.net/manual/ja/
※マニュアル上部の「search for」から検索を活用すべし(便利)。
過去スレ、関連リンク、FAQ等>>2-10辺り
0455nobodyさん
2005/11/14(月) 12:18:02ID:???php.netでもできるな
http://www.php.net/phpinfo
それはともかく、phpinfo()の出力を眺めれば分かるかも
0456nobodyさん
2005/11/14(月) 12:21:34ID:???function search(& $all, & $key, $left = 0, $right = count($all))
{
if ($left == $right) return false;
$middle = floor(($left + $right) / 2);
list($number, $value) = explode("\t", $all[$middle]);
if ($value == $key) return $number;
else if ($value > $key) return search($all, $key, $left, $middle);
else return search($all, $key, $middle, $right);
}
データファイルを検索する関数なのですが、
PHP Parse error: syntax error, unexpected '(', expecting ')' in c:\php\search.php on line 2
と言われてしまいます。
どのように変更すればできますか?
0460nobodyさん
2005/11/14(月) 12:27:59ID:???つか、$_COOKIEでも$_POSTでも、うまく取得できなかったら、
それぞれの配列がどうなっているかチェックする。
print_r($_COOKIE)
とか
var_dump($_COOKIE)
とかさ。
0462nobodyさん
2005/11/14(月) 12:29:19ID:???HTTPの応答をフックしてみたほうが速いぞ
0464456
2005/11/14(月) 12:36:39ID:???0465下質レベルだ・・・
2005/11/14(月) 12:53:01ID:???そんなもんアルゴリズムで解消しろよ
function search(& $all, & $key, $left = 0, $right = FALSE)
{
if ($right === FALSE) $right=count($all);
0466nobodyさん
2005/11/14(月) 12:57:05ID:???1 読まない
2 調べない
3 試さない
4 理解力が足りない
5 人を利用することしか頭にない ←>>456
0467nobodyさん
2005/11/14(月) 13:00:39ID:???解答してる奴もいっしょに死んで来いよ
0468nobodyさん
2005/11/14(月) 13:03:48ID:???世界じゃ3秒に一人死んでるんだよ!
0471nobodyさん
2005/11/14(月) 13:36:12ID:???それがボトルネックになっているのではと睨んで、とりあえず値渡しの場合と実行速度を比較してみたんだが、なんと一部を値渡しにしたほうが圧倒的に速くなった(比にして数百〜数千倍)。
釈然としないながらも値渡しのほうに修正しておいたが、一般論に反するので原因究明のためにopcodeを出してみた。
あいにくopcodeの仕様を定義している資料が見つからなかったために、結局悶々としている状態。
どなたかopcodeの仕様に関する資料はお持ちではないですか?
0472453
2005/11/14(月) 13:54:18ID:3QndTAPnさらなる情報、どうもありがとうございます。
便利な関数があるのですね。とても参考になりました。
0473nobodyさん
2005/11/14(月) 14:05:14ID:???foo($param);
↓爆速
function foo($param) {
$var = $param;
}
↓爆遅
function foo(&$param) {
$var = $param
}
PHPはメソッド内で変更がなきゃデフォで参照渡し
上の場合は参照→参照
下のは参照→値コピー
逆に
↓爆遅
function foo($param) {
$param .= 'hoge'
}
↓爆速
function foo(&$param) {
$param .= 'hoge';
}
0475471
2005/11/14(月) 14:24:39ID:???御見それしました。
ここまで予想外にして明快な回答が返ってくるとは驚きました。
opcodeの情報探しをしていた時間がまるで夢のよう。
どうもありがとうございました。
0476nobodyさん
2005/11/14(月) 14:45:47ID:???ちまちました細かいつっこみ入れると
>PHPはメソッド内で変更がなきゃデフォで参照渡し
に勝手になるわけではなく、「値渡しだけど実質上参照渡しと変わらない」というだけだったりもする。
0478nobodyさん
2005/11/14(月) 14:47:46ID:???0479nobodyさん
2005/11/14(月) 14:52:06ID:???確かに情報公開されてないな。
0480nobodyさん
2005/11/14(月) 15:48:26ID:???つ[ZE2のソース]
公開されてないってより、まとまったドキュメントになってない。
zendのとこで質問すると、別に隠蔽してる訳でもないので
普通に回答あるけど、ZEのソース読んでることが前提だから敷居はそれなりに。
まあ内部のことを余り気にするのも良し悪しだけどね。
(Javaなのに気にしないとならないケータイPGなので...)
0481nobodyさん
2005/11/14(月) 16:16:49ID:???拡張モジュールの書き方なんかはマニュアルに載ってるけど、ZEのソース読んでるの前提ってまさか
こ れ を 全 部 読 め と ?
0482nobodyさん
2005/11/14(月) 16:23:50ID:???ま だ は や い ってことじゃね?
0483nobodyさん
2005/11/14(月) 16:36:05ID:???0484nobodyさん
2005/11/14(月) 16:43:30ID:???0485nobodyさん
2005/11/14(月) 16:49:46ID:D+CBz70Z0486nobodyさん
2005/11/14(月) 16:51:16ID:???難しくて読めないんじゃなくて、汚くて読めないの。
おまいはまずLispの処理系くらい作れるようになってから来ようね。
>>484
APCで憤死者って?
0489nobodyさん
2005/11/14(月) 17:57:48ID:???APC3が安定するまでにずいぶんと時間がかかったことかな?
eAcceleratorも一から書き直してるってサイトに書いてあるけど、完遂できるかちと心配。
PHP6ではOpcode Cacheが本体につく予定なんだよね?
0490nobodyさん
2005/11/15(火) 00:53:24ID:EuotBK4Kブラウザに以下の説明が出ます。
Unable to connect to PostgreSQL
server: unknown host name: localhost
port=8040
dbname=testdb2
user=testuser2
OSはfedoraCore4 php5 apache2を使用しています。
ポストグレ側の設定がおかしいのでしょうか?
わかる方、お願いします。
0492nobodyさん
2005/11/15(火) 01:19:20ID:???0494490
2005/11/15(火) 01:24:09ID:EuotBK4Kいま、確認してみます。
0495490
2005/11/15(火) 01:27:26ID:EuotBK4Kわかる方いませんか?
0496nobodyさん
2005/11/15(火) 01:29:13ID:???少し落ち着け。それだけじゃ何も分らん。
まず何をしようとしてその表示が出るのか、
急になったのか最初からなのか。
俺らはお前の鯖見れないんだからよ。
0498nobodyさん
2005/11/15(火) 01:31:57ID:???熱心だね
0499nobodyさん
2005/11/15(火) 01:33:09ID:???0500490
2005/11/15(火) 01:35:16ID:EuotBK4K<?php
if(ereg("config.php",$_SERVER["PHP_SELF"]))
{
exit();
}
define("DB_HOST","localhost");
define("DB_PORT",8040);
define("DB_NAME","testdb2");
define("DB_USER","testuser2");
define("DB_PASS","abcd1234");
define("DB_CONN","host=" .DB_HOST
."port=" .DB_PORT
."dbname=" .DB_NAME
."user=" .DB_USER
."password=" .DB_PASS);
?>
0501490
2005/11/15(火) 01:36:10ID:EuotBK4K3-4-1.phpの中身が、
<?php
require("config.php");
$db=pg_connect(DB_CONN);
header("Content-Type:text/plain;Charset=EUC-JP");
if($db==FALSE)
{
echo " not connect db?n " ;
}
else
{
echo "database connect ok?n" ;
}
?>
です。
何か間違っていますか?
0502nobodyさん
2005/11/15(火) 01:37:56ID:???いや、お前な、マジで少し落ち着け。
そのconfig.phpって何のスクリプトに内包されてる奴よ?
自作じゃないだろ?
で、「急になったのか最初からなのか」はどうなのよ?
最初からならpsqlが動いてるかどうか確認しろ。
0503nobodyさん
2005/11/15(火) 01:39:40ID:???0504nobodyさん
2005/11/15(火) 01:41:23ID:???0505490
2005/11/15(火) 01:43:26ID:EuotBK4K/user/local/apache2/bin/apachectl start
pg_ctl -o "-i"
で動作中です。しかし>>490掲載 エラーです。
localhostの意味がよくわかりません。
書籍を参考に勉強中です。
0506nobodyさん
2005/11/15(火) 01:46:38ID:???ポートがデフォルトじゃないけどいいの?
>>define("DB_HOST","localhost");
>>define("DB_PORT",8040);
0507490
2005/11/15(火) 01:47:45ID:EuotBK4Kに問題があるのでしょうか?
設定がよくわかりません。
ポストグレの設定に問題あるのか、
PHPの設定に問題があるのか。。。
0509490
2005/11/15(火) 01:49:09ID:EuotBK4Kとは、なんでしょうか?
どう設定すればいいのでしょうか?
よくわからないもので..
0510nobodyさん
2005/11/15(火) 01:50:00ID:???>>507
おまえさ、急ぐ必要なさそうだからちょっとじっくり勉強しなおせ
0511490
2005/11/15(火) 01:50:02ID:EuotBK4Kはい。作成済みです。
0512nobodyさん
2005/11/15(火) 01:52:55ID:???0513490
2005/11/15(火) 01:55:34ID:EuotBK4K/user/local/apache2
にインストールしています。
はい。同じサーバです。
0514nobodyさん
2005/11/15(火) 02:03:52ID:???は動く?
0515490
2005/11/15(火) 02:05:05ID:EuotBK4K0516490
2005/11/15(火) 02:06:10ID:EuotBK4Kも大丈夫なんですが、pgsqlはエラーで、ダメみたいです。。。
0517nobodyさん
2005/11/15(火) 02:07:32ID:???0518490
2005/11/15(火) 02:09:41ID:EuotBK4Kいろいろありがとうございました。
ちょっと自分で本屋に行って勉強してみます。
ほんとに感謝します^^
では。
0519nobodyさん
2005/11/15(火) 02:15:58ID:???0520nobodyさん
2005/11/15(火) 02:16:01ID:???portを5432
にしてどうかな?
0521nobodyさん
2005/11/15(火) 02:23:55ID:???合ってんだろうなぁ。試しに、
psql --help
としてヘルプを出してみたときに、-p オプション説明のところに
defaultが書いてあると思うが、どうなってる?
いっそうの事、port=8040を渡さずに接続してみるのも手か?
0522nobodyさん
2005/11/15(火) 02:31:57ID:???わざわざポートを変えるかって気もするけど。
pg使ったこと無いんだけど、portが開いてなくても
unknownになるですかね?
0523521
2005/11/15(火) 02:55:51ID:???そなだ。
> server: unknown host name: localhost
ポートどころか、それ以前の問題っぽいな。
でも、localhostがunkownって...
0524nobodyさん
2005/11/15(火) 03:39:25ID:2PUyzd2zDBの内容が
フィールド 1,2、3、4
レコードの内容 1=(A,B)
2=(C,D)
3=(E,F)
4=(G,H)
だとすると、今の知識ではHTMLに書き出すとき、
A,B
C,D
E,F
G, H
と表示できるのですが、
C,B
E,D
G,F
と情報を斜めに表示するにはどうすればいいのでしょう?
0525nobodyさん
2005/11/15(火) 03:47:34ID:???>>テンプレは読みましたが、質問の仕方がわからない程の初心者です。
日本語を勉強することをおすすめします。
フィールドとかレコードとか理解してる?
テーブルをExcelみたいな表形式で表現してみなよ
0526nobodyさん
2005/11/15(火) 04:03:26ID:???どっち?
1 2 3 4 (←フィールド1からフィールド4)
1 A C E G (←レコード1)
2 B D F H (←レコード2)
1 2 (←フィールド1とフィールド2)
1 A B (←レコード1)
2 C D (←レコード2)
3 E F (←レコード3)
4 G H (←レコード4)
0527524
2005/11/15(火) 04:10:48ID:2PUyzd2z>>テンプレは読みましたが、質問の仕方がわからない程の初心者です。
テンプレは理解できても、PHPは理解できてないから上手く表現できないかもしれない。って言いたかったです><
>>526
後者です
0528nobodyさん
2005/11/15(火) 04:14:25ID:???レスありがとうございます。
フィールド→0843
レコード1→BAKA
レコード2→AHO
となっています。
0529nobodyさん
2005/11/15(火) 04:38:47ID:???phpが理解っていうよりプログラム言語一般の理解不足って感じがするけど
フィールドの2つ目はなんか入ってる必須&エラーとか考えずだけど
$result = mysql_query("select f1,f2 from table order by ?");
$f2 = "";
while ($row = mysql_fetch_array($result)) {
if ($f2 == "") $f2 = $row["f2"];
else {
echo $row["f1"].",".$f2."<br>\n";
$f2 = $row["f2"];
}
}
でどう?
0530524
2005/11/15(火) 05:35:05ID:2PUyzd2z0531nobodyさん
2005/11/15(火) 05:36:04ID:???0532nobodyさん
2005/11/15(火) 06:53:34ID:???ひさびさに ワロスww
期待の大型新人ですね。
いいなあ、みんな。また、あえるかなw
0534nobodyさん
2005/11/15(火) 11:33:49ID:0AfHumhWこういう記述ってまずいんでしょうか。
自分も普通に使ってるときがあるんですが
どのような記述がよいのでしょうか。
0536nobodyさん
2005/11/15(火) 11:44:30ID:???もうちっとマトモな理由だと思ってROMしてるんですが…
0537nobodyさん
2005/11/15(火) 11:47:05ID:???$hoge = 0;
や
$hoge = "";
の時の動作をどうするかですね
$hoge == FALSE
だと$hoge が0や""でも該当するので好きではない
普通は
$hoge === FALSE
を使う
0538nobodyさん
2005/11/15(火) 11:50:07ID:???ロリポップを借りているのですが、データベースをいじるときに
phpmyadminではなく、直接クエリを発行するにはどうすればいいですか?
コマンドプロンプトでできますか?
0541nobodyさん
2005/11/15(火) 11:57:59ID:???コマンドプロンプトって書いてるからwin版だと仮定して
c:\mysql\bin\mysql
いじょう
0542nobodyさん
2005/11/15(火) 12:00:11ID:???ほーーー
そんな記述方法があったとは勉強になりました。
でも503の言う吐き気のコードが直前のソースの、
$db=pg_connect(DB_CONN);
…
if($db==FALSE)
{
…
}
だとしたら、pg_connect()の返り値はFALSEかresouce型だから、0とか空文字とか
って可能性は無いしとりあえずは問題無いんじゃないのでしょうかと聞いてみる
0545nobodyさん
2005/11/15(火) 12:12:09ID:???なぁ、マジメに聞くんだが、オマイはその質問がPHPと関係あると思ったから
このスレに書き込んでるんだよな?
どういう判断で、関係あると思ったのか教えてくれまいか。
0547nobodyさん
2005/11/15(火) 12:14:19ID:???つか、PHPとMySQLで住所録みたいなのを作っていて、
どうしてこういう質問なのだろう、ってとこだよな。
「作っていて」じゃなくて「作ろうとして」なんだとは思うが。
0548nobodyさん
2005/11/15(火) 12:18:48ID:???最近、くだスレの方がまともな質問が多い気がするのは気のせい?
0550nobodyさん
2005/11/15(火) 17:43:42ID:BTJCOqzCMySQL 4.1.14
PHP 5.0.4 を使ってます。
<?PHP
$conn = mysql_connect("localhost", "usr","pass");
mysql_select_db("kisop", $conn);
$res = mysql_query("SHOW TABLES",$conn);
if($res == TRUE){ print("データ獲得に成功しました。");
}else{ print("失敗"); }
?>
とやっても、ページが真っ白になるだけでMySQLに接続できません。
usrはきちんと作られており、また、PHPもSQL接続以外は問題なく動いています。
また、ODBCからの接続は問題なかったりします・・・
何が悪いのか、心当たりある方、ご教授ください。
0552nobodyさん
2005/11/15(火) 17:51:35ID:???エラー無視ってるわけじゃないだろうな
0553nobodyさん
2005/11/15(火) 18:02:11ID:???真っ白なページが表示されるのは、PHPレベルでのエラーが発生していると思われるので
MySQLがどうこうは関係ないはず。
php.iniかスクリプトで設定して、エラーをブラウザに表示させるところから始めよう。
スクリプトで設定する場合は、先頭に以下を記述。
ini_set('display_errors', true);
error_reporting(E_ALL);
それ以降の話だけど、$res を == TRUE で判定するのは危ないと思われ。
$res === FALSE(=== 3つであることに注意)の方が安全。
0554nobodyさん
2005/11/15(火) 18:04:15ID:???■ このスレッドは過去ログ倉庫に格納されています