トップページ⇒php
1001コメント311KB

【php】part29【php】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2005/07/06(水) 09:57:54ID:0DucnAyH
・PHP全般の質問スレです。
・新規質問の方は上げてください。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:4MHUxfdX
phpinfo() で表示される Environment はどこを見て表示していますか?
PGDATA の値が実際の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:0DucnAyH
フォーム以外で変数を渡すにどうすればいいですか?
0006nobodyさん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:Z5eAEHZk
ギャグセンスはイマイチな板です。
0012nobodyさん2005/07/07(木) 00:12:44ID:???
P・H・P!
0013nobodyさん2005/07/07(木) 00:38:11ID:FTxPlCEv
exif_read_data()関数でJPEGのEXIFデータを読み出そうとしたんですが
ある値以降を読み出そうとすると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; }
}

続く
0018172005/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:???
redhat9を使用しています。php-4.3.11をrpmからインスコしました。
./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:???
>>17
再帰呼び出しが結果を返していない
return $this->replace_val($value);
としてみなされ
0021172005/07/08(金) 12:13:32ID:???
>>20
本当にありがとうございます。たった6文字追加で解決できました。
再帰関数のreturnって最後に抜ける時だけかと思ってました。(初めて作ったもので)
0022nobodyさん2005/07/08(金) 18:35:04ID:0UiFE2YC
文章を変数として引き継ぎたいんですが、どうすればいいんでしょうか?
<input type=hidden>だと改行した後の文章は、引き継がれないんですか?

今、この投稿の確認画面を見たら、ソースの改行した部分に<input type=hidden>が入ってますけど、どうすればいいんでしょうか?
0023nobodyさん2005/07/08(金) 18:54:16ID:???
>>22
受け取れますよ。
<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
>>23-24
ありがとうございます。
調べて、自分なりに勉強してみます。

php始めて2週間ほどになりますが、色んなサイトで調べまくっます。
「ほげほげ」ってなんですか?
良く目にするんですけど。
0026nobodyさん2005/07/08(金) 22:54:08ID:???
つ [ ほげ学 ]
0027nobodyさん2005/07/08(金) 22:56:02ID:tkMhmOGb
>>24
違う・・・・。
0028nobodyさん2005/07/11(月) 20:45:07ID:gCXZMFSg
php4かphp5で、perlのcallerのように呼び出し元の関数名を取得したいのですが、可能でしょうか?
googleで検索したところ、ファイル名と行番号を返す方法や、回答のない質問はあったのですが、呼び出し元関数名を求める方法を見つけることができませんでした。
良い方法がありましたら、御教授ください。よろしくお願いします。
0029nobodyさん2005/07/12(火) 01:57:14ID:gE6ZuFfG
これじゃだめか?
<?php
echo hoge();

function hoge()
{
  return __FUNCTION__;
}
?>
perlは知らないが
0030nobodyさん2005/07/12(火) 02:20:09ID:???
>>28
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:???
java jdbc位しかわからん俺が考えるに
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:???
while使えばそれらは要らない訳で。
Javaだと例外が起きちゃうけど。
0035nobodyさん2005/07/13(水) 02:03:49ID:???
>>31
そのwhileは、MySqlの結果が空になるまで繰り返す。
だから、2回目のwhileは、既に空っぽなんで、何もせずに終了する。

案としては、
whileの前で $rec = array();として、
$rec -> $rec[] にして配列に取り込んで後で好きなようにいじれば良い。

mysql_data_seek() を使ってもできるだろうが、薦めない。

mysql_fetch_array(…, MYSQL_ASSOC)) をわざわざ指定して使うなら -> mysql_fetch_assoc() もある。
0036312005/07/13(水) 09:38:45ID:Nyo2L72X
>>35
ありがとございます。

>$rec -> $rec[] にして配列に取り込んで後で好きなようにいじれば…
ということは、今まで$rec{'項目名'}のように使っていたものは使えなくなると言う事?
でも、何度も使いたい時はこの方法しかないのかな…

>mysql_fetch_array(…, MYSQL_ASSOC)) をわざわざ指定して使うなら -> mysql_fetch_assoc() もある
なるほどφ(..)メモメモ
0037nobodyさん2005/07/13(水) 10:55:40ID:???
>>36
$rec[0]['項目名']
$rec[1]['項目名']
$rec[2]['項目名']
0038282005/07/13(水) 11:08:07ID:???
>>29
勉強になりました。どうもありがとうございます。
>>30
正にそのもの機能があったのですね。それで、希望の動作が出来ました。ありがとうございました。
■ このスレッドは過去ログ倉庫に格納されています