【PHP】下らねぇ質問はここに書き込みやがれ 65
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/02/24(日) 21:03:17ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 64
http://pc11.2ch.net/test/read.cgi/php/1202536271/
◆質問する時の注意
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を必ず明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示(メール欄に何も記述しない)、若しくはトリップをつける事。
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0134nobodyさん
2008/02/29(金) 00:26:04ID:???0136nobodyさん
2008/02/29(金) 00:39:04ID:???0137nobodyさん
2008/02/29(金) 00:44:55ID:???Uncaught exception 'PDOException' with message
'SQLSTATE[HY000]:
General error: 2014
Cannot execute queries while other unbuffered queries are active.
Consider using PDOStatement::fetchAll().
Alternatively, if your code is only ever going to run against mysql,
you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.'
と言われます。
0138nobodyさん
2008/02/29(金) 00:46:34ID:???0139nobodyさん
2008/02/29(金) 00:47:38ID:???0140nobodyさん
2008/02/29(金) 00:50:06ID:lB4w3WIe誰もPDO使ったことないってことか?
そこをfetchAll()にすると直るんだけど、
fetchAllって名前から想像つくと思うけど全行読むから
メモリもったいないかと思って。
0141132
2008/02/29(金) 01:06:54ID:???偉いっ!!すばらしいっ!!結婚して!!!当方マンションもち。
もっと単純に
自分でPHP.ini触れるんならmagic_quote_gpcはoff
触れないんだったら全てのスクリプトで(なんだっけ)せれ
質問はその後だ
みたいに強制的でもいいのかでもとか思った。
0142nobodyさん
2008/02/29(金) 01:42:07ID:???素晴らしい推論能力をお持ちのようで。
まぁそんなことはさておき、コード出してみたら?恐らく普通とは違う書き方してるんだろうし。
0143nobodyさん
2008/02/29(金) 02:06:51ID:lB4w3WIe$unko=$rs->fetch();
echo $unko["UNKONAME"];
$rs2=$db->query("SELECT UNKONAME FROM UNKOTABLE WHERE UNKO_ID=2");
$unko2=$rs2->fetch();
echo $unko2["UNKONAME"];
みたいな感じにSQLを2回やるとなんか怒られます。
fetchAllにして、1個しかない結果セットを$unko[0]["UNKONAME"]
とかやって取り出せるんだけどね。
0144nobodyさん
2008/02/29(金) 02:07:51ID:lB4w3WIe0145nobodyさん
2008/02/29(金) 02:23:09ID:???http://jp2.php.net/manual/ja/function.PDOStatement-closeCursor.php
0146nobodyさん
2008/02/29(金) 02:38:03ID:???PDO->query() を次にコールする前に 結果セット内の全てのデータを取得しない場合、そのコールは失敗します。
PDOStatement->closeCursor() をコールし、 次に PDO->query() をコールする前に PDOStatement オブジェクトに
関連付けられたリソースを解放してください。
0148nobodyさん
2008/02/29(金) 09:47:17ID:???○ Object::obj();
× $obj->obj();
○ $this->obj();
public
○ Object::obj();
○ $obj->obj();
○ $this->obj();
protected
× Object::obj();
○ $obj->obj();
○ $this->obj();
private
× Object::obj();
× $obj->obj();
○ $this->obj();
これでおk?
0149nobodyさん
2008/02/29(金) 10:50:21ID:???大体にしてメソッド名をobjにするなややこしい。
コンストラクタかと思うじゃねーか。
そもそもそういう理解の仕方じゃまずいぞ。
privateなメソッドというのは「class hoge{}の外からのアクセスは完全にNG」て意味。
中からなら$this->やObject::obj()でアクセス可能って意味だ。外から$thisなんてことはできないので$obj->objかObject::objを使うことになるけど、
それらのアクセスはprivateじゃ無理よってこと。
protectedは継承したクラスもアクセス可能という意味。だから、class fuga extends hoge{}はhogeのprotectedなメソッドを
$thisとかObject::objで扱うことができるってこった。だが当然インスタンス生成してのアクセスである$obj->objは不可能だし、
外部からのObject::objも不可能。
publicは外からのアクセスもできる。$thisだろうとObject::objだろうとOKだ。
staticは上記3つとは別な概念。上記3つは同時に存在できないが、こちらはpublic staticのように併存OKだ。
staticなメソッドは、「外部からそのクラスのインスタンス生成なしで呼び出すことのできるメソッド」
と言う意味。でも重要なのは「staticと指定したメソッドは、そのクラスのstaticでないプロパティや
メソッドを呼び出せない」ってこと。staticでないメソッドやプロパティを呼び出してるメソッドにstaticを設定すると
エラーが出るはず。staticなメソッドはぶっちゃけて言うと一般の関数と変わらない使い方ができる。
PHPみたいなゆるい言語においては微妙な存在ってこった。ただ、「こういう処理をする関数はここにまとめておこう」みたいなときに
使ったりするね。
0152nobodyさん
2008/02/29(金) 11:53:10ID:???書き込む処理をこの上でしてるんですが
それだと書き込みが重複した時にナンバーが同じ値になったりするのでしょうか?
削除に使うナンバーなのでなるべく厳密になるようにしたいのですが。
$data = "$no\t$name\t$comment\t$delkey\t$time\n";
$filename = ('card.txt');
$log = file($filename);
$handle = fopen($filename, "w");
flock($handle,LOCK_EX);
fwrite($handle,$data);
for($i=0; $i<150; $i++) {
fwrite($handle,$log[$i]);
}
flock($handle,LOCK_UN);
fclose($handle);
0154nobodyさん
2008/02/29(金) 12:26:21ID:???厳密にやるならデータベースを使う。
データベースが使えないなら、uniq_id()やmd5(microtime(true))で重複しない乱数で代用する。
0155nobodyさん
2008/02/29(金) 12:42:52ID:???0156nobodyさん
2008/02/29(金) 12:44:33ID:???多分私の扱える知識がないデータベース以外で精度が高いのは
これだと思うので。
これで作り出したIDが重複してないかファイル捜索するのは時間の無駄ですかね?
0158nobodyさん
2008/02/29(金) 12:49:40ID:???fopenする前にファイルロックできるんですか?
ちょっと最近勉強始めたのでよくわかってないのですが。
0159nobodyさん
2008/02/29(金) 12:54:20ID:???$filename = ('card.txt');
flock($filename,LOCK_EX);
$log = file($filename);
$no = explode("\t", $log[$i])
$data = "$no[0]\t$name\t$comment\t$delkey\t$time\n";
$handle = fopen($filename, "w");
fwrite($handle,$data);
for($i=0; $i<150; $i++) {
fwrite($handle,$log[$i]);
}
flock($handle,LOCK_UN);
fclose($handle);
0161nobodyさん
2008/02/29(金) 13:05:26ID:???1.ファイルオープン(a+)
2.ファイルロック
3.ファイル中の最新の番号を取得
4.番号を1増やす
5.新しい記事を追記
6.ファイルロック解除
7.ファイルクローズ
的な感じ。いつもDB使ってるからファイル関係はよく知らんけど。
0162nobodyさん
2008/02/29(金) 13:06:34ID:???fopen時にw以外で読み書き可能なものを選ぶと言うことか・・・・
でもそうするとログ追記型で過去ログ削除できなかったりとややこしい・・・・
>>160
それを元に乱数生成とかですよね、多分。
0165nobodyさん
2008/02/29(金) 15:56:02ID:SImzeFcn日本語文字列だと表示されません。
文字コードの設定だとは思いますがお教えください。
0166nobodyさん
2008/02/29(金) 15:58:43ID:???それ以上何を言えばいいんだ?
0167165
2008/02/29(金) 16:05:45ID:SImzeFcn文字コードの設定の仕方が分かりません。
現状では<meta http-equiv="Content-Type" content="text/html; charset=euc-jp" />
にしていますが文字化けしてしまいます。
shift_jisだと全てが文字化けしてしまいます・・。
0168nobodyさん
2008/02/29(金) 16:07:43ID:???0169nobodyさん
2008/02/29(金) 16:08:15ID:???0170nobodyさん
2008/02/29(金) 16:10:45ID:???その読み込む側のファイル晒して
>>168-169
お前らこのスレに向かないんじゃない?答える気もないなら来んなよ
0171167
2008/02/29(金) 16:14:27ID:SImzeFcn$url = "http://example.ex/";
// サイトネーム
$site_name = "日本語文字列";
// サイトサブタイトル
$sub_title = "日本語文字列";
// 現在時刻を取得
$time = getdate();
>>170
こんな感じで書いています。
0172nobodyさん
2008/02/29(金) 16:15:29ID:???0177nobodyさん
2008/02/29(金) 19:02:38ID:TvsAPhPQ.
○ .バックアップ
├ fo └○
│ ├ test2 ├ fo
│ │ ├ a.txt .. │ ├ test2
│ │ ├ b.txt .. │ │ ├ a.txt
│ │ └ c.txt .. │ │ ├ b.txt
│ └ testfile.txt │ │ └ c.txt
└ test.txt .. │ └ testfile.txt
└ test.txt
図1を図2のようにバックアップフォルダにコピーしたいのですが
よい方法はありませんでしょうか?
なにとぞご教授お願いします
0178nobodyさん
2008/02/29(金) 19:24:53ID:???0179nobodyさん
2008/02/29(金) 19:28:32ID:???0180nobodyさん
2008/02/29(金) 19:34:00ID:???http://jp2.php.net/manual/ja/ref.exec.php
0181nobodyさん
2008/02/29(金) 19:59:47ID:???0182nobodyさん
2008/02/29(金) 20:01:45ID:???define( "srcDir", "○" );
define( "dstDir", "バックアップ" );
dircopy( srcDir, dstDir );
function dircopy($srcdir, $dstdir, $verbose = false) {
$num = 0;
if(!is_dir($dstdir)) mkdir($dstdir);
if($curdir = opendir($srcdir)) {
while($file = readdir($curdir)) {
if($file != '.' && $file != '..') {
$srcfile = $srcdir . '\\' . $file;
$dstfile = $dstdir . '\\' . $file;
if(is_file($srcfile)) {
if(is_file($dstfile)) $ow = filemtime($srcfile) - filemtime($dstfile); else $ow = 1;
if($ow > 0) {
if($verbose) echo "Copying '$srcfile' to '$dstfile'...";
if(copy($srcfile, $dstfile)) {
touch($dstfile, filemtime($srcfile)); $num++;
if($verbose) echo "OK\n";}
else echo "Error: File '$srcfile' could not be copied!\n";}}
else if(is_dir($srcfile)) {
$num += dircopy($srcfile, $dstfile, $verbose);}}}closedir($curdir);}
return $num;}
?>
これでおkだろ
0184nobodyさん
2008/02/29(金) 21:51:10ID:???誤って、「root:localhost」を特権から削除してしまいphpMyAdminにアクセスできなくなってしまいました。
再インストールしても状況が戻らずどうしていいのか・・・
0187nobodyさん
2008/03/01(土) 00:11:45ID:???アンインストールは単なる削除か?
要は「システム」としてインストールしたMySQL(とかXAMPP)が
アンインストールされてないとお話にならないってわけだよ。
アンインストールしてなくてもroot権限でMySQLに入れるなら
GRANTとかで治るとおもうけど、
一応再インストールとか厄介なことしたわけだから、
完全にアンインストールすることを強く勧める。
で、
Windowsの コントロールパネル>管理ツール>サービス
を開き、その中にmysqlとかXAMPP Serviceってのはあるか?
0189nobodyさん
2008/03/01(土) 01:58:22ID:???0191nobodyさん
2008/03/01(土) 02:58:59ID:Nw5SqNkjユーザーが投稿する写真のサムネイルを表示したいと思っています。
私が読んでる参考書に表示スピードを考慮した画像縮小方法として、GDライブラリが紹介されていました。
しかしGDライブラリは指定したサイズに縮小するだけのように思えます。間違ってたらすいません。
投稿される写真のサイズはバラバラで、縦長の写真、横長の写真、正方形の写真など様々です。
縦長は縦長のまま、横長は横長のまま、正方形は正方形のままに縮小したい(mixiのマイミク一覧のよう
な感じ)のですが、一般的にはどうのように行っているのでしょうか?ヒントだけでもお願いします。
0192nobodyさん
2008/03/01(土) 03:47:22ID:???算数の素人さんですか
100x100を半分にすると50x50
100x200を半分にすると50x100
指定したサイズに縮小できたら十分。
0193nobodyさん
2008/03/01(土) 05:15:24ID:???どっちかの小さい方にあわせんだっけかな
0194nobodyさん
2008/03/01(土) 13:12:12ID:???横書き用フォントでは
カ
ー
ネ
ー
シ
ョ
ン
ってカンジに表示されてしまう
どうやったら縦書き用フォントが使えるんですか?
0197nobodyさん
2008/03/01(土) 13:42:39ID:???>>7よりググレカスの方が正しいかも
「GD フォント指定」でそれっぽいのが出てくるのに
悔しくて捨て台詞をいう程度のカスなんでしゃーないなぁ
0198191
2008/03/01(土) 14:01:50ID:Nw5SqNkjすいません、質問が悪かったと思います。
元の大きさがバラバラなので、ただ半分にしただけじゃ並べたときにデコボコになります。
縦横の比率を保ったまま、縮小後の大きさを大体同じ大きさにしたいのです。
200×100は1/2で100×50
400×400は1/4で100×100
250×500は1/5で50×100
というふうに大体100×100の枠に納めたいのですが、元の写真がどのサイズで来るか分かりません。
GDライブラリは試してないのですが、100×100へ縮小としてしまうと、正方形の写真以外は歪ん
でしまうんじゃないでしょうか?
歪ませずに大体100×100の大きさに納めるにはどうすれば良いでしょうか?
0199nobodyさん
2008/03/01(土) 14:03:57ID:???0201194
2008/03/01(土) 14:22:00ID:z6e/g20gちょwwwなにやってんだ
>>197
おれは196じゃないです
ID表示させとけばよかった
「GD 縦書き」とかで検索しても出なかったんで聞いてみたんです。
縦書きに切り替える関数とかあるのかな?
0202194
2008/03/01(土) 14:24:36ID:z6e/g20g0204nobodyさん
2008/03/01(土) 15:21:32ID:MLWBh96Tアップローダーを作っているのですが、
アップロードファイルのローカルパスの一部をファイル名と認識してしまい難儀しております。
入力フォームで
”C:\Documents and Settings\User\デスクトップ\sample.doc”
と入力して
$_FILES[ パラメータ名 ][ name ]で
ファイル名を抽出すると
”デスクトップ\\sample.doc”
とでてきてしまいます。
環境
PHP 5.2.5
Apache/1.3.41
対処法をご存じの方、ご教授をお願いします。
0205nobodyさん
2008/03/01(土) 16:27:41ID:SX7Jze++4択式のリアルタイムアンケートを作成したいのですがご教授ください
ページで投票してもらって
最終的に各回答の合計数がカンマ区切りの○○○.txtというデータで吐き出されればよいです。
ビジュアルとかはこだわりません。
0207nobodyさん
2008/03/01(土) 17:03:11ID:bS1QPxn9$url = "http://www.unko.com/unko.cgi?url=http://www.test.com/test.html?unko_id=12345";
ここから、http://www.test.com/test.htmlのみを取得したいのですがどのような関数を使えば良いでしょうか?
http://www.unko.com/unko.cgi?url= は固定されていますが、
?unko_id=12345 は ?oomoriunko_id=123 になったり ?geriunko_id=111111111 になったり
固定されていないものとする。
以上ぎょきょうじゅくださいお願いします
0208nobodyさん
2008/03/01(土) 17:07:45ID:???0209nobodyさん
2008/03/01(土) 17:12:33ID:bS1QPxn9ありがとうございます
なんとなく理解できました
あと書き忘れたのですがtest.htmlも固定されてません。
もう少し調べてみます
0210nobodyさん
2008/03/01(土) 18:50:49ID:???mysql_real_escape_string の違いについて、
後者は文字コードを考慮する、とマニュアルには記載されていますが、
結果として、
後者ではなく、前者を使用していると
脆弱性が発生したりするケースはあるのでしょうか。
0211nobodyさん
2008/03/01(土) 19:16:54ID:???亀ですみません。
root権限で入ろうと思いますが、その方法がわかりません。
差し支えなければ教えていただけませんか?
0214nobodyさん
2008/03/01(土) 20:03:33ID:???0217nobodyさん
2008/03/01(土) 20:46:29ID:???DB板行けよ
MySQL 総合 Part13
http://pc11.2ch.net/test/read.cgi/db/1201632550/
>>214
初心者スレは初心者スレがある
くだすれPHP(超初心者用)3
http://pc11.2ch.net/test/read.cgi/php/1193295871/
0218nobodyさん
2008/03/01(土) 20:55:00ID:???このスレには初心者は来ていませんよ?
少なくともマニュアルを一通り目を通したりぐぐったりしてきてるはずなんで。
0219nobodyさん
2008/03/01(土) 21:06:57ID:Y1gVmTFWPDO::exec()でクエリを実行する場合影響した行数が帰ってくるはずですが、まったく影響のないクエリを実行してるのに1が返ってきます
バグでしょうか?
apache2.2
php 5.2.5
Postgresql 8.2
0220nobodyさん
2008/03/01(土) 21:13:47ID:???次の方どうそー。
0221nobodyさん
2008/03/01(土) 22:02:10ID:???DBMSによっては、delete で全行削除した場合、削除した行数を返さないらしい。
必要な場合は、where 1=1 ってやるのが定石だそうだ。
postgresをPDOで使ったときに同じ問題があるかどうかは知らない。
0222nobodyさん
2008/03/01(土) 22:04:42ID:???PHPを一度ソースからインストールした後に、libxsltが必要になったので
再インストールを試みたのですが、makeで以下のようなエラーが出ました。
ext/xmlreader/.libs/php_xmlreader.o(.text+0x14a9): In function `zim_xmlreader_XML':
/usr/local/src/php-5.2.5/ext/xmlreader/php_xmlreader.c:1109: undefined reference to `xmlTextReaderSetup'
collect2: ld returned 1 exit status
make: *** [sapi/cli/php] エラー 1
あと、環境は以下のとおりです。
OS:Vine4.2
PHP:PHP5.2.5
実行したconfigure:./configure --with-apxs2=/usr/local/apache2/bin/apxs --enable-mbstring --enable-zend-multibyte --with-pgsql --enable-sockets --with-zlib --with-xsl=/usr/include/libxslt
解決方法をご存知の方いらっしゃいましたら、ご教示ください。
0223nobodyさん
2008/03/01(土) 22:13:34ID:Y1gVmTFWxslライブラリをなんのオプションも無くコンパイルしたなら --with-xsl=/usr/local/lib じゃないかな
>>221
いろいろ試して見たら、selectとかupdateとか、どんなクエリ実行しても1しか返って来ません
失敗の場合のみfalse
これは開発もlinuxにするしかないのか…?
0224nobodyさん
2008/03/02(日) 01:08:51ID:kiurO7doプログレスバーについてなのですが
自身のループ処理による待ち時間ではなくて
重い外部のファイルを読み込むなど、一関数が完了するまでの間
flush()でメーターを描画する場合どのような方法があるのでしょぅか?
よろしく願いします。
0225nobodyさん
2008/03/02(日) 01:41:21ID:???ajaxで読み込む(画面遷移せず)
↓
現在の画面にぷろぐれすばー表示(その間にサーバで処理)
↓
処理完了
↓
画面遷移
って流れでやったら?
0226nobodyさん
2008/03/02(日) 02:27:09ID:???ありがとうございました。
0227nobodyさん
2008/03/02(日) 04:11:35ID:jR385ymfあらかじめ取得しておいたIDとパスをそれぞれ変数に入れて、
それらの変数をもってaction先に飛ばす
そしてファイル取得
こんな感じでいいのでしょうか
0228nobodyさん
2008/03/02(日) 04:12:23ID:8nU9J7zG現在XAMPPというのをインストール(セットアップ?)した直後です。
見積依頼のフォームのファイルはindex.phpにして設定もしました。
<?PHPprint("PHPを使って文章を出力します");
こうなっているのですが次の手順が分かりません。デザインビューで
見積依頼のフォームをこのindex.phpの<?PHPprint("PHPを使って文章を出力します");
の下に作ればいいのですか。
PHP初心者です宜しくお願いします
0229nobodyさん
2008/03/02(日) 04:17:24ID:???見積もり依頼のフォームというのが説明されていないのでわからない
そもそも次の手順ってそもそも何がしたいのか
ソース丸ごと見せてもらった方が早い
ちなみに、PHPで文章を出力したいんだけなら
<?PHPprint("PHPを使って文章を出力します");
↑の PHPを使って文章を出力します
の部分に記述
0230nobodyさん
2008/03/02(日) 04:47:47ID:8nU9J7zGあっなるほど。そこにデザインビューでメールフォームを作ればいいのですね。
コードは
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis" />
<title>PHPプログラム</title>
</head>
<body>
<?PHP
print("PHPを使って文章を出力します");
</body>
</html>
です
0231nobodyさん
2008/03/02(日) 04:48:24ID:8nU9J7zGそしてメールフォームの内容は
お名前
住所 〒
TEL
見積希望日
見積希望時間 9時〜12時
12時〜15時
15時〜18時
何時でも可能
メッセージ
としたいのです。
0232nobodyさん
2008/03/02(日) 05:09:59ID:8nU9J7zGデザインビューで「文章を出力します」のとこを修正しようとすると
「HTMLタグに対して正確なフォーマットではありません。無効とマークされ
ました。コードビューを使用してソースコードを修正して下さい」
と出てしまい「文章を出力します」のとこの変更ができません。
0233nobodyさん
2008/03/02(日) 06:19:08ID:cPv2Uin/private $unko;
public function getUnko(){
return $this->unko;
}
において、
public function checkUnko(){
の中は
$unko=$this->unko;
がいいのか
$unko=$this->getUnko();
がいいのか。
}
当然速いのは$this->unkoだと思うけど、この書き方って
オブジェクト指向を貫く上で問題ありかな?
■ このスレッドは過去ログ倉庫に格納されています