【PHP】質問スレッドpart33【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/02/16(木) 03:19:52ID:xwXojaq/【基本ルール】
・新規質問の方は上げてください。age進行でお願いします。
・質問者は2回目以降、最初のレス番号を名前欄に入れてください。
・回答者は質問者に対して>>(アンカー)をつけてください。
・煽り・荒らしは放置。荒らしに反応した香具師も荒(ry
・解決しなくてもこたえてもらったら礼を。
【質問テンプレ】
・マニュアルを調べたか、google検索したか(調べたキーワード)
・タイトル(禁:教えてください!etc) 例:requireとinclude
・内容 例:requireとincludeはどう違うのですか?
・質問する際には環境も明記。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
【PHP マニュアル】
http://www.php.net/manual/ja/
※マニュアル上部の「search for」から検索を活用すべし(便利)。
過去スレ、関連リンク、FAQ等>>2-10辺り
0154nobodyさん
2006/02/22(水) 12:46:26ID:???つ[http_filesize]
0156nobodyさん
2006/02/22(水) 13:54:37ID:???とりあえずopendir関数使ってここまではできました。
ttp://oresama.hopto.org/~sheel/phptest/directory.php
ソースは↓です。
<?php
//open directory
$dir=@opendir("phpdirectory") or die("failed to open the directory");
while($file = readdir($dir)) {
if (!is_dir($file)){
echo $file ."<BR>";
}
}
closedir($dir);
?>
あとはこれにリンクをつけたいのですが、
<LI><A HREF="file1">file1</A>
のようにタグをつけるにはどうしたらいいのでしょうか?
0157nobodyさん
2006/02/22(水) 14:01:11ID:???0158nobodyさん
2006/02/22(水) 14:14:37ID:???0159156
2006/02/22(水) 14:43:38ID:???当方、phpを始めたのは今日が初めてで、
自宅サーバでやっとこさphpが使えるようになったのが今日なのです。
全くのphp初心者なので、超基本的なことだったらすみませんが、
教えていただくと助かります・・・orz
0160156
2006/02/22(水) 14:45:22ID:???http://masago.kir.jp/php20041028.php
これをほとんどそのまま映しただけで、
こんなのを一から作り上げるスキルなどまだまだありません・・。
0161nobodyさん
2006/02/22(水) 14:47:48ID:???echo $file ."<BR>";
を
echo '<LI><A HREF="' . $file . '">' . $file . "</A>\n";
0162nobodyさん
2006/02/22(水) 14:49:45ID:???PHPを始めたのが今日なのか、
プログラミングの世界に触れたのが今日なのか?
どっちでもいいけど、
まずは、>>1にあるマニュアルで、一つずつ命令文を調べてご覧。
せっかく始めたんなら、聞く前にまずは自分で考えてみなよ。
0163nobodyさん
2006/02/22(水) 14:49:57ID:???初めての日に(しかも数時間で)こんな所に来たらイカンよ。
まずは本を買うかやさしい猿でもわかる参考サイトを探して
自分でやりなさいな。
0165161
2006/02/22(水) 14:51:35ID:???echo '<LI><A HREF="./phpdirectory/' . $file . '">' . $file . "</A>\n";
0166156
2006/02/22(水) 14:59:15ID:???あ、ありがとうございます!!
さっそくやってみます。
>>162
初めてやったのがプログラミングというかスクリプティングで
shellscript(bash)です。bashに関してはまぁ初心者は脱したくらいの
レベルになりました。(bash歴一年くらい)
したがってphpもifとかforとか結構似たようなのが出てくるので
そこまで苦痛ではありませんが、ちょっとbashと較べると
わかりづらい感じはしています。
最初はSSIで無理やりディレクトリを表示させることをやってみました。
こんな感じでできるようになったのですが、↓
ttp://oresama.hopto.org/~sheel/directory/
「phpの方が簡単」
というアドバイスをいただきましたのでphpに挑戦しているところです。
>>163
そうですね。いろいろと猿でもわかるサイトを物色している最中です。
金はないので本は買えません・・・orz
0168156
2006/02/22(水) 15:14:57ID:???ありがとうございますた!できますた!
本来、directory.phpと同じディレクトリに存在する
ファイルかフォルダを一覧表示させたかったのですが、
「自分と同じディレクトリ」を差すメタキャラがphpでは
わからなかったので、しょうがなくそれは後回しにして
わざわざ下位のディレクトリ「phpdirectory」をつくって
試していたのでした。
試しにbashでいうところの「.」を試してみると、なんと
phpでも「.」は「現在のディレクトリ」を差すようですね。
ついでに本当はファイルだけでなく、ディレクトリも表示されるように
if文を削除してみたら案の定正解でした。
ttp://oresama.hopto.org/~sheel/phptest/directory.php
しかし今度は新たな問題が出てきました。
bashを使った方法ではlsコマンドで「.htaccess」ファイルを
非表示にする方法があったのですが、phpではありますか?
0169156
2006/02/22(水) 15:18:03ID:???phpは<とか>とかをバックスラッシュで
エスケープする必要がないみたいなので
こういう点がweb programmingに向いてるんでしょうね。
もっと勉強してみなさんに教えられるくらいにはやくなりたいと思います。
0171nobodyさん
2006/02/22(水) 15:35:59ID:???自分で本を探して数千円を投資するかしないかでかなり習得のスピードが違うと思う。
まあサイトでもいいだろうけど
0172nobodyさん
2006/02/22(水) 15:37:47ID:???http://jp.php.net/manual/ja/
それとphp.iniぐらい置いとけ
/etcにphp.iniが無いとphpinfo()が言っておるぞ
0173nobodyさん
2006/02/22(水) 15:40:11ID:???>bashを使った方法ではlsコマンドで「.htaccess」ファイルを
>非表示にする方法があったのですが、phpではありますか?
って、"."で始まるファイル名は表示しないって事じゃなくて?
ならファイル名の一文字目に"."のあるファイルは表示しないって処理を加えればいい
どっちにしろ一から勉強しないと自作は出来なさそう
phpの文法が分からないのに人のソース見ても上達するのかな・・
0174156
2006/02/22(水) 15:50:00ID:???ああ、さっき一度php.iniは置いたのですが、
それはsafe_modeをOFFにしたかったからなんですけど、
どうもこのサーバは元もとOFFだったようで
だったら必要ないのかな、と思って削除しちゃいましたよ。
また置いときましょうかね。
デフォルトのままでいいのでしょうかね。
ま、またあとで編集すればいいのですし、とりあえず置くだけ置いときますよ。
それにしてもphpっていちいちディレクトリごとにphp.iniを置く必要があるんでしょうかね。
いやそんな記述がphp.iniにさっきみたとき書いてあったんで。
>>171
実を言うと本は読めないのですよ・・・orz
数学とか英語は偏差値90越えは普通でしたが、
国語だけは偏差値30くらいでした。池沼クラスです・・。
>>173
そうそう、「.」で始まるファイルを非表示にしたいのですが、
これは確かにbashで培ったスキルをもってすれば意外と簡単カモデスネ。
^.とかかな、とにかくphpの正規表現調べてやってみますね。
>>170
ありがとう。がんがります!
0175nobodyさん
2006/02/22(水) 16:17:54ID:???んまぁ、bashとか全然毛色の違う物の経験則に引きずられるのなら、
いっそ、passthru()とかでls叩いて、戻り値を整形したら?
本が読めない人間に、言語の習得は非常に困難だと思ふ
ってか、文学本か何かと間違っていないか?
0176156
2006/02/22(水) 16:24:13ID:???ttp://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/php_k09.htm
↓こんな感じにしてみましたが、ifのところがやっぱりおかしいんですかね・・。
うまくいきません。
ちなみにphpってエラーが起こると「何行目がおかしい」ってちゃんと表示するので便利ですね!
$dir=@opendir(".") or die("failed to open the directory");
while($file = readdir($dir)) {
if (($file)!="^¥..*"){
echo '<LI><A HREF="' . $file . '">' . $file . "</A>¥n";
}
}
closedir($dir);
>>175
lsを使ってdirectory表示させる方法はSSIですでに実現できています。
phpを学ぶひとつの例としてdirectory表示に挑戦しているのです。
ちなみに、言語を学ぶのには、英語と同じで、まずは実際の例文にいっぱい触れるのが
一番だと思いますよ。
文法から入っちゃうとかえって学ぶ速度が遅くなります。経験的に。
例文を読んでみて、「これってどういう意味なのかな?」って逆引的に
正書などで学ぶのが王道です。
0177nobodyさん
2006/02/22(水) 16:24:56ID:???2ch暦何年?
いい加減ウザいよ。
空気読めてない事ぐらいは察しろよ。
それができないなら質問スレでなりふり構わずレスするな。
0178156
2006/02/22(水) 16:25:04ID:???みなさんのおかげでphpのなんたるかの触りくらいはわかるようになってきました。
またご指導よろしくお願いします。
0179156
2006/02/22(水) 16:26:52ID:???2ch歴は3年くらいでしょうか。
空気を読むのはおまえよりは100倍くらい上だと思いますよ。
空気を読めてないのは自分だけってのがわからないみたいだね。
2chはまだまだ177のような初心者をいちころでだませるので楽しいですね。
じゃ、こんどこそ夜勤に言ってきます。
177はくやしかったら捨てぜりふのひとことでも吐いててねw(ぷげら
0181nobodyさん
2006/02/22(水) 16:37:02ID:???君はPHPよりPerlの方が向いてるかもしれない。
あれはsh他のコマンドラインスクリプトの発展したものだから文化が近いと思うよ。
PHPは見た目が少しPerlに似てる程度で考え方の基本はC言語に近い。
0182nobodyさん
2006/02/22(水) 16:40:43ID:stieJNuSたとえば関数がオブジェクトをかえすときに、
function foo() {
return new Bar();
}
foo()->baz();
みたいな関数呼び出しはできないんでしょうか?
なんか文法エラーって怒られるんですが…
PHP4です
0183nobodyさん
2006/02/22(水) 16:41:47ID:???一気に萎える('A`)
> 数学とか英語は偏差値90越えは普通でした
そいつは尋常じゃない数値だね。
英文で書かれた参考書の方が君にはあってるっぽいよ。
それと
if (($file)!="^?..*"){
の"^?..*"はマッチパターンであってereg関数なり使わないと。
ピリオドが2つ続いているのは良く分からないけどね。
0184nobodyさん
2006/02/22(水) 16:43:18ID:???全国テストとかなら満点とっても取れないよなぁ。
0185nobodyさん
2006/02/22(水) 16:44:48ID:???Perlなら if($file =~ /^\..*/) でいけるな。
あと、^\..* の正規表現の意味が分からないって、お前の方がやばくないか?
まぁ、後半の .* は別に要らないと思うけどさ。
0186nobodyさん
2006/02/22(水) 16:52:38ID:???嵐のように書き込んで、風のように去っていったって感じですね…
>>176
>言語を学ぶのには、英語と同じで、まずは実際の例文にいっぱい触れるのが一番
間違ってはいないと思うけど、君、例文とか無視だろ。
例文どおりにやって、どうやったらそんな正規表現マッチが書けるんだか???
ネット上の例文の多くは文責の無い物が混じった玉石混交
その中から正確な情報を適切に拾い出すにも基礎知識が必要になるでしょ。
その基礎知識を身につけるのに書籍とかマニュアルがイイよ、と言われても、
本が読めないとか、言って聴く耳持たず。
終いには、悪態ついて去っていくマナーの悪さ。
>>177もバカだけど、3年も2ch見ていて、煽りにいちいち反応するなよ。
0188182
2006/02/22(水) 16:56:43ID:???…なぜ?
意味解らん。
普通にプログラミング言語を設計(というかBNF)すれば、
半自動的に出来るようになりそうなもんですが…
0190nobodyさん
2006/02/22(水) 16:58:52ID:???いやいや、正規表現の意味が分からないんじゃなくて
このケースでは不要じゃないかな?と思って書いただけだよ。
0192182
2006/02/22(水) 17:02:47ID:???ボスにかけあってPHPから脱出します
ちなみに5では可能でしょうか?
0193nobodyさん
2006/02/22(水) 17:03:41ID:???くだらない質問スレ行き確定ってことでいーんじゃないか。
0196nobodyさん
2006/02/22(水) 17:18:44ID:???確かにはためーわくだが効率はいいかもしれんなwwww
0198nobodyさん
2006/02/22(水) 17:38:12ID:???0199nobodyさん
2006/02/22(水) 17:45:28ID:???0200nobodyさん
2006/02/22(水) 17:53:06ID:???http://pc8.2ch.net/test/read.cgi/php/1139746974/
へ行ってくれ。
0202nobodyさん
2006/02/22(水) 19:27:31ID:???ここが参考になると思います。
ttp://www.doyouphp.jp/php5/php5_object.shtml
0203nobodyさん
2006/02/22(水) 19:30:48ID:???周囲の人間をもう一度よく見渡してみましょう。
空気読むのってなかなか難しいことですよ
ただし、>>177も空気読んでないように思えますが。
0205nobodyさん
2006/02/22(水) 20:24:32ID:???0206nobodyさん
2006/02/22(水) 20:34:50ID:???0207nobodyさん
2006/02/22(水) 23:05:14ID:???0208nobodyさん
2006/02/22(水) 23:19:25ID:???中を傷つける恐れあり。
0210nobodyさん
2006/02/23(木) 00:00:56ID:???0211nobodyさん
2006/02/23(木) 00:11:24ID:???0213nobodyさん
2006/02/23(木) 01:11:56ID:???$DB->getRow($sql); の結果のインデックスが数値のものと文字列のものが二重で
出てくるのですが、文字列インデックスのものだけにする方法はありますか?
0214nobodyさん
2006/02/23(木) 01:55:13ID:???文字列にキャストする。
$result = (string)$src;
もしくは関数を利用する。
strval ($src);
これ使えるか知らんけど、
settype ($src, typename);
typenameは文字列で"string"にすると文字列を返す。
一応マニュアル見てくれ。
0215nobodyさん
2006/02/23(木) 02:55:24ID:???事前に
$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
でモードを設定
>>214
何の話だそりゃ
0216nobodyさん
2006/02/23(木) 03:37:31ID:???サンスコ!でけた!
直前だとこれでもいける
$DB->SetFetchMode(ADODB_FETCH_ASSOC);
0217156
2006/02/23(木) 04:47:14ID:???ereg!!!
こんな表現をいちいち使わないといけないのですね。
ちょっと戸惑いを感じましたが俺様のスキルの高さのためか、
おまいらのせいかよくわからんけどなんとかやりたいことが
できるようになりましたよ!!!
<現在のディレクトリ内のファイルとディレクトリを
まるでApacheのFancyIndexのように一覧表示する。
ただし「.」(ピリオド)で始まるファイルorディレクトリは表示しない>
<?php
//open directory
$dir=@opendir(".") or die("failed to open the directory");
while($file = readdir($dir)) {
if ( !ereg ( "^¥.", $file)) {
echo '<LI><A HREF="' . $file . '">' . $file . "</A>¥n";
}
}
closedir($dir);
?>
0218156
2006/02/23(木) 04:51:31ID:???の実際のphpサンプル出力がこちら。
ttp://oresama.hopto.org/~sheel/phptest/directory.php
あとはそれぞれのファイルの最終変更日と何キロバイトか、
って情報もいっしょに表示させたいね。
SSIではlsを使って↓のようなところまではできたんだけどね。
ttp://oresama.hopto.org/~sheel/index.shtml
phpではやはりファイル容量とか最終変更日とかまで表示させるのは
無理難題なのでしょうか?
とにかくおまいら役立たずにわざわざ聞く前に
とりあえず自分で調べてみますね。
0220nobodyさん
2006/02/23(木) 05:20:28ID:???ありがとうございまし!
なんとかできますたね!
おれさまのスキルだよ!
ttp://oresama.hopto.org/~sheel/phptest/directory.php
PHPってのはbashと違って
・echoのあとにただ以下のように羅列していくだけでいい(下記参照)
・>とか、<とかをエスケープする必要がない
・エラーが起こるとブラウザ上で何行目がエラーか表示してくれる
っていう利点がてんこ盛りですね。
ますますphpにのめり込んでしまいそうです。
echo '<LI><A HREF="' . $file . '">' . $file . "</A> " . sprintf("%u", filesize($file)) . " " . date ("F d Y H:i:s",filemtime($file));
0221nobodyさん
2006/02/23(木) 05:21:25ID:???ttp://oresama.hopto.org/~sheel/phptest/bbs/gazou.php
どんどん書き込んでね。
0222nobodyさん
2006/02/23(木) 07:00:21ID:???きもいな
0224nobodyさん
2006/02/23(木) 07:41:22ID:???0225nobodyさん
2006/02/23(木) 08:06:23ID:???荒れるんだって。
0227nobodyさん
2006/02/23(木) 10:39:12ID:???0229nobodyさん
2006/02/23(木) 11:31:15ID:???0230nobodyさん
2006/02/23(木) 11:32:08ID:cRiHYjaVそれを作って保存してくれる関数って無いでしょうか
0231nobodyさん
2006/02/23(木) 11:34:22ID:NhHoHXRnSQLのinsert文やupdate文を用いてテーブルを更新
insert into テーブル名 (名前) values ('値') //自分の例
このような場合、「値」の部分に「'」が入っていると(例:TE'ST)実行に失敗するのですが
よい回避方法はありますでしょうか?
htmlentities($name, ENT_QUOTES);で文字を変換してやってみましたが出来ませんでした
0233nobodyさん
2006/02/23(木) 11:47:54ID:???もし板違いスレ違いだったら誘導していただけると助かります。
PHP5でSimpleXMLを使ってXHTMLファイル処理したいのですが、
どうも <html> 要素に xmls="http://www..." を指定すると、xpath()でノードを取得できなくなってしまいます。
xmlns 属性をまるごと消すと、目的のノードを取得できるようになります。
なぜ xmlns を指定すると取得できなくなるのか、原因と対策をご存知でしたら回答お願いします。
-----------------------------------------------------
【src.html】(このXHTMLの <html> 要素から xmlns を削除するとちゃんと取得できます)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="ja" xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>テスト</title>
</head>
<body>
<div id="nullpo">
ぬるぽ
</div>
<div id="ga">
ガッ
</div>
</body>
</html>
【test.php】
$sxml = simplexml_load_file('./src.html');
$xpath = "//div";
$res = $sxml->xpath($xpath);
var_dump($res[0]);
0236nobodyさん
2006/02/23(木) 13:50:14ID:cRiHYjaVありがとうございます
0237221
2006/02/23(木) 14:05:43ID:???あ、すみません。全くその通りですた・・・ooorz
ttp://oresama.hopto.org/~sheel/phptest/bbs/gazou.php
このBBSはまんま「レッツPHP」さんの秀逸なBBSを
そっくりそのままの形で設置してみましたのです。
これをわたしがつくったかのように書いてしまったのはすみませんでした。
わたしはただ、PHP例文に多く触れることにとにかく主眼を置いていますので
とりあえず設置してみただけです。
設置、とひとことで言っても、これを行うにはMacOSXの
Terminalを使用してchmodコマンドを駆使したり、
mkdirコマンドを駆使したり、割と様々なテクニックが必要であり
1年前のわたしではまったくできなかったことでした。
とにかく「今そこにあるPHPプログラム」を少なくとも
「設置」くらいはできるようになった、と感動すら覚え、
まるでこどもが親に「ほら、ボク、こんなことができたYO!」
と言っているかのような錯覚に陥っていたのも事実でした。
0238nobodyさん
2006/02/23(木) 14:08:14ID:???データベースの作成?流用?も楽々っぽい印象を思っています。
PHPのデータベースとの親和性を前面に打ち出して、
「署名をつのるためのPHPブログラム」
をつくってみたいと思います。
今、具体的に頭に描いているのは、
名前
所属
メールアドレス
コメント
というのをそれぞれ入力してもらい、
[投稿する]ボタンをクリックすると投稿される、というものです。
これはまんまBBSの形に似ているので、BBSを動かすPHPプログラムを
ちょちょっとせせるだけでなんとかならないかなぁと思っています。
もしなにかアドバイスがありましたらひとことだけでもよろしくお願いします。
0239nobodyさん
2006/02/23(木) 14:50:33ID:???mysql_real_escape_stringかmysql_escape_string
どちらがいいかはマニュアル調べれ
0240nobodyさん
2006/02/23(木) 15:14:06ID:???これからも、ここに書き込むのなら、
名前を固定にしてトリップをつけると幸せになれると思いますよ。
3年も2chに馴染まれているので、今更でしょうけど、
念のため、名前欄で「俺様#hogehoge」とかであなただけのトリップが持てますからね。
是非。
0241皮先くん ◆N3i.Qu1SoY
2006/02/23(木) 15:42:12ID:???これでいいですか?
ではさっそく。
>>238
を実現するためには、php超ド初心者の俺としては
まず、軽いステップを踏む必要があると思い、
ここを参考にして<form>からPOSTで受け取るスキルを更新しようと
しています。
ttp://php.dori-mu.net/news.html
全くこの通りにやっているのですが、
どうにもうまくうごきません。
まず、
ttp://oresama.hopto.org/~sheel/phptest/news/newspost.php
これをやると、「hogehogeのように書き込まれました」
と表示されるはずなのですが、そうはなりません。
news.batへの書き込みがうまくいってないような感じです。
パーミッションの問題かな、と思ってnews.batは
「だれでも書き込み可」にしてみましたがダメですた・・・orz
どうしたらいいのでしょうか?
0242皮先くん ◆N3i.Qu1SoY
2006/02/23(木) 15:48:29ID:???このように
ttp://oresama.hopto.org/~sheel/phptest/news/
news.datとnewspost.phpとprintnews.phpは同じディレクトリ内に
存在しています。
あと、エディタを使ってnews.datに1234と一行書き込むと、
printnews.phpは正常に動作するようです。
ttp://oresama.hopto.org/~sheel/phptest/news/printnews.php
なぜ>>241のnewspost.phpがうまく動作しないのか、
ヒントだけでも教えていただけると助かります。
0243nobodyさん
2006/02/23(木) 16:19:18ID:???0244皮先くん=241=242 ◆N3i.Qu1SoY
2006/02/23(木) 16:53:38ID:???スキルアッププロジェクトは遅々として止まったままです。
news.batへの書き込み自体はどうもうまく行っているようです。
なぜかというと、if分岐を削除すると
ちゃんと[]のnullが書き込まれているからです。
問題の根源は、formからsubmitとcontentsを
postしてないか、postされているのに受け取れない、
のどちらかかと思われます。
apacheの設定でformからのpostを有効にする、って設定が
あったりするんですかね・・・。で、それが無効になっている、と。
ちょっとその辺をひとりで調べてみますね。
0245nobodyさん
2006/02/23(木) 16:54:04ID:???0247皮先くん=241=242 ◆N3i.Qu1SoY
2006/02/23(木) 17:17:49ID:cy2LQUXfIDを出さない行為がよくない行為だというのは初めて知りました。
これからはIDもトリップも露出して正々堂々と闘うことを誓います。
>>244
の続きの話ですが、
どうもapacheは最初からpostとかgetとかサポートしているみたいですね。
というか世の中ほとんどGETなどの世界でWWWが存在しているっていうかw
う〜む、原因がわからない。
誰も教えてくれないようなのでひとりで悩むより
次の課題に取り掛かりたいと思います。
課題を思いついたらまた書き込みますね。
誰かが課題を出してくれても大歓迎です。
PHPのスキルの更新が目的ですので。
0248nobodyさん
2006/02/23(木) 17:22:49ID:???0250nobodyさん
2006/02/23(木) 17:47:28ID:???ありがとうございます
一応自力でどうにかする方法も見つけたのですが、こっちの方がスマートそうです
4.3以降はmysql_real_escape_string
それ以前はmysql_escape_string
を使うようです
0252nobodyさん
2006/02/23(木) 17:48:47ID:???■ このスレッドは過去ログ倉庫に格納されています