【PHP】くだらねぇ質問はここに書き込みやがれpart7

このエントリーをはてなブックマークに追加
1966
PHPに関するくだらない質問用すれです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい

・過去スレ
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/
【PHP】くだらねぇ質問はここに書き込みやがれpart5
http://pc8.2ch.net/test/read.cgi/php/1114787573/
【PHP】くだらねぇ質問はここに書き込みやがれpart6
http://pc8.2ch.net/test/read.cgi/php/1117945031/

立ってなかったんで>>970に近かった自分が勝手に立てちゃいました。
2nobodyさん:2005/07/12(火) 02:12:07 ID:???
>>1
乙だ
3nobodyさん:2005/07/12(火) 09:24:04 ID:a//rVl7j
自作ソフトとかさ、スクリプトを使ってもらおうと
するとき、ダウンロードとかさせる機能はどうやるの?
おばさんが作ってたHPにダウンロードはこちらからとか
あったのをみて、俺正直すごい敗北感を感じたよおしえてくれ
頼む・・・
4軟式PHP:2005/07/12(火) 09:25:44 ID:???
<a href="sugoi_obasan_hp.zip">ダウンロードはこちらから</a>
5nobodyさん:2005/07/12(火) 09:53:49 ID:???
直リンされても良いのなら、こんな感じ。
<A HREF="test.zip">ダウンロード</A>

直リンされたくなければ、こんな感じ。
<A HREF="download.php">ダウンロード</A>

*** download.php ***
<?php
$path = '/download';
$filename = 'test.zip';

header("Content-Disposition: attachment; filename={$filename}");
header("Content-Type: application/zip");

readfile("{$path}/{$filename}");
?>
6966:2005/07/12(火) 11:12:03 ID:???
<?php
function autolink($url) {
$url = preg_replace("/(https?|ftp|news)(\:[\w\.\~\-\/\?\&\+\=\;\@\%\:\#\%]+)/","<a href=\"\\1\\2\" title=\"\\1\\2\">\\1\\2</a>",$url);
$url = preg_replace("/([^https?\:\/\/|ftp\:\/\/|news\:\/\/]www)(\.[\w\.\~\-\/\?\&\+\=\;\@\%\:\#\%]+)/","<a href=\"http://\\1\\2\" title=\"\\1\\2\">\\1\\2</a>",$url);
return $url;
$url = preg_replace("/([^h]ttps?)(\:[\w\.\~\-\/\?\&\+\=\;\@\%\:\#\%]+)/","<a href=\"h\\1\\2\" title=\"h\\1\\2\">\\1\\2</a>",$url);
return $url;
}
print(autolink("http://asdghfjghrgrs.com/ https://hgyfrdfguh.com/ ftp://5t6y78u9iop.com/ news://cvubinomp.com/ http://www.xtcyvubinmop.jp/ ftp://www.asdgtfyh.com/<br />\n
news://www.lkonbh.jp/ https://www.lkmjnbv.org/ www.ycvubinomp.com ttp://ytgfdvdfsvvsss.jp/ ttps://df67g8h9j0abcde.com/ ttp://www.cvuibnomp.com/ ttps://www.mnbiuvyc.com"));
?>

前スレの続きですが、このようにしてみたところwwwで始まるものにはリンクされるようになりましたが、何故かwの前に◆の中に?が入ったマークが表示されて、
更にその前のスペースの部分にも◆?が表示されてしまいます。
そしてttpから始まるものはURLが自動リンクされませんでした。結構それなりに出来てるとは思ったのですが何故駄目なんでしょうか。
7966:2005/07/12(火) 11:20:01 ID:???
とりあえず言葉じゃ伝え難いのでSSとってみました。
ttp://ranobe.sakuratan.com/up/updata/up45596.gif
8nobodyさん:2005/07/12(火) 11:28:04 ID:???
前スレで色々と教えてもらってたクセにシカトか。。。
ウザイやつだな
>結構それなりに出来てるとは思ったのですが
プッw
9nobodyさん:2005/07/12(火) 11:45:56 ID:2mlSOJGk
人の話も聞かないでゴミソースばっかコピペしてマジウザいので
そろそろ消えてくれねーかな
10nobodyさん:2005/07/12(火) 12:10:21 ID:???
初心者なりに必死に頑張ってるんだろ
11nobodyさん:2005/07/12(火) 12:24:36 ID:???
>>10
自演か?
いくら2ちゃんでも頑張ってる初心者をむやみに煽ったりはしないだろ。
レスもらったのにスルー、独自路線GoGoでヘルプするから
煽られてるだけ。
12966:2005/07/12(火) 12:51:49 ID:???
前スレで教えて貰ったのは教えて貰ったので頑張ってやっているんですが、
>>6のはちょっと自分なりに思いついたのでやってみたところ、
色々やっても駄目だったし自分の頭じゃ理由が分からなかったので、
せめてヒントだけでも貰いたいなと勝手に考えていました。

なんか教えて厨っぽくてすみません。
13nobodyさん:2005/07/12(火) 14:08:51 ID:???
>>11
自演じゃないが教えたことをやってれば良いって考え方に賛成できないだけだ
14nobodyさん:2005/07/12(火) 14:24:56 ID:ZD8v3rFB
質問です。

自分のPCで絵文字を見れるように外字設定がしてある状態です。
例えば(←皆さんには・に見える?)などを書くと私のPCではちゃんと絵文字が表示されています。
ですがPHPで作成した掲示板に絵文字を書くと「?」と表示されます。
文字コードの問題なのでしょうがいまいち分かりません。

ご存知の方ご教授お願い致します。
15nobodyさん:2005/07/12(火) 14:30:15 ID:???
PHP5でJava連携ってどうやるんですか?
16nobodyさん:2005/07/12(火) 15:18:33 ID:2mlSOJGk
>>13

じゃあチラシの裏に書いてなよ
17nobodyさん:2005/07/12(火) 15:19:37 ID:???
>>15
echo 'Java連携';

上記の答えが満足できなければ、満足できる答えを得るためには
どう質問すればよいか考えろ
1811:2005/07/12(火) 15:21:32 ID:???
>>13
>自演じゃないが教えたことをやってれば良いって考え方に賛成できないだけだ
同意。
ただし、前スレを読んでも同じ事が言えるのなら尊敬。
19nobodyさん:2005/07/12(火) 15:21:47 ID:???
連携内容による
20nobodyさん:2005/07/12(火) 15:22:23 ID:???
>>前スレ 966
やっつけてみたのだわ。ま、私ならこんなものを常用する気にはなれないわね。

<?php

function autolink($url){
return preg_replace("/((h?ttps?|ftp|news):\/\/|www\.)([\w\.\~\-\/\?\&\+\=\;\@\%\:\#\%]+)/e","'<a href=\"'.('$1' === 'www.' ? 'http://' : '').'$1$3\" title=\"$1$3\">$1$3</a>'",$url);
}

die(autolink("http://asdghfjghrgrs.com/ https://hgyfrdfguh.com/ ftp://5t6y78u9iop.com/ news://cvubinomp.com/ http://www.xtcyvubinmop.jp/ ftp://www.asdgtfyh.com/<br />\n
news://www.lkonbh.jp/ https://www.lkmjnbv.org/ www.ycvubinomp.com ttp://ytgfdvdfsvvsss.jp/ ttps://df67g8h9j0abcde.com/ ttp://www.cvuibnomp.com/ ttps://www.mnbiuvyc.com"));

?>
21nobodyさん:2005/07/12(火) 15:48:44 ID:???
>>20
前スレ>>966じゃないがそれだとttpの前にhがつかない罠

function autolink($url){
return preg_replace("/(((h?)ttps?|ftp|news):\/\/|www\.)([\w\.\~\-\/\?\&\+\=\;\@\%\:\#\%]+)/e","'<a href=\"'.('$1'==='www.'?'http://'|'$3'==='ttps?'?'h':").'$1$4\" title=\"$1$4\">$1$4</a>'",$url);
}

甲汁
22nobodyさん:2005/07/12(火) 16:10:35 ID:???
自分ならftpとかnewsとかイラネ
23nobodyさん:2005/07/12(火) 16:16:51 ID:qOoYFCn7
同じくイラネ
だが全部出来るやつとなると探しても見つからんもんだな

>>21
とりあえずそれじゃ駄目だ

<?php

function autolink($url){
return preg_replace("/((h?ttps?|ftp|news):\/\/|www\.)([\w\.\~\-\/\?\&\+\=\;\@\%\:\#\%]+)/e","'<a href=\"'.(('$1'==='www.'?'http://':'')|('$1'==='ttp://'?'h':'')|('$1'==='ttps://'?'h':'')).'$1$3\" title=\"$1$3\">$1$3</a>'",$url);
}

die(autolink("http://asdghfjghrgrs.com/ https://hgyfrdfguh.com/ ftp://5t6y78u9iop.com/ news://cvubinomp.com/ http://www.xtcyvubinmop.jp/ ftp://www.asdgtfyh.com/<br />\n
news://www.lkonbh.jp/ https://www.lkmjnbv.org/ www.ycvubinomp.com ttp://ytgfdvdfsvvsss.jp/ ttps://df67g8h9j0abcde.com/ ttp://www.cvuibnomp.com/ ttps://www.mnbiuvyc.com"));

?>

甲汁
これで全部出来るようになるが少々汚いな
誰かもっと簡潔出来る香具師いないか?
24nobodyさん:2005/07/12(火) 16:17:43 ID:???
なんか本末転倒のリンクだな
そもそもttpは掲示板の自動リンクを防ぐためのものでしょう
httpに修正されるなら最初からhttpで書き込めばいいし自動リンク予防がtp://に変わるだけの気がする。
25nobodyさん:2005/07/12(火) 16:21:00 ID:???
2chブラウザじゃあるまいしttpでリンク形成してどうする
26nobodyさん:2005/07/12(火) 16:22:33 ID:???
>>23
('$1'==='ttp://'?'h':'')|('$1'==='ttps://'?'h':'')
ここ一つにまとめろよ
27nobodyさん:2005/07/12(火) 16:26:06 ID:???
もういいんぢゃないの。元発言者は引っ込んだみたいだし
後は正規表現のスレでやっとくれ。
それに似たようなサンプルはpreg_replace_callbackを使って
前レスで示されていたはず。
28nobodyさん:2005/07/12(火) 16:27:07 ID:???
あれはエラーだた希ガス
29nobodyさん:2005/07/12(火) 16:29:39 ID:???
966は2chブラウザでも作るつもりなのか
この腕前でw
30nobodyさん:2005/07/12(火) 16:29:44 ID:???
次のくだらない質問
31nobodyさん:2005/07/12(火) 16:30:14 ID:???
うわ、まだ続いてんのかこのネタ
超ウザ
32nobodyさん:2005/07/12(火) 16:31:44 ID:???
続いてるんではなくループしていると思われ。
33nobodyさん:2005/07/12(火) 16:35:10 ID:???
function test($test) {
while($test>=10) {
print("test")
$test++
}

こうやっても何も表示されないんです
34nobodyさん:2005/07/12(火) 16:39:09 ID:???
>>33
$test++ → $test++;

何も表示されないときは、ソースの先頭に
ini_set('display_errors', true);
error_reporting(E_ALL);
と入れてみなはれ。
35nobodyさん:2005/07/12(火) 16:39:27 ID:???
>>33
何をしたいのかよく分からんが、簡単に無限ループに落ちそうだな。
3634:2005/07/12(火) 16:40:08 ID:???
抜けてた。こっちも。
print("test") → print("test");
3720:2005/07/12(火) 16:41:46 ID:???
くっ、、不覚をとったのだわ。。
3834:2005/07/12(火) 16:42:21 ID:???
ふんとだ。良く見ればループ条件がおかしいような。。。
39軟式PHP:2005/07/12(火) 17:09:35 ID:???
}足りないしぼろぼろだな。
4033:2005/07/12(火) 17:11:49 ID:???
出来ました。有難う御座いました。
4114:2005/07/12(火) 17:19:00 ID:ZD8v3rFB
>>14です。いまだに解決方法が見つかりません。

絵文字のみ判別して絵文字の場合はアスキーでそのまま送ればいいと思うのですが
頭がコンガラガッテ爆発しそうです。


??xE63E;F89F/63647
42nobodyさん:2005/07/12(火) 17:37:26 ID:???
>>41
よく分からないけど、絵文字を画像にして
絵文字の文字コードを画像に置換した方が医院じゃないか?
43nobodyさん:2005/07/12(火) 17:39:52 ID:???
>>41
ひとまずPHPから離れて。。。
その外字を含んだ手書きHTMLでは正常に表示できるのかな?
あと、他人があなたの掲示板を使用する場合、外字はどうするの?
使用予定の人、全員に外字ファイルを配布するつもりなのかな?
4414:2005/07/12(火) 18:01:35 ID:ZD8v3rFB
>>42>>43

お返事どうもありがとうございます。

社内でしか利用していない掲示板なので外字ファイルは全PCに導入済みです。
絵文字を画像変換ですがその場合表示は出来るのですが
コピペが出来なくなってしまうのが問題です。(コピペを多用する為)
←これは全員ピースしている絵文字が見えます。
ですがこの(ピース)を投稿するとサーバに?として送信されてしまいます。
この(ピース)を(ピース)のままサーバに送信するのはどのようにしたらいいのでしょうか?
4543:2005/07/12(火) 18:24:24 ID:???
>>44
絵文字を使う会社ってぷりてぃだね。
サーバーに送信されたデータをどのように確認したのか判らないんだけど。。。
以下でtest.htmlを呼び出して、テキストエリアに外字を入力後、Goをクリックすると
正常に表示できる?(Shift_Jisの部分は、あなたの環境に合わせてね)
こんなことは既に確認済みだぜぃ、ならスマソ。

--- test.html ---
<html><head><meta http-equiv="Content-Type" content="text/html; charset=Shift_Jis"></head>
<body>
<form action="test.php" method="POST">
<input type="text" name="data">
<input type="submit" value="Go">
</form>
</body></html>

--- test.php ---
<?php
echo <<<EOD
<html><head><meta http-equiv="Content-Type" content="text/html; charset=Shift_Jis"></head>
<body>
{$_POST['data']}
</body></html>
EOD
?>
46nobodyさん:2005/07/12(火) 18:24:53 ID:???
>>44
PHPで変換してるんじゃないの
スクリプト見ないことにはわからないよ
47nobodyさん:2005/07/12(火) 18:36:19 ID:???
ホントくだらない質問で恐縮なのですが、よくPHPで構築されているサイトでリンクをクリックするとxxxxx.php?xxxxx=xxxxxこんな風になるのってあるじゃないですか
例えばhttp://www.xxxxxxxxxx.com/から何かのリンクをクリックしたらhttp://www.xxxxxxxxxx.com/xxxxx.phpにはならずにhttp://www.xxxxxxxxxx.com/?xxxxx=xxxxxみたいに

PHPのことを勉強するに至った切欠もこれをやりたかったからなんだけど、これってセッションとか言う技術?で良いんでしょうか?
色々なPHP入門サイトとか読んでみたり本も読んでみたんだけど、ほとんどがショッピングカート云々とかで、いまいち詳しくどうやれば良いのか書いてなくて理解に苦しんでます

これって基本的にはどうゆう仕組みになっているんでしょうか?
48nobodyさん:2005/07/12(火) 18:43:14 ID:???
すいません質問です。
Win2000+IIS+PHP4.3.6の環境でmb_send_mailを送信したところ、
"テスト"と書いた本文、タイトルが共に"ッテッスット"と化けでいました。
詳細なヘッダーを表示したところ
------------------------------------
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------------------------------
となっていました。
追加ヘッダーはfromくらいしかつかっていなくてソースは以下な感じです。
------------------------------------
$mail = "[email protected]";
$from = "[email protected]";
$msg = "テスト";
$subject = "テスト";

ini_set ("sendmail_from", $from);
mb_send_mail ($mail, $subject, $msg, "From: $from");
------------------------------------
できたらmail()を使わないでJISで7bitで
送りたいのですがどこで設定するのか教えて頂けますか
49nobodyさん:2005/07/12(火) 18:50:37 ID:???
>>47
それはセッションではなくてget
http://www.xxxxxxxxxx.com/?xxxxx=xxxxx
これは
http://www.xxxxxxxxxx.com/にリンクしてついでに
xxxxx=xxxxx
↑名前 ↑値
で変数を渡しているのでリンク先で$_GET['xxxxx']とやると=の左側にある値がとれる
50nobodyさん:2005/07/12(火) 18:54:54 ID:???
>>47
index.phpファイルの中で、<a href="?hoge=moge">てな感じにすれば、そうなる。
ファイル名を省略すると、鯖が気を利かせて index.phpが呼び出される。

>>48
php.iniのmb_関係の設定。
php.iniを弄りたくない場合は、mb_language()で設定する。
無指定の場合は、uni 扱いになる。
51nobodyさん:2005/07/12(火) 19:24:47 ID:???
52nobodyさん:2005/07/12(火) 19:31:21 ID:???
質問させて下さい。

PHPでDBを使用した場合の排他制御というのはどうやってやるのでしょうか?

DB自体の排他制御ではなく、
例えば、掲示板などで自分の書いた文章を訂正したい場合、
パスワードなど入れてから編集すると思うのですが、
ほぼ同じタイミングで自分と管理人が該当文書の編集画面を開き、
どちらかが更新した後でもう片方が更新したら上書きされてしまいます。

ASP.NETではこういった部分はADO.NETが読み込んでから更新するまでに
他の人間がデータを更新したかどうか勝手に調べてくれます。

こういった処理をPHPで制御するにはどうやるのでしょうか?
53nobodyさん:2005/07/12(火) 19:38:56 ID:???
排他処理フラグを作ってDBにalterしておけば?
54nobodyさん:2005/07/12(火) 19:45:05 ID:???
>>50
php.iniでmbstring.languageを = Japaneseの箇所を有効にしましたが変化無しだったので
mb_language(ja)でとしたら(゚д゚)ウマーでした。
ありがとう。
55nobodyさん:2005/07/12(火) 19:45:22 ID:???
>>52
ADO.NETが勝手にやってくれることをおまいさんが
実装すればいいだけのこと。色々方法はあるけど、一例。
 1) データベースに更新毎に値が変わるカラムを用意
 2) 編集開始時にこのカラムの値を読み出して取り置き
 3) 保存時にこのカラムの値を再読み出し
 4) 2) と 3) がアンマッチなら他のユーザーが更新しているんでエラー等を表示
更新毎に値が変わるカラムをどうするか、どう更新するか(自動 or 手動)は
自分で考えれ。判らんかったらまたおいで。
5652:2005/07/12(火) 19:59:57 ID:???
>>55
1つ考えていたのは、レコードに更新日時を持つようにして、
該当レコードを編集する為に表示させたとき、この更新日付を取得しておいて、
更新時に比較するというもの。(>>55が書いてる事と同じだと思います)

しかし、これだと複数人がほぼ同じタイミングで更新しようとした場合、
トランザクションを掛けても、データ更新は出来ない(待たされる)が
(更新前の)データを参照する事が可能なので、
更新日時の比較時にはマッチしてしまい、誰かが更新終わってロック解除されて
自分のデータを更新しに行ったときには既に更新日付が変わってるという事が考えられます。
5755:2005/07/12(火) 20:15:36 ID:???
>>56
そこまで理解できているんなら最初からそう書いたら?
情報を小出しにして互いに何の得があるんだ?

UPDATE 。。。WHERE カラム1 = 更新キー AND カラム2 = 取り置きした更新日時

を実行した後、更新したレコード数を得て(mysqlならmysql_affected_rows関数など)
 1であれば正常
 0であれば他ユーザーが更新している
でいいぢゃないの。
5855:2005/07/12(火) 20:30:20 ID:???
>>57
そうか、WHEREの条件の中で比較すればいいのか。
盲点でした・・・
59nobodyさん:2005/07/12(火) 21:31:01 ID:dBnqhLiG
gmailがrssのフィードを吐き出してるそうですが、こいつをphpで取得して表示させちゃうって不可能でしょうか?
https://ユーザ名:パスワード@gmail.google.com/gmail/feed/atom
でrssリーダーでは読めるのですが。
60nobodyさん:2005/07/12(火) 22:00:30 ID:???
>>44
今FOMAから見てるけどになってるよ。
K〇NTのから盗んでPHP化すればいいと思うよ。
漏れは挫折したが。
61nobodyさん:2005/07/12(火) 22:19:46 ID:8KfiQ0Na
PHPしかつかえないんだけどさ・・やっぱりJSPにも手をだすべきかな
将来を考えてさ・・・お前らどう思う?
62nobodyさん:2005/07/12(火) 22:26:14 ID:???
>>61
職業プログラマか、そうでないかにも拠ると思うが。
職業プログラマなら、自分の所属する会社の動向や
その会社を見限った時に、自分の売りをどこに持つかにも拠る。
63nobodyさん:2005/07/12(火) 22:28:26 ID:83Vu/kYo
>>59
つ[xml_parse_into_struct]
64nobodyさん:2005/07/12(火) 23:47:28 ID:5RU+KNuo
【ありがとう】橋本真也 追悼オフ【破壊王】
http://off3.2ch.net/test/read.cgi/offevent/1121074170/
みんなで破壊王を見送りましょう。
葬儀日程
通夜:7月15日(金)18時
葬儀:7月16日(土)12時30分
場所:一休庵久保山式場 神奈川県横浜市西区元久保町3-13
最寄駅:京浜急行線 黄金町 駐車場:15台(全館貸切の場合、30台)

横浜駅西口から久保山斎場まではタクシーでは
所要時間10分〜15分、料金は1,220円〜1,380円です。

1,220円は混雑を加味しない料金です。
3〜5分程度の混雑を考えた場合、1,380円位になると思います。
(実際は1分55秒で80円加算です)
バスは
京急黄金町駅から32系統久保山経由保土ヶ谷車庫行き →久保山霊堂前
横浜駅西口からは4番乗り場68系統久保山経由滝頭行き→久保山で下車してください。
なお、久保山バス停からはかなりの上り坂です。
65nobodyさん:2005/07/13(水) 00:11:21 ID:XABi9hF+
$data = file("http://www.hoge.com/hoge.html");
って感じでほかの鯖にある情報を取得して、ereg_replaceとかで整形してそれを自分のサイトのphpにinckudeして表示させるというスクリプトを作りました。
ローカルの鯖ではうまく行くんですが、自分のサイトを置いてる鯖ではこんなエラーが出ます。

Warning: file(): URL file-access is disabled in the server configuration in /home/xxx.users/hoge/hoge.php on line x

Warning: file(http://www.hoge.com/hoge.html): failed to open stream: no suitable wrapper could be found in /home/xxx.users/hoge/hoge.php on line x

これは鯖の設定でこういう事は不可能ということですか?
ほかのサーバーのサイトのデータを取得して好きなように整形して使うのにほかに方法はありますか?
66nobodyさん:2005/07/13(水) 01:09:11 ID:???
fsockopen()
67nobodyさん:2005/07/13(水) 01:15:35 ID:???
>>65
ある。sockopen、pear HTTP_Client
68nobodyさん:2005/07/13(水) 01:19:45 ID:???
>>65
ティップ: fopen wrappers が有効の場合、
この関数のファイル名として URL を使用することが出来ます。
ファイル名の指定方法に関する詳細は fopen()、
サポートされるURLプロトコルの種類 については、(例えば)付録L を参照してください。
69nobodyさん:2005/07/13(水) 01:56:35 ID:???
>>65
URL先の内容を精査しないで使うバカ避けに、サーバをそういう設定にしてある。
> これは鯖の設定でこういう事は不可能ということですか?
そういうこと。

ソケット関数でHTTPでGETするとか、それの上に被せたPEARの
ネットワーク関連のライブラリを使うとか、誰かの作った
URL file-accessが可能なライブラリ利用するとか、cURLを使うとか、色々。
70nobodyさん:2005/07/13(水) 15:30:11 ID:mGL09CH7
GD関連で教えてください。

imagejpegを使ってJPEG画像を作成してるのですが
品質を100で作成しているにもかかわらず
色の境に中間色が使われぼやけてしまいます。

これを回避することはできないでしょうか?
それともJPEGの仕様上仕方がないのでしょうか?

71nobodyさん:2005/07/13(水) 15:36:19 ID:???
>>70
>JPEGの仕様上仕方がないのでしょうか?
そうだと思う
画像の作成なら普通gifかpng使う(画像劣化なし)
jpegはjpeg画像の加工ぐらいしか使わん
7270:2005/07/13(水) 15:42:23 ID:???
>>71
さっそくのレス、ありがとうございます

実は生成した画像をFlashで読み込むのと
256色を超える可能性があったのでJPEGにしてたのですが
劣化がひどいので
Flash読み込みをあきらめてPNGにすることも
試したうえで検討してみようと思います。
ありがとうございましたー
73nobodyさん:2005/07/13(水) 15:48:23 ID:???
断片的な情報しかないんだけどimagecreatetruecolorは使ってるかな?
74nobodyさん:2005/07/13(水) 16:04:21 ID:???
ちょっとスレ違いだとは思いますが、正規表現で全角かなカナ英数字ってどうやれば良いんでしょうか?
75nobodyさん:2005/07/13(水) 16:13:48 ID:???
>>73
true colorにしてもぼやけるものはぼやける。
jpegってのは基本的に圧縮技術だから。

でもjpegだと(quality高くしとけば)遠くから見たときちゃんと見える。
特にqualityを100とかにしとけば逆にキレイに見えることすらある。
jpegってそんな存在。
もちろん汚くなることもあるけど。

ぱっと見で気にならない程度ならjpegにしてサイズ減らすのもありかと。
7670:2005/07/13(水) 16:14:54 ID:???
>>73
使ってますー
最初これでもはまりました

PNG出力試してみました。
全く劣化なしできれいでした。
しかも品質100のJPEGに比べて
ファイルサイズが1/5くらいになりました
77nobodyさん:2005/07/13(水) 23:34:01 ID:???
cronを使って、メールを送信するphpスクリプトを定期実行しています。
レンタル鯖(共有または専用)で上記を行う際に、
万が一cronの実行時間に鯖が落ちてたりしてcronが実行されなかった場合の
カバー(鯖が正常に戻ったときに未実行のcronを実行する)は、どうすればよいでしょうか。

僕が考えたのは、スクリプトが実行されたかどうかのフラグをDBに記録しておいて、
メール送信スクリプトとは別に、「cron実行されたかどうか判別スクリプト」を
1日に何回かcronで走らせる・・・という方法です。
しかしこれでは、「判別スクリプト」を走らせるcron自体が不実行だった場合
どうしようもありません。何かもっとスマートなやり方ってありますでしょうか。
78nobodyさん:2005/07/13(水) 23:39:14 ID:???
>>77
大体それで良いと思うけど、
メール送信の実行時にフラグ記録及びフラグのログを見て実行されなかった物があるか調べてそれも同時に実行すれば良いんじゃないの?
分かりにくくてスマソ。つまり、メール送信のスクリプトと実行確認のスクリプトを分けずに、同時にその二つの処理を行えば漏れは無くなるでしょってこと。
79nobodyさん:2005/07/13(水) 23:44:56 ID:???
>>78
あ、そうですね。二つをまとめたほうがいいですね。

それと、phpの問題でなくサーバーの問題になるかと思いますが、
障害などで未実行になったcronジョブを、サーバー再起動後に
検出して再実行する…ってことは技術的に可能なんでしょうか??
80nobodyさん:2005/07/13(水) 23:47:55 ID:???
>>77
漏れだったらこんな処理にするかな
・送信するメールをファイルに保存するスクリプト
 (保存時はファイル名が重ならない様に日時等にする)
・保存されたファイルをメール送信、送信後は削除するスクリプト
の2つをcronで走らせる
81nobodyさん:2005/07/13(水) 23:56:15 ID:???
そんなに不安定な鯖は窓から投げ捨てろ
82nobodyさん:2005/07/14(木) 00:20:19 ID:???
すみません、質問させていただきます
Active perlのppmを利用して新しいモジュールをインストールしようとしたのですが
ppm
install win32-api
====================
Install 'io-zlib' version 1.01 in ActivePerl 5.8.2.808.
====================
====================
Install 'io-zlib' version 1.01 in ActivePerl 5.8.2.808.
====================
Error: error downloading 'http://chai.activestate.com/PPMPackages/5.8-windows/MS
Win32-x86-multi-thread-5.8/IO-Zlib-1.01.tar.gz': 500 Can't connect to chai.activ
estate.com:80 (Bad hostname 'chai.activestate.com')
と表示されインストールができないのですが原因など教えていただけないでしょうか?
バージョンはActivePerl-5.8.2.808-MSWin32-x86.msiです
83nobodyさん:2005/07/14(木) 00:26:28 ID:???
すれ違い
84nobodyさん:2005/07/14(木) 00:40:44 ID:???
>>79
なんかcronに代わる、似たような機能があったような気がしる。
85nobodyさん:2005/07/14(木) 05:01:36 ID:???
PHPで出力するHTMLページをフレーム分割することって出来る??
どのようにソース書けばいいんだべ・・・。
86nobodyさん:2005/07/14(木) 06:28:11 ID:???
>>85
<frameset>

茨城県民、Web製作版へGo!
87nobodyさん:2005/07/14(木) 09:17:53 ID:???
ここは頼りになるなぁ。
だれか自宅サーバたててる椰子、PHPでクールなまとめサイトを
作るナリ。漏れムリ。
88nobodyさん:2005/07/14(木) 10:23:44 ID:???
SourceForgeみたいにダウンロードページに行くと
自動的にダウンロードが始まるスクリプトってどういう仕組みなんですか?
89nobodyさん:2005/07/14(木) 10:30:30 ID:???
AND検索とかOR検索を自前でやるのって、コツコツコーディングしないとだめですか?
あるファイルを行ごとにANDOR検索をかけたいんですが、

検索単語が"ほげ はげ"の時にはほげとはげを含む行を抽出して、
"ほげ or はげ"の時にはどちらかを含む行を取り出したいのですが・・

googleのnotとか、ほげとはげは含むけどハゲは含まないみたいな高機能な検索を
するライブラリとかってあるようで無いですよね。

90nobodyさん:2005/07/14(木) 10:54:18 ID:???
自分で料理せずコンビニ総菜にケチを付けるようなまねはよしてください
91nobodyさん:2005/07/14(木) 11:08:25 ID:???
>>89
namazu
92nobodyさん:2005/07/14(木) 11:14:44 ID:???
PHP4だと__CLASS__って使えない?
PearからMail_Mime落としてきて試してるんだが、
どうも__CLASS__のせいで上手く動かない気がする。
93nobodyさん:2005/07/14(木) 12:21:27 ID:???
>>92
AA略 全部マニュアルに書いて…

http://jp.php.net/manual/ja/language.constants.predefined.php
9492:2005/07/14(木) 13:19:02 ID:???
>>93
うっスマン。
__CLASS__は4.3からか。
うちのレンサバPHP4.1.2だったよ・・・
こういう場合はPEARは使えないって事だろうか。
9589:2005/07/14(木) 13:24:02 ID:???
>>91

Namazuって全文検索じゃないですか。
配列の中の各要素にたいしてandとかorとかnotするにはどうするのがいいかなと
思ってるんです。
96nobodyさん:2005/07/14(木) 13:44:37 ID:???
>>95

>>89のどこをどう読めば配列の中を検索したいって読み取れるんだ?
9789:2005/07/14(木) 14:47:16 ID:???
>>96
ごめんなさい、言葉が足りませんでした。
あるファイルを『行ごと』に、というわけで、
ファイルを読み込んで1行ごとに配列に入れて、それに対してANDOR検索を・・
ということだったのですが、そこまで読み取れるはずが無いですね。

とりあえずスペースで区切ってANDだけ、orで区切ってORだけというのは出来たんですけど、
ANDとORを組み合わせるのとそれにさらにNOTを組み込むのが難しいです。
9885:2005/07/14(木) 16:38:23 ID:???
自己解決しますた。
特別なこと考えず、普通にフレームつくるときのHTMLを
echoで出せばいいだけだな。深く考えすぎた。
99軟式PHP:2005/07/14(木) 16:53:23 ID:???
89は文句ばかりたれる雑魚だからスルーしときなされ。
100nobodyさん:2005/07/14(木) 18:25:06 ID:???
配列に格納した文字列を全てforeachで処理したいのですが、
その都度配列のキーを取得することは可能でしょうか?
たとえば
$fruit = array("apple" => "りんご", "banana" => "バナナ");
という配列を元に、
「apple」と「りんご」、「banana」と「バナナ」をそれぞれセットで取得したいのです。

array_searchを使ってもできそうなのですが、値に重複があると先にあるキーしか返してくれないようです。
何かいい方法はないものでしょうか?
101100:2005/07/14(木) 18:28:39 ID:???
ああっ。
foreach($fruit as $key => $value)と書けばいいのか。
解決しますた。
102nobodyさん:2005/07/14(木) 18:33:18 ID:???
UTF-8で日記スクリプト作ってる。
んで、フォームから打ち込んだ値をたらい回しにしてたら、いつの間にか「"」の前にエスケープがくっついてた。
なんでだ?
103nobodyさん:2005/07/14(木) 18:45:14 ID:???
>>102
何かかわいそうだから
誰かエスパーな椰子たすけてやれよ
104nobodyさん:2005/07/14(木) 18:50:04 ID:???
>>102
( ^ ^ )/~
105nobodyさん:2005/07/14(木) 20:02:11 ID:???
>>88

自動的にダウンロード始まるページのソースを、
上からじっと読むと見つかります。
106nobodyさん:2005/07/14(木) 21:00:05 ID:???
PHPのmb_send_mailで最大どのくらいまでのメールアドレスを
処理出来るのでしょうか?
例えば、BCCとして"abc@**.jp,[email protected]・・・"とメールアドレス
続けて送信するとします。
サーバの内容にもよるかと思いますが、ご存じな範囲で
結構ですので、教えていただければと思います。
107nobodyさん:2005/07/14(木) 22:38:43 ID:???
>>102
magic quote
108nobodyさん:2005/07/14(木) 22:43:44 ID:???
ASPのRequest.ServerVariables("LOGON_USER")を
PHPに移植する場合、どうすればいいか教えてください。

$objWsh = new COM("WScript.Network");
$objWsh->UserName;
$objWsh->UserDomain;
とWSHで取得しようとしてもサーバ側の情報になっちゃって上手く再現できなかった。

$objWmi = new COM("WinMgmts://{" . getenv("REMOTE_ADDR") . "}/root/cimv2");
WMIサービスで取得しようと思ったが、セキュリティ上無理だった。
109nobodyさん:2005/07/14(木) 22:51:00 ID:???
>>108
$_SERVER['LOGON_USER']
110nobodyさん:2005/07/14(木) 23:00:30 ID:???
>>108
IISからApacheにも移行してないか?
111nobodyさん:2005/07/14(木) 23:21:01 ID:???
>>106
PHP-USERのメーリングリストのログにあるさがせ。
112nobodyさん:2005/07/14(木) 23:33:09 ID:???
MySQLに日付の欄(型はdate)があるのですが、
select文で日付をwhere条件に含めるに当たって、
一桁の数値には頭に0をつけてからSQLを発行しないといけないのでしょうか?
日付がMySQLでは2005-07-14となっているレコードを
select * from tbl_hoge where date='2005-7-14'
でヒットするのでしょうか?
113nobodyさん:2005/07/14(木) 23:44:23 ID:???
ヒアドキュメント内だと、defineで定義した定数は使えないの?
114nobodyさん:2005/07/15(金) 00:27:25 ID:???
>>112
マヌアル嫁
http://dev.mysql.com/doc/mysql/ja/datetime.html
自分で試してみれ。
115112:2005/07/15(金) 01:01:05 ID:???
ありがとうございます。解決しました。>>114
116nobodyさん:2005/07/15(金) 01:05:27 ID:PzceRiM6
ユーザー定義関数を作るとき、引数の初期値に定義済みの関数を利用して設定することはできないのでしょうか?
function hoge ($a = date("Y-m-d")) {
echo $a;
}
と試したところエラーが出ます。
expecting ")"というエラーなのですが、括弧が足らないのでしょうか?
117nobodyさん:2005/07/15(金) 01:17:33 ID:???
>>116
function hoge ($a = NULL){
if($a==NULL) $a = date("Y-m-d");
echo $a;
}
とかで
118116:2005/07/15(金) 01:22:25 ID:???
どうやらできないようですね。
どうもありがとうございました。
119nobodyさん:2005/07/15(金) 01:39:38 ID:???
ワロス
120nobodyさん:2005/07/15(金) 03:17:59 ID:???
xml扱うのにexpatとDOMってどっちがお勧めですか?
121nobodyさん:2005/07/15(金) 06:54:27 ID:???
すみません、header ("Location: admin.php") という感じで飛ばす処理を
しているのですが、以前使っていたレン鯖では問題なかったのに、
違う鯖にしたらLocationで飛べなくなってしまいました。

鯖(Apache?)の設定で、Locationが使えないことってあるのでしょうか??
122nobodyさん:2005/07/15(金) 07:00:05 ID:???
>>113
定数と普通の文字列と区別できないだろ
123nobodyさん:2005/07/15(金) 07:00:30 ID:???
>>121
とりあえず、絶対URIにしてみろ。話はそれからだ。
124nobodyさん:2005/07/15(金) 07:01:45 ID:???
>>121
ある
125121:2005/07/15(金) 07:14:29 ID:???
補足ですが、Location先を相対パスにしたり絶対パスにしたり絶対URIにしたり
してみましたが、全部ダメでした。
echo "テスト";
header ("Location: admin.php");
exit;
で、「テスト」が出力された画面のままで止まり、その後のジャンプがありません。
つまり、Location先が見つからないのではなく、
あくまでもLocation命令そのものが実行されていない感じです。
126121:2005/07/15(金) 07:15:49 ID:???
>>124
すみません、どこの設定をいじればLocationを使えるようになりますでしょうか。
127nobodyさん:2005/07/15(金) 07:15:57 ID:???
>>121
そんなことロケーションヘッダが来てるかどうか見ればわかるじゃん
つか相対URLはRFC的にアウトなんじゃないの? 相手が携帯だと特に
128nobodyさん:2005/07/15(金) 07:20:38 ID:???
                   _ _     .'  , ..   ..   .'     ∧_∧
          ∧  _ - ― = ̄  ̄`:, .∴ '      ・,‘∴  , .   (    ) ←>>125
         , -'' ̄    __――=', ・,‘ r⌒>  _/ /
        /   -―  ̄ ̄   ̄"'" .   ’ | y'⌒  ⌒i
       /   ノ                 |  /  ノ |
      /  , イ )                 , ー'  /´ヾ_ノ
      /   _, \               / ,  ノ
      |  / \  `、            / / /
      j  /  ヽ  |           / / ,'
    / ノ   {  |          /  /|  |
   / /     | (_         !、_/ /   〉
  `、_〉      ー‐‐`            |_/
129nobodyさん:2005/07/15(金) 07:23:43 ID:???
>>121
以前の鯖と今の鯖で、スクリプトのソースは全く同じなんでしょ?
それで使えなくなったってことは、Apache側の問題なんじゃないの?
漏れはサーバの知識無いから詳しくはわからないけど。
130121:2005/07/15(金) 07:30:06 ID:???
>>128
あ・・・、殴られて気が付きましたが、
headerの前にechoで出力しちゃマズイですよね・・・ガクガクブルブル。
echo消したら直りました。ああ、基本的ミスでした。

でも待てよ…、逆に言えば、なぜ前の鯖ではheaderの前にechoがあったのに
正常に動いてたんだろう?? いま再度、前の鯖で試してみましたが、
やはりechoありでも問題なく動きます。なぜ???
・・・・と思ってphpinfoやってみたら、output_bufferingがオンになってますた・・・

ご迷惑かけました逝ってきます欝だ氏のう
131nobodyさん:2005/07/15(金) 07:36:54 ID:???
14.30 Location
The field value consists of a single absolute URI.

Location = "Location" ":" absoluteURI
132nobodyさん:2005/07/15(金) 07:44:29 ID:???
鯖でテストするなよゴミ屑
133121:2005/07/15(金) 07:50:13 ID:???
>>132
すいません、一応専鯖なので誰にも迷惑はかからないかと・・・。
134nobodyさん:2005/07/15(金) 07:51:45 ID:???
無駄。
135nobodyさん:2005/07/15(金) 07:57:12 ID:???
>>120
XMLと操作次第。
まあDOMで嫁。

>>131
初心者はこれ知らないケース多いね。
テストに出るよー。
136nobodyさん:2005/07/15(金) 08:03:08 ID:???
パースがCで完結するから小規模なXMLデータはDOMのほうが良いと聞く
137nobodyさん:2005/07/15(金) 08:05:10 ID:???
厨房>>121がてっきり共用鯖を使っているものだと思い込んで
玄人ぶって偉そうに忠告をしたつもりの>>132が、
「専鯖」という強力な返り討ちワードを食らった挙句に
苦し紛れに「無駄」と言い捨て逃亡。

これを「諸行無常」と呼ぶ。
138nobodyさん:2005/07/15(金) 08:09:06 ID:???
なるほど。共有鯖だと思われてるという認識だったのね
139nobodyさん:2005/07/15(金) 08:13:37 ID:???
>>132みたいな恥ずかしいクズ野郎はこのスレに不要だなww
coqスレ辺りがお似合いだ。
140nobodyさん:2005/07/15(金) 08:14:35 ID:???
いや、墓穴掘ってるぞ121
専鯖ってのが真実ならテスト鯖じゃないわけで
141nobodyさん:2005/07/15(金) 08:17:23 ID:???
前の鯖がどうこうとか書いてたから、専鯖でもまだ実稼動してないんじゃねーの?
142nobodyさん:2005/07/15(金) 08:17:39 ID:???
error_reporting = 0 or エラーログ見てないということは可能性高いと見たね
ローカルでデバッグするのに比べて無駄があるとかそんな話じゃないんじゃないのw>>134
143nobodyさん:2005/07/15(金) 08:22:39 ID:???
>>137
別に逃亡してないんですけど。
手元でやってたら0.1秒で気づくミスだろハゲ男。
ていうかメル欄全角かよ。俺ハズカシス。
144nobodyさん:2005/07/15(金) 08:24:20 ID:???
>>141
リダイレクトが効かないと気づいてよかったな
145nobodyさん:2005/07/15(金) 08:24:55 ID:???
なんとかして自分の貧乏をごまかしたい>>137
146nobodyさん:2005/07/15(金) 08:29:07 ID:???
スルーされて何とか絡みたい>>127
147nobodyさん:2005/07/15(金) 11:21:44 ID:???
PHPで、ディレクトリにある最新のtxtファイルを取得して
それを違う名前.txtにリネームして同じディレクトリに作成するって
可能でしょうか??
148nobodyさん:2005/07/15(金) 12:02:51 ID:???
>>147 可能
149nobodyさん:2005/07/15(金) 12:12:18 ID:???
>>148
ありがとうございます
どこか参考になるページとかないでしょうか?
ぐぐってはみたんですがわからなくて・・・
150nobodyさん:2005/07/15(金) 12:19:59 ID:???
>ディレクトリにある最新のtxtファイルを取得して
>それを違う名前.txtにリネームして
>同じディレクトリに作成するって
一気にやろうとしないで、マニュアル見ながら上記を一行ずつ解決していけばいいよ。
151nobodyさん:2005/07/15(金) 12:20:37 ID:???
>>149
やりたい事がいまいち分かんないけど
opendir、rename、stat辺りを使えばいけると思うよ
とりあえずマニュアルとにらめっこすることをお勧めします

http://www.php.net/manual/ja/function.opendir.php
http://www.php.net/manual/ja/function.rename.php
http://www.php.net/manual/ja/function.stat.php
152nobodyさん:2005/07/15(金) 13:04:05 ID:???
わかりましたマニュアル見て落ち着いてやってみます
どうもありがとうございます
153nobodyさん:2005/07/15(金) 13:07:39 ID:???
>>146
遅レスだがワラタw
154nobodyさん:2005/07/15(金) 13:38:55 ID:???
超初心者です。
CSVを読み込んで、テーブルで出力しようと思ってます。

CSV内容
"1","十","aaa"
"2","あ","bbb"
"3","表","ccc"

で、読み込んでるとこのソースが
$fp = fopen("hoge.txt","r");
while($row = fgetcsv($fp,1024))
{
echo "<tr>\n";
foreach($row as $column)
{
echo "<td>".$column."</td>\n";
}
echo "</tr>\n";
}
fclose($fp);
です。

EUCならこのままで問題ないのですが、
出力結果をShift_JISで出力したいんです。
ですが、"表"とか"十"が入ってるデータがあると
そこがうまく取り込めないらしくテーブルが壊れます。
うまいこと取り込む方法ってありますか?
155nobodyさん:2005/07/15(金) 14:17:35 ID:???
>>154
SJISで出力したいなら、出力前にEUC-JP→SJISの変換を掛ければ良いだけだが。
ファイルの入出力も、ブラウザへも全てSJISでやりたいなら、それぞれの
入出力に変換を掛けるか、内部コードにSJISが利用できるようにコンパイルされた
PHPを使って、スクリプトのコードも全部SJISに統一すれば簡単。
156nobodyさん:2005/07/15(金) 14:18:03 ID:???
>>154
EUCで全部やって、出力のみをsjisにするとか。
0x5cが下位バイトに来る文字は決まってるから、それに注意してデータを作成するとか(\をつける)。
157154:2005/07/15(金) 15:10:23 ID:???
>>156
データは外部から抽出されたものをそのまま使いますし
データに\を付けていくのは大変なのでNGです。

>>155
既存のシステムがなかなか停止できないので、
PHPのコンパイルは避けたいです。
mb_convert_encoding関数を使えばできそうなので
やってみようと思います。ありがとうございました。
158nobodyさん:2005/07/15(金) 16:54:44 ID:Fg/gKXLa
SPBのPHP5徹底攻略に載ってるソースについて質問したいのですが、
4行程度のソースなんですが、ここに書いたらまずいですかね?
159nobodyさん:2005/07/15(金) 17:00:33 ID:???
どうぞ
160158:2005/07/15(金) 17:09:27 ID:???
VODAFONEの絵文字をimgにおきかえるスクリプトなんですが
絵文字が2個以上並んでいると最初の一個しか変換されません。
対処ほうありますでしょうか?

$str = "\x1b\$G\x21\x0fabc"; // 絵文字入り文字列
$regex = '/\x1b\$([E-G])([\x21-\x7a])+\x0f/e'; // 絵文字にマッチする正規表現
echo preg_replace($regex, 'sprintf("<img src=\"%02X%02X.gif\">",
ord("$1"),ord("$2"))', $str); // 絵文字をイメージタグに変換して出力
161軟式PHP:2005/07/15(金) 17:23:29 ID:???
VODAFONEは同じ絵文字を並べると結合するよ。
$strWrk = 絵文字が入った文章;
do{
$tmp = $strWrk;
$strWrk = preg_replace("/(\x1b[\x24][\x45-\x47\x4F-\x51])([\x21-\x7A])([\x21-\x7A]+)([\xF])/im","$1$2$4$1$3$4",$strWrk);
}while( $strWrk != $tmp );
俺はとりあえずこんな感じにしてるけど。
162nobodyさん:2005/07/15(金) 18:51:21 ID:???
download.php という対象ファイルをダウンロードさせるためのphpプログラム

$filename=basename($_GET['filepath']);
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"$filename\"");
readfile($filepath);

このようなものを作ったのですが、
filepathにrawurldecodeをかければ日本語ファイル名でもダウンロードできるのですが、
ダウンロード時のファイル名が文字化けしてしまいます。

これを解消するにはどのようにすればいいのでしょうか?

これを機会にheader関数もよく勉強したいのでお願いします。
163158:2005/07/15(金) 21:01:03 ID:???
>>161
理解しようとしてるのですが、なかなかできません。。
$strWrkにvodafone絵文字が入った文章を入れて>>161を通すと絵文字の部分が何かに置き換えられてる
という使い方でよろしいのでしょうか?試してみたのですが echo $strWrk としたところ何も置き換えられないででてくるのですが
使い方間違っていますでしょうか?せっかく書いていただいたので試したいのでよろしくお願いします。
164軟式PHP:2005/07/15(金) 21:14:31 ID:???
>>163
161のコードを通すと、連結した絵文字を分離するから、
それに対して、>>160のコードを通したらイけると思うけど。
あと
>>\x1b\$G\x21\x0fabc
は1個の絵文字だから意味ないよ。
165nobodyさん:2005/07/15(金) 21:39:08 ID:???
取ってきたデータが、"1"とか"2"だったら、"01"とか"02"にしたい時は
どうしたらよい??
166nobodyさん:2005/07/15(金) 21:40:50 ID:???
167nobodyさん:2005/07/15(金) 21:45:48 ID:???
stripslashes()したいんだけど値段表記などの\マーク(バックスラッシュ)だけは表示したいという時は
正規表現にかけるしかないのでしょうか?
168nobodyさん:2005/07/15(金) 21:49:44 ID:???
同じnameのチェックボックスに、複数チェックを入れると、
PHPだと最後のチェックボックスの値しか取らないみたいなんだけど…

ASPなら自動でカンマ区切り、
Perlなら区切るモジュールで、
PHPは?
169nobodyさん:2005/07/15(金) 21:55:15 ID:???
×
<input type="checkbox" name="test" value="test1">
<input type="checkbox" name="test" value="test2">
<input type="checkbox" name="test" value="test3">


<input type="checkbox" name="test[]" value="test1">
<input type="checkbox" name="test[]" value="test2">
<input type="checkbox" name="test[]" value="test3">
170nobodyさん:2005/07/15(金) 22:00:21 ID:???
>>169
配列にするっつーことですかい?
171nobodyさん:2005/07/15(金) 22:04:07 ID:???
>>170
ttp://www.stackasterisk.jp/tech/php/php02_06.jsp
このあたりを見てください
172nobodyさん:2005/07/16(土) 02:36:41 ID:???
implodeってムチャクチャ便利じゃん、ぽまえら知ってた?
173nobodyさん:2005/07/16(土) 02:53:22 ID:???
知らないのはお前だけです。
174nobodyさん:2005/07/16(土) 06:55:00 ID:6rljT00v
swfを生成するmingを使いたいのですが
yumでインストールはできないですよね?

makeしてPHPもコンパイルして構築しないとだめですか?
175nobodyさん:2005/07/16(土) 09:45:29 ID:???
>>167
stripslashesが必要な文字列なら\は\\になってるはずだから問題ない
176158:2005/07/16(土) 11:16:40 ID:???
>>161
すぐ結果報告できなくてすみません。
V603SHから絵文字を入力して試してみました。

$strWrk = $_POST['body']; //$_POST['body'] = (男の子のマーク)(女の子のマーク)
do{
$tmp = $strWrk;
$strWrk = preg_replace("/(\x1b[\x24][\x45-\x47\x4F-\x51])([\x21-\x7A])([\x21-\x7A]+)([\xF])/im","$1$2$4$1$3$4",$strWrk);
}while( $strWrk != $tmp );


$str = $strWrk;// 絵文字入り文字列
$regex = '/\x1b\$([E-G])([\x21-\x7a])+\x0f/e'; // 絵文字にマッチする正規表現
$str = preg_replace($regex, 'sprintf("<img src=\'%02X%02X.gif\'>",ord("$1"),ord("$2"))', $str); // 絵文字をイメージタグに変換して出力
echo $str;

結果↓
<img src='4721.gif'><img src='475C.gif'><img src='4722.gif'>
男の子と女の子の絵文字を入れると間に違うのが入ってしまうのですが、このほかには何個ならべても
おかしな点はありませんでした。完全ではありませんが私としては満足できるレベルになりました。
ありがとうございました。

どこ調べてもDOCOMOの絵文字についてはたくさん書いてあるのですが、VODAFONEの絵文字については
ネット上でどのように書かれてるかなどみつけられませんでした。絵文字について書いてる本がもう一冊あったので買ってみます。
177nobodyさん:2005/07/16(土) 11:19:08 ID:???
細菌描画の表示が遅く感じる

<html>
<body>

<?php ほにゃらら ほにゃらら ?>

</body>
</html>

こんな感じでhtmlのなかにスクリプト書きまくってるからかな。
DBの接続とかしてるし。

ob_startとか使ったほうがいいのでしょうか。
178nobodyさん:2005/07/16(土) 12:29:36 ID:???
APCを使えば倍以上早くなるっぽい
ttp://acapulco.dyndns.org/mod_uploader/#performance
179nobodyさん:2005/07/16(土) 16:26:26 ID:6tLNOCU8
180nobodyさん:2005/07/16(土) 16:30:44 ID:???
スマソ、誤爆った
181nobodyさん:2005/07/16(土) 18:18:31 ID:mgfMVhVU
色んな場所で使うモノを、
関数かサブルーチンにしようとおもってるんだけど
どやってするの?

<本プログラム>
&GetDate;

<呼び出しプログラム>
sub GetDate{
$date = date('Y/m/d H:i:s', time());
}

とやってみたら、エラーが出たよ。
182nobodyさん:2005/07/16(土) 18:18:36 ID:wfLNoi6t
ホームページのヒット率の上げ方教えてください。Yahoo登録以外で。
183nobodyさん:2005/07/16(土) 18:22:01 ID:???
認証ページをsslにしてみたんだけど、セッションが切れてしまいます。
どうやったら切れませんか?
184nobodyさん:2005/07/16(土) 18:27:08 ID:???
PHPとMySQLでデータベースを作っているのですが、入門書には、
SQL文を発行した際に、例えば
 $sql = "select * from tbl_hoge";
 $rst = mysql_query($sql);
 if(!$rst) print "だめぽ";
といったカンジでMySQLのエラーが出た際にエラーメッセージを表示させていました。
ところがPHPのマニュアルのmysql_queryの部分を見ると
$rst = mysql_query($sql) or die("だめぽ");
というような例文を挙げています。
これらは同じものなのでしょうか?

また、クエリーの結果falseが返ってくるケースとしては
クエリーが文法的に間違っているので撥ねられた場合のみ考えておけばいいのでしょうか?
例えばクエリーに問題がなくともサーバーが不調でMySQLがうまく機能していないとかにも
falseが返ってくることはありえるのでしょうか?
185nobodyさん:2005/07/16(土) 18:49:05 ID:???
>>182
落語を見に行った後、SEOでぐぐれ。
186nobodyさん:2005/07/16(土) 18:50:52 ID:???
>>181
つPerl
187nobodyさん:2005/07/16(土) 19:02:16 ID:???
>>184
orはif文などに出てくるorと同じ
左がfalseなら右を実行するので、
mysql_queryがfalseならdieを実行する。
188181:2005/07/16(土) 19:24:56 ID:mgfMVhVU
>>187

Perlでしか出来ないってこと?
PHPでやりたいのです…。

Callしなくても、includeするだけで変数使えるとか!?
でも、呼び出しプログラムの方のエラーが出るの。
189nobodyさん:2005/07/16(土) 19:31:11 ID:???
>>188
$date = _GetDate();
function _GetDate() { return date('Y/m/d H:i:s'); }

まず調べれ
190nobodyさん:2005/07/16(土) 19:39:24 ID:???
>>188
お前が書いてるのはほぼPerlだってこと。
↓くらい読んでから質問しようね。
ttp://www.php.net/manual/ja/language.functions.php
191181:2005/07/16(土) 20:11:53 ID:???
<本プログラム>
$date = GetDate();

<呼び出しプログラム>
function GetDate(){
$date = date('Y/m/d H:i:s', time());
return $date;
}
としてみたけど、やっぱりえらーが出る。
Fatal error: Cannot redeclare getdate() in ......

呼び出しプログラムの2行目ってなってるけど
2行目は呼び出しの所。
何故〜
192nobodyさん:2005/07/16(土) 20:24:41 ID:???
>>191
エラーメッセージを嫁。頭弱いのか?

ttp://jp.php.net/manual/ja/function.getdate.php を読んで
>>189氏が何故_を先頭に付けたか考えろ。
193181:2005/07/16(土) 20:30:19 ID:???
あ、そか。
getdateて組込関数が既にあるからか…
ごめんなさい、できました。

ついでに、すごく馬鹿な質問なのですが、
呼び出しプログラムの中で書いてある1個の関数の中に、
本プログラムで使いたい変数がたくさんある場合は
一つ一つreturnしないと、やっぱり無理?
194nobodyさん:2005/07/16(土) 20:35:41 ID:???
お前はマニュアル読む気がないのか。
195nobodyさん:2005/07/16(土) 20:52:26 ID:???
何を言っているのかワケワカラン
関数から複数の値を返したい、ってことを
言っているのか?
196nobodyさん:2005/07/16(土) 21:07:29 ID:???
>>184
>or die("だめぽ");
このパターンの例文に関してなんだけど・・・

<html>から<body>と
</body></html>を、自分で作った関数で吐かせてる場合は
dieしちゃうと、そのエラーメッセージより後ろは表示してくれなくなるんで困ってます。この辺は皆さんはどんな風にしょりしてますか?

エラーメッセージの後ろに</body></html>をくっつけておくしかない?
197184:2005/07/16(土) 21:16:59 ID:???
>>187
なるほど。
エラー表示が1行で済みそうです。
どうもありがとうございました。

>>196
自分はエラー表示用関数を作ってます。
コンテンツを適当なヘッダとフッダではさむ通常の表示用関数に、
最後にexit()をつけたものをエラー表示用関数として使ってます。
198181:2005/07/16(土) 21:17:45 ID:???
やりたいことは、元々本プログラム内で書いていた、

$date = date('YmdHis', time());
$date_yyyy = mb_strcut($date, 0, 4);
$date_mm = mb_strcut($date, 4, 2);
$date_dd = mb_strcut($date, 6, 2);
$date_hh = mb_strcut($date, 8, 2);
$date_ii = mb_strcut($date, 10, 2);
$date_ss = mb_strcut($date, 12, 2);

を外部ファイルに記述し、色んな処理で手軽に$dateや$date_yyyyを使いたいのです。

ただのincludeしただけでも、
print $date;
print $date_yyyy;
のように使えるとは思うのですが、そうすると、外部ファイルの処理を全て動かすことになるので
よくないかな…と。

すみません、何言ってるかわからなくて…。
あと、マニュアルも一応読んでるんですが、よくわからなくて…。
ごめんなさい(´・ω・`)
199nobodyさん:2005/07/16(土) 21:56:37 ID:???
>>198
外部ファイルの処理を全て。。。という部分が判るようで
判らないんだけど、その部分だけを外部ファイル、他の部分は
別の外部ファイルでいいのでは?

--- date.inc.php ---
<?php
$date = date('YmdHis', time());
$date_yyyy = mb_strcut($date, 0, 4);
$date_mm = mb_strcut($date, 4, 2);
$date_dd = mb_strcut($date, 6, 2);
$date_hh = mb_strcut($date, 8, 2);
$date_ii = mb_strcut($date, 10, 2);
$date_ss = mb_strcut($date, 12, 2);
?>

--- etc.inc.php ---
<?php
//その他の処理
?>

--- 本プログラム ---
<?php
require_once('date.inc.php');
require_once('etc.inc.php');

echo $date;
echo $date_yyyy;
?>

次レスに続けるね。
200nobodyさん:2005/07/16(土) 22:00:19 ID:???
続きね。
元発言だと関数化したい、という話みたいだけど、関数や引数、戻り値が
あまり判っていないようなので、参考までに。
なるべく元のままで関数化しているので、あまりキレイなコードではないけど。

--- date.inc.php ---
<?php
function _GetDate() {
 return date('YmdHis', time());
}

function _GetDate_yyyy($date) {
 return mb_strcut($date, 0, 4);
}

以下、同様
?>

--- 本プログラム ---
<?php
require_once('date.inc.php');

$date = _GetDate();
$date_yyyy = _GetDate_yyyy($date);

echo $date;
echo $date_yyyy;
?>
201196:2005/07/16(土) 22:36:12 ID:???
>>197
なるほど。
いいのか悪いのか解らんけど、基本的にスクリプトは最初から最後まで<?phpと?>で囲んでしまって、getメソッドで飛ばしたモード判別変数でcaseで切り替え。
たいていはこんな作りなんで、どうしたものかと、思ってました。
エラーメッセージを引数にした関数を自分で作ってそこで実行すれば便利ですね。
202198:2005/07/16(土) 22:49:02 ID:???
>>199-200
レス、ありがとう(;_;)

>外部ファイルの処理を全て。。。
出来れば、共通で使うものは同じ外部ファイルにまとめて書きたくて
日付取得以外の処理も色々書いた場合、
ただのincludeだと、必要ない処理部分も読み込むことになるのかな、と思ったのです。

関数化にすれば、同一ファイル内に色々な処理が書かれていても
呼ばれたモノだけを読み込むのかなと思ってるのですが、
考えはあってるのでしょうか…。


>>200は、>>198を元に書いていただいたんだと思うのですが、
キレイにするとどんな感じになるのでしょうか?

一つの関数内で
return $date;
return $date_yyyy;
return $date_mm;
return $date_dd;
return $date_hh;
return $date_ii;
return $date_ss;
てしたら、案の定おかしい事に(-_-;)
203nobodyさん:2005/07/16(土) 22:54:51 ID:trCc1XOq
PHP5を使っているのですが

定数宣言をすべて
interfaceに任せてそこでconstで定義しているのですが

PHP5のinterfaceを
Javaのinterfaceのように

public interface Constant {
 public static final String CONSTANT_STRING = "test";
 public static final String CONCATINATEED_CONSTANT_STRING = "This is a " + CONSTANT_STRING;
}
のような定義をしたいのですが

これをPHPでやろうとすると

interface Constant {
 public const CONSTANT_STRING = "test";
 public const CONCATINATEED_CONSTANT_STRING = "This is a ".CONSTANT_STRING; //<-ここでエラー
}

三行目のところでエラーが出てしまいます。
どうしてもJavaのような手法を使いたいのですができる方法はないでしょうか?
Javaのfinal(最初の一回しか代入が許されていない定数)に相当するものが
PHPにもあるかと思ってPHPのfinalを使ってみましたが残念ながらJavaのような定数宣言には使えず、
メソッドのオーバーライド禁止、クラス継承禁止程度にしかつかえないことに気付きがっかりしました。
もしくは私の知識不足かもしれません。

このように、Javaのinterfaceのような定数宣言を実装できる方法はないでしょうか?
もし知っている方がございましたらご教授願います。
204nobodyさん:2005/07/16(土) 22:58:16 ID:???
さらに質問ですが
PHPにも、
Javaでよく使われているO-Rマッピングツール Hibernate, Cayenne, Jakarta Torque
などといったもの、
データバインディングツール Castor, Relaxerといったもの
はございますでしょうか?

PHPで複雑なRDBMSやXMLを弄るとき、どうしても煩雑に
なりやすいのでできればこういうソースコード自動生成ツールを使いたいのものです。
205nobodyさん:2005/07/16(土) 23:03:05 ID:trCc1XOq
たびたびすみませんが
さらに質問をさせて頂きます。

PHP5ではnamespaceが利用可能であるとどこかのサイトで知ったのですが
2chのあるスレをみると使えなくなったというレスを見つけました。
Facadeパターンなどのようなデザインパターン実装しにくく非常に残念です。

namespaceの概念が無いのでnamespac名.クラス名と指定していたものを
一つのクラス名にnamespace名_クラス名という長い名前にすることで
クラスの重複を避けるという手法があるみたいですが
これではクラス名が長すぎでかつamespace特有の利便性があるからこそ
実現しやすいデザインパターンも実現しにくくなっています。

PHP5では標準ではnamespaceを実現できないみたいですが、
他の方法、ツールやライブラリなどを使ってnamespaceを実現する方法はあるでしょうか?


206nobodyさん:2005/07/16(土) 23:33:38 ID:???
Java使え
207nobodyさん:2005/07/16(土) 23:50:26 ID:trCc1XOq
>>206
そうしたいのですが仕事上どうしてもPHPを使わないといけないのです。
ミッションクリティカルも少ない単純なアプリケーションですので。
プロジェクトマネージャの判断でPHP5を使うことになりました。
208nobodyさん:2005/07/17(日) 00:04:49 ID:???
うんこリーダーだな
209nobodyさん:2005/07/17(日) 00:17:03 ID:B/lkcUpB
UTF-8で設定したMySQL4.1に、UTF-8の2バイト文字を登録して、PHPで表示させたら
「?????????????????」と文字化けしてしまった。
同じサーバ上のphpMyAdminだとちゃんと表示される。

$query = 'select * from table';
$result = mysql_query($query);
while($row = mysql_fetch_array($result){
print_r($row);
}

なにか特別なことって必要でしたっけ?
210nobodyさん:2005/07/17(日) 00:32:04 ID:???
>>202
昔ながらのこんなテクニックもある。

function a(){
return array($a,$b,$c,$d);
}

list($a,$b,$c,$d) = a();
211nobodyさん:2005/07/17(日) 01:35:35 ID:???
>>209
自分で書いたコードの方にはMySQLにコネクション張った後に、
「接続クライアントの文字コードはUTF-8だよ」って
MySQLサーバに送ってないから、デフォルトのlatinだって
思われてるんで、latinで表現できないのが?になってるんでね?
212nobodyさん:2005/07/17(日) 04:38:53 ID:???
>>202
includeするとファイルの内容全てが読み込まれるから、関数にする、しないは
関係ない。
includeファイルの中で関数にしなかった部分はincludeされた時点で実行される。
関数にした場合はその関数を呼び出した段階で実行される。
そもそも関数そのものが理解できてないんぢゃないかと思われ。
213nobodyさん:2005/07/17(日) 06:53:32 ID:???
本当にくだらない質問だと思われるかもしれないのですが、
1週間前にPHPをインストールして始めた初心者なので、お許し下さい。

$a = "あああ";
echo $a;

この"あああ"の部分ですが、ダブルクォーテーションがなくても
表示されるのですが、なくてもいいんでしょうか?
どういう条件で""で囲むのでしょうか。

数字はつけない、文字列はつける、変数には付けない でやっているのですが
このままでいいのでしょうか?
214nobodyさん:2005/07/17(日) 07:09:58 ID:???
$a = あああ;
ってこと?
その場合、「あああ」の部分はPHPのパーサが未定義の定数とみなして、"あああ"に再解釈する。
危ないので文字列にはきちんとクォーテーション(ダブルorシングル)つけるべし。
とりあえずマニュアルじっくり読んでガンガレ
http://www.php.net/manual/ja/
215nobodyさん:2005/07/17(日) 07:46:41 ID:???
>>213 >>214
あのマニュアルの中から探すのはチト困難かも。
この辺りを参照汁。
http://www.php.net/manual/ja/language.constants.php

ついでに " で囲った場合と ' で囲った場合の動作の違いも理解汁。
http://www.php.net/manual/ja/language.types.string.php
216nobodyさん:2005/07/17(日) 09:11:30 ID:???
認証ページをsslにしてみたんだけど、普通ページに戻ったときに
セッションが切れてしまいます。

どうやったらセッションを切らずにできますでしょうか。
217nobodyさん:2005/07/17(日) 12:46:10 ID:???
>>208
メモリやパフォーマンスの都合上、
データを定期的に渡すだけの
簡単なものにはJavaを使いたくないそうです。
本当に簡単なプログラムなんですよ。
そのかわりXMLデータとRDBMSのテーブルの数が
多すぎですが。橋渡しをするだけです。
218nobodyさん:2005/07/17(日) 14:07:36 ID:???
投稿したデータをデータベースに登録する際に
下記(入門本そのままのやり方)のようにエスケープ文字の除去・タグ無効化・カナ変換を行っているのですが、
 $comments = htmlspecialchars(stripcslashes($comments));
 $comments = mb_convert_kana($comments, "KV", "SJIS");
改行のみ維持させたいのでぐぐってみたところ http://php.s3.to/tt/tt5.php の「複数行の入力」という記事が見つかり、
要はタグを無効にした後で、 改行コードを<BR>に変換するというやり方であると理解したのですが、
 $comments = htmlspecialchars($comments);
 $comments = str_replace("\r\n","\r",$comments);
 $comments = str_replace("\r","\n",$comments);
 $comments = str_replace("\n","<BR>",$comments);
 $comments = stripcslashes($comments);
でいいのでしょうか?
「Shift-JISの場合バッククォートを除去」とかstripslashesとstripcslashesの違いがよく分かりません。
また、このURLにある参考ソースを見ると上記のstripcslashes()を行っていないようなのですが必要ないのでしょうか?
文字コードに関しては「データの文字コードと見る際(ブラウザ)の文字コードが一致してないと化ける」くらいの認識しかありません。
どなたかアドバイスよろしくお願いします。
219nobodyさん:2005/07/17(日) 18:49:47 ID:5K+3/9Xz
PHPを使ってRSSの画像もサイトに表示できるコード載せてるサイトありませんか?
220nobodyさん:2005/07/17(日) 20:26:12 ID:???
>>214
ありがとうございます。なるほど、PHPで再解釈してくれてるだけなんですね。

>>215
助かります。このマニュアルは、辞書的な使い方がいいのでしょうか。
恥ずかしながら、今のスキルでは理解するまでかなり時間が掛かってしまいます。

購入した本を元に勉強しているのですが、初心者向けに解説しているPHPサイトで
定番的なところとかあるのでしょうか?お勧めがあればどなたか教えてください。
221nobodyさん:2005/07/17(日) 21:11:28 ID:???
徹底攻略のPDFは初心者向けだと思う。
222nobodyさん:2005/07/18(月) 00:14:57 ID:tJQ/fctA
質問させてください。
ある文字列中の特定の文字がマルチバイトかどうかを判定するにはどうすればいいでしょうか?

具体的には、
abcdefgあいうえお0123456789
という文字列があった場合に、10バイト目がマルチバイトかどうかを判定したいです。

substrを使って切り取る場合に文字化けして困ってます。
全角を1文字としてカウントするmb_substrでは都合が悪いです。

よろしくお願いします。
223nobodyさん:2005/07/18(月) 00:34:05 ID:???
>>221
ありがとうございます。マンモスのやつでしょうか?
やはり、あれは良いのですね。
pdfだと見辛いので書籍購入してしまいました。
224nobodyさん:2005/07/18(月) 01:38:51 ID:???
>>222
mb_substrのかわりにmb_strcut
225nobodyさん:2005/07/18(月) 02:00:26 ID:tJQ/fctA
>>224
ありがとうございます。
mb_strcutも一度試したのですが、使い方が間違っていたようです。
おかげさまでばっちり動作しました。
感謝感激です。
226nobodyさん:2005/07/18(月) 02:29:09 ID:???
$a=1; $b=&$a; = ハードリンクだと思うのですが、
この後 unset($a); で、$bも空になるような、シンボリックリンクの様に扱うことは出来るでしょうか?
227nobodyさん:2005/07/18(月) 04:04:16 ID:???
>>226
ない。が
NULLを代入すると全部NULLにはなる。
228nobodyさん:2005/07/18(月) 10:10:47 ID:???
初心者向けのPHP本としては、紙谷さんの本がオススメ。
229nobodyさん:2005/07/18(月) 10:18:15 ID:???
PHPの変数代入をハードリンク、シンボリックリンクと表現する>>226に萌
230nobodyさん:2005/07/18(月) 10:40:28 ID:???
>>229
ttp://jp.php.net/manual/ja/language.references.php

マニュアルにも萌えてください。
231nobodyさん:2005/07/18(月) 13:02:11 ID:8pn6XAVH
$a = "あいうえおaaa";
echo mb_strlen($a);

13が結果として出るのですが、マルチバイト文字を1として数えされるにはどうすればよいでしょうか?
232231:2005/07/18(月) 13:06:37 ID:???
すみませんエンコーディングの指定を間違えてました。
233nobodyさん:2005/07/18(月) 23:58:39 ID:Mt/K/zKf
全てのリンクURIにあるクエリを付加させたいとします。
たとえばセッションIDとか。この場合、リンクタグを書く際にいちいち
<a href="〜/?sid=<?= $sid ?>">次のページへ</a>
のように書くか、関数かなにか作って
<?= generateLink("http://〜/", "次のページへ", $query) ?>
↓ 下のように出力される
<a href="http://〜/?sid=xxx&name=xxxx">次のページへ</a>
のように書くかのどちらかくらいしか思いつきません。

前者はいちいち書くのが面倒だし、書き忘れると大変です。
後者はデザイン担当の人が使い方を覚えるのを嫌がるのでできれば避けたいです。
皆さんはどちらを使ってますか。あるいは他のやり方で解決してたりしますか?
234nobodyさん:2005/07/19(火) 00:12:35 ID:???
>>233
セッションidの自動付加(session.use_trans_sid)以上の機能が必要なのかな?
235nobodyさん:2005/07/19(火) 02:50:03 ID:???
xslファイルをメモリ上に生成してxmlに適用するのってどうやればできるんですか?
236nobodyさん:2005/07/19(火) 03:20:15 ID:???
例えば echo $_GET["hoge"]; とだけ書いてある get.php に
http://php.domain/get.php?hoge=a+b+c
でみたいにアクセスすると、表示されるのは
a b c
と + (プラス)が (空白)に置き換わるのは仕様??
マニュアルのどっかに書いてある?それとも RFC かしらん?
237nobodyさん:2005/07/19(火) 03:45:17 ID:???
>>235
DOMDocument::loadXML()を使うんだ

>>236
PHPの仕様。URLデコード済みのデータが入る
238nobodyさん:2005/07/19(火) 05:52:32 ID:IezOVCMv
PHP+MySQLでwebアプリを作っておりますが、DBについての基礎知識や経験が無いため、
いつもデータ型の決定やテーブルのレイアウトで悩みます。

データ型などを決定するにあたっての「原則」というか「常識」みたいなのはありますでしょうか?
リファレンスなどを見てもそれぞれのデータ型に関する教科書的な説明しかなくて、
もっと実用的に「実際にはこういうデータの時にこの型を使う」みたいなTipsを知りたいのですが、
そういうのをまとめたサイトもしくは書籍ってありませんでしょうか?

ド素人の状態から一人でゼロから学んで一人で開発してるので、
周りに誰にも質問できる人がいなくて困っております。。。
239nobodyさん:2005/07/19(火) 06:00:58 ID:???
PHPと関係ないようだし、DBの質問としても理解しがたい部分があるなあ
240nobodyさん:2005/07/19(火) 07:05:03 ID:???
>>239
後々のことを考えると、DBの初期設計はかなり重要だぞ。
MySQLならPHPとの連携も深いしな。

まあ趣味程度のヤツならあまり気にしなくてもいいかもしれんが。
241nobodyさん:2005/07/19(火) 07:10:19 ID:UElzZYBi
         ,/””   ”ヽ
        ,/   __ _ ゛
        /   /““  “” ヽ |
        |   / -━  ━.| |
        |   |.  “” l “ .|.|   
        (ヽ |   r ・・i.  ||   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
        りリリ  /=三t. |  <  その駄レス! 0円!! 
        |リノ.      |            ,、‐''""''、
         |   、  ー- " ノ           ,、‐゙     ',
.   _,r''''''ー/   ”ー-- "  ヽ         ,、-'"       j
  /   、 ,,,_ヾ ヽ───、;;;;;::.;、-'" ̄~~~゙゙゙"          /
 /   、` ~  ~゙''''''''''"~´  ゙'ソ.      ',        ....::::::::::::/
./   ... ´        .::::;/       ゙、..... ........:::::::::::::::::::::/
 '、:....:::::",         .:;rj゙         ゙、;;;;::::::::::::::::::;;;;、-''゙     ビシィッ!
.  ヽ;:::::"._      .:::i';/     ゙、      ゙、`~~~゙゙~ 、、、..,,_
.    ヽ、;;;;;>、:::...  ::::r'        ゙、     ゙、::::::         ヽ
       ',:::::::::゙i'r、;:::::::!.  ヽ      ゙、    .::〉::::::....      }
.       ',::  l:/;;;::゙'ーr゙、   ヽ    ゙.、.:::::;/'ー 、、;;;;____;;::、-'"
        }、 l:::::::~゙''''! i .........ヽ........:::::;r゙''"
        |  l::::::::::::::l  .〉、;;;;;;::、-'rーi''゙
        ノ  i;;;;;;;;;;;;;j::::/;;;;;;;;ノ:..  |: j
242nobodyさん:2005/07/19(火) 08:07:48 ID:???
>>238
逆に言えば教科書的な説明で十分なくらいしかルールがないと思った方がいいんでは。
ド素人がいきなりカッチリしたもの作ろうって方が間違いでしょう。
243nobodyさん:2005/07/19(火) 08:18:32 ID:???
>>238
俺も同じ境遇だったから(一人で開発、ド素人でゼロからって点で)、かなり共感。
DBのレイアウトは最初とまどった記憶がある。
まーでも「DB レイアウト」とかキーワードにググればけっこうでるんじゃない?

あとはあんまり考えすぎないほうがいい。
DBの場合、運用し始めてからでは変更が加えづらい
ってのが気になると思うけど(実際そうだけどさ)、
まったく変更できないわけじゃないし、
気に食わなかったら最初からやり直せるのも自分だけでやってることの利点。
もしくは気に食わない部分をいかに少ない変更でやりくりするかってのも抑えるべきポイント。

特に一人でやってると、期限がないし、プッシュしてくれる人がいないから、
こだわり始めると立ち止まりがちになる。
それよりはちょっと思い切ってさっと進んだ方がいいものができる。
ある程度こだわるのも重要なことなんだけどな。
ガンガレ!
244nobodyさん:2005/07/19(火) 08:36:23 ID:???
ぐぐるならそんな微妙な単語じゃなくて「データベース 設計」だろ。
245nobodyさん:2005/07/19(火) 08:46:16 ID:???
上のキーワードはネタだろ。
phpスレ的に言えることはパクれってことかな。
246nobodyさん:2005/07/19(火) 11:23:54 ID:???
スレ違いには違いない
むしろ板違い
247nobodyさん:2005/07/19(火) 17:34:07 ID:QxSJ/3p1
抽象クラスとインターフェイスを継承・実装する場合、
その2つで同じメソッドを宣言(抽象クラスでは抽象メソッドとして)するのはダメなのでしょうか?
またダメな場合どちらで宣言した方がいいのでしょうか?
248nobodyさん:2005/07/19(火) 17:59:05 ID:Kj4TO5G6
COBOL詳しい人にPHPを覚えてもらおうと思うのですが、
どうでしょう?すんなりなじんでくれるでしょうか?
249238:2005/07/19(火) 18:12:44 ID:IezOVCMv
>>242>>243
ありがとうございます。
そんなに気にしなくてもいいものなんでしょうか。。。
一人で開発してるとは言え、いちおう事業としてシステム提供しようと
思っていますので、スケーラビリティとかメンテナンスとかも考慮しなければ
いけないのかな、とかなり悶々と悩んでおります。

たとえば、ある数字(たとえば何かの通し番号)ひとつ格納するにしても、
「TINYINT」にしようか「SMALLINT」にしようか、それとも「VARCHAR」でいいのかな?とか…。

あるいは、数十文字程度しか入力されないであろう文字列用のフィールドでも、
念のために「TEXT」にしておこうかな…とか。たとえばVARCHAR(50)よりもTEXTにした場合、
領域が無駄に消費されるとか、レスポンスが悪くなるとかってあるのでしょうか?
効率が悪くなるとか・・・そういうの悩みはじめるともう尽きません。
250nobodyさん:2005/07/19(火) 18:15:33 ID:???
>>249
だから板違い。
データベース板に行け
251nobodyさん:2005/07/19(火) 18:18:36 ID:???
>>249
心配するな。
その程度のことも判断できない、勉強もしない、勉強の仕方も判らないヤツが
作ったシステムに銭を払おうとは誰も思わん
252軟式PHP:2005/07/19(火) 18:20:03 ID:???
>>248
学生レベル程度にCOBOLを組めるけど、COBOLは忘れて
心機一転で覚えてください。というしかないw

253nobodyさん:2005/07/19(火) 18:22:57 ID:???
>>248
そのお方はCOBOL以外の別の言語は知っているのかな。
知っているのなら、そう心配することはないと思う。
COBOLしか知らないのなら、そんな方は相手にせずに
アルバイトでも雇ったほうが効率はいいと思うよ。
254238:2005/07/19(火) 18:32:09 ID:IezOVCMv
>>251
というか、もう第一弾で作ったシステムには既に数十社の顧客がおりますが…。
月商もあなたの給料の3〜4ヶ月分くらいはあると思います。

今のところシステムには特に問題は出てないですが、より良いものにしたいのです。

>>250
>WEBプログラミング@2ch掲示板
>Oracle, PostgreSQL, MySQL といったデータベースの話などをテーマにしています。
255nobodyさん:2005/07/19(火) 18:37:43 ID:???
そろそろ失せろやカス
256nobodyさん:2005/07/19(火) 18:40:47 ID:???
>>255
喪前は>>251か?ww
偉そうに上に立ったつもりが思わぬ反撃されて逆ギレするのはダセーよ(藁

>>238
とりあえずDB関連の本を何冊か読んでみろ。そんでもう一回質問しる。
257nobodyさん:2005/07/19(火) 18:43:00 ID:???
自演乙
258軟式PHP:2005/07/19(火) 18:44:27 ID:???
ageてたら自演の匂いがするからsageたほうがいいよ。
259nobodyさん:2005/07/19(火) 18:45:06 ID:???
>>251>>255>>257=見てて恥ずかし過ぎる・・・カコワルイ
260nobodyさん:2005/07/19(火) 18:46:50 ID:???
>>249
うわ、2〜3年前の自分を見るようだ。
とりあえず、数値以外は
全 部 テ キ ス ト に し て お け

変に設計勉強してテーブル分けると自分でどうにもならなくなる。
困ったらフィールド追加で免れろ。

そんな感じで作った奴もトラブルなくちゃんと動いてるし、なによりメンテしやすい。零細企業が立派な決めごと作ってもしかたないのと一緒。

261nobodyさん:2005/07/19(火) 18:48:58 ID:kS82naWb
PHPのマニュアルを読んでいて気になったんだけども、
UNIX/WindowsともにApache2.0.xでPHP4を実運用するなって旨の
文書を見つけた、これって今のVersionのApache2.0.x+PHP4.4でも
云えることなのかな?

#参考URL
http://php.s3.to/man/install.apache2.html
>"Apache 2.0とPHPの組み合わせを(Unix、Windows
>どちらのプラットフォームでも)実運用環境で使用しないでください。"
262軟式PHP:2005/07/19(火) 18:52:49 ID:???
スレ違いだとは思うけど俺も一言。
全部テキストってのは俺はしないけど、260の言うようにある程度冗長性を持たせて
データ型は作った方がいいと思われ。MySQLは途中で型変更出来るが
PostgreSQLなんかは途中で型変換出来ないので。
あと、最低限の正規化はやっといたほうがいいと思う。関数を作らないプログラムみたいに保守性・拡張性がガクンと落ちる。
263nobodyさん:2005/07/19(火) 18:55:48 ID:???
264軟式PHP:2005/07/19(火) 18:56:11 ID:???
↑突っ込まれると嫌なので一応PostgreSQLも型変換をやろうと思えば出来る。
一時的なカラムを作成して、そっちに一回移してホンニャカってやる。
265軟式PHP:2005/07/19(火) 18:58:23 ID:???
>>261
http://www.php.net/manual/ja/install.unix.apache2.php
「PHP と Apache 2.0.x の互換性に関する注意: PHP の以下のバージョンは、Apache 2.0.x の最新版での動作が確認されています。 」
っていうところが参考になると思われる。
266nobodyさん:2005/07/19(火) 19:01:06 ID:???
>>254が精一杯強がっているみたいでカワイイ
267nobodyさん:2005/07/19(火) 19:01:56 ID:???
数値と文字列の使い分けで悩んでいるようだと、SQLをうまく使わずにデータファイル代わりにDBを使っている状態じゃないかな?
ソート時の辞書式・数値式やjoinする時の事を考えるとデータ型ってのはある程度決まってくる。
その上で、冗長なデータ排除や効率化のためのテーブルのレイアウト(てか、データベース設計、テーブル設計と言うかな)の話になってくる。
ここまでの話はPHPが関係する部分は無いから、専用板であるDB板が良いと思われ。
書籍スレもあったんじゃないかなぁ。

>>261
本家のマニュアルを読んでください。
268nobodyさん:2005/07/19(火) 19:07:46 ID:???
>>265
おおっ、成る程、サンキュー

>>261
いやいや、ホント申し訳ない、
キチンと検索せんといかんね。
269nobodyさん:2005/07/19(火) 20:22:22 ID:???
$a = "<FONT size='2'>hoge</FONT>";

このようにすると$aには<FONT size='2'>hoge</FONT>という文字列が格納
されるわけですが、
$aにサイズ2のhogeという文字列を格納したい場合、
(つまりHTMLを反映させた後の状態を格納したい場合)
どのようにすればいいのでしょうか?
ヒアドキュメント以外で方法はあるでしょうか?
270nobodyさん:2005/07/19(火) 20:35:41 ID:???
$a = 'サイズ2のhoge';
271nobodyさん:2005/07/19(火) 20:42:31 ID:???
>>269
サイズが2倍になったhogeを文字列に格納したいってことか?
であればムリ。ヒアドキュメントを使ってもムリ。
いったい、その文字列を格納して何をしたいんだ?
272nobodyさん:2005/07/19(火) 20:49:27 ID:???
>>269
よく分かんないけど、文字列そのものとその属性値を分離したいってことなら、配列に格納するくらいしか無いんじゃないかな?
そいでもって、出力する時にhtmlとして整形する。
(下のようにsprintfなりヒアドキュメントなりテンプレートエンジンのフィルタなり。xslの方に飛びぬけるのもありか...)

$a = array('str'=>'hoge','size'=>2); // 文字列は'hoge'、属性値は2
echo sprintf("<font size='%d'>%s</font>",$a['size'],$a['str']); // <font>を使って、size=2
echo sprintf("<span style='font-size: %dem'>%s</span>",$a['size'],$a['str']); // <span>を使って font-size: 2em
273nobodyさん:2005/07/19(火) 20:52:54 ID:???
まぁ、格納するならstyle属性ぐらいにしとけ
274nobodyさん:2005/07/19(火) 20:59:57 ID:???
なかなかいい釣り餌ですね
275nobodyさん:2005/07/19(火) 21:00:39 ID:4ZlIiQSx
php 4.4.0でeacceleratorは動きますか?
makeし直して入れてみたんだけど、なんか動かないっぽ。
276nobodyさん:2005/07/19(火) 21:08:10 ID:???
>>275
動く。手順を再確認。
277nobodyさん:2005/07/19(火) 21:15:37 ID:???
>>276
どうも、動きました!
eAcceleratorをmakeしなおす時に、make cleanしてなかったためのようでした。
278nobodyさん:2005/07/19(火) 21:42:38 ID:4ZlIiQSx
PHP 5.1がいつ頃 stable になるか、ある程度、予測はできないですかね?
279nobodyさん:2005/07/19(火) 21:53:53 ID:???
暇なんでstableみたいなPHP 5.1つーのを作ってみるわ。もちろんWindowsネイティブな。少しまちなー。
280nobodyさん:2005/07/19(火) 22:13:06 ID:???
>>261
マニュアルのその記述はいまいち情報不足。
prefork MPMとかCGI版とApache2との組み合わせで問題はまず起きない。
worker MPMとかperchild MPMと組み合わせた時にまだまだ問題が多いので
実運用では使うなつうこと。prefork MPMでApache2運用つうのも
Apache2の本来の実力じゃないしね。

あと ttp://php.s3.to/ のマニュアルは古いから、余り参照すんな。
Googleでの検索では上位にくるけど。
281nobodyさん:2005/07/19(火) 22:19:30 ID:???
$keyword="aaa bbb ccc ・・・"
とスペース区切りの文字列(フィールドの数は可変)をそれぞれ
$word[0]="aaa"
$word[1]="bbb"
$word[2]="ccc"



と別の変数に格納するのはどうすればよいのでしょうか?
$ketwordのフィールドの数が決まっていればsplitで切り出せるんですが、
可変するため、うまく切り出すことができません。
282nobodyさん:2005/07/19(火) 22:25:34 ID:???
>>281
explode
283nobodyさん:2005/07/19(火) 22:31:28 ID:???
1年ぶりくらいで新しくなったchmもらったら全く使えなくなってたので誰かどうにかしてください。
284nobodyさん:2005/07/19(火) 22:31:32 ID:???
>>281
最後の方読んでなかったorz
正規表現使わないんだったら、splitよりexplodeの方が高速だよ。

普通に
$word = explode(' ', $keyword);
でいけるでしょ。
list($word[0], $word[1], ・・・) = split(' ', $keyword);
とかしてない?
285nobodyさん:2005/07/19(火) 22:32:50 ID:???
>>281
>$ketwordのフィールドの数が決まっていればsplitで切り出せるんですが

splitの使い方間違っていないか?
286nobodyさん:2005/07/19(火) 22:34:56 ID:???
>>284
別に
$word = split(' ', $keyword);
でもいいわけだが。
287nobodyさん:2005/07/19(火) 22:35:15 ID:???
すみません、PHPというよりは一般的な質問になるんですが、一応PHPで
コーディングしてるのでアドバイスいただけだらありがたいです。

今、ブログから更新通知Pingを受け取って新着エントリー一覧を表示する
プログラムを書いてます。
http://www.boundless-ocean.ne.jp/archives/000049.htmlあたりを参考に
PEARのXML-RPC Serverを使ってブログのタイトルとURLを読み出すこと
はできました。

しかし、新しく作成されたエントリーのタイトルやURLをどうやって読み出せば
良いのか分からないのです。

普通のPingサイトだと(Myblog japanとか)個別にエントリーのタイトルとURL
も表示できているので、方法はあると思うんですが・・

よろしくお願いします。
288281:2005/07/20(水) 02:03:20 ID:???
>>284-286
レスありがとうございます。
splitで切り出したフィールドの扱いを勘違いしていました。
フィールド数が可変の場合はcount()でフィールド数を取得すれば良かったんですね・・・

$word = explode(' ', $keyword);
$cnt = count($word);
$cnt = $cnt -1;
for ($i = 0; $i <= $cnt; $i++) {
$word[$i] の処理;
}

のような感じで出来ました。
289287:2005/07/20(水) 02:21:48 ID:???
自己レスです。
RDFを読み出して、新しく作成されたエントリーのタイトルやURLを取得することにしました。
スレ汚しすまそ。
290238:2005/07/20(水) 05:13:11 ID:nMj8v/ee
>>260,>>262,>>267
ご指導ありがとうございます。
では、とりあえずあまり深く考えずに冗長性を持たせた構造にして、
正規化(←この概念を忘れてました!ありがとう!)に気をつけてやってみます。

あまりシビアでコンパクトにしてのちのち身動き取れなくなって困るよりも、
余裕を持って適当(?)に作ったほうが「大は小を兼ねる」と考えちゃって良い…みたいですね。
291nobodyさん:2005/07/20(水) 07:10:35 ID:???

誰も何も言わないからか、凄い気になるんだが。。。
>>238
・PHP+MySQLでwebアプリを作ってるが、DBについての基礎知識や経験が無い
・ド素人の状態から一人で学んで一人で開発して周りに誰にも質問できる人がいない
にも関わらず

・第一弾で作ったシステムには既に数十社の顧客がいる
・月商も>>251の給料の3〜4ヶ月分くらいはある。
のんだよな?

結構突っ込みどころ満載な気がするんだが。。。そうでもないのか?
くだらねぇ質問スマソ
292nobodyさん:2005/07/20(水) 07:38:57 ID:???
>>291
脳内月商だからつっこまないで
293nobodyさん:2005/07/20(水) 07:55:09 ID:???
>>291
自分が不利になると
「僕のパパは社長だからおまえ等みんなクビにするぞぉ」
っていう小学生と一緒
294nobodyさん:2005/07/20(水) 08:25:56 ID:???
foreach使えばいいんでないの?>>288
295nobodyさん:2005/07/20(水) 11:00:15 ID:???
>>290
数十社の顧客に納品されている正規化すらできていないDBを
見てみたい、激しく見てみたい。
296nobodyさん:2005/07/20(水) 11:12:39 ID:???
第1〜3の正規化もしてないのか?
297nobodyさん:2005/07/20(水) 11:16:54 ID:???
よくあるPHPのサイトで<a href="/?key=value">value</a>とやるとURLの後に/?key=valueとつきます。
例えばkey=value1のときはfile1をincludeして、key=value2のときはfile2をincludeすると言うのはどうやるのでしょうか?
ページは変わってもサイトの一部分だけしか変える必要のないときなどに使いたいのですが実際にどうすれば良いのか分かりません。
298nobodyさん:2005/07/20(水) 11:20:52 ID:???
>>297
switch ($_GET['key']) {
 case 'value1': require_once('file1.inc.php'); break;
 case 'value2': require_once('file2.inc.php');break;

}
299nobodyさん:2005/07/20(水) 11:34:41 ID:fiiwUfZg
質問です。

配列 $hairetu から「yahoo」という文字を検索し、見つかった配列番号(?)を取得

と言うのはどうやるんですか?$hairetu には1000行くらいあるとします。
300nobodyさん:2005/07/20(水) 11:43:58 ID:???
array_search()
301nobodyさん:2005/07/20(水) 11:50:15 ID:???
宿題は自分でやるものです。
302nobodyさん:2005/07/20(水) 11:51:19 ID:???
>>300
あー!!array_search()ですか!!
あると思ったんだけどググっても見つからずに悩んでいました。
のどに詰まっていた納豆がスッキリ胃に入っていきました。トンクス
303nobodyさん:2005/07/20(水) 12:06:50 ID:AeK1ZPXK
仕事場の蔵書をWEB管理するソフトが欲しいのですが、Web系初めてなんです。
スキルは C COBOL VBA SQL 位しかないもので。
PHP以外にいろいろありますが、皆さんがPHPやってる理由を
聞かせて頂けるとありがたいのですが
304nobodyさん:2005/07/20(水) 12:10:54 ID:???
大学でPHPの講義とかあるなら受けてみたいもんだ
305nobodyさん:2005/07/20(水) 12:17:52 ID:???
>>302
あると思ったのならググらずにマニュアルの配列関数見ればいいのに
http://jp2.php.net/manual/ja/ref.array.php
306nobodyさん:2005/07/20(水) 12:23:37 ID:???
>>298
それをファイルをincludeさせたい部分に書くだけですか?
なんだか色々調べててフレームワークとかセッションとか出てきたんですが、これらは関係ないのでしょうか?
307nobodyさん:2005/07/20(水) 12:24:51 ID:???
>>305
スマン
308nobodyさん:2005/07/20(水) 12:29:12 ID:???
>>306
せっかくレスもらったんだから自分で試せばいいのに
309299:2005/07/20(水) 14:10:38 ID:fiiwUfZg
続けて質問です。

array_search() って完全一致じゃないと駄目なんですね。
部分一致でも検索できる方法ありますか?

例えば、hensu[10] = ヤフーショップ の場合に、 ヤフー だけの検索で引っかかって欲しいんです。
310nobodyさん:2005/07/20(水) 14:23:10 ID:???
>>309
for count() mb_strpos()
311nobodyさん:2005/07/20(水) 15:02:03 ID:???
>>310
ありがとう。ループで解決しました。
312nobodyさん:2005/07/20(水) 15:10:47 ID:???
PHPの話じゃないかもしれませんがお教えねがいます。

<form method='POST' action='hoge.php'>
<input type='image' name='kbn' value='1' src="hoge1.gif">
<input type='image' name='kbn' value='2' src="hoge2.gif">
</form>
という2つのイメージボタンを持ったフォームで
どっちのボタンがクリックされたかを'hoge.php'で取得するには
どうしたらよいでしょうか?
'hoge.php'で$_POST['kbn']がNULLになってしまうので困っています;
どうかお助けください。
313nobodyさん:2005/07/20(水) 15:21:59 ID:???
312です。
なんかinput type='image'はvalueは無効みたいですね。
nameを変えて座標がやってくるかどうかで判断しなくちゃですね。

他にいい方法っありますか?
314nobodyさん:2005/07/20(水) 15:23:58 ID:???
>>313
んー。type=button にして、CSSで背景画像の変更とかじゃ駄目?
315nobodyさん:2005/07/20(水) 15:24:26 ID:???
>>313
俺の環境ではちゃんと取得できた
var_dump($_POST);

array(3) {
["kbn_x"]=>
string(2) "47"
["kbn_y"]=>
string(2) "53"
["kbn"]=>
string(1) "1"
}
316nobodyさん:2005/07/20(水) 15:24:42 ID:???
俺のサーバーじゃ$_POST['kbn']は普通に取得できたぜ
317nobodyさん:2005/07/20(水) 15:25:22 ID:???
test.php
----------
<form method='POST'>
<input type='image' name='kbn' value='1' src="hoge1.gif">
<input type='image' name='kbn' value='2' src="hoge2.gif">
</form>
<?
echo $_POST['kbn']."<br>\n";
print_r($_POST);
?>
----------
318nobodyさん:2005/07/20(水) 15:31:42 ID:???
Firefox + PHP5.0.4 なら取得できた
IE6 + PHP5.0.4 ならNGだった
319nobodyさん:2005/07/20(水) 15:38:30 ID:???
CSVファイルを配列に読み込んで、○行目から×行目までを出力するとき、今までは

for($i=○;$i<=×;$i++){
 echo $array[$i];
}

と言うループでやっていましたが、もっとスマートな方法ありますか?
320nobodyさん:2005/07/20(水) 15:44:01 ID:???
>>314
あっそれもいいかも
でも、buttonってsubmitできましたっけ
onClick='javascript:this.submit()'すれば
いいと思うけど javascriptは使わないポリシーなので
申し訳ない。

自分の環境ではやっぱり
$_POST['kbn_x']はとれても$_POST['kbn']はとれません。
これってPHPの環境変数の設定の違いでしょうか?
申し遅れましたがPHPのVerは4.3.10なんですれど。
321nobodyさん:2005/07/20(水) 15:56:29 ID:???
>>318
ブラウザによって違うんですね。
ネスケ系のブラウザエンジンは取れるんですね。
了解しました。
322315:2005/07/20(水) 16:24:06 ID:???
本当だ
IEだとだめじゃ
323nobodyさん:2005/07/20(水) 16:28:36 ID:???
さて、正しい動作はDotch!?
324nobodyさん:2005/07/20(水) 16:31:53 ID:???
仕様書よむかぎりではIEが不正動作の様子。
割と有名な問題だから検索すれば対策みつかるよ。
325nobodyさん:2005/07/20(水) 17:00:43 ID:???
phpで半角数字以外の文字を消すにはどうしたら良いか教えてください。

「x1xx」とか「,2dd」を「1」「2」にしたいです。
326nobodyさん:2005/07/20(水) 17:06:21 ID:???
>>325
preg_replace('/[^\d]/' , '', 'x1xx');
327nobodyさん:2005/07/20(水) 18:20:44 ID:???
>>326
dです。
正規表現を勉強せねば・・・やっぱ慣れですかね?
328>>291:2005/07/20(水) 19:00:55 ID:e5fXpd1f
>>292-293
ありがとう
329nobodyさん:2005/07/20(水) 19:17:11 ID:???
charsetをShift_JISで書いたソースで
「―ソЫ\噂浬欺圭構蚕十申曾箪貼能表暴予禄兔喀媾彌拿杤歃濬畚秉綵臀藹觸軆鐔饅鷭xx」
を送信すると$_POSTで取ったときに'\'(C5)が付いてくるのって
charsetを変えずにうまいこと解決するには
どのような対策がベストなのでしょうか?
330nobodyさん:2005/07/20(水) 19:21:58 ID:???
>>329
magic_quotes_gpc = Off
331nobodyさん:2005/07/20(水) 22:43:59 ID:0VkkmhCL
PHPでブラウザのキャッシュを外して表示させる場合は以下のように書け
と言う様な記事に遭遇しました。、

header("Content-Type: text/html; charset=文字コード");
header("Expires: Thu, 01 Dec 1994 16:00:00 GMT");
header("Last-Modified: ". gmdate("D, d M Y H:i:s"). " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");



↑の文章で
「header("Expires: Thu, 01 Dec 1994 16:00:00 GMT");」
この時間の意味は何でしょうか?
解説によって時間が異なったりします。

332nobodyさん:2005/07/20(水) 22:54:07 ID:???
>>330
あ〜そんな設定があったのですね。
やってみます。
ありがとぉ
333nobodyさん:2005/07/20(水) 23:13:32 ID:???
>>331
そこまで勉強したんならもう少し勉強してみてください。
334nobodyさん:2005/07/20(水) 23:32:41 ID:???
あるクラスのメソッド内で他のクラスのインスタンスを生成した場合、そのインスタンスの消滅はいつになるのでしょうか?
生成したメソッド終了時? それともスクリプト全体の終了時?
もし全体の終了時ならメソッド終了時に消滅させることって出来るのでしょうか?
デストラクタ(__destruct)を呼び出すとかして。
335nobodyさん:2005/07/20(水) 23:50:29 ID:???
>>334
__destructでechoでもすればいつも消えるかわかるだろ。
質問するまえに自分でやれることやらないと、何時までも他人に頼ることになるぞ
336335:2005/07/21(木) 01:15:26 ID:???
いつも消えるってなんだorz
337nobodyさん:2005/07/21(木) 06:32:47 ID:???
>>334
参照されなくなったとき
338nobodyさん:2005/07/21(木) 08:22:30 ID:???
参照されなくなったとき〜
339nobodyさん:2005/07/21(木) 09:45:00 ID:???
>>331
キャッシュの有効期限だ。
つまり、今現在の日付より前に設定すれば、
アクセスしてきたブラウザはキャッシュの有効期限とみなして
新しくページを読み込むという理論。

だから今より古い時間ならいつでもいいけど、
時間が止まってるパソコンのことも考えて(?)
10年くらい前にしておけば問題無い。
340nobodyさん:2005/07/21(木) 09:52:36 ID:???
>>339
ありがとうございました
341nobodyさん:2005/07/21(木) 11:40:24 ID:???
>>340
有効期限のことって解説に載ってなかったの?
俺はてっきり「1994年12月1日16時ちょうど」って時間に特別な意味があるのか聞いてるのと思ってた。
342238:2005/07/21(木) 12:34:04 ID:1d7jG9nE
>>291>>298
第一弾で作ったシステムは、DBの重要度・依存度はそんなに高くない
ASP(顧客ごとのオリジナルシステムじゃないですよ)なので。
項目数も更新頻度も少ないから一つのテーブルでまとめちゃっても
特に支障なかったんですよ。

でも今作ってるのはDBに入れるべき項目数もレコード数も多くなるので、
きちんとした設計にしようと思って質問しました。

で、もう半年くらい営業してるんで、顧客が数十社というのはむしろ少なすぎです。
開発と営業を一人でこなさなきゃならないのでどうしても時間が足りないんです。
だからそろそろ営業マンと技術者を一人ずつ雇います。

>>296
いちおう第三正規化まで(無意識的に)やってました。
正規化という概念があるのは後付けで知ったんですが。
343nobodyさん:2005/07/21(木) 13:30:41 ID:jGRVDiGI
うちにインストールしたApacheで mb_strpos 関数が使えません。
PHP.ini のどこを変更すればいいんですか?
344nobodyさん:2005/07/21(木) 13:45:42 ID:???
最近の流行りか?
プロフェッショナリズムの欠如したプロフェッショナル(自己矛盾だな…)
345nobodyさん:2005/07/21(木) 14:34:01 ID:pW+lONe3
すいません。PHP3とqmailで出来ているシステムに
手を加えたのですが、これで良いのでしょうか。
qmailでメールのエイリアスを追加したのですが、
/var/qmail/alias/.qmail〜 というファイルに
&〜
というメールアドレスを追加したのですが、qmail
を再起動しなくてもメールのエイリアスの追加は
完了したのでしょうか。
qmailの再起動も知らない初心者なので、これだけ
で良いのかと心配しています。どなかか教えて下さ
ると非常に助かります。お願いいたします。
346nobodyさん:2005/07/21(木) 15:00:50 ID:???
PHPとMySQLで入門本を見ながらいろいろ試してるんですが、
mysql_close()とmysq_free_result()は必要なのでしょうか?
入門本では特に「切断する」「開放する」以上の説明はないのですが、
PHPのマニュアルには
「mysql_closeは通常必要ない」「結果保持用メモリは自動的に開放される」
とあります。

プログラミング的には書くのがお行儀がいい、ということなのでしょうか?
それともやはり「どっちでもいい」のでしょうか?
347nobodyさん:2005/07/21(木) 15:04:34 ID:???
>>345
PHPというよりqmailの質問だから↓の方がいいかも

qmailインストール @Linux板
http://pc8.2ch.net/test/read.cgi/linux/1004341147/
qmailいろいろ(7) @UNIX板
http://pc8.2ch.net/test/read.cgi/unix/1114157851/
348nobodyさん:2005/07/21(木) 15:07:32 ID:???
>>345
再起動は不要。
エイリアス追加後、再起動せずにエイリアス宛にメールを
送信してみれば聞くまでもないことだと思うんだけど。
てか、そもそもスレ違い。
349nobodyさん:2005/07/21(木) 15:24:55 ID:???
<form method='POST' action='hoge.php'>
<input type="text" name="hoge" value="10">
<input type="text" name="hoge" value="20">
<input type="text" name="hoge" value="30">
</form>
をsubmitして
'hoge.php'で$cnt=count($_POST['hoge'])ってしたら
$cntは3になると期待したんですが1になっちまうんです
3にするにはどうすればよいんしょうか?
350nobodyさん:2005/07/21(木) 15:27:23 ID:pW+lONe3
>347
>348

345です。ありがとうございます。再起動せずに
エイリアス宛にメールを送信して見たら、出来ま
した。そのようなことも思いつかないなんてどう
かしてますね。(笑)
また、スレ違いでしたので、今後はqmailスレで
聞くようにします。
いずれししても、ありがとうございました!!
351nobodyさん:2005/07/21(木) 15:35:11 ID:uSqim16b
プログラムの処理時間を計算する為に

$start=microtime();
//処理
$end=microtime();
echo $end-$start;
ってな感じでmicrotimeの計算をした時に近い数字同士だと
指数になったり結果がマイナスになったりするんですがなぜなんでしょうか?
352nobodyさん:2005/07/21(木) 15:45:03 ID:???
>>346
一般的なプログラミングの作法としては、ちゃんとプログラム中で
閉じたり開放するのが正しい(と思ってるので、自分はしてる)。
但し、PHPの仕様としてスクリプト終了時にmysql_close()とmysql_free_result()
相当の動作が自動的に行われると明記されているので、"PHPプログラミング"の
作法としてはスクリプト中で記述しないというのは正しい。
またプログラム処理の結果を吐き出してから後始末を行うので、
結果を得られるタイミングも早く、すなわち処理が速く終わる。

もっともmysql_closeはMySQLコネクションというリソースを、
mysql_free_resultはMySQLからの結果を保持する記憶域を開放するためのものであるから、
スクリプトの動作時間が長く、それらのリソースを無駄に保持する負荷が
比較的大きいのであれば、適宜開放してやるのが良い。
353nobodyさん:2005/07/21(木) 15:51:03 ID:???
>>346
俺の考えだけど、俺の場合はソースの頭でオープンさせて最後に開放させてる。

と言うのも、その都度開放するとサーバに負担がかかると思ったから。
何度も開けたり閉じたりするより、最初に開けちゃって最後に閉じた方がよいかと思って。
354nobodyさん:2005/07/21(木) 15:51:51 ID:???
>>349
1変数1個だ。
355nobodyさん:2005/07/21(木) 16:00:24 ID:???
>>349です。
事象がわかりましたが、
対策が解りませんのでどなたか教えてください。

<form method='POST' action='hoge.php'>
<input type="text" name="hoge" value="10">
<input type="text" name="hoge" value="20">
<input type="text" name="hoge" value="30">
</form>
をsubmitしたのに配列で受け取れないのは
<input type=image>で送信されたものの場合で試しに
<input type=submit>にしてみたら配列がやってきました。
イメージを送信ボタンとして配列をPOSTしたいのですが
javascriptを使わずに出来ますでしょうか?
356nobodyさん:2005/07/21(木) 16:00:52 ID:???
>351
microtime() で何が返ってきてるか見てみなよ。
357nobodyさん:2005/07/21(木) 16:06:05 ID:???
誰か>>355を翻訳してくれんか?
358nobodyさん:2005/07/21(木) 16:07:04 ID:???
>>355
<input type=submit style="background-image:url('イメージ')">

じゃダメ?やってないから分からんけど。
359nobodyさん:2005/07/21(木) 16:15:01 ID:???
360nobodyさん:2005/07/21(木) 16:27:43 ID:???
>>355
name="hoge[]"
361nobodyさん:2005/07/21(木) 18:26:15 ID:???
>>359
<button type="submit"><IMG></button>
362nobodyさん:2005/07/21(木) 19:25:40 ID:NWEHg4fz
フォームを作成しそこに書き込むと掲示板に投稿され
さらに内容が私のメールに届くようにしてあるスクリプトを作成したのですが
これに加えて
自分で作成したメールアカウントにメールを送信したら
そのメール内容が掲示板に投稿されるようには出来ますでしょうか?
363nobodyさん:2005/07/21(木) 19:44:29 ID:???
メールを受信した瞬間にログを取り出すのではなく、掲示板を表示するときに適宜メールの内容を取り寄せる形ならimap系でできるかも。
364nobodyさん:2005/07/21(木) 20:57:07 ID:???
>>362
SMTPサーバーを操作できるのならエイリアスファイルから登録用スクリプトを呼び出せばいい。
sendmailならこんな感じで呼び出すけど、SMTPサーバーによって設定ファイル、設定内容は
異なるので自分で調べてくだされ。
myaccount: "| /path/to/php 登録用スクリプト名"

これで[email protected]にメールが届くと登録用スクリプトが呼び出される。
スクリプトでは標準入力からメールデータを取り出して掲示板に登録する。
もちろんこのスクリプトはオマイさんが書くんだよ。
SMTPサーバーが触れないのならPOPやIMAPを使うしかないかも。
365nobodyさん:2005/07/21(木) 21:06:26 ID:???
あともう一つ、cronを使って定期的にポーリングする方法もあるね。
大体この3つくらいが定番かと。
366nobodyさん:2005/07/21(木) 21:09:11 ID:???
smtp鯖をしらべるには?
rh9 php4.3.11を使用しています。

pear Net_SMTPを使用し
[email protected]さんのメールアドレスが実在するかチェックする
スクリプトを作成しています。

Net_SMTPコンストラクタ作成時に 接続先サーバを指定するのですが、
[email protected](abc.co.jp)のSMTP鯖を調べる方法は
ありますでしょうか。
367nobodyさん:2005/07/21(木) 21:21:09 ID:???
>>366
getmxrr()
んでも、MXが見つからん場合はAとかに送るんじゃなかったっけ?その辺りは実装しなきゃいけないかもね。
368nobodyさん:2005/07/21(木) 21:27:16 ID:hk8J7OA3
質問です。

<?php
$a = @$_POST["answer"]
if($a="ほげほげ"){
echo "正解";
}
else{
echo "不正解";
}
?>
上記のif文で、$aが"ほげほげ"を含む場合には正解を表示させるには
どのように記述したらいいのでしょうか?
$aが"ほげほげです"でも"ほげほげかな?"でも正解にしたいのです。
よろしくお願いします。
369nobodyさん:2005/07/21(木) 21:32:24 ID:???
370nobodyさん:2005/07/21(木) 21:54:25 ID:hk8J7OA3
>>369さん
有難う御座います。
リンク先をみても3%くらいしか理解できませんでした。

if(mb_strpos($a,"ほげほげ"){
echo "正解";
}
false{
echo "不正解";
}

こんな感じでしょうか?なんか足りない気がします。
371nobodyさん:2005/07/21(木) 21:58:50 ID:???
>>368mbstring入ってる?
372nobodyさん:2005/07/21(木) 22:08:34 ID:???
preg_match使えば?
373nobodyさん:2005/07/21(木) 22:38:23 ID:???
PHPマニュアルのmb_strposを読んで3%しか理解できない人が
正規表現を理解できるとは思えないけど(バカにしているんではないよ)。
>なんか足りない気がします
ってどういう意味だろう。実行したけどエラーがでるのかな。
エラーがでるのならエラーメッセージぐらいは張って欲しいけど。
とりあえず)が一個足りないけどコピペミスなの?
if(mb_strpos($a,"ほげほげ"){

if(mb_strpos($a,"ほげほげ")){

このままmb_strposが使えるまで頑張るか正規表現を勉強するかは
>>370次第。嫌がらせではないからキレないでね。
374nobodyさん:2005/07/21(木) 22:56:27 ID:???
3%くらいしか理解できませんでしたって理解する気もないだろ
375nobodyさん:2005/07/21(木) 23:07:04 ID:???
echo$anser=mb_ereg("判らない事",$a)?"取り合えず調べる":"くだ質に丸投げ";
376nobodyさん:2005/07/21(木) 23:10:38 ID:???
mb_strpos使えっていうからやったのに何で叩かれるんだよー・゚・(ノД`)・゚・ ウワーン
ってのが聞こえてきそうだ。
var_dump(mb_strpos($a,"ほげほげ"); とかして、どんな値が返ってくるのか実感して欲しいところだな。
誰も突っ込んでないけど、 if($a="ほげほげ") ってのもかなりイタイ
377nobodyさん:2005/07/21(木) 23:44:29 ID:OPf2mV1L
PHPを利用したプログラムを2つ教えてください。
@九九表
A2次方程式の解 ax2+bx+c=0
378nobodyさん:2005/07/22(金) 00:09:21 ID:???
くだらない質問だと思うので、こっちにレスするかな。。
>>377
どこまでやったのか書いてみ。
2.の方は学年と性別、妹の有無の情報が無いと、出題者の意図が分からん。
379nobodyさん:2005/07/22(金) 00:17:20 ID:1VklDg1R
377です。まったく手をつけられていません。 九九表のプログラムをすべて書いていただけるとありがたいですm(__)m
380nobodyさん:2005/07/22(金) 00:21:20 ID:???
PHPでサイト内検索をしたいのですが、具体的にどうやって作っていけば良いのか分かりません。
せめて過程だけでも教えて下さい。
381nobodyさん:2005/07/22(金) 00:45:13 ID:???
>>379
【php】part29【php】の方にレスついてますよ。
382nobodyさん:2005/07/22(金) 01:29:04 ID:???
>>370
if(mb_strpos($a,"ほげほげ") === FALSE){
echo "不正解";
} else {
echo "正解";
}

文字エンコーディングの設定必要あるかもだけど。
383nobodyさん:2005/07/22(金) 02:49:06 ID:???
isleのレン鯖契約したらmb_*もmb_reg*も入ってなかった。
アリエナスww
上記のライブラリを追加したらリコンパイル必要ですか?
apache再起動で済みますか?
あと、php-usersのMLをどなたかのサイトでアーカイブにしてnamazuに喰わせてあったのですが
うかつにもブックマークし忘れました、どなたかurlわかりますか?
384383:2005/07/22(金) 03:01:06 ID:???
>>383
すいません、後半部分は自己解凍しました。

http://www.php.gr.jp/php/novice.php3
このスレのテンプレにも追加したいくらい便利っすね。
385nobodyさん:2005/07/22(金) 06:59:06 ID:7S1nHf8D
pear::Authでおおはまりしています。
具体的には
CREATE TABLE myAuth (
myUserColumn VARCHAR(50) NOT NULL
, myPasswordColumn VARCHAR(32) NOT NULL
);
ってテーブルを作って、
ttp://dozo.matrix.jp/pear/index.php?PEAR%2FAuth
ここいらを参考に(というかそのまま)
認証をかけてみたんですが、常に認証失敗になってしまいます。

Pear::Authのインスタンスをprint_rしてみたんですが
どこで失敗しているのかがわからず(ちなみにDB接続は成功しています)
解決の糸口がつかめません。

試しにlast_queryをそのままDBに入れると、ちゃんと帰ってくるんで
一体どこでつまづいているのかサッパリです。
同じような現象になった方、解決方法ありましたらよろしくお願いします。
386nobodyさん:2005/07/22(金) 07:31:03 ID:???
includeするファイルの拡張子ってどうやって決めるんでしょうか?
基本的にhtmlコードや普通のテキストを呼び出したりするときは.incで統一してるんですが、
phpコードとかだったら.phpにするべきなのかな?
387nobodyさん:2005/07/22(金) 08:13:08 ID:???
>>367さん。ありがとう。

pear Net_DNSを使用しました。
388nobodyさん:2005/07/22(金) 08:19:11 ID:???
>>386
特に決まりはないから好きにしたらいい
俺はphpコードはphpにしてる。他の拡張子だとソースの内容が丸見えになるので
後はhtmlだったりtxtだったり
config.inc.phpなんてやってるのもある
389368:2005/07/22(金) 12:42:26 ID:???
>>382さん
有難う御座います。うまくいきました〜
390nobodyさん:2005/07/22(金) 12:43:09 ID:???
インクルードファイルも.phpにしておかないとドキュメントルート内だとURL直叩きでソース見放題になるぜ
ドキュメントルート以下にそんなファイル置く奴が悪いんだが。

.htaccessとかで.incを.php扱いにすることも出来るがそんな手間を考えるなら拡張子を統一するのがベスト。
391nobodyさん:2005/07/22(金) 14:09:45 ID:???
>>389
結局、答えを全部教えてもらう以外、自分では何もやらない奴だったんだな。
そんなの楽しいのか。。。
392nobodyさん:2005/07/22(金) 16:26:40 ID:s5umLjZL
すみませぬが、質問です。

PHPをWindowsで使う際、execを使って外部のexeやバッチファイルを
バックグラウンドで動かすことは無理なのでしょうか?
時間のかかる処理をexeやバッチファイルで実行しているのですが、
exeなどをファイルにリダイレクトしても、結局バックグラウンドでは
動作せず、ブラウザが読み込み中のまま待たされることになってしまいます...。
処理が終わったら戻ってくるんですが。

Linuxだとリダイレクトと「&」を使って簡単にできるのに...。

PHP 4.3.11+IIS(Apacheでも同じ)です。
ぜひご教示を!
393nobodyさん:2005/07/22(金) 16:29:55 ID:mNPTggfm
XMLパースについて質問ですが
SimpleXMLは名前の通り使いやすいと思うのですが
SimpleXMLよりも使い勝手がよいパーサというものは
あるでしょうか?
394nobodyさん:2005/07/22(金) 16:34:59 ID:mNPTggfm
PHPで、C++やJavaのように、
変数を使う前に宣言してから利用可能に

するということはかのうでしょうか?
クラス内のフィールド(メンバ変数)とは別に。

PHPは、変数名などのスペルミスをすると
どこにバグがあるのか気づかずに
苦労することがあります。デバッガにも気づいて
もらえません。
それをC++やJavaのコンパイラように、
あらかじめ変数を宣言してから
利用できるようにすればどこにまちがい
があるのかかなりわかりやすくなり、
スペルミスにもすぐに気づきやすいのですが。

これをC++やJavaのように楽にする方法はないでしょうか?
C++やJavaを使えと言われても仕事上、そうはいかないものでして.。
395nobodyさん:2005/07/22(金) 17:06:33 ID:???
>394
error_reporting (E_ALL);
これで未定義の変数に警告を出してくれる。
396nobodyさん:2005/07/22(金) 18:57:44 ID:???
配布したのですが、改造されたくないのです。
PHPは、コンパイルできませんか?
397nobodyさん:2005/07/22(金) 19:04:08 ID:???
>>396
つ[どっかの会社が出してる(忘れた)エンコーダー]
398nobodyさん:2005/07/22(金) 19:06:37 ID:???
399nobodyさん:2005/07/22(金) 19:09:20 ID:???
ありがとうございます。
ionCube PHP Encoderですか?
PHPスクリプトをコンパイルした場合
こういうのを、サーバーに入れないとだめなんですか?
400nobodyさん:2005/07/22(金) 19:16:57 ID:???
>>396
そういった用途の有償・無償のプロダクトがある。
ソース配布前提ライセンスのライブラリ等を利用するときは留意せよ。
401nobodyさん:2005/07/22(金) 19:19:17 ID:???
ありがとうございます。
それで、そういうのを使って、
コンパイル後のファイルを配布を受けたものは、
普通にサーバーの入ってるパソコンに
置くと、ネットに乗せられるんでしょうか?
お願いします。
402nobodyさん:2005/07/22(金) 19:31:40 ID:???
>>401
書いてる日本語が変。

ネットに乗せられる
→(解釈)アップロードしてWebサーバのコンテンツ配下に置ける(ネットに乗せられる)か
→Yes. 単なるバイナリーファイルだから。
403nobodyさん:2005/07/22(金) 20:17:50 ID:???
すみません、
IEなんかで見られるんですか?という意味です。
404nobodyさん:2005/07/22(金) 21:13:13 ID:???
>>401
まずお前は日本語と一般教養の勉強をしたほうがいい。
コミュニケーションできないと開発も出来ない(たとえ一人で開発してるとしても)。
405nobodyさん:2005/07/22(金) 21:26:24 ID:???
ははは、そんな安月給のお仕事につくつもりは無いですよw
406nobodyさん:2005/07/22(金) 21:39:15 ID:???
エンコーダーは高いよ 金が・・・
407nobodyさん:2005/07/22(金) 21:56:40 ID:???
>>403
「見る(見られる)」ってのも、これまた抽象的な表現だな。

可能。特にWebサーバでそのファイルに
アクセス出来ないようにしていなければだけど。
408nobodyさん:2005/07/22(金) 22:03:28 ID:???
オイラのエスパー脳を発動してみたところ、
・配布した物の中身を見られたくない
・配布した物を実行する鯖(実行環境)に手を加える必要が無い
そんな便利なものがあるのだろうか?って質問をしたいんだろうね。
というか、そういう質問になるはずなのにパスコンとかIEとか訳ワカンネ
409nobodyさん:2005/07/22(金) 23:24:50 ID:???
>>405
安心しろ。
お前の言語能力なら、コンビニのバイトでさえ採用されないから。
410nobodyさん:2005/07/22(金) 23:51:35 ID:???
高給なお仕事にお就きになられる>>405に、我ら貧民が答える義務はあるまいて。
ほっておけ。
それにしても最近のここは惨いな。夏休みだからか。
411nobodyさん:2005/07/23(土) 00:08:59 ID:???
ここはVIPじゃないんだからみんなそんなに全力で釣られなくたって…。
412nobodyさん:2005/07/23(土) 00:17:58 ID:???
流れをぶった切って質問させてください。

ある変数がNULLかどうか、0かどうか、空かどうかを皆さんどう判定してますか?
いま、ある配列に特定のキーがあるかどうかを
$hoge = array(10,20,30);
$val = 10;
$key = array_search($val,$hoge);
このようなスクリプトで$valが$hogeに見つからなかった場合の処理をしようと
if ($key == NULL) print "ぬるぽ";
と記述したところ、この場合、$hoge[0]に10があるわけですが、
$keyに「0」が入ってしまい、$key == NULLが真となってしまいました。

仕方ないので(strlen($key)==0)としているのですが、他にもっと直接的な判別方法があるのでしょうか?
($key===NULL)だと$valが見つからない場合でも常に偽になってしまうようです。

よろしくお願いします。
413nobodyさん:2005/07/23(土) 00:25:16 ID:???
>>412
いいよ。糞みたいな奴のスレはぶった切っても
array_searchは見つからなかったときはNULLではなくFALSEを返すので
if ($key === FALSE) print "ぬるぽ";
とすればいい。
できればPHPのリファレンスマニュアルを熟読して欲しいな。
414nobodyさん:2005/07/23(土) 00:26:45 ID:???
>>412

とりあえず、nullかどうかを判定するなら、is_null()を使うし、
関数の戻り値でfalseが返ってくる可能性があるなら
if($result === false)と型で判定するのが普通。

array_searchの戻り値がnullかどうかで判定しようとしてるけど、
PHP4.2.0以前のバージョンを使っているの?
ttp://jp.php.net/manual/ja/function.array-search.php

最近のバージョンならfalseが返ってくるから、

$key = array_search($val,$hoge);
if ($key === false) print "ぬるぽ";
とする必要がある。

415412:2005/07/23(土) 00:29:24 ID:???
>>413
レスありがとうございます。
もちろんマニュアルは読んでNULLを返すって・・・アレ?
「注意:・・・NULLを返します」のところと勘違いしてたorz。
スレ汚し失礼しました。

ところでここの「警告」の記述にある
「・・・0や""といった値を返す可能性があります。」
というのは、0はともかく""ってどういう状況なのでしょうか?
連想配列でキーを空にできるということでしょうか?
416nobodyさん:2005/07/23(土) 00:33:34 ID:???
>>415
空文字が入っている と言うこと。
417nobodyさん:2005/07/23(土) 00:34:47 ID:???
>>415
以下だったら理解できる?
$hoge = array('', '10', '20', '30');
$val = '';
$key = array_search($val,$hoge);
418412:2005/07/23(土) 00:37:22 ID:???
>>414,416
どうもありがとうございます。
ただの勘違いでした。
キーに空文字という状況がなかなか想像できないというか、
混乱しそうであまりやりたくない状況みたいですね。
419nobodyさん:2005/07/23(土) 00:38:03 ID:???
>>415

PHPは型はないとか言われてるけど、実際はあるわけですよ。
で、falseとして評価される0や""を返しますって言ってるわけね。
どういう状況で0や""を返すのかは分からんが、
これらの値もfalseと評価されると書いてある。
でも、
「この関数の返り値を調べるには ===演算子を使用してください。」
と書かれてるので、ちゃんと === falseで比較すればいい。

論理値のマニュアルも参照のこと。
ttp://jp.php.net/manual/ja/language.types.boolean.php
420412:2005/07/23(土) 00:38:42 ID:???
連続カキコスミマセン。

それって0が帰ってきませんか?>>417
0の実例を挙げていただいたのかな?
421412:2005/07/23(土) 00:58:38 ID:???
もうちょっと型を意識していろいろ試してみることにします。
どうもありがとうございました。>>419
422nobodyさん:2005/07/23(土) 01:17:21 ID:???
なんかMySQLから抽出した文字列を表示させたら変なところに「\」が出てくる・・・。
ぐぐってみたらShiftJISのせいか・・・。
magic quotes gpcをoffにしたらとりあえずおさまったけど、
こんどは必要なところにaddslashesとかやらなきゃいけないのか・・・。

今まだ勉強中なのですが、早いとこEUCなどに切り替えるべきなのでしょうか?
今まで作ったソースとかMySQLのデータはまとめて変換できるのだろうか??
423nobodyさん:2005/07/23(土) 01:24:11 ID:???
内部エンコーディングはEUCにして、出力のときにSJISこれ最強
424nobodyさん:2005/07/23(土) 01:44:11 ID:???
>>423
俺は、ソースはもちろんEUCだが、出力もPC向けの場合はEUCのまま。
だって、特に支障ないじゃん?

携帯向けの場合だけ、SJISに変換して出力してる。
まあ携帯でも最近の機種はEUCでも問題なく表示されるけどね。
425nobodyさん:2005/07/23(土) 01:59:55 ID:???
Win2000+IIS5+php4.3でのinclude()に関する質問なのですが
index.phpのソースの頭で
-----------------------
<?
$path="c:\php\includes";
include "${path}\hoge.inc";

?>
としているのですがこのエラーがでます。↓
main(c:\php\includes\hoge_init.inc):
failed to open stream: Permission denied in
C:\Inetpub\vhosts\webautomatic.info\httpdocs\index.php on line 2

ぐぐった所winにはパーミッションの概念がない、
という記載があったのですが実際にPermission deniedとなっています。
C:\Inetpub\vhosts\の他のドメインからは同じ
c:\php\includes\hoge_init.incがincludeできるのですが…。
winのパーミッションの変更方法、またはこのエラーから予想できる別の原因ありましたら教えて下さい。
426nobodyさん:2005/07/23(土) 02:00:54 ID:???
>>412 をやりたい場合、array_search() じゃなく in_array() の方が
いいんじゃないかと思った。
427nobodyさん:2005/07/23(土) 09:23:53 ID:???
>>423
Windowsでもパーミッションの概念はあるんだけど。
エクスプローラからc:\php\includesのプロパティ→セキュリティを選択して
ユーザー "IUSR_コンピュータ名" に読み取り許可を追加してみれば?
あと
$path="c:\php\includes";
include "${path}\hoge.inc";

$path="c:\\php\\includes";
include "${path}\\hoge.inc";
でないとダメだと思う。
428422:2005/07/23(土) 09:24:11 ID:???
ううう。なんか内部をEUCで出力をShiftJISにすると、その都度変換してやらなきゃいけないのか・・・。
超絶マンドクサいので全部EUCでやってみることにしよう。
dクス。>>423,424
429427:2005/07/23(土) 09:24:47 ID:???
すまねぇ。レス番ミスった。
>>423>>425ね。
430422:2005/07/23(土) 09:51:27 ID:???
ちょっと文字コードで調べてたら混乱気味なので教えてください。
あらゆる場面で文字コードをちゃんと設定しなければいけないわけですが、
・データベースにある生データの文字コード(EUCにしたほうがよさげ?)
・HTMLに出力する文字コード(ShiftJISかな?)
・フォームで受け取る文字コード(PHPにあわせるべき?)
・PHPファイル自体の文字コード(EUCに決まってるでしょ?))
以上4つに分けて意識しておけばよいのでしょうか?
たとえばEUCでHTMLを表示したとして、その中のテキストボックス等のフォームで入力される文字はやはりEUCになるのでしょうか?
それとも見る側のOSによって変わるのでしょうか?(Win&IEならShiftJISとか?)
また、データベースから抽出して表示する際に「機能」とかに「\」が付いてしまうのは、
・データベースからPHPで文字列を抽出した段階?
・PHPからHTMLを出力する段階?
どちらなのでしょうか?(後者だとなんとなく思っているのですが。)
ということは、とりあえずPHPファイルをエディタ等で全てEUCにするだけで解決するものなのか?
でもPHPファイルをEUCにしたら当然echo文の内容もEUCになるからHTMLもあわせてEUCにしないと化けるのか?
うぅ・・・わからん・・・。
431nobodyさん:2005/07/23(土) 09:59:49 ID:???
14枚の画像を、フォームで入力した数の分だけ横に並べて
数段になる物を作りたいのですが、2段目以降が1段目と同じ画像から
始ってしまいます。どこに手を加えればよいのでしょうか。ご教授ください。

$data[] = $_POST['t1'];
$data[] = $_POST['t2'];
$data[] = $_POST['t3'];

for($x=0; $x<3; $x++){
$w = 400/$data[$x];
$h = 300/$data[$x];
echo "<table><tr>";
for($a=0; $a<$data[$x]; $a++){
echo "<td><a href='img/$a.gif'>";
echo "<img src='img/$a.gif' width='$w' height='$h'>";
echo "</a></td>";
}
echo "</tr></table>";
}

432nobodyさん:2005/07/23(土) 10:03:20 ID:???
>>430
とりあえず細かいことは気にせず、全てを「EUC」「改行はLF」で統一していけ。
そんで、場面に応じて必要があれば、別のエンコードを使っていく。
どの場面で変換の必要があるのか…が分からなければ、EUCのままで問題ない。

おそらく全部EUCにするのが、最も問題が起きにくいだろう。
433nobodyさん:2005/07/23(土) 10:31:45 ID:???
>>431
問題を単純化すると、こうなる。
for($x=0; $x<3; $x++){
for($a=0; $a<$data[$x]; $a++){
// ここで、連続する数字を出す。
// 元のスクリプトだと$aなので、xのループの度に当然0に戻る。
}
}
どこまで数字を使ったかというカウンタをつければいいだけじゃないの?
434422=430:2005/07/23(土) 12:30:27 ID:???
データベースのデータの文字コードを全部変換するの結構手間取ったんだけど普通どうやってやるものなんでしょう?
alter table tbl_hoge character set eucとかだとデータそのものは変換されないみたいだし。
しかたないからphpMyAdminでEUCに変換してCSV出力→インポートっていう手間なことをやったわけですが。
直接データを変換する方法があるのかな?
435nobodyさん:2005/07/23(土) 12:50:52 ID:???
ダンプをnkfに食わせる
436age:2005/07/23(土) 14:26:43 ID:???
csvっぽい形式の "a","a","a","a","a", みたいなのを読むために作りました。
何か改善案とかありますか?
ちなみに、「"a"」内に含まれる「"」は「""」みたいな感じでエスケープしています。

<?php
$fp = fopen("log.txt");
while ( !feof($fp) ){
$EndCount = 0;
$i = 1;
fseek($fp, $FilePointt,SEEK_SET);
while ($EndCount < 2){
$FilePointt = ftell($fp);
$tmp[$i] = fread($fp, 1);
if ( feof($fp) ){ break; }
if ( $tmp[$i] == "\n" || $tmp[$i] == "\r" || $tmp[$i] == "\r\n" ){ continue; }
if ( $tmp[$i] == "\"" ){
if($EndCount == 0){ $EndCount++; $i = 1; continue; }
$i = $i + 1;
$tmp[$i] = fread($fp, 1);
while ( ($tmp[$i] == "\n" || $tmp[$i] == "\r" || $tmp[$i] == "\r\n") ){$tmp[$i] = fread($fp, 1); }
if( ($tmp[$i] == "\"") && ($tmp[$i-1] == "\"")){ continue; }
else if ( $tmp[$i] != "\"" ){ $EndCount = $EndCount + 1; }
else{}
}
else{ $i = $i + 1; }
}
for($j = 1; $j < ($i - 1); $j++){ $tmp[0] = $tmp[0] . $tmp[$j]; }
$FilePointt++;
echo $tmp[0];
}
?>
437nobodyさん:2005/07/23(土) 14:35:40 ID:???
>>436
何をしたいのかよく分からんが、fgetcsv()じゃ駄目なのか?
438age:2005/07/23(土) 14:55:50 ID:???
>>437

いえ、全然大丈夫です。
ただ、初めて間もないのでそういう関数を使わずにやってみようと思ったんです。
439nobodyさん:2005/07/23(土) 16:14:27 ID:???
リンクタグに属性をつけてphpファイルに送るって事は
出来ないんでしたっけ?

例えば
<a href="hoge.php" id=a><img src="a.gif"></a>
<a href="hoge.php" id=b><img src="b.gif"></a>
<a href="hoge.php" id=c><img src="c.gif"></a>
って感じで。
属性送るにはやはり
<form action="hoge.php" method="post">でないとダメですか?
440439:2005/07/23(土) 16:18:03 ID:???
失礼しました。無視してください。
ごめんなさいごめんなさい
441nobodyさん:2005/07/23(土) 17:12:43 ID:???
なんだかなぁ…
夏休みが始まったって感じ
442nobodyさん:2005/07/24(日) 01:35:31 ID:???
皆さんPHPでサイトを作るとき
<?php
print "<html>";
print "</html>";
?>
と全体を囲ってやるのかそれとも
<html>
<?php ?>
<?php ?>
</html>
と言ったように部分でやるのですか?
443nobodyさん:2005/07/24(日) 01:38:51 ID:???
>>442
Smartyかな。
444nobodyさん:2005/07/24(日) 01:48:59 ID:???
最初の頃 : <html><?php 〜 ?></html> // 埋め込み
次 : <?php print "<html>"; 〜 ?> // 条件によってデザインが違うページを出すために試行錯誤
その次 : <?php include('テンプレート.html'); ?> // html部分の変更にブチ切れた頃
そのまた次 : <?php テンプレートエンジン ?> // ちょっとマジメにデザインとロジックの分離を考えてみた
今この辺 : フレームワーク // ちょっと泣きそう
445nobodyさん:2005/07/24(日) 02:09:02 ID:???
デザインとロジックの分離と言うのがいまいちよく分からないんですけど、
普通にhtmlを書いてそれでphpコードをincludeするってことですか?
446nobodyさん:2005/07/24(日) 02:18:54 ID:???
>>442
<?php
include(htmlのパーツを作るもと.inc);

htmlヘッダーをつくるファンクション($title);
サイドぼっくすをつくるファンクション();
中身をインクルード



?>
って感じ。
実際はこれらを条件分岐したり、case文つかうけど。
447446:2005/07/24(日) 02:21:02 ID:???
function類とかはhtmlのパーツを作るもと.incに入ってる。
実際はもっとファイルを分けていくつもインクルードしてる。
見通しが良いし修正も楽なんでこんな感じだけど変ですかね?
448444:2005/07/24(日) 02:29:10 ID:???
include版とテンプレートエンジン版とは、テーブルを表示する時に一番違いが大きかったかな。
・include版
 テンプレート.htmlは <?=$変数 ?>ってな感じで、用意しておいた変数を置き換える。
 そのため、行列数が変動するテーブルを出力するには、1つの変数にtable全部を入れなきゃいけなかった。
 また、テーブルに色をつけたい時は、スクリプトの修正(or CSS用変数の変更)が必要だった。
・テンプレートエンジン版
 オイラの使ってたやつでは独自タグを使ってループを扱う事ができたので、
 配列をそのまま渡すだけで必要な分だけテーブルの行列が自動生成された。
 テーブルの色を変更するには、大体の場合においてhtml側の修正だけで可能。

>>445
ちょっとしたデザインの変更のために、スクリプト(ロジック)を弄らなきゃいけないかどうか。って感じです。<分離
449nobodyさん:2005/07/24(日) 02:40:12 ID:???
>>446
htmlヘッダー作るファンクションって具体的にどんなものなんですか?
宜しければ参考のために知りたいのですが・・・
450nobodyさん:2005/07/24(日) 03:53:56 ID:???
>>446
そいつは単にプレゼンテーションロジックの分割であって、
>>442が聞いてきたものとは違うと思うけど...
451nobodyさん:2005/07/24(日) 09:05:54 ID:???
結論:
「デザインは気にしない」
452nobodyさん:2005/07/24(日) 09:28:48 ID:m0On1eMV
ttp://www.google.com/search?num=100&hl=ja&safe=off&rls=GGLG%2CGGLG%3A2005-28%2CGGLG%3Aen&q=wikipedia+%E7%9F%AD%E6%AD%8C&lr=lang_ja

をクリックすると、とやると、
一番上の、wikipadiaの短歌がでますが、
リンクはURLエンコードされてますが、
下の緑部分は、「ja.wikipedia.org/wiki/短歌」と、
なってます。

これって、どうやって実現することが可能なのでしょうか?

よろしくお願いいたします。
453nobodyさん:2005/07/24(日) 09:32:55 ID:???
>>452
mod_rewrite

path_info
だな。
どっちでもできる。
とりあえず、検索すべし。
454452:2005/07/24(日) 14:00:18 ID:rmOxqcKR
>>453 さん ありがとうございます。

path_info のほうはしらべてないけどとりいそぎ・・・
--
URL「A」にアクセス(するようにみせかけて)⇒mod_rewrite⇒(実は)実質URL「B」にアクセス
で、「A」が「ja.wikipedia.org/wiki/短歌」、
「B」が「ja.wikipedia.org/wiki/%E7%9F%AD%E6%AD%8C」
ってことであってます?
455nobodyさん:2005/07/24(日) 16:15:17 ID:hO//Dl4v
php 4.4.0でAPC使えますでしょうか?
http://www.stackasterisk.jp/tech/php/apc01_01.jsp を参考にやってるのですがうまく動作しません。
http://pecl.php.net/get/APC-3.0.4.tgzをDLして tar zxvf APC-3.0.4.tgz
cd APC-3.0.4
phpize
./configure --enable-apc
make
mkdir /usr/local/lib/php/extensions
cp modules/apc.so /usr/local/lib/php/extensions/
vi php.ini
extension_dir = ./  変更→ extension_dir = /usr/local/lib/php/extensions/
↓追記
zend_extension="/usr/local/lib/php/extensions/apc.so"
apc.mode = mmap
apc.cachedir = /tmp
apc.check_compiled_source = 1
apc.check_mtime = 1

apachectl restart

apacheとphpは普通に動作してるのですが、/tmpにキャッシュされたファイルができず、apcinfo()も使えません。
apache1.3.33 php4.4.0 sentos4.1です。

手順におかしな点などありましたら指摘お願いします。
456455:2005/07/24(日) 16:16:01 ID:???
sentos4.1→centos4.1の間違いです。
457452:2005/07/24(日) 19:36:07 ID:rmOxqcKR
= >>454 ですが・・・はずしてます?
458nobodyさん:2005/07/24(日) 19:58:28 ID:???
PHPで、HTTPS鯖のデータを取得したいのですがどうすればよいのでしょうか?
HTTP接続はfsockopenで出来るのですが、HTTPSの方法が分かりません。
鯖はFreeBSD4, PHP4.4(SafeModeなので、Pearは利用できないです)です。
PerlでLWPを利用したものをPHPに移行する必要が出てしまったので、どなたかお助け下さいm(__)m
459nobodyさん:2005/07/24(日) 20:52:41 ID:???
とあるメーリングリストを運営しています。
このメーリングリストで投稿されたメールの表題の最新n件をなんらかの形で取得してページに埋め込むということを実装してみたい。
目的は、会員外のひとにもどんなやり取りがされてるのか表題だけでも見て興味を持ってもらいたいわけなのです。

これのために、一つフリーのwebメールのアカウントをとって、それでMLを受信。
そのwebメールのメール一覧を取得、ってパターン。
gmailってどうやらRSS配信出来るらしいので、gmail垢を作ってそこでMLを受信。RSSを取得ってパターン。

php以前の方法を考えてる段階なのですが、これをphpで実現するためにはどんな方法をまず採用したらよいでしょうか?
460455:2005/07/24(日) 21:18:31 ID:???
>>459
imap関数使えればpopメール読めますよ
461nobodyさん:2005/07/24(日) 23:34:00 ID:???
MYSQLから会員データを抽出し、メールを発行し途中経過(現在何件発行したか)を表示させたいのですがどのような方法がよいのでしょうか?
途中経過は更新ボタンを押して確認しようと思っています。
462nobodyさん:2005/07/24(日) 23:54:59 ID:???
途中経過って。
携帯に送る為に、時間空けてメール配布するのかな?
そうじゃなくて、普通にメール配信だけなら、途中経過も何も
ログでしか無いと思うけど
463nobodyさん:2005/07/25(月) 00:05:09 ID:???
>>462
えとまだサイト開設していないんですが、会員制のサイトで目標が2万人くらいなんですよ。
将来的なことを考えて作成してるのですけど、途中経過&終了などを数字で見れると便利なので。

前にバイトで某サイトのスタッフをしていたときのメルマガ配信システムは条件(興味のあるカテゴリ等)で会員を絞って
そこから配信を開始する感じだったのですが、配信開始のボタンを押すと

現在配信した数/総配信数
【更新ボタン】

という感じで現在の状況を把握できたのです。
自分のサイトもこんな感じのを使いたいなと思いまして。
464461:2005/07/25(月) 00:05:51 ID:???
補足:携帯じゃなくPCがターゲットです。
465nobodyさん:2005/07/25(月) 00:52:48 ID:???
>>461
PHPでやるなら現在何通目かファイルにでも出力するくらいしか思いつかない。
俺的にはPHPで30秒を超える処理ってなんか気持ち悪い。
466461:2005/07/25(月) 01:32:39 ID:???
>>465
レスありがとうございました。
ファイルにカウントしたものを出力する方法でやってみます。
どうもありがとうございました。
467nobodyさん:2005/07/25(月) 01:57:10 ID:???
>>460
php可の無料鯖なんかだとおそらく許可してない気がします
468452:2005/07/25(月) 04:03:29 ID:???
apacheすれいってきます
469nobodyさん:2005/07/25(月) 05:57:06 ID:gR3tRl1W
phpでpostgreSQLを使う場合、「pg_connect()」で
SQLひとつごとにDB接続するのが普通なんでしょうか?
「pg_pconnect()」はどのタイミングで切れるのかよく
わからないので、使いづらいのですが、こっちが一般的でしょうか?

あと、接続文字列にパスワードとかユーザ名が入ってしまうのを
避ける方法ってないでしょうか?
内部で使うものですけどサーバにアクセスできるユーザだと
プログラムのソース覗かれてIDとかばれちゃうのは避けたいので

以上、素人くさい質問ばかりですが、調べてもよくわからなかったので
回答お願いします('A`)
470nobodyさん:2005/07/25(月) 07:52:08 ID:???
>>465
大量のメールを配信しようと思ったら、実行時間が30秒じゃハナシにならんぜ。
俺は専鯖で、デフォルトのphp最大実行時間は60秒にしてある。
これをもっと長く(300秒とか)しようかとも思ってるんだけど、
それでも別に問題ないよな??
471nobodyさん:2005/07/25(月) 08:55:18 ID:???
テキストファイルのダウンロードをやってるんですが、
header('Content-Type: text/plain');
として、実際に出力されたヘッダを見ると、
Content-Type: text/plain; charset=EUC_JP
とcharsetがついちゃうんです。
これってどうやって制御したら良いでしょうか。
472nobodyさん:2005/07/25(月) 09:02:51 ID:???
WEBサーバのデファルトエンコーディング。
473nobodyさん:2005/07/25(月) 09:07:19 ID:???
>>470
気持ち悪いと言っただけで、問題ないんじゃないかと。

>>467
webメールから取ってくることもできるでしょう。
すごい大変そうだけど。

どっちもPHPでできなくはないと思いますが、PHP以外のほうがよさそうな気もします。

>>469
pg_pconnectだと接続があればそれを利用する。なければ接続する。

>サーバにアクセスできるユーザだと
>プログラムのソース覗かれてIDとかばれちゃうのは避けたいので
↑こういう状況をどうにかしたらいいのではないでしょうか?

474nobodyさん:2005/07/25(月) 11:09:00 ID:???
perlスクリプトをphpに変更しているんですが、以下の部分のPHP化が分かりません
どなたかお願いします

$PF18[0] &= ~0x80;
475nobodyさん:2005/07/25(月) 11:17:13 ID:hJtfvc56
>>473
漏れはお前の考え方が気持ち悪い。
476nobodyさん:2005/07/25(月) 11:22:36 ID:???
>>474
そのままでいいはずだけど。何かエラーが出るの?
477474:2005/07/25(月) 11:34:31 ID:???
>>476
まだ試してないんですが、このままで良かったのか・・・

ついでというかたぶん本題です
「= ~$data」の意味を教えてください
478476:2005/07/25(月) 11:49:04 ID:???
479474:2005/07/25(月) 11:56:38 ID:???
ありがとうございます('A`)
480nobodyさん:2005/07/25(月) 13:11:36 ID:???
>>395
ありがとうございます。
どうにか警告を表示させることができました。
foreachで$key=>を省略すると容赦なく警告が出るんですね。
481nobodyさん:2005/07/25(月) 13:13:18 ID:tPLQwkjK
さらに質問になってしまいますが、
PHP5にはC,C++,Java5にあるようなenum型(列挙型)は
ありますでしょうか?
あれば便利だなあと思いまして。

それとも既存の配列がそのまま列挙型として使える?
ものなのでしょうか?
ハッシュとしても使えるようですし
482nobodyさん:2005/07/25(月) 13:52:30 ID:???
PHP入門ってみんな本で勉強した?サイトでお勧めあったら教えて下さいな。
483nobodyさん:2005/07/25(月) 13:57:14 ID:???
>>481
enumねぇ・・・

foreach (array('MONDAY', 'TUESDAY', 'WEDNESDAY', ...) as $i => $name) define($name, $i);

・・・無理があるな・・・orz
っていうか「列挙型」なるものはありえないな。
だって変数に「型」自体がない。

$x = MONDAY; // $xは列挙型なつもりでも
$x = "うんこ"; // なんのエラーもなし。

結論:配列でガンガレ!(enumとは完全に別口なやり方になると思うけど)
484nobodyさん:2005/07/25(月) 15:38:13 ID:???
素直にJavaを使っておけ、と
485nobodyさん:2005/07/25(月) 17:34:01 ID:???
複数ユーザが使うページで
URLにユーザ情報を持たせるにはどうしたらいいでしょうか?
ちょうどdel.icio.usのような感じで。↓のoneとtwoがユーザ名
ttp://del.icio.us/one/
ttp://del.icio.us/two/

ユーザ登録したときにディレクトリ(one,two)を作成して
スクリプトをコピーしてもいいのですがメンテナンスが大変、というか間違っている気がする。。。
htaccessで転送をかけるとURLが変わってしまうし。

すごい初歩的なことかもしれないんですが、さっぱり解りません。
どうかよろしくお願いします。
486nobodyさん:2005/07/25(月) 19:32:09 ID:???
>485
Cookieでも使えば?
487485:2005/07/25(月) 19:47:06 ID:???
>486さん
ありがとうございます。
ユーザの特定にCookieを使うのですよね?
それで、URLの最後のディレクトリと付き合わせる。
その認証自体は ttp://del.icio.us/one/ なら
/one/index.php で行わなければいけないわけで
全ユーザに対してそのスクリプトを用意するには
やはりユーザ登録したときに元となるスクリプトをコピーして?
プログラムに変更が生じたときの対処も解らなかったのですが
ユーザがログインするたびに
/one/index.php を上書きコピーすればいいのでしょうか。。。

ほんとうに初心者なもので、意味不明だったらすみません。orz
488458:2005/07/25(月) 20:38:37 ID:???
httpsへのPOST結果の取得方法をお願いします(>_<)
GETならいろいろな方法があるのにorz
489nobodyさん:2005/07/25(月) 23:49:32 ID:???
テキストファイル「test.txt」に書かれているファイルの更新日時を取得しようと
「test.php」を以下の内容で作成しました。

--- test.txt --------------------
/tmp/hoge.dat


--- test.php --------------------
<?php
$line = file("test.txt");
$filename = "$line[0]";
echo date( 'Y/m/d (D) H:i:s', filemtime($filename) );
print "$keyword"."<br>";
?>

これを実行すると、
PHP Warning: filemtime(): Stat failed for /tmp/hoge.dat
(errno=2 - No such file or directory) in /tmp/hoge.dat
1970/01/01 (Thu)
とエラーが出て、正常に日付が取得できませんでした。

そこで上記のプログラムの2、3行目を
$filename = "/tmp/hoge.dat";
と変えて実行すると正常に日付が取得できたので、パーミッションの問題ではないと思っています。

上記の内容では何が問題なのでしょうか?
ご教授お願います。
490nobodyさん:2005/07/26(火) 00:02:31 ID:???
>>489
echo bin2hex($line[0]);
echo bin2hex("/tmp/hoge.dat");
491nobodyさん:2005/07/26(火) 07:33:50 ID:???
>>489
変数を""で囲むわけは?
492nobodyさん:2005/07/26(火) 08:52:10 ID:???
表示したPHPの出力結果をHTMLファイルとして書き出し、保存する方法を探しているのですが。
PHPでの出力を一行一行書き出していくやり方しか分かりませんでした。
何か良い方法はないでしょうか?

初心者質問ですみません。。
493nobodyさん:2005/07/26(火) 09:03:03 ID:???
ob_start()、ob_get_contents()あたりでできるんじゃないかな。
494nobodyさん:2005/07/26(火) 12:01:00 ID:???
post_max_sizeを超えた場合、$_POSTの中身は空っぽになってしまうものでしょうか?
どうやったらpost_max_sizeを超えたかどうかをスクリプト中で判断する事が出来るでしょうか?
495nobodyさん:2005/07/26(火) 12:02:33 ID:???
パラメータがあるクラスの関数を
パラメータを省略して呼び出した場合
NULLとなってくれるでしょうか?

$hoge=>Charge();

function Charge($p)
{
  echo is_null($p)?'NULL':'NON';
}

実際に何回かやってみたのですが、$pは期待通りNULLとなったのですが
PHPの仕様でNULLになっているのか偶然NULLになったのか判断できないのです。

どうぞよろしくおねがいします。
496nobodyさん:2005/07/26(火) 13:00:27 ID:???
>>495
$hoge=>Charge()が何なのか不明だが引数を省略するなら
function Charge($p=NULL)
としないと「引数が足りないエラー」になるはず。
497nobodyさん:2005/07/26(火) 13:20:21 ID:???
ありがとう
HTMLの構造上、表向きには表示されてませんでしたが
ソースを表示したらおっしゃるとおり
Warning・・・・・・・・エラーが出てました。
498nobodyさん:2005/07/26(火) 14:18:20 ID:???
サーバでのファイルの扱い方について質問があります。
以下の流れで余分な処理・追加した方がよい処理はあるでしょうか?

ロックファイルをオープン リトライ処理
ロックファイルをロック リトライ処理
目的ファイルをオープン リトライ処理
目的ファイルをロック リトライ処理
目的ファイルを処理
目的ファイルをロック解除・クローズ
ロックファイルをロック解除・クローズ・削除


リトライ処理とは、失敗した場合に時間を空けて再挑戦し、また失敗したら終了する処理です
スレ違いな気もしますが一応phpで作ってるので・・・よろしくお願いします
499nobodyさん:2005/07/26(火) 15:43:02 ID:2Byv/a8J
はてなのようにキーワードを[キーワード]みたいに囲うと
そのキーワードでグーグル検索できるようなリンクを自動的に生成したいのですが
どのようにすればよいのでしょうか?

全部教えてとは言いません
使う関数だけでも教えていただけたらと思います
よろしくお願いします
500nobodyさん:2005/07/26(火) 15:53:15 ID:???
[]でくくられて単語の前後に
mb_ereg_replaceを使って<a>タグを追加。
501nobodyさん:2005/07/26(火) 16:22:24 ID:???
>>499
urlencodeがいるので、こんな感じか
<?php
$str = '[キーワード]をググる';
echo preg_replace_callback('/\\[(.*?)\\]/', 'add_google_tag', $str);
function add_google_tag($m) {
  return '<a href="http://www.google.co.jp/search?q='
    . urlencode($m[1]) . '&hl=ja&lr=lang_ja">' . $m[1] . '</a>';
//  return '<a href="http://www.google.co.jp/search?q='
//    . urlencode($m[1]) . '&hl=ja&lr=lang_ja">' . $m[0] . '</a>';
}
?>
下側のコメントアウトしたreturnはカッコを残しておくバージョン。
502nobodyさん:2005/07/26(火) 17:40:53 ID:mEdDXXbK
皆様お知恵を拝借。配列から空の要素("")を取り除くには
どのような処理が最も単純でしょうか? お願いいたします。
503nobodyさん:2005/07/26(火) 18:34:05 ID:???
>>502

・preg_grep で「空要素で無いもの」だけを抽出
・その配列を利用する段階で「空要素」を無視
・空要素が入ってしまう様な配列を生成しない

お好きなものをどうぞ。
504502:2005/07/26(火) 18:49:59 ID:???
>>503
回答ありがとうございます。一発で配列から空の要素を
取り除いてくれるような関数はないんですね。

やっぱり3番目になると思うので、質問の前の段階から
お話しますと、文字列を mb_split で分割してるんです。
PREG_SPLIT_NO_EMPTY みたいなオプションがあれば
いいんですが、mb にはありませんよね?

ですので、先に mb_ereg_replace で空白に置換した後、
PREG_SPLIT_NO_EMPTY で行くことにします。どうも
ありがとうございました。が、もしもっと(・∀・)イイ!方法が
ありましたら、どうぞご教示願います。
505nobodyさん:2005/07/26(火) 19:30:06 ID:???
JavaScriptとphpを組み合わせてロールオーバーしたりonclickしたタイミングで
webページを静的なままphpを動作させる方法ってあるんでしょうか?
506nobodyさん:2005/07/26(火) 19:37:43 ID:???
ワケワカラン
507489:2005/07/26(火) 20:12:52 ID:???
>>490
レスありがとうございます。
最後に改行が入るんですね。
改行を消してやれば期待した通りに動作しました。

>>491
元々使用していたtest.txtにはファイル名に半角スペースを含むものがあるので
それで誤動作していたのかと思い、""で括りました。
その後、>>489のような最低限のプログラムでテストをしたため、そのままになっていました。
508nobodyさん:2005/07/26(火) 20:17:07 ID:???
>>505
夏休みだねぇ・・・
509nobodyさん:2005/07/26(火) 20:18:11 ID:???
>>505
何をしたいのかがわからん。
510nobodyさん:2005/07/26(火) 20:26:54 ID:DRNxxqTe
静的なまま動作したいんだよ!
511499:2005/07/26(火) 20:29:15 ID:???
>>500-501
ありがとうございます
思い通りの結果が得られました
512nobodyさん:2005/07/26(火) 20:37:55 ID:???
>>510
停まったまま、歩きたいんだよ!
って事?

ドラえもんにでもお願いしてください。
513nobodyさん:2005/07/26(火) 20:40:11 ID:dI24bXxa
今度うちの会社に20歳の高等専門学校卒業の、高専プログラミング大会に
出場したやつがはいることになった・・・はげしくできそうで、俺首の予感
・・・・レベル高いんだろうなきっと
514nobodyさん:2005/07/26(火) 20:44:13 ID:???
今って、そういう系の仕事副業じゃない?
え、俺?趣味です。。
515nobodyさん:2005/07/26(火) 21:43:53 ID:???
>>505 == >>510 ?

たぶん、ページの再描画なしでサーバから情報を取得したいってことか?
・データバインディング
・隠しフレーム(or iframe)にロード
・XMLDOM
あたりのことだと思う。
phpを動作させるだけなら<img>のsrcをいじるのもありかも(←ていっても邪道だな)。
そしてスレ違い気味。

: スルーしてくれ。
516nobodyさん:2005/07/26(火) 21:44:39 ID:???
>>505 == >>510 ?

たぶん、ページの再描画なしでサーバから情報を取得したいってことか?
・データバインディング
・隠しフレーム(or iframe)にロード
・XMLDOM
あたりのことだと思う。
phpを動作させるだけなら<img>のsrcをいじるのもありかも(←ていっても邪道だな)。
そしてスレ違い気味。

: スルーしてくれ。
517515 516:2005/07/26(火) 21:59:10 ID:???
スマソ、ミスった・・・
518nobodyさん:2005/07/26(火) 22:23:04 ID:???
あれだ あれ。ajaxとか言うやつ。きっとあれをやりたいんだよ。
php用のライブラリも幾つかあった気がするなぁ。
519nobodyさん:2005/07/26(火) 22:24:41 ID:DRNxxqTe
携帯の掲示板で、ログ検索機能をつけたいんですが、ソースもログもSJISなんで文字化けします。
エンコードしたり一時的にEUCに変換したりしてもうまくいきません。
なんか手軽にやる方法はないんですか?
520nobodyさん:2005/07/26(火) 22:28:29 ID:DRNxxqTe
携帯の掲示板で、ログ検索機能をつけたいんですが、ソースもログもSJISなんで文字化けします。
エンコードしたり一時的にEUCに変換したりしてもうまくいきません。
なんか手軽にやる方法はないんですか?
521nobodyさん:2005/07/26(火) 22:30:03 ID:DRNxxqTe
携帯の掲示板で、ログ検索機能をつけたいんですが、ソースもログもSJISなんで文字化けします。
エンコードしたり一時的にEUCに変換したりしてもうまくいきません。
なんか手軽にやる方法はないんですか?
522nobodyさん:2005/07/26(火) 22:32:06 ID:DRNxxqTe
携帯の掲示板で、ログ検索機能をつけたいんですが、ソースもログもSJISなんで文字化けします。
エンコードしたり一時的にEUCに変換したりしてもうまくいきません。
なんか手軽にやる方法はないんですか?あれば方法だけでも教えてください。
523nobodyさん:2005/07/26(火) 22:36:03 ID:???
onMouseover とか onClick でアマゾンのXMLを読みに行って
展開するみたいな話だろ夏休みのアフィ厨めスレ違いだ死ね
524nobodyさん:2005/07/26(火) 22:45:05 ID:???
うーん、重い。。
525nobodyさん:2005/07/26(火) 23:10:54 ID:???
この夏休みからphpの勉強を始めたリアル厨房です。

function hoge(){
$hoge="ほげ";
}
echo $hoge;
functionの中にglobal $hoge;
っていれたらオーケーになった。

あと、
functionの中に
return $hoge;
って書く場合と上記の違いってなんでしょうか?
どっちにしろglobalはないとダメみたい。スコープ?

もう一つ、functionに与える引数
function syoukai($watashi,$syokugyou){
echo $watashi . "は" . $syokugyou . "です。";
}
って書く場合の$watashi,$syokugyouの部分の変数名は、functionの外側で使ってる名前は使っちゃうとまずいのでしょうか?
526nobodyさん:2005/07/26(火) 23:45:04 ID:???
>>505
AJAXでも使えば?
527nobodyさん:2005/07/27(水) 01:11:12 ID:???
>>525
>>この夏休みからphpの勉強を始めたリアル厨房です。

勉強終えてから来い!
528nobodyさん:2005/07/27(水) 01:16:36 ID:???
厨房だったら夏休みは他にやる事があるだろうが。

筆おろしとか、筆おろしとか、筆おろしとか・・・・
529nobodyさん:2005/07/27(水) 01:40:52 ID:???
みなさん、オススメの教本はありますか?
色々なサイトを見て回ったけど全く理解出来ないorz
530nobodyさん:2005/07/27(水) 01:49:33 ID:???
>>529
お前がどの程度の知識があるのかわからんが
今日からつかえるPHPでもかえば?
531nobodyさん:2005/07/27(水) 02:45:40 ID:l/k2RuR9
携帯の掲示板で、ログ検索機能をつけたいんですが、ソースもログもSJISなんで文字化けします。
エンコードしたり一時的にEUCに変換したりしてもうまくいきません。
なんか手軽にやる方法はないんですか?あれば方法だけでも教えてください。
532503:2005/07/27(水) 03:12:16 ID:???
>>504
>ですので、先に mb_ereg_replace で空白に置換した後、

って、そんな事しなくても mb_split の段階で「mb_ereg_replace で空白に置換」
する対象を含めた区切り文字を指定すれば良いのだわ。多分出来る筈よ。
533nobodyさん:2005/07/27(水) 03:25:31 ID:???
>>531
enable-zend-multibyte
534nobodyさん:2005/07/27(水) 04:33:43 ID:???
通常の質問スレって無くなったの?
535nobodyさん:2005/07/27(水) 05:01:58 ID:???
>>534
タイトルから質問が消えてるな
一応あるw

【php】part29【php】
http://pc8.2ch.net/test/read.cgi/php/1120611474/
536nobodyさん:2005/07/27(水) 05:06:12 ID:???
>>535
ああ、それでひっかからなかったのか・・・。
サンクス。
537nobodyさん:2005/07/27(水) 06:33:37 ID:l/k2RuR9
>>533
レスありがとう。やってみます(`・ω・´)
538nobodyさん:2005/07/27(水) 06:46:02 ID:???
>>534
そこでくだらない質問したら頃す
539nobodyさん:2005/07/27(水) 07:28:46 ID:???
GDでjpegからサムネールを生成した際、imagecopyresized()を使うと
右側に黒い線が残ってしまうことがあるんですが、これを回避する方法ってあるんでしょうか?
imagecopyresampled()だとこのような線は出ないんですが、サーバがGDver2に対応していないため、
imagecopyresized()を使っています。
540531:2005/07/27(水) 07:37:22 ID:???
昨日重かったからか、めっちゃ重複してたのか、スレ汚しスマソ。携帯から見てたから今気付いたよorz
541nobodyさん:2005/07/27(水) 07:59:45 ID:???
>>539
色々な写真でimagecopyresizedしてみたけど、黒い線みたいなものは出なかったな。
思いつく限りの原因は
・引数に指定した幅などがズレてる(少数点以下の丸めなど)
・jpegに元から黒い線が入ってる(スキャナから取り込んだか何かで手作業が雑だったとか)
あたりかな。でもimagecopyresampledだと線は出ないのか・・・。
まあ解決策としては、引数のdstWを1ピクセル余分にとるとか、srcWを1ピクセル少なくとるとか試してみては?
542nobodyさん:2005/07/27(水) 10:52:23 ID:???
下の二つの処理(CGIのプロセスの立ち上げやPHPのプリコンパイルも含)にかかる時間を計測して比較したいのですが
・PHPをモジュールで動かす
・C言語のバイナリCGI
どのような方法がありますか?
RedhatLinux、Apache、PHP5.0.4、gccを使っています。
543nobodyさん:2005/07/27(水) 11:41:03 ID:???
>>485
mod_rewrite or pathinfo
544nobodyさん:2005/07/27(水) 11:55:53 ID:???
>>541
引数に+1したらいけました。
ありがとうございました。
545nobodyさん:2005/07/27(水) 12:44:07 ID:v2TCvlCU
Apache2 + PHP5をWindows2000にインストールしました。
web用のディレクトリにphpファイルを置いてブラウザで見ると
ちゃんと表示されることを確認したんですが、
それ以外のローカルフォルダに置いたphpファイルをIEに直接
放り込んでもphpが正しく表示させるにはどうしたらいいでしょうか?
546545:2005/07/27(水) 12:45:27 ID:???
> web用のディレクトリ

C:\Program Files\Apache Group\Apache2\htdocs

のことです。
547nobodyさん:2005/07/27(水) 12:48:39 ID:???
>>545
file://だとApache経由しないのでPHP動きません
http://でしか表示できないので無理です
548nobodyさん:2005/07/27(水) 12:52:49 ID:???
>>545
DocumentRootを変更したいならhttpd.conf。
そこから先はスレ違いナリ。
549545:2005/07/27(水) 13:03:09 ID:???
そうでしたか。
拡張子が.phpのファイルをブラウザで表示したら
勝手にphpが起動、というわけにはいかないのですね。
550nobodyさん:2005/07/27(水) 14:27:54 ID:???
IEはHTMLしか解釈できない。
PHPスクリプトを解釈してHTMLを吐き出しているのはサーバ。
551nobodyさん:2005/07/27(水) 16:32:17 ID:???
>>542
手軽にやりたいならabかな。
552nobodyさん:2005/07/27(水) 16:44:17 ID:???
ファイルの更新日付ってphpから自由に操作出来ないですか?
553nobodyさん:2005/07/27(水) 16:50:51 ID:???
>552
出来るよ
554nobodyさん:2005/07/27(水) 16:56:23 ID:???
>>553
どのようにやるんでしょうか?
サーバの時計を変えてcopyとか…?
555nobodyさん:2005/07/27(水) 16:58:49 ID:???
phpはスタイルシートを吐き出すことも出来るんですか?
556nobodyさん:2005/07/27(水) 17:01:30 ID:???
>>555
ファイル名を.cssにして吐き出せば出来るだろ
557nobodyさん:2005/07/27(水) 17:14:20 ID:???
>556
ビミョーな答えだね

>555
ヘッダでCSSのMIMEタイプを指定
558nobodyさん:2005/07/27(水) 17:21:40 ID:???
pukiwikiのCSS見るといいかもね
559nobodyさん:2005/07/27(水) 17:31:27 ID:???
>>551
なんと
560559:2005/07/27(水) 17:34:03 ID:???
ミスったorz

こんな便利な機能がApacheに付いていたとは!
早速試したところ、PHPが速かったりCが速かったりでした。
ありがとうございました。
561nobodyさん:2005/07/28(木) 01:28:15 ID:???
階層化したカテゴリに含まれる情報を、選択したカテゴリだけ展開して表示するようなプログラムを書いています。
ひとまず、思った通りのものが書けたのですが必然的にループを入れ子で多用することになりました。
こういったパターンの物は書いたのが初めてなのですが、$iなんかのカウント用の変数をevalで、変数名に埋め込んでループしても上書きされない変数名の変数を生成したりしてるんですが、方法としてこれは変なのでしょうか?
問題としているのは以下の点です。
ループの入れ子(さらにその中でクエリを生成してDBに検索をかけてます)
ループ内で、カウント用の変数をevalでくっつけた変数を作ることを多用。

あいまいなまま、現在まで来てしまったのですが、whileとfor、どちらでも同じことが出来るのですが簡単にいってこの二つを使い分ける基準はなんでしょうか?
また、今回のケースはどちらをつかうのが適しているでしょうか?
562nobodyさん:2005/07/28(木) 01:39:42 ID:???
>>561
SQLとリレーションDBを覚える方が適している
563nobodyさん:2005/07/28(木) 01:47:32 ID:???
>>562
もちろん、自分なりに出来る範囲ですが正規化したDBを連携させてクエリを実行しております。
自分のかいたものの中では複雑な方なんで、このスクリプトをレンタル鯖に置いたら怒られないかなとか心配してるんです。
もちろん、ローカルの鯖では快適に動いてるんですが、なんせループを入れ子にしてそこで、クエリを生成して変数を作って、というプロセスが入れ子になってるんでこんなのあり?とか不安になってしまうんですよ。
564nobodyさん:2005/07/28(木) 02:51:26 ID:/rx2yHMT
require_once()について質問ですが
この関数、Javaのimport宣言とは異なり、
PHPを呼び出したいとき、
現在のPHPファイルのディレクトリと該当する
PHPファイルのディレクトリとの位置関係を
気にしなければならない難点がありますね。

そこでディレクトリの位置関係を気にせずに
Javaのimport宣言のように
require()を使いたい各PHPファイルだけが
必要なPHPファイルときだけrequire()を呼び出すように
したいものです。

require.inc の中に必要なPHPファイルのrequire_onceを
全部書くというやりかたもありますが
それだとPHPファイルの数が増えれば増えるほど
見通しが悪くなりコードの解析が困難になります。

Javaのようにpackage(namespace)の概念がありディレクトリ名がパッケージ名
になるようなものがPHP5にもあればいいのですが
残念なことにnamespaceも不採用になったため思うようにいきません。
565564:2005/07/28(木) 02:52:09 ID:???
>564からの続き

私がやりたいことはこういうことです。
require_onceを各場所はrequire.incのようなファイルに一ヶ所に各のではなく
各phpファイルに必要なときのみ記述するように分散させたい。
例として、
  main.php がdir1/a.php, dir2/subdir1/b.phpを必要としている場合は
  そのrequire_onceをmain.phpの中に書く。

  dir1/a.phpがx.php, dir2/y.php, dir2/subdir1/b.phpを必要としている場合は
  require_onceの重複にかかわらずそのrequire_onceをmain.phpの中に書く。

環境の移行に即座に耐えられるようにするため絶対パスの変更を強いるような真似は
極力避けたいため、各require_onceのパスは相対パスにしたい。
main.phpがあるところを基準にディレクトリとしディレクトリ名は無しにしたい。


    以上を実現したいのですが可能でしょうか?


get_cwd()を使って
require_once get_cwd().'/dir1/a.php';
なんてことをやりましたがプログラムを実行するカレントディレクトリを変えると動かなかったのでやめました。
require_once getdir(get_realpath(__FILE__)).'/dir1/a.php';
も使ってみましたが、__FILE__を指す場所というのが、__FILE__を記述したファイルパスしか
指定できなかったため、この方法も断念せざるを得ませんでした。
566nobodyさん:2005/07/28(木) 03:17:47 ID:???
普通にinclude_pathでも出来ると思うけど、それがいやならこんな感じかな。
config-hostspecific.inc
define("PACKAGE_DIR","/path/to/package");

main.php
require_once(PACKAGE_DIR."dir1/x.php");
require_once(PACKAGE_DIR."dir2/.....

javaだってCLASSPATHを設定するんだし、
全自動はトラブルのもとだとおもうよ。
567nobodyさん:2005/07/28(木) 03:19:00 ID:???
>>565

include_pathを変更するという方法はどう?

-- config.php --
<?php
// config.phpが置かれているディレクトリのパスを取得
$lib_path = dirname(__FILE__);

// インクルードパスに設定するパスのリスト
$include_path_list = array(
$lib_path, // 追加するパス
ini_get('include_path'); // 既存のパス
);

// インクルードパスを変更
ini_set('include_path', implode(PATH_SEPARATOR, $include_path_list));
?>
---------------------

このconfig.phpをすべてのスクリプトの先頭で必ずrequire_onceするようにすれば、
config.phpの置かれているディレクトリから相対で指定できるようになる。

config.phpをrequireする部分はどうしても、___FILE___から相対パスを指定するか、
絶対パスを指定するなどになってしまうけど。
その変は仕方ないよね。
568nobodyさん:2005/07/28(木) 03:38:52 ID:???
>>561
まず、テーブル設計(というかSQLか)に関して。
・階層の階数が固定なら outer joinで。(SQL92だから大抵のDBで使えるかと)
・固定じゃないなら、そのDBで再帰SQLを扱えるならそれを、扱えない場合でも拡張機能をうまく使えばできる場合もあり。
 (そのDBのメーリングリストで議論されていることが多い。再帰SQL、recursive sql、親子、ツリー などをキーワードに)
・テーブル設計に手を加える。いろいろ方法があるみたいだけど、例えば
 ttp://www.sitepoint.com/article/hierarchical-data-database あたりが参考になるかな?
・2chのDB板のモデリング関係のスレで幾つか見た気がする。
この辺りのお話で分からない事があればDB板へ。

で、上のような事は一切やらないとしてPHPの話に戻ると、オイラはevalを使うのは嫌いなので再帰関数を使う。
569nobodyさん:2005/07/28(木) 03:42:12 ID:???
>>561
>ループを入れ子で多用
>カウント用の変数をevalで
このあたりで糞プログラムと断定。
普通はこんなことにはならないはず。
570nobodyさん:2005/07/28(木) 07:33:33 ID:???
>>561
ループでクエリを発行するのはあまり良い方法ではありませんね
571nobodyさん:2005/07/28(木) 10:40:18 ID:???
いまだに header() の使い方がよくわからない。
無くてもいいの?
572軟式PHP:2005/07/28(木) 10:44:33 ID:???
>>571
使わないなら無くていいじゃん。
俺はかなり必要だけど。
573nobodyさん:2005/07/28(木) 10:44:55 ID:???
>>571
よくわからない限りは無くていい。
574571:2005/07/28(木) 10:56:26 ID:???
>>572 , >>573
そんなもんかね。しばらくは触れないでおくことにする。
トンクス。
575nobodyさん:2005/07/28(木) 11:02:56 ID:???
会員制のサイトを作ろうと思う。
認証方法はどういったものがありますか?
576nobodyさん:2005/07/28(木) 11:28:27 ID:???
>>571
特に指定しなくてもphpの中の人が適当に付けてくれている。
それじゃあ対応できない時に使えばよい。
勉強したくなったら RFC 1945、RFC 2616あたりを読めばよいかと。(日本語訳は無いっぽいけどガンガレ)

>>575
質問が曖昧で本当は何を知りたいと思っているのかよく分からんが、
でっかい分類の仕方だと、1. 生パスワードと照合 2. パスワードに一方向性ハッシュを適応したものと照合 かな。
577nobodyさん:2005/07/28(木) 16:09:03 ID:???
A〜Zをばかちょんな方法を使わないで表示させるのに
for ($c = 'A'; $c <= 'Z'; $c++) {
  print $c.' ';
}
とやったのですが
なぜか
A B C ・・・ X Y Z AA AB AC ・・・ YX YY YZ
と676回ループします。

条件式をから=を取って $c < 'Z' としたら
A〜Yまでの25回のループで終わるのですが
これはナゼでしょうか?
バグですか?

PHP 4.3.10
578nobodyさん:2005/07/28(木) 16:31:26 ID:???
>>577
なんかおもしろいね。症状の説明はできないけど正しく動かすにはこう書く。
症状の説明はどなたかスパマンが現れるまで待たれよ。
for ($c = ord('A'); $c <= ord('Z'); $c++) {
 print chr($c).' ';
//printf('%c ', $c);    //こちらの記述でもOK
}
579nobodyさん:2005/07/28(木) 16:38:32 ID:???
そうですか
Cと同じ感覚でやってみたのですが
こうゆう場合はordを使わなければダメなのですね。
ordの関数がどういうものか調べてやってみます。
勉強させていただきました。
580nobodyさん:2005/07/28(木) 16:44:17 ID:???
ordってorzに見えるな。
('A')って(´Д`)に見えるな。
581nobodyさん:2005/07/28(木) 16:45:31 ID:iGAmBrlm
('A')('Z')('A')('Z')
582nobodyさん:2005/07/28(木) 17:04:32 ID:???
>>577
http://www.php.net/manual/ja/language.operators.increment.php
例 15-2.

これは知らなかった・・・orz
583nobodyさん:2005/07/28(木) 17:14:27 ID:???
>>582
漏れも知らんかった。。。まぁ普段こんなコードは書かないだろうけど。
インクリメント演算子だけ特別扱いしているんだね。

$x='A';
$x++;
print $x;       //B を表示

$x='A';
$x=$x+1;
print $x;       //1 を表示
584578:2005/07/28(木) 17:20:42 ID:???
>>582
お〜、そうだったのか。ということは>>577のコードはこんな風に書けば動くのか。
for ($c = 'A'; $c != 'AA'; $c++) {
 print $c.' ';
}
こんな記述はやっぱりやだ。。。
585軟式PHP:2005/07/28(木) 18:14:24 ID:???
なんだその書き方は…と思ったら動くのかよ。勉強不足だったorz...
586nobodyさん:2005/07/28(木) 18:21:21 ID:???
orz増加中...
587nobodyさん:2005/07/28(木) 18:48:14 ID:???
orzorzorz
588nobodyさん:2005/07/28(木) 19:49:35 ID:???
これ以外と知らないんじゃないの?
orz
589nobodyさん:2005/07/28(木) 20:08:22 ID:???
これは?→ _| ̄|◯
590nobodyさん:2005/07/28(木) 20:10:22 ID:???
じゃ、これも→OTL
591nobodyさん:2005/07/28(木) 20:19:33 ID:???
俺はこれ派
OTZ
592nobodyさん:2005/07/28(木) 20:25:50 ID:???
せっかくの良スレが荒らされていく...orz
593nobodyさん:2005/07/28(木) 20:34:17 ID:???
あーあ、ミスってソース消しちまったorz
594nobodyさん:2005/07/28(木) 20:45:50 ID:???
懺悔会場はここですか?orz
595nobodyさん:2005/07/28(木) 21:53:16 ID:iGAmBrlm
じゃあ質問しまーす!
ソース書く時に半角スペースあるじゃないですか、それってぶっちゃけ自分どこを空けるかわかんないんだけどやっぱ空けた方がいいの?てか空けないと不具合起きる?
596nobodyさん:2005/07/28(木) 22:18:08 ID:???
流れをぶった切って質問です。

シフト表のような、横軸に時間を表示して各行に誰が何時から何時まで何の作業をするか、
というグラフを
MySQLに登録したデータを下にPHPで抽出して、
TABLEタグで単位時間(10分)あたり1つのセルを区切って
作業時間に当たる部分のセルを結合・作業内容を表示する、
といったグラフを表示するスクリプトを作ったのですが、
こういうTABLEタグを使ったグラフの表示というのはお作法的に如何なものなのでしょうか?
JpGraphなどは利用したことはないのですが、それらのライブラリを使う等で画像で表示するほうがよいのでしょうか?
「テーブル厨」と言われるかもしれないのは分かっているのですが・・・。
597nobodyさん:2005/07/28(木) 22:25:21 ID:???
>>596
つ[Excel]
598nobodyさん:2005/07/28(木) 22:46:09 ID:???
>>499-501
横からスマソ
それをさページ全体に適用する方法ってない?
599nobodyさん:2005/07/28(木) 22:52:02 ID:???
>>598
/g
600596:2005/07/28(木) 23:07:28 ID:???
>>597
レスありがとうございます。
ローカルでExcelでグラフを作成してアップロードすればいい、ということでしょうか?
誰かが元データに追加・変更を加えるたびに自分でローカルで作業、というのは避けたいので
できれば常に最新のデータから自動生成するか、あるいは追加・変更時にグラフ・画像生成という形にしたいのですが。
よろしくお願いします。
601nobodyさん:2005/07/28(木) 23:25:02 ID:???
>>599
それをどこにつければいいの?(´・ω・)
602561:2005/07/28(木) 23:31:00 ID:???
>>568
色々ヒントをありがとうございます。
しかし、自分には難しく無理そうですが少しずつ、自分でそれらを使えるように頑張りたいと思います。
ところでなんでevalがお嫌いなんでしょうか?
スクリプティングのノウハウがあまりない者にとってはちょっとややこしい事を実現するにはすごく便利と感じているのですが。

>>569
すいません、確かに自分でもそう感じています。
もっと良い方法があるはずだ、とは思うのですが、その方法をきいたところで自分ですぐに出来るようになるとはとても思えないのもまた事実です。

>>570
現実的にそんな感じのスクリプトはレンタル鯖で使うと怒られたりするでしょうか?
603599:2005/07/28(木) 23:37:13 ID:???
>>601
なぁ、適当に書いちまった手前すまんが、そのままのコードで出来ないか?
試してみたが、出来るお。
604nobodyさん:2005/07/28(木) 23:50:48 ID:???
>>603
$str = 'この中にページの内容を全部ぶっこんで';

ページの一番下に↓を入れればいいってこと?
>echo preg_replace_callback('/\\[ASIN:(.*?)\\]/', 'add_google_tag', $str);
中略
>// . urlencode($m[1]) . '&hl=ja&lr=lang_ja">' . $m[0] . '</a>'; }

漏れの知識ヤバス・・・(;´・ω・)
605599:2005/07/28(木) 23:56:15 ID:???
>>604
取りあえずファイルに>>501のソースはっ付けて、
$strに使用するHTMLのソースを代入すればおけ。
606nobodyさん:2005/07/29(金) 00:02:36 ID:???
>>605
分かったお(`・ω・´)
ありがd
607nobodyさん:2005/07/29(金) 00:03:42 ID:???
>>596
ブラウザによって見え方が違ってくるので調整が結構難しいけど、
htmlのテーブルで棒グラフを表現するパターンは比較的採用されることの多い手法。
ただ、その場合グラフの再利用性が悪いのでGDなどのグラフィックライブラリが
使える環境な、ちゃんと画像生成してやった方がいい。
JpGraph使ってもいいけど、棒グラフ程度なら自分で好きな風に組んだ方が楽。
(HotScriptとかいけば、棒グラフだけ描画するライブラリとか軽いのもある)
608nobodyさん:2005/07/29(金) 07:49:53 ID:???
PHP 4 で質問であります。

$hoge = & new Hoge();

$hoge = new Hoge();

後者はメモリに Hoge オブジェクトが2つできるという解釈であっていますか?
609nobodyさん:2005/07/29(金) 08:38:39 ID:???
Hoge オブジェクトが2つできるってのは考え方としてはあってる。
だけど本当にメモリ上にできるかまではわからん。
実はPHPも裏ではもっとスマートに動いているという話も聞いたことある(真偽のほどは定かではない)。
まーPHP4では基本的に&をつけといたらそれでおkだと思われ。

つーか本当のことを知ってるor実際に測定可能orソースコード読める香具師いたら教えて。
610nobodyさん:2005/07/29(金) 13:37:32 ID:???
「基本的に&をつけ」の一言で安心しました。
つけていないソースがいくつかあったので自分の考え違いと思って質問した次第です。
どうもありがとうございました。

つけない場合は構文通り2倍メモリとるんですかね、、興味深いです。
611nobodyさん:2005/07/29(金) 14:04:20 ID:13Ftmufi
if(is_uploaded_file($_FILES['upfile']['tmp_name'])){
copy($_FILES['upfile']['tmp_name'],$copy_name;
}

としたところアップロードしたファイルが日本語名のファイルだと0バイトのデータになってしまうのですがなぜでしょう?
一つ気になったのですが、php.iniでupload_tmp_dirに/tmp/phpと指定してるのですが、アップロードを行っても/tmpにも/tmp/phpにもファイルはできません。
半角英数字のファイルだと問題なくコピーできます。
612nobodyさん:2005/07/29(金) 14:19:05 ID:???
>640
PHP4までは&をつけないとメソッドとかまで全てコピーしていたみたいよ。
613nobodyさん:2005/07/29(金) 14:52:09 ID:???
>>611
print_r($_FILES) すりゃ、さらに詳しく状況がわかると思うがどうかね?
614nobodyさん:2005/07/29(金) 15:18:15 ID:???
>611
ShiftJISだと問題が起こった気がする。
解決策も無かった気がする。
615nobodyさん:2005/07/29(金) 15:24:31 ID:???
>>612

$hoge = new Hoge();
$moge = $hoge;
$mora = & $hoge;

で、いつ消えるかはさておき、生成される Hoge オブジェクトの個数は
3個ということでおkですかね?
616nobodyさん:2005/07/29(金) 16:04:56 ID:???
>>615
class Hoge{
 var $data;
}
$hoge = new Hoge(); $hoge->data = 'hoge';
$moge = $hoge; $moge->data = 'moge';
$mora = & $hoge; $mora->data = 'mora';

printf('hoge : %s\n',$hoge->data);
printf('moge : %s\n',$moge->data);
printf('mora : %s\n',$mora->data);
617nobodyさん:2005/07/29(金) 16:25:55 ID:???
いや流れ的に、焦点は
 $hoge = new Hoge();
で、物理メモリ上に2コオブジェクトができるか否かなんだとおもう。

しかし、 $mora ってなんだかしおしおになるな。orz
618nobodyさん:2005/07/29(金) 17:07:24 ID:yP6BN9nb
MySQLスレよりこちらに誘導されてまいりました.

すみません,MySQLのデータをPHPで吐き出したいのですが,
データに$(ダラーマーク)が含まれる場合はどのようにしたらいいのでしょうか?

例:
Prizeフィールドに
$100,000
$125,000
とあった場合
PHPで
(SQL文)
$data = mysql_db_query("usrdb",$sql, $connect);
$row = mysql_fetch_array( $data );
$prizedt = $row["Prize"]
として変数を格納した後,
<td>$prizedt</td>とした場合,うまく吐き出せなく,\$prizedtでもうまくいきませんでした.

どうすればよろしいのでしょうか?
619nobodyさん:2005/07/29(金) 17:30:59 ID:???
>>618
MySQLスレでecho "<td>$prizedt</td>";でOKとレスもらっているみたいだけど
ダメなん?
<td>$prizedt</td>をどういうコードで吐き出しているんだ?
620nobodyさん:2005/07/29(金) 17:39:02 ID:???
var_dump($row)してみな。

要するにmysql_fetch_array()でどういう構造の
Arrayが返ってくるか理解汁。
621620:2005/07/29(金) 17:43:39 ID:???
いや「どういう構造のArrayが」じゃないな。「どういう値が」。
622nobodyさん:2005/07/29(金) 17:56:49 ID:???
>>618
mysql_db_query()とは、えらくまた古風な関数だな。
どんな本参考にスクリプト書いてるの?

まあそれとは別に処理の途中でビシバシとエラーが
出てるような気がするんで、デバッグ中は
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
ini_set('error_reporting', E_ALL);
とでもしとこうな。
623nobodyさん:2005/07/29(金) 18:05:52 ID:???
display_startup_errorsはスクリプト内で変えても無意味だな。
php.ini等でどぞ。
624nobodyさん:2005/07/29(金) 18:12:00 ID:???
>>623
display_startup_errorsってPHP_INI_ALLなんだけど。。。
設定は反映されるけど実際には動作しないってこと?
625618:2005/07/29(金) 18:52:48 ID:???
自己解決しました。

実際に使うデータの変数の名前がいけなかったのが原因でした。
お騒がせしました。これから精進してまいります。
626nobodyさん:2005/07/29(金) 19:22:51 ID:66TM2wnl
mb_send_mail()に渡す、メール本文の改行コードは、
CR+LFでないとダメでしょうか?
それともLFでも大丈夫でしょうか?
627nobodyさん:2005/07/29(金) 19:52:39 ID:msnOOfVb
てゆーか、ダラって言うんだ。。
628nobodyさん:2005/07/29(金) 19:55:31 ID:???
>>626
SMTPサーバー(qmail, sendmail, postfix etc)によっては
 LFでも送信してくれる「かも」しれない
 LFでないとエラーにする「かも」しれない
RFCで改行コードはCRLFと規定されているので横着せずに変換汁。
str_replace辺りで一発で変換できるでしょ。
629nobodyさん:2005/07/29(金) 20:00:38 ID:66TM2wnl
>>628
mb_send_mail()で改行コードの自動変換はしてくれないんですかね?
630nobodyさん:2005/07/29(金) 21:03:57 ID:???
フォームのダウンロードボタンを押すと
テキストエリアに挿入されているソースが
ファイルとしてダウンロード出来るプログラムを
作ろうと思っています。

ただ、これに利用される関数とかよくわかりませんので
参考サイトとかありましたら、教えていただけないでしょうか?
631nobodyさん:2005/07/29(金) 21:06:25 ID:???
>>630
入力された文字列をダウンロードさせるってことか?
それとも、テキストエリアにデフォルト値として出力したものと同じものをダウンロードさせるってこと?

ダウンロードさせるならheader関数
632630:2005/07/29(金) 21:12:00 ID:???
前者です。ちなみにContent-Dispositionでしょか?
633596:2005/07/29(金) 23:44:47 ID:???
>>607
どうもありがとうございます。
とりあえずGDに手をつけてみようかと思います。

ところで、このような画像生成を使って最新の情報を表示させたい場合には、
毎回データ読み込み→画像生成を行うものなのでしょうか?
それともデータを更新する度に画像生成・保存して通常はそちらを表示させるものなのでしょうか?
サーバーにとっては保存しておいた画像を表示するほうが負荷は低いとは思うのですが、
毎回画像生成させてもそれほど負荷がかからない、というのであればそっちもいいかなと思っています。
どなたかアドバイスお願いします。
634nobodyさん:2005/07/30(土) 01:18:21 ID:???
下記のようなソースを書いてテストしているのですが
別におかしくありませんよね?(書き方は別として。。)
なぜかサーバにアップされてもなかなか処理が実行されず
おそらく無限ループのようになっています・・。

<html>
<body>
<table border="1">
<?
$fruit=array("バナナ","りんご","みかん");
$a=0;
while($a<4){
print"<tr>";
print"<td>";
print"$fruit[$a]"."\n";
print"</td>";
print"</tr>";
$a++;
}
?>
</table>
</body>
</html>
635nobodyさん:2005/07/30(土) 01:50:54 ID:???
>>634
素人考えだが、無限ループしてる場合なら無限に書き出されるのでは?
apacheのエラーログではどうなってるの?

> print"$fruit[$a]"."\n";

の部分を
print ("xxx");
とかにしたらどうなる?
てかprintの内容を("")でくくらないのはドウなの?OKなの?
636nobodyさん:2005/07/30(土) 01:52:45 ID:???
>>634

<html>
<body>
<table border="1">
<tr><td>バナナ
</td></tr><tr><td>りんご
</td></tr><tr><td>みかん
</td></tr><tr><td>
</td></tr></table>
</body>
</html>

こういうソースを吐くな。
「<?」を「<?php」にしたら普通に動いた。
637nobodyさん:2005/07/30(土) 02:09:46 ID:???
>>633
更新頻度と参照頻度によるね。
少ない方で生成、これ常識
638nobodyさん:2005/07/30(土) 02:30:19 ID:???
>>633
そりゃ閲覧頻度とデータ更新頻度にも依るがな。
誰も閲覧しないのにデータだけ黙々と更新され続ける場合と
データは余り更新されないのに、激しく閲覧されるものとは扱いが違う。
グラフ生成の負荷なんて大したことない場合が多いから、
個人の普通のサイト程度の閲覧頻度なら、どっちでもいいと思うけど。
639634:2005/07/30(土) 02:50:11 ID:???
下記のようにすれば出来ました。皆さん、ありがとうございます。

<html>
<body>
<table border="1">
<?php
$fruit=array("バナナ","りんご","みかん");
$b= count($fruit);
$a=0;
while($a<$b){
print("<tr>"."\n");
print("<td>");
print("$fruit[$a]");
print("</td>"."\n");
print("</tr>"."\n");
$a++;
}
?>
</table>
</body>
</html>

<?を<?phpにしないといけませんでした。
通常はしなくても大丈夫だと思ったのですが。。
640初心者T:2005/07/30(土) 03:04:13 ID:1xotdcs0
よろしくお願いします。HTMLとPhpでフォームからファイル名(変数?)を
受け取って、その画像をページの任意の位置で表示させたい時、
こういう風でいいのでしょうか?
<?php
$file = $_POST['file'];
if (!$file) $file = "default.jpg";
if ($_POST['open'] && $file) {
print "<img src='./test/$file>\n";
}
?>
カレントの子のtestというディレクトリの内容のファイルを表示させたいです。
641nobodyさん:2005/07/30(土) 03:39:15 ID:???
>>640
・$_POST['file']の内容を精査しないと危ない。
・!$fileや$fileじゃなくて!isset($file)またはその逆を使う。
(ファイル名が'0'の場合の挙動を比較すること)
642nobodyさん:2005/07/30(土) 03:41:49 ID:???
isset($file)じゃなくて、isset($_POST['file'])だ。
643nobodyさん:2005/07/30(土) 03:45:17 ID:???
>>635
> print()は実際には関数では(言語構造です)ありま せん。このため、引数を括弧で括る必要はありません。
ttp://www.php.net/manual/ja/function.print.php

>>639
<? を使えるかどうかは鯖の設定次第。普段から<?php を使うようにしておけば無難かな。
ttp://www.php.net/manual/ja/language.basic-syntax.php

>>640
・$_POST['file'] が送られてこない
・$_POST['file'] に ../../ファイル名 てな感じに対象ディレクトリ外のファイルが指定される
の2点に気をつければいいかな。
644nobodyさん:2005/07/30(土) 04:24:33 ID:3Guwxl6q
http://www.mysql.com/login.php?dest=http%3A%2F%2Fwww.mysql.com%2F

このURLのlogin.phpはわかるけど、その後ろの?dest以降はどういう意味があるん?
645nobodyさん:2005/07/30(土) 05:04:44 ID:???
>>644
dest -> destination : 目的地、行き先、宛先
つーことから推測すると、login処理後に表示するページを指定していると考えられる。
実際、他のページの該当部分を見てみると そのページのURLが入ってるべ?
646nobodyさん:2005/07/30(土) 06:50:12 ID:???
画像表示に関して質問です。

フォーム→画像表示(アップロードはしない)
としたいので、表示のphpファイルで下記のようにしました。

$images=$_FILES['image']['name'];
print("<img src=\"$images\">");

しかし、ソースをみると「Array」となり、画像が表示されません。
普通にフォームから画像を選択して表示画面をprint"$image";
で表示しても画像のURLはローカルPC内のアドレスになります。
ファイル名だけ表示させたいのですが、どのようにすればいいのでしょうか?
647nobodyさん:2005/07/30(土) 07:09:47 ID:???
>>646
$imagesがArrayになるのはよく分からんけど、それならそれで print_r($images)してみれば原因が推測できるんじゃないかな。
パス名を含む文字列からファイル名を取り出すにはbasename()を使う。
648nobodyさん:2005/07/30(土) 07:16:03 ID:???
>>647
すみません、今確認したら普通に表示されました。
何が原因かは全く分かりませんが、とりあえずできました。
ありがとうございました。
649nobodyさん:2005/07/30(土) 07:32:57 ID:???
>>644
645が言ってる事が正解だと思うけど、
認証が必要なコンテンツで認証前だった場合に、一旦ログインに飛ばして
処理させた後に、戻ってくる時のリファラ代わりにそういうパラメータを
設定することがある。
650nobodyさん:2005/07/30(土) 08:16:05 ID:XEEbjr3V
explodeってムチャクチャ便利だなw

$array = explode(" ", $string);

これで$stringがスペース区切りで配列$arrayに格納されるんだよ、
ぽまいら知ってた?
651nobodyさん:2005/07/30(土) 08:22:10 ID:???
その分だと、
$string = implode(" ",$array); で、
配列$arrayがスペース区切りで$stringに格納されるのも知らなそうだな。
652nobodyさん:2005/07/30(土) 08:23:52 ID:???
>>172を読めよ初心者www
653nobodyさん:2005/07/30(土) 08:30:08 ID:???
ついでに初心者はarray_flipとarray_combineについて
勉強しておけwww
654633:2005/07/30(土) 08:54:01 ID:???
>>637,638
どうもありがとうございます。
更新頻度の方が圧倒的に低いので更新時に生成することにします。
どうもありがとうございました。
655nobodyさん:2005/07/30(土) 09:11:44 ID:???
>>654
ま、蛇足だが、そこそこの更新頻度があって対象が携帯電話とかじゃないなら、
常に最新の画像が表示される(キャッシュを使わせない)ような工夫が必要かもね。

キャッシュコントロールとかでも良いかもしれないが、
簡単なのは、画像表示ページを動的にして、
<img src="hoge.jpg?<?php echo rand(0,1000) ?>">
とかかね。
656640初心者T:2005/07/30(土) 09:41:57 ID:1xotdcs0
ありがとうございました^^
自己解決しました。646さんのように『\"』(これ)を使い、
パスのところで$file変数の前の『.』を取ったら表示されました。
print "<img src=\"./test/$file\">"; 画像の表示はでできました。
If文の中の関数はまた今度勉強します。解決すべき問題は2点でした^^
””の間は『.』は文字列の追加として使えないのですね?
また疑問が沸いてきたのですが、``に挟まれた文字のあとに$が付く場合は何を意味しているんでしょうか。
657nobodyさん:2005/07/30(土) 10:10:03 ID:???
>>640>>641-642にあるような潜在的な問題はさておき、ちゃんと動作すると思うのだが。。。
""の間は文字列になるので、文字列の追加つーのがよく分からん。
`` は実行演算子。
ttp://www.php.net/manual/ja/language.operators.execution.php
658640初心者T:2005/07/30(土) 11:17:11 ID:???
>657さん   ありがとうございます。すみません『''』(これ:シングルクォートって言うんですね^^;)
      と間違えていました(汗)。画像ファイル名を変数に選別する所で、
      『if (ereg('.jpg$', $fnm))』っていう部分が気になってしまって。。
      ごく基本的な問題なんでしょうか??括弧の中のシングルクォートは
      文字列を扱って入るためですよね?その次に『,』と変数ですね。で、
      何で変数でもなさそうなJPGの文字列の後ろに$が付いているのだろう?、と。。
      下らない質問すぎるかも、、、
      
      文字列の追加、って言うのが多分素人の表現だと思うので許してください。。
      $no_image_jpg = $path_parts["dirname"].'/'.NO_IMAGE;
      というこの[]より後ろの部分の『.』は文字の足し算をしていると思ったのですが、
      間違いなのかな。。
659nobodyさん:2005/07/30(土) 12:09:05 ID:qmDtI7sh
>>658
ereg('.jpg$', $fnm) の '.jpg$' 部分は 正規表現を表す文字列。
正規表現の説明は、このあたり。
ttp://www.php.net/manual/ja/pcre.pattern.syntax.php
正規表現スレのテンプレに正規表現の参考サイトへのリンクもあり
http://pc8.2ch.net/test/read.cgi/php/1105930285/
で、正規表現の .jpg$ が表すものは、最後がjpgで終わる文字列(ただし4文字以上)。
(拡張子jpgってことなら、'\.jpg$' が正解かなぁ。)

文字列の追加に関しては、その例の使い方であれば合ってます。(結合演算子)
660nobodyさん:2005/07/30(土) 13:05:26 ID:cE5w1Tdy
__autoload()関数の使えば
自作クラスのrequireがしやすいと聞いたのですが。
ディレクトリ毎にクラスが分かれている場合、
ディレクトリ構造毎にif文でクラス判別を分けないとうまく行かず難しいですね。
661nobodyさん:2005/07/30(土) 14:54:33 ID:???
>>660
チラシの裏に書けよ
662nobodyさん:2005/07/30(土) 16:22:35 ID:???
最近のチラシは両面刷りが多いのも知らない
馬鹿がいるな
663nobodyさん:2005/07/30(土) 16:30:23 ID:???
つ [ チラシの余白 ]
664nobodyさん:2005/07/30(土) 17:01:06 ID:???
チラシの余白より便所の(ry
665nobodyさん:2005/07/30(土) 18:04:15 ID:???
便所の(ryより2ch
666nobodyさん:2005/07/30(土) 18:17:39 ID:???
ディレクトリ内のファイル数を求める関数ってありますか??
見つからん。。。
667nobodyさん:2005/07/30(土) 18:26:48 ID:???
>>666
そのものズバリの関数は無いので、ディレクトリ関数あたりで地道に数えるしか無いと思われ。
668nobodyさん:2005/07/30(土) 18:31:06 ID:???
そうでしたか。
どうもありが?ォ
669nobodyさん:2005/07/30(土) 19:34:09 ID:hEHjC0Wz
アクセス解析を作ってます。
リンク元はリファラーで分かるとして、
ジャンプ先って分かるようになるでしょうか?
(自分のHPからどこのHPに移動したかってこと)
無理っぽい気もしますが、関数か何かあったら教えて下さい。
670nobodyさん:2005/07/30(土) 19:56:02 ID:CcH/uwPy
>>669
無理なので、リンクを貼る際に自作のime.nuのような踏み台を用意して下さい。
671nobodyさん:2005/07/30(土) 21:06:37 ID:???
何故技術書は肝心の所を書かないのか
http://pc8.2ch.net/test/read.cgi/php/1060009605/345-

にて 2ch 発の技術書企画が進行中です。
主に Web 開発・運営に付いてのノウハウが集められる予定です。
興味のある方・我こそはと思う方は一度覗いてみてください。
672nobodyさん:2005/07/30(土) 21:34:02 ID:???
>>669
できるよ。
JavaScriptで。そういう解析できるツールもあるし
673669:2005/07/30(土) 23:41:55 ID:???
>>672
ほうほうJavaScriptではそんなことも出来るのですか?
一度も使ったことないけど、そっちも少しは勉強するかな。

具体的に使用する関数名か、
その解析できるツールってのを教えて貰えませんか?
674nobodyさん:2005/07/31(日) 00:00:51 ID:???
>>673
onClickをトリガにして、リンク先のURLをロギング用スクリプトにGETで渡せ
675nobodyさん:2005/07/31(日) 00:33:20 ID:xafAdIm1
UNIXドメインソケットをfsockopenするとき
ポート番号は何番を指定すればよいのでしょうか
676675:2005/07/31(日) 00:36:13 ID:???
0でしたね マニュアルに小さく書いてありました
677nobodyさん:2005/07/31(日) 02:49:12 ID:wksgwGNX
どなたかここの質問に答えてやってくださいm(_ _"m)ペコリ
http://www.ortecweb.com/t-bbs/afi/
678nobodyさん:2005/07/31(日) 03:48:30 ID:???
>>677
そんな過疎ってるぽいところで、答えても
情報が再利用されないし、こっちに誘導したほうがいいんじゃない?
679nobodyさん:2005/07/31(日) 09:27:26 ID:???
>>674
onClickだとリンクページ等みたくURLをクリックしてジャンプでないと出来なくね?
>669は自分のページからブックマーク等で他サイトにジャンプした場合に判るようにしたいんじゃないの?
(もしできてもonClickじゃなくonUnloadでは?)
680nobodyさん:2005/07/31(日) 09:39:25 ID:???
なんとなくやり方はわかるのですが、うまくいかないので質問します。

フォームの入力項目が5つあったとします。
2(バナナ,リンゴ)しかテキストボックスに入力していないとします。
すると表示は「フルーツはバナナとリンゴです」
3(バナナ,リンゴ,メロン)しか入力していない場合は
「フルーツはバナナとリンゴとメロンです」

という表示にしたいです。ifとarrayの組み合わせで出来ると
思ったのですが、条件が多くなってしまいます。
なかなか説明しづらいのですが、ヒントはありますでしょうか?
681nobodyさん:2005/07/31(日) 10:06:08 ID:???
フルーツの配列用意して入力内容との比較に使う。
合致する場合は適当な配列に格納するようにして
空っぽでない場合に限りその配列を出力するようにすればいい。

こんな感じではどうでしょう。
682nobodyさん:2005/07/31(日) 10:12:09 ID:???
>>680
$aryName = array("バナナ","リンゴ","メロン");
$names = implode("と",$aryName);
print("フルーツは".$names."です");
683nobodyさん:2005/07/31(日) 10:49:49 ID:???
テキストボックスに["test","hoge"]
と入れて送信すると
\"test\",\"hoge\"となり、"に\が付くのですが、
どうしたら付かないように出来るのでしょうか?
684nobodyさん:2005/07/31(日) 10:58:59 ID:???
>>683
magic_quotes_gpc = Off
ちょっとは自分で調べる癖をつけないと。。。
685nobodyさん:2005/07/31(日) 11:16:20 ID:???
$a['name'][0] = hoge という多重配列があって、$a は可変で、様々な名前になっています。

これを、$name = hoge にしたいのですが、どうやって処理するのが効率的な抽出方法で
しょうか?
686nobodyさん:2005/07/31(日) 12:06:48 ID:???
>>685
意味がよく判らないな。
とりあえず、自分の考えで書いたソースを貼ってみ。
そのほうが回答は得られやすい。
687nobodyさん:2005/07/31(日) 12:12:36 ID:???
>>685
自分で書いてみたけど効率的でないっていうことなん?
効率的の意味(実行速度 or コード量 or 使用メモリ量 etc)もよく判らない。
あと、
$a['name'][0] = hoge
$a['name'][1] = hoge1
とあった場合はどうすればいいの?
688nobodyさん:2005/07/31(日) 15:22:06 ID:UMC+uCHN
$valが配列か、普通の変数かを簡単に区別する方法はないでしょうか?
689nobodyさん:2005/07/31(日) 15:26:11 ID:???
>>633
is_array
690nobodyさん:2005/07/31(日) 17:19:30 ID:???
質問です。
php4.4.0が出ているのに今気づいたのですが、この話題はどこですればいいでしょうか?

【PHP】くだらねぇ質問はここに書き込みやがれpart7
http://pc8.2ch.net/test/read.cgi/php/1121100429/

【php】part29【php】
http://pc8.2ch.net/test/read.cgi/php/1120611474/

ここの2つには無いようです。
691nobodyさん:2005/07/31(日) 17:28:50 ID:???
質問なら その2つのスレのどっちかで、
新ver.キター ウヒョー ノマノマ(ry なら、フジモト@PHPマスターを讃えるスレ でフッチー乙〜 ってのがいいかと。
692690:2005/07/31(日) 17:40:29 ID:???
>>691
レスありがとうございます。

フジモト@PHPマスターを讃えるスレ
http://pc8.2ch.net/test/read.cgi/php/1029342427/

このスレですね。

7/11以降の書き込み3、、、

googleでコマメに検索してみる事にします。
ありがとうございました。
693nobodyさん:2005/07/31(日) 18:22:02 ID:???
Googleで検索って何がしたいのさ。
694nobodyさん:2005/07/31(日) 20:00:56 ID:???
で、結局PHPの入門はどんな書籍を買えば良いのよ?
初心者ってリファレンス買うと失敗しますよねw?
695nobodyさん:2005/07/31(日) 20:17:47 ID:tE006mzP
696nobodyさん:2005/07/31(日) 21:33:26 ID:???
GETで変数をphpに渡したいんだけど、
http://〜〜/xxx.php?2ch
といった感じで値だけで渡した場合、どうやって受け取れば良いでしょうか?
697nobodyさん:2005/07/31(日) 21:45:33 ID:???
<?php phpinfo(); ?>

なページで確かめれ。
698nobodyさん:2005/07/31(日) 22:21:22 ID:WZp9m1Ky
str_replaceで使う正規表現の"\r"って何?
699nobodyさん:2005/07/31(日) 22:26:23 ID:???
str_replaceで正規表現は使えませんが。
700nobodyさん:2005/07/31(日) 22:40:39 ID:???
>>696
QUERY_STRING
701nobodyさん:2005/07/31(日) 22:55:34 ID:???
>>697,700
できました。ありがとうございます。
$_GETで取得しようとしてました。
702nobodyさん:2005/07/31(日) 23:30:19 ID:???
<img src="./hogehoge.png" alt="hogehoge" />
って飛んできたら
<img src="./hogehoge.png" alt="hogehoge" width="88" height="31" />
ってな風に、画像のwidth , height を取得してタグを適宜変換してくれるようにしたいのだが、どうしたものか全くわからん。
703nobodyさん:2005/07/31(日) 23:52:01 ID:???
やりたいことがさっぱりわからん
704nobodyさん:2005/07/31(日) 23:56:07 ID:???
>>702
どっからどこに飛んでくるんだ?
705nobodyさん:2005/07/31(日) 23:59:31 ID:???
>>702
たぶんこんな感じのことかな?

<?php
$src = './hogehoge.png';
$alt = 'hogehoge';
list($width, $height) = getImageSize($src);
?>
<img src="<?=$src?>" alt="<?=$alt?>" width="<?=$width?>" height="<?=$height?>" />

はずしてたらスマソ
706702:2005/08/01(月) 00:11:11 ID:???
説明不足スマソ。
だが、 >>705 の説明がかなり的確。dクス。
707nobodyさん:2005/08/01(月) 01:47:04 ID:???
すごい無駄なことするんだな
708nobodyさん:2005/08/01(月) 02:02:48 ID:???
>>707
誰に言ってんの?
709nobodyさん:2005/08/01(月) 02:39:23 ID:???
受け取った$_GET['hoge']の値を受け取った後でスクリプトの中で別の値で上書きしちゃうとかってありでしょうか?
これをやると処理が非常に簡単になるんですが・・・
スパーグローバルを勝手にいじるってことの良い悪いがわかりません。
710nobodyさん:2005/08/01(月) 03:03:21 ID:???
>>709
あり
711nobodyさん:2005/08/01(月) 03:59:17 ID:???
>>710
いや、ないだろ?
712nobodyさん:2005/08/01(月) 04:15:02 ID:???
単なる変数だし、いいんじゃないの?
713nobodyさん:2005/08/01(月) 06:13:40 ID:???
>>712
そういう変なことやられると、引き継いだ奴が苦労するんだよ
今は個人でも変な癖はつけられると困る
714nobodyさん:2005/08/01(月) 06:21:03 ID:???
>これをやると処理が非常に簡単になるんですが・・・
この時点で結構アイタタなソースのような希ガス。
根本的に作りが変なのでは。。。
715nobodyさん:2005/08/01(月) 06:50:03 ID:KP4xPzSt
定数だと思うべし
716nobodyさん:2005/08/01(月) 07:43:23 ID:???
>>705
list( , , , $size) = getImageSize($src);
?>
<img src="<?=$src?>" alt="<?=$alt?>" <?=$size?> />
717nobodyさん:2005/08/01(月) 10:05:10 ID:???
>>708
702に対してに決まってるだろ文盲
718nobodyさん:2005/08/01(月) 10:15:05 ID:???
>>707
俺は無駄ではないと思うが。
指定しないと表示が遅くなるし、読み込み中にレイアウトが崩れる。
719nobodyさん:2005/08/01(月) 10:24:47 ID:???

━━━━━━━━━━━━━━━俺様用しおり━━━━━━━━━━━━━━━
720nobodyさん:2005/08/01(月) 11:06:43 ID:???
いや、詩織は漏れの物だから
721nobodyさん:2005/08/01(月) 13:19:35 ID:???
マニュアルが新しくなってたんでchmファイルをダウンロードしたんだけど前回同様キーワードが文字化けします。
誰か文字化けしないchm作って
くれないか
722nobodyさん:2005/08/01(月) 13:23:31 ID:???
723nobodyさん:2005/08/01(月) 13:46:58 ID:???
GDで画像に文字列を描画する際に文字列を特定の範囲内でセンタリングする方法ってありますか?
724nobodyさん:2005/08/01(月) 13:51:13 ID:???
>723
画角から自分で計算汁
725723:2005/08/01(月) 14:05:43 ID:???
>>724
やはり自分でやるしかなさそうですね。
文字列はいろいろ変わるのでその都度自動計算させる必要があるのですが、
計算の仕方に今ひとつ自信がありません。
imagettftextを使っているのですが、
単純に「全角の横幅=指定したサイズ」「半角=全角の半分」「文字間隔=1px」と考えていいのでしょうか?
フォントによっても変わりそうだし、どうしたものか・・・。
726nobodyさん:2005/08/01(月) 14:40:44 ID:???
>>725
つ [imagettfbbox]
727nobodyさん:2005/08/01(月) 15:23:45 ID:moKfjlj6
コマンドライン用のスクリプトを「php -l xxx.php」でチェックしたら以下のエラーが出ました。
変数周りは確認しましたが$の付け忘れや$のみなどはありません。
何が原因なのでしょうか?(linux+PHP 5.0.4(CLI)使用)

Parse error: parse error, unexpected $ in xxx.php on line 110
Errors parsing xxx.php

なお110行目はEOFです。
 108: ?>
 109: [改行のみ]
 110: [EOF]
728723:2005/08/01(月) 16:13:43 ID:???
>>726
自動計算ができるみたいですね。
かなり便利そうなので試してみます。
どうもありがとうございました。
729727:2005/08/01(月) 16:30:01 ID:???
すみません。解決しました。
730nobodyさん:2005/08/01(月) 16:30:56 ID:???
>>722
最初出来なかったけどファイル名のH:/phpdoc/ja/を削除してやったら出来ました。
情報有賀と
731nobodyさん:2005/08/01(月) 18:32:41 ID:???
>>713
「変なこと」か?ならば何故仕様上
書き換えできないものにしていない>PHP

いや俺も個人的にはやらないけど、書き換わってる可能性も
含めて他人のコードは読んでるよ。実際結構書ける人でも
そういうコードもあるし。
732nobodyさん:2005/08/01(月) 18:36:17 ID:???
>>731
PHPの仕様は信用ならないからな
733nobodyさん:2005/08/01(月) 18:39:01 ID:???
出来ること=変じゃない

が成り立つならこの世の中には変なモノは一切存在しえないよ
734nobodyさん:2005/08/01(月) 19:00:37 ID:???
クライアントがクッキーを拒否しているかを
調べる方法があったように記憶しているのですが
思ったのですが、どうすればいいんでしょうか?
735nobodyさん:2005/08/01(月) 19:07:49 ID:???
$sql = "select * from hoge;";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)){

大抵の場合、ここ(mysql_fetch_arrayのループ内)で、$row['hage']という形で値を取り出しますが
mysql_fetch_arrayのループより、後ろでこの値を使いたい場合はどうしたらよいのでしょうか?

$atode['a'] = $row['a'];
$atode['b'] = $row['b'];
$atode['c'] = $row['c'];
みたいにループ内で別の配列に入れておいて
}

ループを出てから
$atode['a'] 、$atode['b']、$atode['c']を使えば良いみたいですが、配列を添字を保ったまま別の配列に入れてしまう方法(いちいち配列の数の分書かなくても)方法ってあるのでしょうか?
736nobodyさん:2005/08/01(月) 19:13:08 ID:???
>>714
あ、そういうのやっちゃってました。
if(!$_GET['mode']){$_GET['mode]='main';}とかって。
逝けないことだったんですか。
$_GET['mode']でcase文使って分岐させるのに、初期化の意味も込めて上記のように書いてたんですが。
737nobodyさん:2005/08/01(月) 19:18:28 ID:???
>>734
全くゼロの状態でクッキーの可否を確認する方法は無いような気がする。
チェックしたいページの前にクッキーを食わせるダミーHTMLを置いて本命ページで食ってるかチェックするとかはどう?
JavaScript使えるならwindow.navigator.cookieEnabledでチェックできるみたいだけど(ブラウザの制限不明)。
738nobodyさん:2005/08/01(月) 19:35:16 ID:???
>>735
1レコードだけなら
 ループ内で $atode = $row;
 ループ外で $atode['a'];
全レコードなら
 ループ内で $atode[] = $row;
 ループ外で $atode[レコード]['a'];

でも、ループ外でレコードの内容が必要なケースってなんなんだろう。
ループ内で処理できんのかのぉ。
739nobodyさん:2005/08/01(月) 19:36:12 ID:???
>>735
ループ後 $atode = $row でいけると思う。ってか$rowをそのまま使ってもいいんじゃないの?
740nobodyさん:2005/08/01(月) 19:54:11 ID:IMj74JwV
>>737
>全くゼロの状態でクッキーの可否を確認する方法は無いような気がする。
そうですか。Javascriptと勘違いしてたかも。
>チェックしたいページの前にクッキーを食わせるダミーHTMLを置いて本命ページで食ってるかチェックするとかはどう?
Javascriptは使わないポリシーなので検討してみます。
蟻10
741nobodyさん:2005/08/01(月) 19:59:59 ID:???
>>736
ソースのあちらこちらで変更していないであれば、いいんでないかい。
漏れも含めて多分、グローバル変数である$_GETを「あちらこちら」で
書き換えられるとトラブル時に追いかけづらいから嫌悪感があるんだろうと思う。
個人的には$_GET等のスーパーグローバル変数は参照専用のほうが心理的にはありがたいんだけどね。

ちなみにその例であれば
 switch (isset($_GET['mode']) ? $_GET['mode'] : 'main') {
  case 'main':
   //main または省略時の処理
 }
でいいのではないかと。
742nobodyさん:2005/08/01(月) 20:12:58 ID:???
>>741
それならdefault使えばいいんじゃないか?
743nobodyさん:2005/08/01(月) 20:13:31 ID:???
こんなことをしているんですが、もっと簡単な書き方はありませんか?

function serch ($foo) {
foreach ($foo as $key1 => $key2) {
if (! is_array($foo[$key1])) {
$foo[$key1] = htmlspecialchars(mb_convert_encoding($key2,"EUC-JP","UTF-8"));
continue ;
}
else {
foreach ($key2 as $key3 => $key4) {
if (! is_array($foo[$key1][$key3])) {
$foo[$key1][$key3] = htmlspecialchars(mb_convert_encoding($key4,"EUC-JP","UTF-8"));
continue ;
}
else {
foreach ($key4 as $key5 => $key6) {
$foo[$key1][$key3][$key5] = htmlspecialchars(mb_convert_encoding($key6,"EUC-JP","UTF-8"));
}
}
}
}
}
return $foo;
}
744nobodyさん:2005/08/01(月) 20:39:48 ID:???
>>742
無指定(設計動作)と、よく判らん値を指定してきた
変なパターンは別にさせたいときもあるし。
745nobodyさん:2005/08/01(月) 20:52:46 ID:cnoIwIPs
>>743
テストしてないけどリカーシブコールを使えばいいような希ガス。
元のコードをざっとしか見ていないんで間違っていたらスマソ。

function serch ($foo) {
 foreach ($foo as $key1 => $key2) {
  if (! is_array($foo[$key1])) {
   $foo[$key1] = htmlspecialchars(mb_convert_encoding($key2,"EUC-JP","UTF-8"));
  } else {
   $foo[$key1] = serch($key2);
  }
 }

 return $foo;
}
746nobodyさん:2005/08/01(月) 22:20:03 ID:???
>>738
ありがとうございます。まさに知りたい事はそれでした。
いちいち書かなくても添字(キー)がちゃんと渡されるんですね。いままでなんて面倒な事をしてたんだorz
今回必要だったのは1レコードしかヒットし得ないクエリだったのですが、複数ヒットした場合の例も試してみました。
ループ内で $atode[] = $row;
ループ外で $atode[レコード?嫋['a'];
この場合、レコード?宸フところには、ループの回数(もちろん0から)が入る、ということで良い訳ですよね?(一応動作させてみましたけど念のため聞く。)

>ループ外でレコードの内容が必要なケースってなんなんだろう。
ループの前後にテーブルやリストタグを書くのがいやで、すっきりと書きたいと思ってた次第です。ただそれだけの事なんですが。

>>739
ループ閉じた後はダメじゃないですか?

>>741
自分でも解らなくなるので、もちろん最小限にしてます。値が無いときに初期値を与えるとか、その程度です。

>>744
そうそう。そんな感じです。エラーはエラー、値がないと言うのは、想定内のことなんで。
747nobodyさん:2005/08/01(月) 22:34:31 ID:???
ブログのトラックバック機能を作っています。

受信は問題なくできるのですが、送信が全くうまくできません。
ただ、自分の利用しているサーバ内であれば
フリーブログなどと送受信出来るので、送信機能には
問題ないのかも?っと思っています。

ping送信するに辺り、何か設定が必要なのでしょうか?
(php.ini的に)
748738:2005/08/01(月) 23:48:09 ID:???
>>746
ループの回数という表現に違和感あるけど、多分あってる。
0〜レコード数(ループの回数) - 1 の値ね。希望通り動作したのなら大丈夫かと。

>ループの前後にテーブルやリストタグを書くのがいやで、すっきりと書きたいと思ってた次第です。ただそれだけの事なんですが。
ふむふむ。
確かに漏れもそう書くな。ただループ内でデータをHTML化して文字列に代入してしまうから
オマイさんのやりたかったことがピンとこなかったわ。まぁ人それぞれなので参考まで。

$optionhtml = '';

while ($row = mysql_fetch_array($result)){
 $optionhtml .= sprintf('<option value="%d">%s', $row['id'], $row['data']);
}

print <<<EOD
<select name="xxx">
${optionhtml}
</select>
EOD;
749nobodyさん:2005/08/02(火) 00:40:44 ID:???
>>748
>ループの回数という表現
変な言い方でした。sqlのヒットしたレコードの1件目が[0]2件目が[1]と、こういう意味です。
示していただいた例は、漏れにはちょっと難しすぎました。が、頑張って解読してみます。
ちょっと話はそれますが、phpのスクリプトでDBと連動させて吐き出したhtmlのソース、みなさんは綺麗さとか気にしますか?
漏れは、htmlばかりずっと書いてたんで、吐き出されたソースも綺麗にインデントのレベルがそろうように書いてます。ばからしいと思いつつ。
750739:2005/08/02(火) 01:00:42 ID:???
>>746
DBの取得じゃないけどこれ↓だとループ後でもいける。
多分やってることは一緒だと思うので。

$a = array(1,2,3,4,5,6,7,8,9);

$cnt = count($a);
for($i = 0; $i <$cnt; $i++){
  $row["test".$i] = $a[$i];
  print($row["test".$i] ."\n");
}

$atode = $row;

$cnt = count($atode);
for($i = 0; $i <$cnt; $i++){
  print($atode["test".$i]."\n");
}
751nobodyさん:2005/08/02(火) 02:44:27 ID:???
>>747
よくわからんが、オープンソースのを参考にするんじゃだめなのか?
ダメならここで聞いて作るのもダメな気がするがそれはいいの?
752nobodyさん:2005/08/02(火) 06:08:14 ID:???
if (ereg("[0-9]{8}",$aaa)==false){
//エラー処理
}
$aaaが半角数字8文字でないときにエラー処理したいんだがうまくいかない
8文字以下ならエラー処理できるが8文字以上ならとおる・・・
なんか間違ってる?
753nobodyさん:2005/08/02(火) 06:34:12 ID:???
^と$
754747:2005/08/02(火) 06:54:45 ID:???
>>751
参考にしています。ただ、外部に送信だけがなぜか出来ません。
ですので、サーバ的な問題があるのかと思い、
質問させていただきました。
755nobodyさん:2005/08/02(火) 10:56:22 ID:pypKKfs6
初心者です。
画像のアップロードを含む個人情報登録画面を作ってます。

入力画面(データ入力)→確認画面(OKか確認のみ)→DB登録画面(insert文実行)

と遷移していく中で、入力画面からinput type="file"で画像を選択して
アップしたいんですが、move_uploaded_fileで渡すパラメータ($_FILESの中身)
って、hiddenか何かで持てないですかね?
そうじゃないと、DB登録と同じタイミングで画像をアップできなくて。
今は、確認画面で画像を実際にアップ、DB登録エラーなら画像を削除とか
面倒なことを考えています。
しかも、確認画面から戻るときも画像を消さないといけないし・・・。
似た処理を作った方教えてください。
ちなみにDBはMySQLです。
756nobodyさん:2005/08/02(火) 11:08:44 ID:???
>>755
無理
757nobodyさん:2005/08/02(火) 11:15:37 ID:???
>>755
アップロード時点でテンポラリーに入ってる訳だから、
それが消えるまでの間にDBのINSERT掛ければ良いと思うが?
成功すればmove_uploaded_fileで格納。
類推しにくいテンポラリー名だとしてもHIDDENは止めれ。
SESSIONで持っとけ。

あと確認画面でアップロードした画像はそのままで、テキストだけ
訂正したい場合の「やり直し」もモードに入れといたら?
758nobodyさん:2005/08/02(火) 11:16:37 ID:???
やっぱムリすか・・・
こういうもの作ってる人いると思うんだけどどうやってるんだろう?
やっぱ上で書いた方法なのかな。
ヤフオクとかもそういう動き(あっちはJavaだが)してるけど、
効率のいい方法は何かないものか・・・
759757:2005/08/02(火) 11:17:03 ID:???
>確認画面から戻るときも画像を消さないといけない
これが要件なら仕方ないな。
760nobodyさん:2005/08/02(火) 11:18:39 ID:???
>>755
input type="file"がなぜvalue値を指定できないようになっているのかを考えろ
それにPHP4から$_FILESで得られる名前はファイル名のみでファイルパスは含まれなくなったし
761nobodyさん:2005/08/02(火) 11:21:34 ID:???
画像のアップロードは一番最後にする
762755:2005/08/02(火) 11:25:12 ID:???
>>757
レスどうもです。
やっぱSESSIONのほうが安全ですかね。
セッションは仕様としてやらないって方向だったんですが
(そこまでのシステムじゃないだろうってことで)
提案してみます。

>あと確認画面でアップロードした画像はそのままで、テキストだけ
>訂正したい場合の「やり直し」もモードに入れといたら?

モード追加は厳しそうです。決断権あんまりないもので・・・orz
入力画面に戻るたびに画像は再度指定し直すって方法でいこうと思ってます。
763755:2005/08/02(火) 11:31:52 ID:???
>>757
そうじゃないと、画像だけアップされてDBにデータの無いものは
なにも関連のないゴミ画像として残りますよね。
トランザクション成功時のみアップされればいいんですが・・・。

>>760
クロスサイトスクリプト対策、ですか?
すんませんイマイチ判ってないです。

>>761
確認画面で画像をアップ、ってことですか?
それはチト仕様上厳しいです。

厨な回答してたらごめんなさい。
764nobodyさん:2005/08/02(火) 11:45:31 ID:???
全部の登録が完了してから、改めて画像アップさせりゃいいものを…

>それはチト仕様上厳しいです。

それは仕様が糞なんでは?
765757:2005/08/02(火) 12:02:46 ID:???
うーん、マニュアルより
>移動または名前の変更が行われていない場合、リクエストの
>終了時にそのファイルはテンポラリディレクトリから削除されます。
俺書いたプログラムでアップロードを受けるスクリプト以外でも
難なく取れてたような...ゴミ処理は自動でもしてたみたいだけど。
766nobodyさん:2005/08/02(火) 12:08:34 ID:???
>>755
確認画面で画像を表示する場合は、大体こんな処理をしてるのが多いんジャマイカ?
1. 入力画面 - input type="file"
2. 確認画面 - move_uploaded_fileで一時ファイルとしてどっかに保存。
 画像表示(<img>)にもこの一時ファイルを使う。hidden(or session)で一時ファイル名を保持。
3. 登録画面 - 一時ファイルを正式ファイルに変更(変名とか移動とか)。DBに登録。

処理中断や入力し直しで残った一時ファイルは、定期的に削除。(cronやら、手動やら)

一時ファイルを作りたくなかったら、画像データそのものをhiddenに仕込むなり
sessionに仕込むなりするしか無いと思われ。
767nobodyさん:2005/08/02(火) 12:10:17 ID:Svt/6T9+
PHP+MySQL
MySQLに、2つのテーブルがあり、IDというフィールドをキーにしてリレーションをします。

テーブル1:ID、category
テーブル2:ID、name

この様な場合に、テーブル1のcategoryに対するテーブル2nameを全て列挙したいのですが、
どのようなクエリとPHPを書くのが一般的なのでしょうか。

いま考えているのは、
SELECT name FROM テーブル1 WHERE ID=○○
のようなクエリ自体をテーブル1のレコード数ループさせながらprintするというものなのですが、
あまり良い方法では無いような気がします。
768767:2005/08/02(火) 12:11:38 ID:Svt/6T9+
追記です。

表示結果は以下の様にしたいです。

カテゴリー1
 名前
 名前
 名前
カテゴリー2
 名前
 名前
 名前
  ・
  ・
  ・
769757:2005/08/02(火) 12:12:19 ID:???
ごめん、やっぱりPHPの仕様に合わせて確認表示時に
アプリ自前のテンポラリーに移動してたわ。mtimeを目安に自前でgcも。
>>757>>765は嘘。
んで、テキスト関係の登録と同時に自前のテンポラリーから正規のところに移動。
(確認→訂正時には自前のテンポラリーからは削除しない。gcか正規登録時に削除するのみ)

770755:2005/08/02(火) 12:20:20 ID:???
次の質問来てるとこすみません。

>>769は、つまり>>766と同じような仕様ということですよね?

つまり
確認時に画像アップ(自前の一時ディレクトリに)、DB登録時に一時ディレクトリから移動
訂正時の画像はそのタイミングでは消えない、と。

一時ディレクトリの画像は定期的に消そうと思います。
この仕様でやってみます。ありがとうございました。
771nobodyさん:2005/08/02(火) 12:24:24 ID:???
>>767
DB板の方がいいと思うんだが、、、
つ [ SQL 結合 ]
772767:2005/08/02(火) 12:27:47 ID:Svt/6T9+
すいません。
2chビギナーで、DB板というのがあるんですね。。。
マルチポストになりそうですが、行ってきます。
773nobodyさん:2005/08/02(火) 12:31:07 ID:???
いや、DB板にきても、
つ [ SQL 結合 ]
とレスしちゃいますが。。。
774nobodyさん:2005/08/02(火) 12:37:37 ID:???
>>767
SELECT category, name from テーブル1, テーブル2 where テーブル1.ID = テーブル2.ID
775nobodyさん:2005/08/02(火) 12:46:50 ID:???
>>767
お前リレーションがわかってないだろ
776767:2005/08/02(火) 13:15:53 ID:Svt/6T9+
>774
 ありがとうございます。
この結果を768の様に表示したいんです。

>775
リレーションって何ですか?
わかっている人の説明が聞きたい。
777nobodyさん:2005/08/02(火) 13:19:26 ID:???
>>776
あらら。こちらのスレとマルチだったのね。MySQLスレの方にレスしちまった。
MySQLスレの106を確認よろ。
778nobodyさん:2005/08/02(火) 13:48:58 ID:???
>>776
キーフィールドを使って複数のテーブルをいろいろ(LEFT RIGHT INNER OUTER)と簡単に結合(JOIN)できるのがリレーショナルデータベースの利点
779nobodyさん:2005/08/02(火) 15:47:21 ID:???
Mon Aug 1 00:00:00 2005 という文字列から、
2005/08/01 という文字列を返してくれるような
便利な関数はありませんか?
780743:2005/08/02(火) 15:58:18 ID:???
>>745
ありがとうございました。
期待した結果となりました。

非常に参考になりました。
781nobodyさん:2005/08/02(火) 16:01:46 ID:???
>>779
この手の質問って定期的にあるな。
PHPマニュアルの日付関連の辺りを読んで、色々やってみりゃいいのに。

$day = date('Y/m/d', strtotime('Mon Aug 1 00:00:00 2005'));
782nobodyさん:2005/08/02(火) 16:11:11 ID:???
>>779
date('Y/m/d',strtotime ("Mon Aug 1 00:00:00 2005"))
んでも、そんな不思議文字列使うよりは、タイムスタンプに統一した方がいいんでないの?
たぶんDBからの取得データだと思うから、SQLやDBの設定あたりで解決するほうがよいかと。
783nobodyさん:2005/08/02(火) 16:37:35 ID:???
webArenaでpear使ってる人いる?
784nobodyさん:2005/08/02(火) 17:13:19 ID:???
PHPとMySQLで登録ユーザーのみが閲覧・入力できるサイトを作っているのですが、
こういう場合にMySQLでは全てのユーザーについてそれぞれアカウントを作る必要があるのでしょうか?
それとも管理に必要なアカウントを除いて、一般ユーザー用のアカウントは一つだけ作って
それを使いまわせばよいのでしょうか?
後でログを確認するときなどに誰がどのような作業を行ったか分かるようにしたいのですが、
これはApache等のアプリケーション側でログを取るべきなのでしょうか?
よろしくお願いします。
785nobodyさん:2005/08/02(火) 17:42:10 ID:???
include 'http://www.sample.com/sample.cgi?mode=test&code=a';
と同様のことを、httpを経由せずにしたい、
( =cgiにパラメータを渡して、出力テキストを取り込みたい)
のですが、方法がよくわかりません。ご教示ください。
よろしくお願いします。

なお、phpとcgiは同じディレクトリ内にあります。
786nobodyさん:2005/08/02(火) 18:09:35 ID:???
>>785
httpを使わないとなると、コマンドラインで実行するしか無いねぇ。
phpでそれをするには、マニュアルのプログラム実行関数あたりを参照。
んでも、対象のスクリプト側にも手を加えなきゃいけなくなると思うよ。
(perlなら @ARGVを適切に処理するように。)
787じじぃ:2005/08/02(火) 19:19:18 ID:53wND5J6
Yomi-Search PHPを初めて設置しようとしましたが、エンコードがわからなくて書き換えることが出来ません・・・
config.phpのエンコードって何ですか?
788nobodyさん:2005/08/02(火) 19:26:54 ID:???
配布サイトにサポート掲示板があるから、そこでk(ry
789757:2005/08/02(火) 19:35:12 ID:???
>>770
>同じような仕様ということですよね?
Yes.「訂正時の画像はそのタイミングでは消えない」というのは
せっかくアップロードは成功したのにテキストの修正だけのために
もう一度アップロードさせたくない。及びアップロードファイルのクライアントローカルパスを
PHP側で知ることが出来ないので、undo時にその値で初期化できないということもある。
(JavaScriptでゴニョゴニョやってみたことがあるが、日本語ファイルの場合の
挙動がブラウザで結構まちまちで、面倒なので投げた)

UPLOAD_ERR_NO_FILEの時で既に一度でもそのセッションで
アップロードが成功していれば、自前テンポラリーのファイルを利用する。
そんな感じで一応うまく動作してる。
790nobodyさん:2005/08/02(火) 19:35:32 ID:???
select * from hoge;というsqlクエリを実行して
while ($row = @mysql_fetch_array($result)){}
で値を取り出しました。(1件のみヒットという前提)
このなかに$row['a01']〜$row['a10']という値があるとします。
他にも$row['name']とか$row['hoge']なんていうのもあるとします。

このとき、$row['a01']〜$row['a10']のうち、値が'空'で無いものの数がいくつ有るかを数えたいです。
目的:その数分だけfor文で、テーブルのTRを描画させたい
791JHON:2005/08/02(火) 19:48:37 ID:kmlqG+RX
あの、はじめまして。
早速質問ですが<table>使ってメニューボックス作ったんですけど
いくつか並べておきたいんですが、綺麗に並べる方法おしえてください。
ついでにメニューボックスにタイトルつけたいんですが、それも教えてください。
792nobodyさん:2005/08/02(火) 19:51:47 ID:???
Webサイト製作初心者用質問スレに逝け>>791
793nobodyさん:2005/08/02(火) 19:58:24 ID:???
こんなカンジ?>>790
$cnt = 0;
for($i=0;$i<10;$i++) {
$key = "a" . $i;
if (!is_null($row[$key])) $cnt++;
}
794785:2005/08/02(火) 21:45:02 ID:???
>>786

プログラム実行関数ですね。
調べて試行錯誤してみます。

ありがとうございます。
795nobodyさん:2005/08/02(火) 22:12:15 ID:???
>>793
レスどもです。
数字の規則的な部分は01とかみたいに、0パディングで2桁だったので、
forループの中で、
$i = sprintf("%02d",$i);
としてみました。動作はばっちりですが、sprintfってこんな感じの使い方でよいんですかね?
796nobodyさん:2005/08/03(水) 03:06:52 ID:Vw0PEp23
質問させてください
PHP4.1 anhttpd winxp にてPHPを勉強しているものなのですが
コードを書いていて、どうしてもこの部分でエラーをだしてしまいます。

$str = preg_replace("/#_(.*?)_#/i","$tmp[$1]",$str);

Parse error: parse error, unexpected T_CHARACTER, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/web/ciao/public_html/emoji/emoji.php on line 301

"$tmp[$1]"この部分がおかしいと思うのですが、このように値を参照してやりたいのです。
phpマニュアルに書いてある部分を読んであまり分からないまま
"$tmp[${1}]" など試してみたのですがうまくいきません。

どうかお力添えをお願いできないでしょうか。
797nobodyさん:2005/08/03(水) 03:29:10 ID:???
ヒアドキュメントって何度も同じID使っていいんですか?

>>>DOC
DOC;

例えば同じページ内で何度もヒアドキュメント使うときに
DOCばっかりだとエラーの原因になったりします?
798nobodyさん:2005/08/03(水) 03:55:19 ID:???
799nobodyさん:2005/08/03(水) 06:00:15 ID:???
>>797
PHPタンは賢いから問題にならないけど、
人間のほーがエラーを起こす原因になるですまる
800nobodyさん:2005/08/03(水) 10:16:49 ID:Vw0PEp23
>>798
レスありがとうございます。
解説を読んで括弧で明示的にしてやらないとだめなのかと思い、
"{$tmp[$1]}"
こうしてみたり、
"$tmp[{$1}]" "${$tmp[$1]}"
こうしてみたりもしたのですがダメでした。
Parse error: parse error, unexpected T_CHARACTER, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/web/ciao/public_html/emoji/emoji.php on line 301

こんなエラーがでます・・・
801nobodyさん:2005/08/03(水) 10:47:35 ID:???
シングルクオート
802nobodyさん:2005/08/03(水) 11:39:35 ID:???
>>800
「$1」は「$i」等の間違いじゃないの? 変数名の先頭は数字ダメだよ。
それと"$tmp[$1]"はダブルクオートなくてもいいでしょ。
803nobodyさん:2005/08/03(水) 12:09:11 ID:???
(.*?)に一致した部分が $1 として使われて、該当部分が$tmp[$1]に置き換えられるのを期待してるんだと思うよ。
one#_hoge_#three -> $tmp['hoge'] = 'two' -> onetwothree
one#_huge_#three -> $tmp['huge'] = '-' -> one-three てな感じ。
804796:2005/08/03(水) 12:12:19 ID:Vw0PEp23
>>802
レスありがとうございます。
$str = preg_replace("/#_(.*?)_#/i","$tmp[$1]",$str);
このように正規表現でヒットした箇所のデータ参照を$1で行い
それを$tmpの連想配列の引数として使用し、値を参照しようとしています。
805nobodyさん:2005/08/03(水) 12:16:53 ID:???
>>800
こう書くしかないんぢゃないのかなぁ。

$pattern = '/#_(.*?)_#/i';
$str = 'Start#_hoge_#End';
$tmp['hoge'] = 'fuga';

if (preg_match($pattern, $str, $match) && isset($tmp[$match[1]])) {
 $str = preg_replace($pattern, $tmp[$match[1]], $str);
}
806nobodyさん:2005/08/03(水) 12:21:41 ID:???
preg_replaceの実行時に、「$tmp[$1]」を評価させるんだから、
'tmp[$1]' あるいは "\$tmp[\$1]" にしないとダメでは?
807nobodyさん:2005/08/03(水) 12:26:21 ID:???
>>804
e修飾子
$str = preg_replace("/#_(.*?)_#/e",'$tmp["$1"]',$str);
808nobodyさん:2005/08/03(水) 12:52:17 ID:???
>>799
ありがとうございます。
確かにそうかもしれないので、ひとつひとつ変えてやってみます!
809_:2005/08/03(水) 13:27:21 ID:???
質問させてください。
windowsとlinuxでphpを使用しているのですが
system関数で一部のコマンドが使えません。
どうしたら使えるようになるのでしょうか?
810nobodyさん:2005/08/03(水) 13:34:41 ID:???
>>809
詳しく
811nobodyさん:2005/08/03(水) 13:53:34 ID:OQNM6t9u
rand()でmt_getrandmax()の数字出せますか?
割り算してループさせると処理遅い・・・30秒でタイムアウトorz
812nobodyさん:2005/08/03(水) 14:13:53 ID:???
何言ってるのか分かんない。
php4@win2k
echo getrandmax(); // 32767 int2
echo mt_getrandmax(); // 2147483647 int4
echo rand(2147483646,2147483647);
813nobodyさん:2005/08/03(水) 14:21:58 ID:???
>>811
無限ループの罠
814809:2005/08/03(水) 14:25:10 ID:???
>>810さんレスありがとうございます。
詳しく言うと、
imagemagickをphpで使いたいと思い
$convert = "/usr/bin/convert";
system("$convert -geometry 50 x 50 a.jpg b.jpg");
などのスクリプトを実行していましたところ、
正常に動作しなかったので、いろいろ調べてみたところ
system関数が使えてないことがわかりました。
昔は使えていたのですが、サーバーを再インストールして、使えなくなりました。
ちなみに ls などのコマンドはsystem関数で使えるのですが
mkdir や useradd などは使えません。
よろしくお願いします。
815nobodyさん:2005/08/03(水) 14:25:46 ID:OQNM6t9u
間違えたスマソ
rand()でmt_getrandmax()以上の数字出せますか?
816nobodyさん:2005/08/03(水) 14:25:59 ID:WIIsN5aX
携帯電話のダウンロードカウンターってあるのでしょうか?
PCは検索かけると出てきましたが
携帯に対応させるにはどうしてもできなく
こちらに書き込みさせて頂きました。
817nobodyさん:2005/08/03(水) 14:28:38 ID:WIIsN5aX
携帯電話のダウンロードカウンターってあるのでしょうか?
携帯サイトでランキングを製作したいのですが
PC用のCGIダウンロードカウンターをいじってもまったくお手上げ(ToT)
818nobodyさん:2005/08/03(水) 14:29:24 ID:WIIsN5aX
>816 817
間違って2度書き込みしてしまいました 汗
819nobodyさん:2005/08/03(水) 14:29:46 ID:???
>>815
だせたらmaxじゃないだろ
820nobodyさん:2005/08/03(水) 14:30:36 ID:???
>>819
それはわかっております
821nobodyさん:2005/08/03(水) 14:32:35 ID:OQNM6t9u
>>819
スマソ

FFAPHPで能力値浮動小数点逝って困ってますorz
ダメージ計算でマイナス逝っちゃう・・
822nobodyさん:2005/08/03(水) 14:37:30 ID:OQNM6t9u
>>820
その通り分かっております
823811:2005/08/03(水) 17:07:36 ID:OQNM6t9u
自己解決しました
 function random($num){
  $random0 = mt_rand(0,10000);
  $random1= $random0 * 0.0001;
  $random2 = round( $num * $random1 );
  return($random2);
 }
824名無しさん@そうだ選挙にいこう:2005/08/03(水) 17:08:00 ID:pKopPkZZ
この板人大杉がでます。
PHPでなんとかしてください。
825nobodyさん:2005/08/03(水) 17:09:08 ID:???
>>824
p2
826nobodyさん:2005/08/03(水) 18:51:24 ID:???
PEAR::DBの
DB.phpってどこに入ってるんでしょうか?
WindowsのPHP5を使ってますが、どこにあるかわかりません
827nobodyさん:2005/08/03(水) 18:52:00 ID:???
検索してみたか?
828nobodyさん:2005/08/03(水) 18:56:04 ID:???
>>827
してみたけど、無いんですよ
もとから入ってるものじゃないんですかね?
tgzファイルがいくつかあるみたいなので、その中に
入ってるのかと思ってるんですけど
829826:2005/08/03(水) 19:02:32 ID:???
ついでに確認ですけど、これってWindowsでも使えますよね?

#pear install DB

しろって書かれてるページは多いんですけど、これってLinux系で
Windowsでやっても(パス設定しても)ダメでしたが・・・
830nobodyさん:2005/08/03(水) 19:07:09 ID:???
環境変数のPATHにPHPやPear.batのあるディレクトリを追加するか
そのディレクトリまでcdしてから実行しろよ
831826:2005/08/03(水) 19:33:07 ID:TuHx69hT
>>829
のコマンド実行後ってどれぐらいで、完了するもんでしょうか?
>>830さんの言うようにパス設定ちゃんとしたら、エラーはでないんですけど、
実行後なんのメッセージもでないまま固まってるんですけど・・・
832826:2005/08/03(水) 19:50:53 ID:???
go-pear.bat を実行して、php.exeの場所を指定するだけだった('A`)
833nobodyさん:2005/08/03(水) 19:53:47 ID:???
mysqlに投げるクエリ、
$sql = "select * from hoge;";

hogeのあとの「;」は有るのが正しい?無いのが正しい?どっちでも動いちゃうんですが。
834nobodyさん:2005/08/03(水) 19:57:56 ID:???
>>833
その後になんかつなげるなら付けといてもいいだろうけど、
俺は紛らわしいしつけない。
835nobodyさん:2005/08/03(水) 21:14:47 ID:???
>>833
他のDBでは通用しないのがあるので、無いのが正しいに一票。
うろ覚えだけどソース的には無いのが正しいというのを見たことがある。
2chだと思ったけど…。
836nobodyさん:2005/08/03(水) 22:19:14 ID:ehblprIn
cgi版phpをつかわなければならなくなったのですが...
.htaccessでphp_valueを変更しようとしたんですが、反映されません。
ものすごく既出だと思うのですが、cgi版phpで、php.iniの値を変える場合はどうしたらよいのでしょう?
変えたいのは、
mbstring.encoding_translation
がonになっているので、これをoffにしたいだけなのですが...
837nobodyさん:2005/08/03(水) 22:43:14 ID:???
>>836
そのCGI版PHPの設定ファイル検索ルートのどこかに
php.ini (別の名が使えるように設定している場合はその名前)を置く。
838nobodyさん:2005/08/03(水) 23:53:04 ID:jkhIjHPp
ショッピングカートなどで、データを一時保存するためには
何の関数を使用すればいいんですか?
839nobodyさん:2005/08/04(木) 00:17:53 ID:???
mysqlでテーブルの複数フィールドに検索したい語句が入っている可能性があります。
こういった場合、whereのあとに
where key1 like '%a%'
or key2 like '%a%'
or key3 like '%a%'
   ・
   ・
   ・
と続けるしかないんでしょうか?
840nobodyさん:2005/08/04(木) 01:17:42 ID:???
>>839
オレなら、フィールドを連結した文字列にINSTRとか使ってみるかな。

ここらへんとにらめっこしてみそ。
http://dev.mysql.com/doc/mysql/ja/string-functions.html
841nobodyさん:2005/08/04(木) 01:18:39 ID:???
>>838
一般的なのはセッションや、クッキー(使い方によっては両方ほぼ同義だが…)。
842nobodyさん:2005/08/04(木) 02:33:10 ID:???
>>840
それだと
key1='hoge'
key2='hage'
検索文字列='geha'
とかの場合に問題あるんでない?
843nobodyさん:2005/08/04(木) 15:50:17 ID:???
ディレクトリ一覧を出力したいのですが、

$handle=opendir(READ_DIR);

while ($entry = readdir($handle)){
if (is_dir($entry)){
echo $entry."\n";
}
}
closedir($handle);

で出力した結果がUTF-8で出力されてしまいます。
SJISで出力するにはどうすれば良いんですか?
844nobodyさん:2005/08/04(木) 16:16:30 ID:???
>>843
ディレクトリって英数文字だろ
文字コード関係ないんじゃないの
845nobodyさん:2005/08/04(木) 16:22:58 ID:???
>>844
すみません説明が少なかったみたいです。
サーバはsambaを使用していて、ディレクトリ(フォルダ)に日本語で
命名しているものもあります。
それを一覧で取得したいんです。
よろしくお願いします。
846nobodyさん:2005/08/04(木) 16:28:41 ID:???
取得してから文字コード変換すりゃいいだけなんじゃないの?
847nobodyさん:2005/08/04(木) 16:33:47 ID:???
すみません。解決しました。

while ($entry = readdir($handle)){
if (is_dir($entry)){
echo mb_convert_encoding($entry,"SJIS","UTF-8")."\n";
}
}
closedir($handle);

でいけちゃいました。
スレ汚しスマソ
848nobodyさん:2005/08/04(木) 23:24:02 ID:6tkxUKoa

abc.def.ghi. というデータがあって、
最後の、.(ドット)だけ、削除して、abc.def.ghi というデータにしたいのですが、
どうすれば良いでしょうか?
849nobodyさん:2005/08/04(木) 23:36:40 ID:???
入門書を一通り読み終えた程度のレベルなのですが、
違う本を買ってみたところ、echo文で文字列をくくるのに
<<<EOD
.....
EOD;
というやり方が使われていました。
ぐぐってみたところヒアドキュメントというのを初めて知ったのですが、
この場合IDはなんでもいいとのことですが、EODという言葉自体はどのような意味を持つのでしょうか?
何かの略なのでしょうか?
850nobodyさん:2005/08/04(木) 23:41:33 ID:???
End Of DQN
851nobodyさん:2005/08/04(木) 23:43:07 ID:???
EndOfDocuments...kana?
EOT na hito mo iru.
EndOfText kashira.
852nobodyさん:2005/08/04(木) 23:45:44 ID:???
>>849
explosive ordnance disposalの略
(爆発物処理)
853849:2005/08/04(木) 23:51:56 ID:???
>>850-852
レスどうもです。(ネタ含めて)

それにしても文字列の中に連想配列を入れるときもいちいち"......" . $hoge["age"] . "..."ってやってたのに
波括弧が使えるとは知らなかった・・・orz。
入門本なんてそんなものなのかな?
854nobodyさん:2005/08/05(金) 00:07:35 ID:???
>>848
$string = "abc.def.ghi.";
$string = preg_replace("/\.(?=$)/", "", $string);
855nobodyさん:2005/08/05(金) 00:15:36 ID:9OK6LhSH
文字列の中で定義した定数を使うことはできないのでしょうか?
例えば
define("hoge","aiueo");
print "あいうえおはローマ字でhoge";
などとして「あいうえおはローマ字でaiueo」と出力させたいのです。
print "あいうえおはローマ字で" . hoge;
というのは避けたいのですが、他にやり方はあるものでしょうか?
よろしくお願いします。
856nobodyさん:2005/08/05(金) 00:16:25 ID:9OK6LhSH
>>848
$string = "abc.def.ghi.";
$string = substr($string,0,strlen($string)-1);
857nobodyさん:2005/08/05(金) 00:21:56 ID:???
>>855
strtr
858848:2005/08/05(金) 00:22:38 ID:???
>>854
>>856
ありがとうございました!
どちらの方法でも出来ました。多謝です!
859nobodyさん:2005/08/05(金) 01:21:39 ID:???
ある程度の長さのある文字列を、頭から決まった文字数だけで切ってしまうにはどんな関数を使えばよいのでしょうか?
ブログなんかでたまにある、

なんたらかんたらなんたらかんたらなんたらかんたらなんたらかんたら...続きを読む、みたいな感じにしたいのです。
860nobodyさん:2005/08/05(金) 01:59:12 ID:???
>>859
本読んだらすぐわかる気がするが。読む気ないのか?
861nobodyさん:2005/08/05(金) 07:32:44 ID:???
>>856
$string = substr($string,0, -1);
862nobodyさん:2005/08/05(金) 07:48:09 ID:???
>>848
$string = "abc.def.ghi";
863nobodyさん:2005/08/05(金) 08:37:06 ID:xefaOJlU
apache2.0.54とphp5.0.4を連携させようと思うのですが
internal server errorがでしまいます。
OSはフェドラコア4でapacheとphpはyumでインストールしてきました。
このとき設定は特に変える必要はないそうなのですが、何か変更が必要ですか?
すれ違いなら誘導お願いします。
864nobodyさん:2005/08/05(金) 09:01:49 ID:???
パーミッションじゃねーの?
865nobodyさん:2005/08/05(金) 09:19:40 ID:???
まずエラーログを見れ
866863:2005/08/05(金) 09:43:21 ID:tHV4jGl/
パーミッションは大丈夫です。
エラーは
security alert This PHP CGI cannot be accessed directry
まずこれがあります。
ほかにもあるんですが、いまコピペできる環境にないんで。
867nobodyさん:2005/08/05(金) 09:47:17 ID:???
php.iniの設定ミスっぽいね。

; cgi.force_redirect = 1
 ↓
cgi.force_redirect = 0
868863:2005/08/05(金) 10:05:20 ID:tHV4jGl/
わーーーーーーーーーー
できたーーーーーーーー
>>867さんのことダイスキ。ありがとうございました。
869nobodyさん:2005/08/05(金) 10:45:27 ID:???
PHPでDOSのバッチファイルを作成して実行しています。
結果を変数に取り込むにはどうすればよいのでしょうか?
exec関数では結果が返ってきませんし、passthruやsystemでは
直接画面(ブラウザ)に表示されてしまいます。

$result = system($file_name);
↑みたいな感じで書いてみたのですが・・
870nobodyさん:2005/08/05(金) 11:04:18 ID:???
>>869
画面に出ちゃうのは、ob_* を使えば 変数に取り込めるよ。
ob_start();
system('test.bat');
$str = ob_get_contents();
ob_end_clean();
echo "<p><font color="#ff0000">$str</font></p>";

まぁ、batファイル内でecho したものを $str=` ` や $str=exec() で変数に入れちゃえますけど。
871nobodyさん:2005/08/05(金) 13:17:03 ID:???
>>870
なるほど。やってみます。
取りあえずバッチファイル内の各行末でパイプ使ってリダイレクトさせてみましたが、
余計なファイルを作らなくて良いならそれにこしたこと無いので。
872nobodyさん:2005/08/05(金) 14:24:09 ID:???
>>859
mb_strimwidth()
873nobodyさん:2005/08/05(金) 14:56:29 ID:vB1WCgKJ
インクルード使うと、ページの上下余白がなくなっちゃうのは仕様ですか?
874nobodyさん:2005/08/05(金) 15:01:54 ID:???
>>873
読み込み先のファイルでCSSとか定義されてんじゃね?
875nobodyさん:2005/08/05(金) 15:13:20 ID:???
>>873
ブラウザが取得するのは単なるhtmlで、それがPHPを経由してるかどうかなんて気にしないよ。
違いがでる場合の(htmlの)ソースを見比べてみ。
876nobodyさん:2005/08/05(金) 16:41:48 ID:jDJVMZFR
DB検索について教えて下さい。PHP+MySQLです。

postメソッドで検索語句を変数$keyに渡しすのですが、語句が1語であれば

select * from TABLE like '"% . $key. "%'";

で出来るのですが、複数のキーワード(and検索)の場合はどうすればいいんでしょうか。
877nobodyさん:2005/08/05(金) 16:59:19 ID:???
>>876
かなり難解なソースですね
878nobodyさん:2005/08/05(金) 17:07:08 ID:???
';DELETE from TABLE WHERE 1 OR '
で検索してみようかな
879nobodyさん:2005/08/05(金) 17:14:45 ID:DYX+HJMi
phpからphp_mssql.dllを利用してWindowsSQLServerのデータベースに
接続しています。ntext型のデータをphpからselectする際、データが
大きいと「Warning: mssql_query(): message: Unicode のみの照合順序の
Unicode データまたはNTEXT データを、DB-Library (例 ISQL) または
ODBC バージョン 3.7 以前を使用しているクライアントに送信できません。」
と表示され、selectが行えません。
色々と試した結果、255バイトまでであれば取得できるようです。
上記症状の解決方法をご教えて頂け無いでしょうか。
実行環境はWindowsServer2003StandardEditionSP1
MicrosoftSQLServer2000
php4.4.0
を使用しています。
880nobodyさん:2005/08/05(金) 17:21:35 ID:???
>>877
南海ですか・・・。

一応、こういった処理までいきました。

全角スペース→半角スペースに変換
半角スペース→カンマに変換
検索語句をカンマ区切りで配列化させる

後はSQL文で複数のキーワードをどうやって入れるかなんですけど…。

like $key1 and $key2 and $key3 …

みたいな感じでできますか?
881nobodyさん:2005/08/05(金) 17:53:30 ID:???
>>880
いや、はっきり言えばコードの抜粋の仕方も日本語もおかしいってことだ。

SQLの質問ならずばり板違い

where col like '%a%' and col like '%b%' and col like '%c%'
882nobodyさん:2005/08/05(金) 23:17:16 ID:???
画像を表示させる文
$img_ref .= '<img src="'.$a_path.'img/'.$_POST['key'].$imgnum.$tail.'" width="'.$W.'" height="'.$H.'" align=left></a>';

画像だけじゃなくファイル全般のリンクとしたいのですが
<img srcを <a href に
width height を消去

<a href=xxxxx>と</a>の間に 文字を挿入でよいかと思われるのですが間違ってるでしょうか?

$img_ref .= '<a href="'.$a_path.'img/'.$_POST['key'].$imgnum.$tail.'" align=left>"'.$a_path.'img/'.$_POST['key'].$imgnum.$tail.'"</a>';

ちなみにやろうとしていることは画像UP掲示板をファイル全般UP可能に変更しようとしてます。情報お待ちしてます
883nobodyさん:2005/08/05(金) 23:33:42 ID:???
>>882
えらく見づらいけど、あってると思うよ。ただのリンクなんでalign=leftはいらないだろうけど。
動かないからカキコしたのかな。だったらどう動かないか書いた方がいいかも。
老婆心だけど直接 $_POST['key'] を埋め込むのはあまり良くないな。
理由が判らなければサニタイジングでググって味噌。
884882:2005/08/05(金) 23:51:58 ID:???
構造がえらく複雑な掲示板みたいで
通常表示はindex.htmlを表示
書き込みがあった場合にbbs.php さらにbbs2.phpを参照してるっぽいんです。
で、UPロード関連の処理が書いてあるのは bbs2.php

そして、実際に書き込みをして、正常ならば更新されたindex.htmlが表示されるようなんですが、手を加えていない bbs.phpにアクセス中にとまってしまうんです。

・・・・何言ってるかわかり辛いと思うんで

改造しようとしているやつ
ttp://script.s16.xrea.com/2ch/

改造しようとしているのは、UP可能なファイルを画像だけでなく
その他の拡張子も受け付けるようにしたいのです。

サイタニシングという名の特殊記号による文字化け注意了解です
885nobodyさん:2005/08/06(土) 00:07:26 ID:???
>>884
>サイタニシングという名の特殊記号による文字化け注意了解です
それ、正しく理解できてないから。
886nobodyさん:2005/08/06(土) 00:08:26 ID:???
もっと酷いことが起こります。
887nobodyさん:2005/08/06(土) 01:05:47 ID:???
日記スクリプト作ってる。
年・月ごとにフォルダを作って、一日分ずつログを作っていく形式にしようと思ってる。

・・・のだけど、レン鯖のPHPがセーフモードOnみたいで、mkdirとchmodが動作しない。
回避策を教えてくれエロい人。
888nobodyさん:2005/08/06(土) 01:11:10 ID:???
>>887
PathInfoつかって偽装するのじゃダメなの?
889nobodyさん:2005/08/06(土) 01:12:01 ID:???
>>887
年月ごとだったら、別にスクリプトで生成しなくたって、
予めFTPとかで作っておけば?
3年分でもたかだか36個だしょ?
890nobodyさん:2005/08/06(土) 01:16:31 ID:???
>36個
891887:2005/08/06(土) 01:18:47 ID:???
>>888
PathInfoってのが初耳。
ちょっとマニュアル見てくるっす。

>>889
ん、それでもいいかも。

もうちょっと格闘してみようかな。
ありがとうエロい人達。
892nobodyさん:2005/08/06(土) 04:41:55 ID:zdmG/ySS
phpで記述されたページから、もうひとつの違うphpで記述されたページにジャンプするときに
データを渡すことは可能なのでしょうか?
893892:2005/08/06(土) 04:48:42 ID:???
すいません。書き忘れです。
自動にジャンプするときです。たとえばログインボタンなどを押して、自動的にジャンプするときに
さらにデータを送るということです。
894nobodyさん:2005/08/06(土) 05:56:02 ID:???
GETでもPOSTでもSESSIONでも好きにしてくれ。
895nobodyさん:2005/08/06(土) 06:07:53 ID:???
すいません。書き方が悪かったかもしれませんね。
phpファイルが二つあるある場合にそれどれのファイルから違うファイルにデータを渡すということです。

自動ジャンプは header(Location: *******); しか知らない上に使い勝手が悪いので困っています。
896nobodyさん:2005/08/06(土) 06:38:10 ID:???
だから>>894の方法でいけるでしょ。
897nobodyさん:2005/08/06(土) 07:06:12 ID:???
すみません、何が問題なのかうまく説明できないのですが、
下記のプログラムで、一つ階層の下のXXXというフォルダの
下の(中の?)フォルダのリスト名を取得したいのですが、どうすればできますか?

<?php
if ($handle = opendir('./')) {
while (false !== ($file = readdir($handle))) {
if (is_dir($file)) {
if ($file != "." && $file != "..") {
echo "$file\n";
}
}
}
closedir($handle);
}
?>
898nobodyさん:2005/08/06(土) 07:19:29 ID:???
>>897
if ($handle = opendir('XXX')) {
899nobodyさん:2005/08/06(土) 08:11:04 ID:???
>>897
opendirとis_dirの引数の両方変更しないとあかんやろ。

<?php
if ($handle = opendir('XXX/')) {
 while (false !== ($file = readdir($handle))) {
  if (is_dir('XXX/' . $file)) {
   if ($file != "." && $file != "..") {
    echo "$file\n";
   }
  }
 }
 closedir($handle);
}
?>
900nobodyさん:2005/08/06(土) 08:26:13 ID:???
>>893

 <html><head></head>
<body>
 //input系のbox
<form method='post' action='データを渡す先の.php'>
  <input type='submit' value='ログインボタン'>
  </form>
</html>
901nobodyさん:2005/08/06(土) 09:18:26 ID:???
・ボタンを押した時に
・自動的に

どっちやねん(´_ゝ`)
902nobodyさん:2005/08/06(土) 09:44:31 ID:???
入力フォーム -> 入力処理(画面表示なし、リダイレクト) -> どっかのページ じゃないの?
まぁなんにせよ、>>894だが。
903nobodyさん:2005/08/06(土) 11:35:30 ID:???
PHP4とGDで画像出力をいろいろ試しているのですが、
あるスクリプトの一部で作成した画像をそのスクリプト内で表示することはできないのでしょうか?
調べてみたところ、この用法としては
・ヘッダーに画像情報を入れて*.phpを画像としてIMGタグで指定する
・画像ファイルを作成する
の二つのようですが、ファイルを作成することなく一時的な画像を同スクリプト内で表示することはできないものでしょうか?
904nobodyさん:2005/08/06(土) 11:48:48 ID:???
>>903
1つのリクエストに対して、複数の内容のレスポンス(html + 画像)を返すというのは、
仕様としては存在してるんだけどブラウザ側で対応しているものがほとんど無い。
905nobodyさん:2005/08/06(土) 12:01:23 ID:???
>>903
引数で表示画像内容を指定できるスクリプト(.php)と、
その.phpを<img>で呼び出すHTMLを吐き出す.php
の二つの.phpを作成汁
906nobodyさん:2005/08/06(土) 12:02:01 ID:???
>>903
たぶんこんな感じのことをやろうとしてるのだろうか?

--- gd_and_img_tag.php ---
<?php
// リクエストパラメータに応じてGDでごにょごにょ
imagePngとかimageJpegあたりで出力みたいなこと
?>
<img src="自分の出力">
-----------------------

いやでもね、単純に

--- img_tag.php ---
<img src="gd.php?リクエストパラメータ">
-----------------
--- gd.php ---
header('Content-type: image/png');
// リクエストパラメータに応じてGDでごにょごにょ
imagePngとかimageJpegあたりで出力みたいなこと
-------------

でいいんで内科?
パラメータがデカイならセッションなりなんなりで。
907906:2005/08/06(土) 12:02:52 ID:???
>>905と内容かぶった・・・
908903:2005/08/06(土) 12:04:58 ID:???
むぅ。そうなんですか。>>904
ためしに一時的にファイルを作成してIMGタグで指定したあとでunlink()で削除したら
ブラウザには壊れた画像アイコンが出てきました。
直後に消すのもまずい様子。
・・・ってことはファイルに保存してもIMGタグで読み込むまでのタイミングで他の人が上書きしても
それは反映されてしまうかもしれないってことかな?
(実際に画像を読み込むタイミングはIMGで指定したよりずいぶん後になるのか?)
この辺はどういう仕様になってるんだろ??
909nobodyさん:2005/08/06(土) 12:06:25 ID:???
>>903-905
検証もしていないし、IE限定っぽいんだけど、
phpでmhtファイルを送出したらどうなんでしょうね?
画像はbase64でエンコードして埋め込むことになる。

今度暇になたら検証してみよう。
910903:2005/08/06(土) 12:14:35 ID:???
スレ違いすまそ。>>905-907
言われてみれば最初から別ファイルにすればよかったorz。
いや、あまり細々とファイルをいっぱい作るのが嫌なので
同カテゴリのページはすべてフラグを設定して一つの.phpの中でやってたんですが、
よく考えたら画像生成用関数を外部につくるくらいなら画像生成用.phpを作っても大して変わらない・・・。
みなさんレスどうもです。

これまたよく考えたら>>908は当たり前すぎてorz。
クライアントに届く前に削除してるんだから見えるわけがないよな・・・。
911nobodyさん:2005/08/06(土) 12:14:57 ID:???
×スレ違い
○すれ違い
912nobodyさん:2005/08/06(土) 13:47:37 ID:???
初歩的ですみません、

$ary01 = array("鈴木","20");
$ary02 = array("田中","18");
$ary03 = array("渡辺","19");
$ary04 = array("田中","21");
.
.
.
$aryN = array("佐藤","21");


重複している『田中』を削除して

$ary01 = array("鈴木","20");
$ary02 = array("田中","18");
$ary03 = array("渡辺","19");
.
.
.
$aryN = array("佐藤","23");

にしたいんだが、どうすればできますか?
913nobodyさん:2005/08/06(土) 13:53:04 ID:???
まずは2次元配列覚えてくれ
914nobodyさん:2005/08/06(土) 14:24:30 ID:???
>>912
913のいうように二次元配列を使ったほうがいい。

$ary = array();
$ary[1] = array('名前', '年齢');
$ary[2] = array('名前', '年齢');

$ary[N] = array('名前', '年齢');

for($i=1;$i<=count($ary);$i++) if($ary[$i][0]=='田中') unset($ary[$i]);


そのデータのままやるんなら、
$aryNがいくつまであるのかっていうデータが必要。
それをforで同じように回してunsetする。
915nobodyさん:2005/08/06(土) 14:24:38 ID:???
>>912
佐藤はどうして"23"になったの?
916nobodyさん:2005/08/06(土) 14:27:23 ID:???
誕生日になったから
917914:2005/08/06(土) 14:29:55 ID:???
>>912
あ、良く読んでなかった。
「田中」を全て削除するもんだと思って>>914書いてしまった、すまん。

それこそ、二次元配列でデータを入れる段階で、
$ary['田中']='18';とかにしていけばいいんじゃないか?

ちなみに、あなたの質問の仕方にもちょっと足りないところが。
「重複している『田中』を削除して」って、どういう削除だ?
最初に出てきた『田中』が残るのか、後に出てきたのが残るのか。
上記のように二次元配列を使うと、後に出てきたのが残るんだが…

>>915
ワロスwwwwwww
918nobodyさん:2005/08/06(土) 14:36:03 ID:???
重複してるからって削除される田中[2]の意味がわからん。
削除されるのは常に後から来た方なのか?
919912:2005/08/06(土) 14:43:07 ID:???
>>915 誤記
>>913-918 詳しくありがとう。

説明不足で申し訳ない、

削除するのは前でも後ろでも構わない、片方どちらか残せば、

重複しているの『田中』だけじゃなく、仮に『高橋』『伊藤』『小林』....
がでてきた場合も削除したいんだ、できますか?
920nobodyさん:2005/08/06(土) 14:47:17 ID:???
>>916も加味して忠実に書きました。

for ($i = 1; ; $i ++)
{
 $aryname = sprintf("ary%02d", $i);
 if (! isset($$aryname)) break;
 $ary = $$aryname;
 if (! isset($tmp[$ary[0]])) $tmp[$ary[0]] = array($i, $ary[1]);
 unset($$aryname);
}

foreach ($tmp as $n => $v)
{
 $aryname = sprintf("ary%02d", $v[0]);
 $$aryname = array($n, isbirthday($n) ? (string)($v[1] + 2) : $v[1]);
}

まわりくど・・・・
921nobodyさん:2005/08/06(土) 14:50:46 ID:???
なんか夏休みの課題みたいな質問が多いよな
922nobodyさん:2005/08/06(土) 15:46:43 ID:???
$fp = fopen("hoge.txt") or die("hoge");
みたいに
$fp = fopen("hoge.txt") or return;
とやりたいけど当然うまくいかない
ここをかっこよく書く方法を
923nobodyさん
>>922
かっこよいかどうか判らんが
if (!$fp = fopen('hoge.txt', 'r')) return;
ぢゃあかんのか?