【PHP】くだらねぇ質問はここに書き込みやがれpart7
■ このスレッドは過去ログ倉庫に格納されています
0001966
2005/07/12(火) 01:47:09ID:qOoYFCn7ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>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に近かった自分が勝手に立てちゃいました。
0754747
2005/08/02(火) 06:54:45ID:???参考にしています。ただ、外部に送信だけがなぜか出来ません。
ですので、サーバ的な問題があるのかと思い、
質問させていただきました。
0755nobodyさん
2005/08/02(火) 10:56:22ID:pypKKfs6画像のアップロードを含む個人情報登録画面を作ってます。
入力画面(データ入力)→確認画面(OKか確認のみ)→DB登録画面(insert文実行)
と遷移していく中で、入力画面からinput type="file"で画像を選択して
アップしたいんですが、move_uploaded_fileで渡すパラメータ($_FILESの中身)
って、hiddenか何かで持てないですかね?
そうじゃないと、DB登録と同じタイミングで画像をアップできなくて。
今は、確認画面で画像を実際にアップ、DB登録エラーなら画像を削除とか
面倒なことを考えています。
しかも、確認画面から戻るときも画像を消さないといけないし・・・。
似た処理を作った方教えてください。
ちなみにDBはMySQLです。
0757nobodyさん
2005/08/02(火) 11:15:37ID:???アップロード時点でテンポラリーに入ってる訳だから、
それが消えるまでの間にDBのINSERT掛ければ良いと思うが?
成功すればmove_uploaded_fileで格納。
類推しにくいテンポラリー名だとしてもHIDDENは止めれ。
SESSIONで持っとけ。
あと確認画面でアップロードした画像はそのままで、テキストだけ
訂正したい場合の「やり直し」もモードに入れといたら?
0758nobodyさん
2005/08/02(火) 11:16:37ID:???こういうもの作ってる人いると思うんだけどどうやってるんだろう?
やっぱ上で書いた方法なのかな。
ヤフオクとかもそういう動き(あっちはJavaだが)してるけど、
効率のいい方法は何かないものか・・・
0759757
2005/08/02(火) 11:17:03ID:???これが要件なら仕方ないな。
0760nobodyさん
2005/08/02(火) 11:18:39ID:???input type="file"がなぜvalue値を指定できないようになっているのかを考えろ
それにPHP4から$_FILESで得られる名前はファイル名のみでファイルパスは含まれなくなったし
0761nobodyさん
2005/08/02(火) 11:21:34ID:???0762755
2005/08/02(火) 11:25:12ID:???レスどうもです。
やっぱSESSIONのほうが安全ですかね。
セッションは仕様としてやらないって方向だったんですが
(そこまでのシステムじゃないだろうってことで)
提案してみます。
>あと確認画面でアップロードした画像はそのままで、テキストだけ
>訂正したい場合の「やり直し」もモードに入れといたら?
モード追加は厳しそうです。決断権あんまりないもので・・・orz
入力画面に戻るたびに画像は再度指定し直すって方法でいこうと思ってます。
0763755
2005/08/02(火) 11:31:52ID:???そうじゃないと、画像だけアップされてDBにデータの無いものは
なにも関連のないゴミ画像として残りますよね。
トランザクション成功時のみアップされればいいんですが・・・。
>>760
クロスサイトスクリプト対策、ですか?
すんませんイマイチ判ってないです。
>>761
確認画面で画像をアップ、ってことですか?
それはチト仕様上厳しいです。
厨な回答してたらごめんなさい。
0764nobodyさん
2005/08/02(火) 11:45:31ID:???>それはチト仕様上厳しいです。
それは仕様が糞なんでは?
0765757
2005/08/02(火) 12:02:46ID:???>移動または名前の変更が行われていない場合、リクエストの
>終了時にそのファイルはテンポラリディレクトリから削除されます。
俺書いたプログラムでアップロードを受けるスクリプト以外でも
難なく取れてたような...ゴミ処理は自動でもしてたみたいだけど。
0766nobodyさん
2005/08/02(火) 12:08:34ID:???確認画面で画像を表示する場合は、大体こんな処理をしてるのが多いんジャマイカ?
1. 入力画面 - input type="file"
2. 確認画面 - move_uploaded_fileで一時ファイルとしてどっかに保存。
画像表示(<img>)にもこの一時ファイルを使う。hidden(or session)で一時ファイル名を保持。
3. 登録画面 - 一時ファイルを正式ファイルに変更(変名とか移動とか)。DBに登録。
処理中断や入力し直しで残った一時ファイルは、定期的に削除。(cronやら、手動やら)
一時ファイルを作りたくなかったら、画像データそのものをhiddenに仕込むなり
sessionに仕込むなりするしか無いと思われ。
0767nobodyさん
2005/08/02(火) 12:10:17ID:Svt/6T9+MySQLに、2つのテーブルがあり、IDというフィールドをキーにしてリレーションをします。
テーブル1:ID、category
テーブル2:ID、name
この様な場合に、テーブル1のcategoryに対するテーブル2nameを全て列挙したいのですが、
どのようなクエリとPHPを書くのが一般的なのでしょうか。
いま考えているのは、
SELECT name FROM テーブル1 WHERE ID=○○
のようなクエリ自体をテーブル1のレコード数ループさせながらprintするというものなのですが、
あまり良い方法では無いような気がします。
0768767
2005/08/02(火) 12:11:38ID:Svt/6T9+表示結果は以下の様にしたいです。
カテゴリー1
名前
名前
名前
カテゴリー2
名前
名前
名前
・
・
・
0769757
2005/08/02(火) 12:12:19ID:???アプリ自前のテンポラリーに移動してたわ。mtimeを目安に自前でgcも。
>>757と>>765は嘘。
んで、テキスト関係の登録と同時に自前のテンポラリーから正規のところに移動。
(確認→訂正時には自前のテンポラリーからは削除しない。gcか正規登録時に削除するのみ)
0770755
2005/08/02(火) 12:20:20ID:???>>769は、つまり>>766と同じような仕様ということですよね?
つまり
確認時に画像アップ(自前の一時ディレクトリに)、DB登録時に一時ディレクトリから移動
訂正時の画像はそのタイミングでは消えない、と。
一時ディレクトリの画像は定期的に消そうと思います。
この仕様でやってみます。ありがとうございました。
0772767
2005/08/02(火) 12:27:47ID:Svt/6T9+2chビギナーで、DB板というのがあるんですね。。。
マルチポストになりそうですが、行ってきます。
0773nobodyさん
2005/08/02(火) 12:31:07ID:???つ [ SQL 結合 ]
とレスしちゃいますが。。。
0774nobodyさん
2005/08/02(火) 12:37:37ID:???SELECT category, name from テーブル1, テーブル2 where テーブル1.ID = テーブル2.ID
0776767
2005/08/02(火) 13:15:53ID:Svt/6T9+ありがとうございます。
この結果を768の様に表示したいんです。
>775
リレーションって何ですか?
わかっている人の説明が聞きたい。
0777nobodyさん
2005/08/02(火) 13:19:26ID:???あらら。こちらのスレとマルチだったのね。MySQLスレの方にレスしちまった。
MySQLスレの106を確認よろ。
0778nobodyさん
2005/08/02(火) 13:48:58ID:???キーフィールドを使って複数のテーブルをいろいろ(LEFT RIGHT INNER OUTER)と簡単に結合(JOIN)できるのがリレーショナルデータベースの利点
0779nobodyさん
2005/08/02(火) 15:47:21ID:???2005/08/01 という文字列を返してくれるような
便利な関数はありませんか?
0781nobodyさん
2005/08/02(火) 16:01:46ID:???この手の質問って定期的にあるな。
PHPマニュアルの日付関連の辺りを読んで、色々やってみりゃいいのに。
$day = date('Y/m/d', strtotime('Mon Aug 1 00:00:00 2005'));
0782nobodyさん
2005/08/02(火) 16:11:11ID:???date('Y/m/d',strtotime ("Mon Aug 1 00:00:00 2005"))
んでも、そんな不思議文字列使うよりは、タイムスタンプに統一した方がいいんでないの?
たぶんDBからの取得データだと思うから、SQLやDBの設定あたりで解決するほうがよいかと。
0783nobodyさん
2005/08/02(火) 16:37:35ID:???0784nobodyさん
2005/08/02(火) 17:13:19ID:???こういう場合にMySQLでは全てのユーザーについてそれぞれアカウントを作る必要があるのでしょうか?
それとも管理に必要なアカウントを除いて、一般ユーザー用のアカウントは一つだけ作って
それを使いまわせばよいのでしょうか?
後でログを確認するときなどに誰がどのような作業を行ったか分かるようにしたいのですが、
これはApache等のアプリケーション側でログを取るべきなのでしょうか?
よろしくお願いします。
0785nobodyさん
2005/08/02(火) 17:42:10ID:???と同様のことを、httpを経由せずにしたい、
( =cgiにパラメータを渡して、出力テキストを取り込みたい)
のですが、方法がよくわかりません。ご教示ください。
よろしくお願いします。
なお、phpとcgiは同じディレクトリ内にあります。
0786nobodyさん
2005/08/02(火) 18:09:35ID:???httpを使わないとなると、コマンドラインで実行するしか無いねぇ。
phpでそれをするには、マニュアルのプログラム実行関数あたりを参照。
んでも、対象のスクリプト側にも手を加えなきゃいけなくなると思うよ。
(perlなら @ARGVを適切に処理するように。)
0787じじぃ
2005/08/02(火) 19:19:18ID:53wND5J6config.phpのエンコードって何ですか?
0788nobodyさん
2005/08/02(火) 19:26:54ID:???0789757
2005/08/02(火) 19:35:12ID:???>同じような仕様ということですよね?
Yes.「訂正時の画像はそのタイミングでは消えない」というのは
せっかくアップロードは成功したのにテキストの修正だけのために
もう一度アップロードさせたくない。及びアップロードファイルのクライアントローカルパスを
PHP側で知ることが出来ないので、undo時にその値で初期化できないということもある。
(JavaScriptでゴニョゴニョやってみたことがあるが、日本語ファイルの場合の
挙動がブラウザで結構まちまちで、面倒なので投げた)
UPLOAD_ERR_NO_FILEの時で既に一度でもそのセッションで
アップロードが成功していれば、自前テンポラリーのファイルを利用する。
そんな感じで一応うまく動作してる。
0790nobodyさん
2005/08/02(火) 19:35:32ID:???while ($row = @mysql_fetch_array($result)){}
で値を取り出しました。(1件のみヒットという前提)
このなかに$row['a01']〜$row['a10']という値があるとします。
他にも$row['name']とか$row['hoge']なんていうのもあるとします。
このとき、$row['a01']〜$row['a10']のうち、値が'空'で無いものの数がいくつ有るかを数えたいです。
目的:その数分だけfor文で、テーブルのTRを描画させたい
0791JHON
2005/08/02(火) 19:48:37ID:kmlqG+RX早速質問ですが<table>使ってメニューボックス作ったんですけど
いくつか並べておきたいんですが、綺麗に並べる方法おしえてください。
ついでにメニューボックスにタイトルつけたいんですが、それも教えてください。
0793nobodyさん
2005/08/02(火) 19:58:24ID:???$cnt = 0;
for($i=0;$i<10;$i++) {
$key = "a" . $i;
if (!is_null($row[$key])) $cnt++;
}
0795nobodyさん
2005/08/02(火) 22:12:15ID:???レスどもです。
数字の規則的な部分は01とかみたいに、0パディングで2桁だったので、
forループの中で、
$i = sprintf("%02d",$i);
としてみました。動作はばっちりですが、sprintfってこんな感じの使い方でよいんですかね?
0796nobodyさん
2005/08/03(水) 03:06:52ID:Vw0PEp23PHP4.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}]" など試してみたのですがうまくいきません。
どうかお力添えをお願いできないでしょうか。
0797nobodyさん
2005/08/03(水) 03:29:10ID:???>>>DOC
DOC;
例えば同じページ内で何度もヒアドキュメント使うときに
DOCばっかりだとエラーの原因になったりします?
0798nobodyさん
2005/08/03(水) 03:55:19ID:???http://www.php.net/manual/ja/language.variables.php
>>797
試せ
0800nobodyさん
2005/08/03(水) 10:16:49ID:Vw0PEp23レスありがとうございます。
解説を読んで括弧で明示的にしてやらないとだめなのかと思い、
"{$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
こんなエラーがでます・・・
0801nobodyさん
2005/08/03(水) 10:47:35ID:???0802nobodyさん
2005/08/03(水) 11:39:35ID:???「$1」は「$i」等の間違いじゃないの? 変数名の先頭は数字ダメだよ。
それと"$tmp[$1]"はダブルクオートなくてもいいでしょ。
0803nobodyさん
2005/08/03(水) 12:09:11ID:???one#_hoge_#three -> $tmp['hoge'] = 'two' -> onetwothree
one#_huge_#three -> $tmp['huge'] = '-' -> one-three てな感じ。
0804796
2005/08/03(水) 12:12:19ID:Vw0PEp23レスありがとうございます。
$str = preg_replace("/#_(.*?)_#/i","$tmp[$1]",$str);
このように正規表現でヒットした箇所のデータ参照を$1で行い
それを$tmpの連想配列の引数として使用し、値を参照しようとしています。
0805nobodyさん
2005/08/03(水) 12:16:53ID:???こう書くしかないんぢゃないのかなぁ。
$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);
}
0806nobodyさん
2005/08/03(水) 12:21:41ID:???'tmp[$1]' あるいは "\$tmp[\$1]" にしないとダメでは?
0807nobodyさん
2005/08/03(水) 12:26:21ID:???e修飾子
$str = preg_replace("/#_(.*?)_#/e",'$tmp["$1"]',$str);
0809_
2005/08/03(水) 13:27:21ID:???windowsとlinuxでphpを使用しているのですが
system関数で一部のコマンドが使えません。
どうしたら使えるようになるのでしょうか?
0811nobodyさん
2005/08/03(水) 13:53:34ID:OQNM6t9u割り算してループさせると処理遅い・・・30秒でタイムアウトorz
0812nobodyさん
2005/08/03(水) 14:13:53ID:???php4@win2k
echo getrandmax(); // 32767 int2
echo mt_getrandmax(); // 2147483647 int4
echo rand(2147483646,2147483647);
0814809
2005/08/03(水) 14:25:10ID:???詳しく言うと、
imagemagickをphpで使いたいと思い
$convert = "/usr/bin/convert";
system("$convert -geometry 50 x 50 a.jpg b.jpg");
などのスクリプトを実行していましたところ、
正常に動作しなかったので、いろいろ調べてみたところ
system関数が使えてないことがわかりました。
昔は使えていたのですが、サーバーを再インストールして、使えなくなりました。
ちなみに ls などのコマンドはsystem関数で使えるのですが
mkdir や useradd などは使えません。
よろしくお願いします。
0815nobodyさん
2005/08/03(水) 14:25:46ID:OQNM6t9urand()でmt_getrandmax()以上の数字出せますか?
0816nobodyさん
2005/08/03(水) 14:25:59ID:WIIsN5aXPCは検索かけると出てきましたが
携帯に対応させるにはどうしてもできなく
こちらに書き込みさせて頂きました。
0817nobodyさん
2005/08/03(水) 14:28:38ID:WIIsN5aX携帯サイトでランキングを製作したいのですが
PC用のCGIダウンロードカウンターをいじってもまったくお手上げ(ToT)
0818nobodyさん
2005/08/03(水) 14:29:24ID:WIIsN5aX間違って2度書き込みしてしまいました 汗
0821nobodyさん
2005/08/03(水) 14:32:35ID:OQNM6t9uスマソ
FFAPHPで能力値浮動小数点逝って困ってますorz
ダメージ計算でマイナス逝っちゃう・・
0822nobodyさん
2005/08/03(水) 14:37:30ID:OQNM6t9uその通り分かっております
0823811
2005/08/03(水) 17:07:36ID:OQNM6t9ufunction random($num){
$random0 = mt_rand(0,10000);
$random1= $random0 * 0.0001;
$random2 = round( $num * $random1 );
return($random2);
}
0824名無しさん@そうだ選挙にいこう
2005/08/03(水) 17:08:00ID:pKopPkZZPHPでなんとかしてください。
0826nobodyさん
2005/08/03(水) 18:51:24ID:???DB.phpってどこに入ってるんでしょうか?
WindowsのPHP5を使ってますが、どこにあるかわかりません
0827nobodyさん
2005/08/03(水) 18:52:00ID:???0828nobodyさん
2005/08/03(水) 18:56:04ID:???してみたけど、無いんですよ
もとから入ってるものじゃないんですかね?
tgzファイルがいくつかあるみたいなので、その中に
入ってるのかと思ってるんですけど
0829826
2005/08/03(水) 19:02:32ID:???#pear install DB
しろって書かれてるページは多いんですけど、これってLinux系で
Windowsでやっても(パス設定しても)ダメでしたが・・・
0830nobodyさん
2005/08/03(水) 19:07:09ID:???そのディレクトリまでcdしてから実行しろよ
0831826
2005/08/03(水) 19:33:07ID:TuHx69hTのコマンド実行後ってどれぐらいで、完了するもんでしょうか?
>>830さんの言うようにパス設定ちゃんとしたら、エラーはでないんですけど、
実行後なんのメッセージもでないまま固まってるんですけど・・・
0832826
2005/08/03(水) 19:50:53ID:???0833nobodyさん
2005/08/03(水) 19:53:47ID:???$sql = "select * from hoge;";
hogeのあとの「;」は有るのが正しい?無いのが正しい?どっちでも動いちゃうんですが。
0835nobodyさん
2005/08/03(水) 21:14:47ID:???他のDBでは通用しないのがあるので、無いのが正しいに一票。
うろ覚えだけどソース的には無いのが正しいというのを見たことがある。
2chだと思ったけど…。
0836nobodyさん
2005/08/03(水) 22:19:14ID:ehblprIn.htaccessでphp_valueを変更しようとしたんですが、反映されません。
ものすごく既出だと思うのですが、cgi版phpで、php.iniの値を変える場合はどうしたらよいのでしょう?
変えたいのは、
mbstring.encoding_translation
がonになっているので、これをoffにしたいだけなのですが...
0837nobodyさん
2005/08/03(水) 22:43:14ID:???そのCGI版PHPの設定ファイル検索ルートのどこかに
php.ini (別の名が使えるように設定している場合はその名前)を置く。
0838nobodyさん
2005/08/03(水) 23:53:04ID:jkhIjHPp何の関数を使用すればいいんですか?
0839nobodyさん
2005/08/04(木) 00:17:53ID:???こういった場合、whereのあとに
where key1 like '%a%'
or key2 like '%a%'
or key3 like '%a%'
・
・
・
と続けるしかないんでしょうか?
0840nobodyさん
2005/08/04(木) 01:17:42ID:???オレなら、フィールドを連結した文字列にINSTRとか使ってみるかな。
ここらへんとにらめっこしてみそ。
http://dev.mysql.com/doc/mysql/ja/string-functions.html
0842nobodyさん
2005/08/04(木) 02:33:10ID:???それだと
key1='hoge'
key2='hage'
検索文字列='geha'
とかの場合に問題あるんでない?
0843nobodyさん
2005/08/04(木) 15:50:17ID:???$handle=opendir(READ_DIR);
while ($entry = readdir($handle)){
if (is_dir($entry)){
echo $entry."\n";
}
}
closedir($handle);
で出力した結果がUTF-8で出力されてしまいます。
SJISで出力するにはどうすれば良いんですか?
0845nobodyさん
2005/08/04(木) 16:22:58ID:???すみません説明が少なかったみたいです。
サーバはsambaを使用していて、ディレクトリ(フォルダ)に日本語で
命名しているものもあります。
それを一覧で取得したいんです。
よろしくお願いします。
0846nobodyさん
2005/08/04(木) 16:28:41ID:???0847nobodyさん
2005/08/04(木) 16:33:47ID:???while ($entry = readdir($handle)){
if (is_dir($entry)){
echo mb_convert_encoding($entry,"SJIS","UTF-8")."\n";
}
}
closedir($handle);
でいけちゃいました。
スレ汚しスマソ
0848nobodyさん
2005/08/04(木) 23:24:02ID:6tkxUKoaabc.def.ghi. というデータがあって、
最後の、.(ドット)だけ、削除して、abc.def.ghi というデータにしたいのですが、
どうすれば良いでしょうか?
0849nobodyさん
2005/08/04(木) 23:36:40ID:???違う本を買ってみたところ、echo文で文字列をくくるのに
<<<EOD
.....
EOD;
というやり方が使われていました。
ぐぐってみたところヒアドキュメントというのを初めて知ったのですが、
この場合IDはなんでもいいとのことですが、EODという言葉自体はどのような意味を持つのでしょうか?
何かの略なのでしょうか?
0850nobodyさん
2005/08/04(木) 23:41:33ID:???0851nobodyさん
2005/08/04(木) 23:43:07ID:???EOT na hito mo iru.
EndOfText kashira.
0853849
2005/08/04(木) 23:51:56ID:???レスどうもです。(ネタ含めて)
それにしても文字列の中に連想配列を入れるときもいちいち"......" . $hoge["age"] . "..."ってやってたのに
波括弧が使えるとは知らなかった・・・orz。
入門本なんてそんなものなのかな?
■ このスレッドは過去ログ倉庫に格納されています