【php】part29【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2005/07/06(水) 09:57:54ID:0DucnAyH・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。
■本家
http://www.php.net/
■日本 PHP ユーザ会
http://www.php.gr.jp/
■PHP マニュアル
http://www.php.net/manual/ja/
■PEAR マニュアル
http://pear.php.net/manual/ja/
過去スレ, 関連スレ等>>2-10辺り
前スレでは、尾張の方でお世話になりました。
原因は唯のファイル名間違いでした。ダッセー俺OTZ
0002nobodyさん
2005/07/06(水) 11:24:37ID:4MHUxfdXPGDATA の値が実際のdataデレクトリとは違う値になっていて気持ち悪いのです。
実際は /usr/local/pgsql/data なのに /var/lib/pgsql/data
になっちゃってます。
0003nobodyさん
2005/07/06(水) 11:46:42ID:???0004nobodyさん
2005/07/06(水) 13:14:44ID:???0005nobodyさん
2005/07/06(水) 18:24:49ID:0DucnAyH0006nobodyさん
2005/07/06(水) 18:29:27ID:???0007nobodyさん
2005/07/06(水) 18:51:23ID:???0008nobodyさん
2005/07/06(水) 18:53:10ID:???0009nobodyさん
2005/07/06(水) 20:22:42ID:???0010nobodyさん
2005/07/06(水) 20:46:27ID:???0011nobodyさん
2005/07/06(水) 23:34:27ID:Z5eAEHZk0012nobodyさん
2005/07/07(木) 00:12:44ID:???0013nobodyさん
2005/07/07(木) 00:38:11ID:FTxPlCEvある値以降を読み出そうとするとPHPのプログラムそのものが停止状態
に陥ってしまいます。何か原因でもあるのでしょうか?
ちなみに画像データはデジカメで撮影した写真で、IrfanViewというフリー
の画像編修ソフトでリサイズ等しています(当然EXIF情報は保持するよう指定しています)。
0014nobodyさん
2005/07/07(木) 00:50:46ID:???どう停止するんだ。CPU使いきるのかメモリ使い切るのかI/O待ちになるのかetc
0015nobodyさん
2005/07/07(木) 02:26:05ID:???<?php
print $_GET['con'];
print $_GET['page'];
if ($_GET['con'] != "" && $_GET['page'] != ""){
include ("page/".$_GET['con']."/".$_GET['page']."/index.php");
}elseif($_GET['con'] != "" && $_GET['page'] == ""){
include ("page/".$_GET['con']."/index.php");
}else{
include ("page/main.html");
}
?>
conとpageの数値によって表示するページを変えたいのですが
上記のようにやっても表示されません
$conと$pageにはちゃんと数値が格納されています。
なぜでしょうか?
0016nobodyさん
2005/07/07(木) 02:50:01ID:???まずincludeではなくechoしてどのURIが指定されるのか確認する。
$_GET['page'] != ""より !isset($_GET['page'])の方がよい。
また、必ず意図しない文字が含まれていないか正規表現などを使って確認すること。
たとえば'/'、'\'。$_GET['page']の中身が./../hogeだったら……?
0017nobodyさん
2005/07/07(木) 21:02:51ID:???下記例では、tempdirに/tmp/test、tempfileに/tmp/test/tmp.txt、が設定される予定なのが、
この2つは何も設定されていません。(nameにはtestが正しく設定されている。)
どうもreplace_val()からの戻り値が呼出側で受取れていないため、その設定を元にした置換ができていないようです。
(replace_val()内部ではtempdirは正しい値が設定されているが、戻ってきた時点で空白になる。
tempfileはtempdirが空白のため内部的にも正しい値は設定されていない。)
いろいろ試したのですが、解決策が見つかりません。ご教授お願い致します。
■設定ファイル(書式:Key value)。 keyに$が付加されている場合はvalueの<>を置換する。
name test
$tempdir /tmp/<name>
$tempfile <tempdir>/temp.txt
■valueの「<>」を再帰的に置換する。<>がなくなると戻る。
protected function replace_val($value){
$st_pos = strpos($value,"<");
$ed_pos = strpos($value,">");
if($st_pos !== FALSE && $ed_pos !== FALSE && $st_pos < $ed_pos && (($v_len = $ed_pos - $st_pos -1) != 0)){
$v = substr($value, $st_pos +1, $v_len);
$front_str = substr($value, 0, $st_pos);
$rear_str = substr($value, $ed_pos +1);
if(isset($this->cfg[$v])){ $value = $front_str. $this->cfg[$v] .$rear_str ; }
else { $value = $front_str. $v .$rear_str ; }
$this->replace_val($value);
} else { return $value; }
}
続く
001817
2005/07/07(木) 21:03:30ID:rP9UCRTY■ファイルを読込み、連想配列に代入する。自作のファイル処理クラスを使用。
public function config_setup(){
$this->open("r"); $this->lock();
while(!$this->is_eof()){
$line = trim($this->read());
if($this->is_directive($line)){ # is_directiveはコメント行・空白行以外でTRUE返す
list($key,$value) = preg_split("/[\s,]+/",$line,2);
$key = trim($key);
$value = trim($value);
if(substr($key,0,1) == "$"){ $key = substr($key,1);
$value = $this->replace_val($value); } #<-ここが問題?
$this->cfg[$key] = $value;
}
}
$this->unlock(); $this->close();
}
0019nobodyさん
2005/07/08(金) 08:31:13ID:???./pear と実行するとエラーになります。
===================================================
PHP Warning: Unknown(): Unable to load dynamic library './imap.so' - imap.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: Unknown(): Unable to load dynamic library './ldap.so' - ldap.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: Unknown(): Unable to load dynamic library './mysql.so' - mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0
===================================================
上記ライブラリが見つからないようですが、ライブラリ自体は
/usr/lib/php4/に入っています。
/etc/php.d/mysql.ini の指定を上記パスに変更しても
探せないようでした。
'./mysql.so'これはどこからの相対パスなのでしょうか。
0020nobodyさん
2005/07/08(金) 10:46:10ID:???再帰呼び出しが結果を返していない
return $this->replace_val($value);
としてみなされ
002117
2005/07/08(金) 12:13:32ID:???本当にありがとうございます。たった6文字追加で解決できました。
再帰関数のreturnって最後に抜ける時だけかと思ってました。(初めて作ったもので)
0022nobodyさん
2005/07/08(金) 18:35:04ID:0UiFE2YC<input type=hidden>だと改行した後の文章は、引き継がれないんですか?
今、この投稿の確認画面を見たら、ソースの改行した部分に<input type=hidden>が入ってますけど、どうすればいいんでしょうか?
0023nobodyさん
2005/07/08(金) 18:54:16ID:???受け取れますよ。
<form method="POST" action="this_file.php">
<input type="hidden" name="hoge" value="hogehogieh
hogiehgoei
hoi">
<input type="submit">
</form>
<p>データ <?php if(isset($_POST['hoge'])){ print $_POST['hoge']; } ?></p>
0024nobodyさん
2005/07/08(金) 19:48:21ID:???<textarea rows=5 cols=70 wrap=off name=MESSAGE>ほげほげ
改行</textarea>
0025nobodyさん
2005/07/08(金) 22:51:37ID:tkMhmOGbありがとうございます。
調べて、自分なりに勉強してみます。
php始めて2週間ほどになりますが、色んなサイトで調べまくっます。
「ほげほげ」ってなんですか?
良く目にするんですけど。
0026nobodyさん
2005/07/08(金) 22:54:08ID:???0027nobodyさん
2005/07/08(金) 22:56:02ID:tkMhmOGb違う・・・・。
0028nobodyさん
2005/07/11(月) 20:45:07ID:gCXZMFSggoogleで検索したところ、ファイル名と行番号を返す方法や、回答のない質問はあったのですが、呼び出し元関数名を求める方法を見つけることができませんでした。
良い方法がありましたら、御教授ください。よろしくお願いします。
0029nobodyさん
2005/07/12(火) 01:57:14ID:gE6ZuFfG<?php
echo hoge();
function hoge()
{
return __FUNCTION__;
}
?>
perlは知らないが
0030nobodyさん
2005/07/12(火) 02:20:09ID:???http://www.php.net/manual/ja/function.debug-backtrace.php
>>29
節穴?
0031nobodyさん
2005/07/13(水) 01:05:23ID:Gxfaf5t+$rs = mysql_query("SELECT * FROM hoge");
とし、戻り値がTRUEなら
while( $rec = mysql_fetch_array($rs, MYSQL_ASSOC)){
PHP文
}
と処理を行うと、SQLで取得したデータを表示する事が出来ると思うのですが、
同じテーブルのデータを2箇所で表示する事はできるのでしょうか。
プログラム上部でSELECT文を実行させ、
その後while文を2回書いてるのですが
1回目のものしか表示されません。
mysql_free_result()は、2回目の後にしかしていないのですが、
一度でもループで処理を行うと値はなくなってしまうものなのでしょうか?
0032nobodyさん
2005/07/13(水) 01:44:20ID:???rs つまりResultSetで中身はArrayじゃないかの
だからArrayにFetchArrayしたとこで一個しかオブジェクトは
返ってこない気がするんだが…
Arrayにたいしてwhileループかます場合の定石として
rs.nextElement()とrs.hasMoreElement()、それ相当ってphpにないのん?
0033nobodyさん
2005/07/13(水) 01:46:08ID:???rsを別変数にこぴればいいんでは?
0034nobodyさん
2005/07/13(水) 01:47:32ID:???Javaだと例外が起きちゃうけど。
0035nobodyさん
2005/07/13(水) 02:03:49ID:???そのwhileは、MySqlの結果が空になるまで繰り返す。
だから、2回目のwhileは、既に空っぽなんで、何もせずに終了する。
案としては、
whileの前で $rec = array();として、
$rec -> $rec[] にして配列に取り込んで後で好きなようにいじれば良い。
mysql_data_seek() を使ってもできるだろうが、薦めない。
mysql_fetch_array(…, MYSQL_ASSOC)) をわざわざ指定して使うなら -> mysql_fetch_assoc() もある。
003631
2005/07/13(水) 09:38:45ID:Nyo2L72Xありがとございます。
>$rec -> $rec[] にして配列に取り込んで後で好きなようにいじれば…
ということは、今まで$rec{'項目名'}のように使っていたものは使えなくなると言う事?
でも、何度も使いたい時はこの方法しかないのかな…
>mysql_fetch_array(…, MYSQL_ASSOC)) をわざわざ指定して使うなら -> mysql_fetch_assoc() もある
なるほどφ(..)メモメモ
003828
2005/07/13(水) 11:08:07ID:???勉強になりました。どうもありがとうございます。
>>30
正にそのもの機能があったのですね。それで、希望の動作が出来ました。ありがとうございました。
■ このスレッドは過去ログ倉庫に格納されています