【PHP】下らねぇ質問はID出して書き込みやがれ 105
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2011/03/17(木) 04:00:34.11ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 104
http://hibari.2ch.net/test/read.cgi/php/1297669559/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0064nobodyさん
2011/03/19(土) 13:06:48.95ID:ML1lAEO2>>63
sleep使うかcron
0065nobodyさん
2011/03/19(土) 14:47:34.35ID:???0066nobodyさん
2011/03/19(土) 15:29:12.88ID:???> サーバーのポートが開いてるかどうかを確認したいのですが
「サーバーのポートが開いている」とは、どの様な状態を述べていますか?
0068nobodyさん
2011/03/19(土) 23:35:32.37ID:g30gbwpGvar_dumpで確認したら、フォームに名前欄のみ入力してみたらバリデーションと入力不備用の変数$errorsにエラーが格納されるはずが何も入力されず
どういうことが考えられるかこれだけでわかりますか?
無視して進んじゃっていいんでしょうか
正誤表もないしソースを6章のはダウンロードできない(提供してない)ので困ってます
0069nobodyさん
2011/03/19(土) 23:40:04.65ID:hauq32hx0070nobodyさん
2011/03/19(土) 23:41:01.20ID:???0071nobodyさん
2011/03/20(日) 00:15:04.30ID:fsL3dPzn新しい本だから持ってる人少ないのかな
0072nobodyさん
2011/03/20(日) 00:46:52.59ID:4Ut5eVAZ0073nobodyさん
2011/03/20(日) 00:52:46.66ID:???0074nobodyさん
2011/03/20(日) 00:58:28.30ID:???0075nobodyさん
2011/03/20(日) 02:49:13.50ID:???0076nobodyさん
2011/03/20(日) 11:24:36.54ID:QRqyYTuN>> Fatal error: Call to undefined method DB_Error::query() in C:\www\foo.php on line 11
というエラーが出ます。
----- foo.php -----
07 $db = DB::connect(DSN, false) or die('db connection failed.');
08 if (DB::isError($db)) {
09 echo "DB接続エラー:" . DB::errorMessage($db);
10 }
11 $result = $db->query('SELECT * from product') or die('Query faild.');←ここでエラー
-------------------
9行目のエラーメッセージは
>> DB接続エラー:no database selected
です。
DB::connectのDSNは
>> sqlite://dummy:@localhost//tmp/foo.db?mode=0644
です。
フォルダの構成に問題があるのでしょうか?
c:\php5←php本体を置いている場所
c:\www←foo.phpを置いている場所
c:\tmp\←foo.dbを置いている場所
0077nobodyさん
2011/03/20(日) 11:39:12.10ID:???今はPearならMDB2
一般的にはPDOを使うもんなんだぜ?
悪いことは言わない
その本を窓から捨ててPDOでの接続方法をお勉強しましょう
0078nobodyさん
2011/03/20(日) 11:41:57.16ID:QRqyYTuN基礎もまだできてないので(^^;
php5のマンモス本のエキスパートです。
一応終わらせてから先に行きたいので・・・。
0079nobodyさん
2011/03/20(日) 11:51:14.56ID:QRqyYTuNsqlite3でやってたのが原因だったようです。
sqlite2に変えたらすぐできました!
参考にしたURL: http://www.phpbook.jp/pear/pear_db/index6.html
いろんなバグがあるみたいですね・・・。
0080nobodyさん
2011/03/20(日) 12:21:59.77ID:q0k2qzSgこんな質問駄目でしょうか
初心しゃです。
0081nobodyさん
2011/03/20(日) 12:54:00.20ID:???PHPでデータベースを操作するAPI
0082nobodyさん
2011/03/20(日) 16:07:40.38ID:FsqggCdGrequireするプログラムを教えて頂けませんか、先輩方お願いします。
0083nobodyさん
2011/03/20(日) 16:10:24.47ID:idrOIQeCちょっとくらい自分で考えろ
丸投げすんな
0084nobodyさん
2011/03/20(日) 16:10:58.44ID:FsqggCdGrequireするプログラムを教えて頂けませんか?
mt_randとswitch〜caseを駆使してやっていましたが
数が増えすぎて、流石にシンドくなってきました。
先輩方お願いします。
0085nobodyさん
2011/03/20(日) 16:12:33.93ID:FsqggCdGすみません、自分で>>82を書いた後、罪悪感があったので
>>84で書きなおしました。
仰るとおりです、すみません。
0086nobodyさん
2011/03/20(日) 16:14:23.32ID:idrOIQeC特定のディレクトリの中全部見ればいいんじゃね?
http://www.google.co.jp/search?hl=ja&source=hp&biw=1105&bih=438&q=php+%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA+%E4%B8%80%E8%A6%A7&aq=6r&aqi=g-r10&aql=&oq=PHP+%E3%81%A7%E3%81%83%E3%82%8C
0089nobodyさん
2011/03/20(日) 17:48:23.83ID:???しらんかったわ
0090nobodyさん
2011/03/20(日) 17:52:38.10ID:???0092nobodyさん
2011/03/20(日) 17:54:33.57ID:???009384
2011/03/20(日) 18:16:07.02ID:FsqggCdGアドバイスありがとうございます。
フォルダ内のファイルを一覧で表示する方法が理解できました。
<?
foreach (glob("*.dat") as $filename) {
echo "$filename" . "<br>";}
?>
しかしながら、そのファイル一覧からランダムで1つだけ
表示される方法に苦心しております。
0094nobodyさん
2011/03/20(日) 18:34:01.14ID:idrOIQeCだからその苦心の結果を書けつってんだよカス
完全に丸投げかよ
自分で試したことしてみろ
0095nobodyさん
2011/03/20(日) 18:37:06.37ID:???0096nobodyさん
2011/03/20(日) 18:39:51.25ID:???たぶん広告がいくつかあって
それをechoしてるだけのファイルをランダムでrequireみたいな感じなんだろうけど
0097nobodyさん
2011/03/20(日) 18:40:50.05ID:???そこまでできてて・・・
手元に参考書の一冊でもないのか?
ないならないで、ググレば分かるレベルだよ('A`)
0098nobodyさん
2011/03/20(日) 19:29:34.55ID:???0099nobodyさん
2011/03/20(日) 19:43:39.89ID:???$list = glob( "*.dat" );
if ( is_array( $list ) ) {
shuffle( $list );
foreach( $list as filename ) {
var_dump( $filename );
}
}
?>
0100nobodyさん
2011/03/20(日) 19:44:41.83ID:???× foreach( $list as $filename ) {
○ foreach( $list as filename ) {
0101nobodyさん
2011/03/20(日) 19:45:05.17ID:???0104nobodyさん
2011/03/20(日) 19:48:24.95ID:???$list = glob( "*.dat" );
if ( is_array( $list ) ) {
shuffle( $list );
foreach( $list as $filename ) {
var_dump( $filename );
break; /* これで1個だけ */
}
}
?>
0106nobodyさん
2011/03/20(日) 19:56:31.62ID:???どいつもこいつもレベルひきいな
0107nobodyさん
2011/03/20(日) 19:57:49.92ID:???010984
2011/03/20(日) 21:08:21.74ID:FsqggCdGあとは、一覧を取得するフィルダのパスを指定出来るように悩みたいと思います
<?php
//配列の初期化
$var = array();
//ディレクトリ・ハンドルをオープン
$res_dir = opendir( '.' );
//ディレクトリ内のファイル名を1つずつを取得
while( $file_name = readdir( $res_dir ) ){
//取得したファイル名を配列に追加
array_push($var, $file_name);
}
//ディレクトリ・ハンドルをクローズ
closedir( $res_dir );
//配列からランダムでファイル名を1つ取り出す
$rand_keys = array_rand($var, 1);
//取り出したファイルを表示
require "$var[$rand_keys]";
?>
0110nobodyさん
2011/03/20(日) 21:25:14.51ID:???0111nobodyさん
2011/03/20(日) 21:48:27.81ID:???011284
2011/03/20(日) 21:54:41.77ID:FsqggCdG皆さんありがとうございました。
<?php
//配列の初期化
$var = array();
//ディレクトリ・ハンドルをオープン
$res_dir = opendir( フェルダ名 );
//ディレクトリ内のファイル名を1つずつを取得
while( $file_name = readdir( $res_dir ) ){
//取得したファイル名を配列に追加
array_push($var, $file_name);
}
//ディレクトリ・ハンドルをクローズ
closedir( $res_dir );
//配列からランダムでファイル名を1つ取り出す
$rand_keys = array_rand($var, 1);
//取り出したファイルを表示
require "フェルダ名/"."$var[$rand_keys]";
?>
011384
2011/03/20(日) 21:56:21.71ID:FsqggCdG0114nobodyさん
2011/03/21(月) 01:45:59.13ID:???echo $dir[mt_rand(0, count($dir) - 1)];
0115nobodyさん
2011/03/21(月) 01:58:08.06ID:???0116nobodyさん
2011/03/21(月) 03:09:29.53ID:???0117nobodyさん
2011/03/21(月) 14:23:58.40ID:???0118nobodyさん
2011/03/21(月) 15:21:41.88ID:???0119nobodyさん
2011/03/21(月) 21:34:16.27ID:cxZfxrlHキャッシュさせない設定(掲示板など)をするとき、
<meta http-equiv="Pragma" content="no-cache">
みたいなやつでいけますか?
header("Cache-Control: no-cache, must-revalidate");
を書くのとどう違うのかよくわかりません
教えてください
0120nobodyさん
2011/03/22(火) 00:21:07.83ID:???<meta http-equiv="Cache-Control" content="no-cache, must-revalidate">
と同等
また下のは
header("Pragma: no-cache");
と同等
よって
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache, must-revalidate">
あるいは
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
ようは両者は別物
この辺はhtmlヘッダの話なのでPHPは関係ない
ちなみに質問の最初の2行を見ると
掲示板をGETパラメータで操作するのではなく
静的なhtmlを吐くっていう意味と捉えられるので注意
0121120
2011/03/22(火) 00:36:17.00ID:???「上のは」って言ってるのは下のほうのことで
「また下のは」って言ってるのは上のほうのことね
逆だった
0122nobodyさん
2011/03/22(火) 06:28:24.63ID:8oP+/2xeaaaaa.php
<?php
require_once("*******/Smarty.class.php");
$smarty = new Smarty();
$smarty -> display("tmp_b/index.tpl");
$smarty -> assign("page","aaaaa");
?>
index.tpl
{include file="tmp_b/header.tpl"}
{include file="$page.tpl"}
{include file="tmp_b/footer.tpl"}
という風に書いてあります。
階層やパーミッションとは関係ないと思われます。
$pageの部分に各ページのHTMLが入るんですが、
そのHTMLの量が少ないと、ちゃんと表示されるんですが、
HTMLの量が多いと、そのpage部分全てが表示されなくなります。
何が原因なんでしょうか?教えてください。
0123nobodyさん
2011/03/22(火) 06:35:31.29ID:???0124nobodyさん
2011/03/22(火) 06:50:53.47ID:???aaaaa.php
<?php
require_once("*******/Smarty.class.php");
$smarty = new Smarty();
$smarty -> display("tmp_b/index.tpl");
$smarty -> assign("page","aaaaa");
?>
index.tpl
{include file="tmp_b/header.tpl"}
{include file="$page.tpl"}
{include file="tmp_b/footer.tpl"}
という風に書いてあります。
階層やパーミッションとは関係ないと思われます。
$pageの部分に各ページのHTMLが入るんですが、
そのHTMLの量が少ないと、ちゃんと表示されるんですが、
HTMLの量が多いと、そのpage部分全てが表示されなくなります。
何が原因なんでしょうか?教えてください。
0125nobodyさん
2011/03/22(火) 22:12:28.54ID:mmCJS+/mバイナリからいちいち確認するしかないですかね?
0126nobodyさん
2011/03/22(火) 22:32:17.46ID:???バイナリからいちいち確認するしかないですかね?
0127nobodyさん
2011/03/23(水) 02:33:11.47ID:yBezdspD写真をアップするとき、ファイルの形で保存して、その保存パス+ファイル名までの情報を
DBに登録する方法があると思います。
例えば、
カラム構造> id | comment | fileType | path
データ例 >123 | りんごです | jpg | /upfile/user1/gallery/xyz
このとき、ファイル名(xyz)はどういう風に決めたら良いでしょうか?
乱数でも何でも良いのはわかるんですが、自分としてはカラムのID123をファイル名の
一部にでも使って決めたいんです
その場合、クエリを2回に分けて、lastinsertidを使って入れるしかないでしょうか?
変にこだわりなんでしょうか。
画像ファイルのパスをDBに入れていく方法をとるとき、みなさんは乱数とかで名前決めてますか?
ファイル名の定義は賢いやり方があるんでしょうか?
0128nobodyさん
2011/03/23(水) 04:11:28.72ID:???0129nobodyさん
2011/03/23(水) 06:54:32.23ID:???クエリを二回に分ける意味が分からんが、普通にID名をタイムスタンプの頭につけた文字列にrenameしてから保存すればいいのでは。
0130nobodyさん
2011/03/23(水) 08:49:19.12ID:???<meta http-equiv="Pragma" content="no-cache">
header("Pragma: no-cache");
これは同等とも取れるし、まるで異なるともいえるよ。
>>119の最初の2行を見て静的なHTMLを出力するように見えるかっていうと
そうでもないし、何を注意すればよいのか。
0131nobodyさん
2011/03/23(水) 09:28:32.96ID:???idがオートインクリメントなら、直前に登録したidを出力する関数があるはず。
mysql_insert_idだったかな。それ使えばクエリ一度のみ、一発でいける。
0132nobodyさん
2011/03/23(水) 09:45:07.56ID:???SHOW TABLE STATUS WHERE Name = 'table'
カラム Auto_increment が次の値
0134。 ◆oDupeixhZv52
2011/03/23(水) 10:35:47.46ID:???ブラウザによる。キャッシュするサーバーなんかはタグなんか見ないんじゃないかと。
いろんなブラウザでテストしてよしとするか、ダミーのパラメータつけるとか。
>>127
自分の好きなようにやればいいが、ファイル名にIDいれてそのファイル名をDBに保存するのは賢くない。
0135nobodyさん
2011/03/23(水) 13:32:45.18ID:???0136nobodyさん
2011/03/23(水) 15:24:23.20ID:???簡単な検索エンジンを作ろうと思い、本のサンプルデータを改造しようと思ってデータを展開したところ、データベースへの接続がうまくいかなくなってしまったので質問させてください。
出ているエラーは次のとおりです。
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'root'@'localhost' (using password: YES) in C:\xampp\htdocs\PHP_Samples\samples\chapter15\15-5\link.php on line 207
タワツウ・ィ・鬘シ
このサンプルデータは外部ファイル(config.php)からデータベース名、ユーザー名、パスワードを取得しているらしく複雑です。
まず、cnfig.phpにて、
define("DBSV", "localhost");
define("DBNAME", "link");
define("DBUSER", "root"); // ユーザ名(要変更)※変更しました。
define("DBPASS", "secret"); // パスワード(要変更)※変更しました
このように設定します。
次にlink.phpにて
<?php require "config.php"; ?> でconfig.phpに接続したのち、
// =================================================
// ----- db接続
// =================================================
function db_conn() {
$conn = mysql_connect(DBSV, DBNAME, DBPASS) or die(mysql_error());
mysql_select_db(DBNAME, $conn);
return $conn;
}
このようにしてconfig.phpからデータベース名、ユーザー名、パスワードを取得しているようです。
そしてMySQLの方の設定でもlocalhost, root, secretの設定は行なっております。
ここでlink.phpにアクセスすると、上記のエラーが生じる状況です。まだ設定したりない部分があるのでしょうか?
ちなみに「PHPによるWebアプリケーションスーパーサンプル第2版」の15章のリンク集の項を使っています。
長くなってしまいましたが、どうかよろしくお願いします。
0137nobodyさん
2011/03/23(水) 15:27:46.83ID:???$conn = mysql_connect(DBSV, DBNAME, DBPASS) or die(mysql_error());
この行を指しています。
連レスになってしまいすみません。
0138nobodyさん
2011/03/23(水) 15:36:23.39ID:???0139>>1嫁
2011/03/23(水) 15:41:09.54ID:???検索エンジンを作るって検索システム構築の間違いだろ
そんな複雑なアルゴリズム組めるようなやつが質問するとは思えんしな
0140nobodyさん
2011/03/23(水) 15:44:48.92ID:???レスありがとうございます!
すみません、上記のコードを貼り間違えておりました。
正しくは>>138さんの指摘通り、
// =================================================
// ----- db接続
// =================================================
function db_conn() {
$conn = mysql_connect(DBSV, DBUSER, DBPASS) or die(mysql_error());
mysql_select_db(DBNAME, $conn);
return $conn;
}
こうでした。本当に申し訳ありません。
0141。 ◆oDupeixhZv52
2011/03/23(水) 16:05:08.42ID:???0142nobodyさん
2011/03/23(水) 19:15:30.35ID:???MySQLの設定(ユーザー追加、権限設定)はちゃんとやってあるの?
やり方は多分その本に書いてあると思うけど。
Access denied for user 'root'@'localhost' (using password: YES)
ってのは単純にそのユーザ名・パスワードで接続する権限が無いよ、って言ってるだけだからPHPの構文エラーじゃない
0143nobodyさん
2011/03/23(水) 19:17:24.83ID:???全然複雑ではありません。至極普通です。
0144nobodyさん
2011/03/23(水) 21:32:58.20ID:???ありがとうございます。どうやら権限の問題のようですが…どうすれば権限を設定できるのでしょうか?
新しくユーザーを登録するのか、特権から編集するのか…。まだ駆け出しなので詳しくはわからないので、ご教示いただけると助かるのですが…
0145nobodyさん
2011/03/23(水) 23:28:47.70ID:???すまん。
すまんが、知識人からみて解説を含めたレスをしてほしい。
俺は>>120が初心者とは思わないが、勘違いしている節があるように思える。
0146nobodyさん
2011/03/23(水) 23:33:38.08ID:???最初からIDE使ってると、なんかあったときに何も出来なくなるのと同じ
0147nobodyさん
2011/03/24(木) 00:23:44.10ID:???その本に書いてないのか?
mysqlクライアントにログインしてコマンドラインで操作設定してもよし
PHPMyAdmin使って設定するのもよし
これらの用語すらわからないなら、Mysqlの初心者本を見るかググってくれ
0148nobodyさん
2011/03/24(木) 00:33:14.64ID:???ブラウザは同じヘッダーを受信するしやってることは全く同じ
>これは同等とも取れるし、まるで異なるともいえるよ。
こんなツッコミじゃ何か言いたかっただけちゃうんかと初心者乙と思われても仕方ない
ブラウザにキャッシュさせないなら意味は通じるけど
掲示板などをキャッシュさせないという言い方だとサーバ側の話と勘違いされる
この場合毎回ログから静的html(キャッシュ)を生成してそこにアクセスするという方式ではなく
ログを動的に読み込んで表示したいと捉えかねないってことかな
まぁ全体をみてhttpヘッダーの話だなぁと分かるけどどのみちスレ違い
0149nobodyさん
2011/03/24(木) 01:05:39.64ID:???ありがとうございます。
http://www.dbonline.jp/phpmyadmin/user/index2.html
このページを参考に、rootアカウントにlinkデータベースのすべての権限を与えてみたのですが…うまくいきませんでした。
その他気になった点といえば、今までUTF-8でプログラムを書いていたのですが、このサンプルファイルはEUC-JPで書かれているということでしょうか…
エラー文の後に「タワツウ・ィ・鬘シ」と書かれているのですが、何か関係あるのでしょうか?
0150nobodyさん
2011/03/24(木) 01:14:06.84ID:???ID出さない質問者に熱くなる馬鹿ども
0151nobodyさん
2011/03/24(木) 01:55:59.77ID:???0152nobodyさん
2011/03/24(木) 02:12:23.62ID:???0153nobodyさん
2011/03/24(木) 10:08:34.08ID:???httpヘッダの実装なんてブラウザ依存なんだから
0154。 ◆oDupeixhZv52
2011/03/24(木) 11:14:34.99ID:???rootのlocalhostの権限を設定してあるか確認してみてください。
変な文字は EUCの 接続エラー という文字が化けたものです。
0155>>136
2011/03/24(木) 11:47:19.52ID:7Ll3gOeTありがとうございます!
phpmyadminにて「ユーザ 'root'@'localhost'」のグローバル特権には全てチェックがついており、リソースの制限はすべて解除(ゼロ)、
ログイン情報は ユーザ名:テキストフィールドの値:root ホスト:ローカル:localhost パスワード:テキストフィールドの値:secret
このように設定されています。
これでlocalhostの権限は設定されていることになっていると思うのですが、何か不備などあるのでしょうか?
いつまで経っても解決せずすみません…
0156nobodyさん
2011/03/24(木) 12:10:44.81ID:???0157nobodyさん
2011/03/24(木) 12:25:01.20ID:???http://jp.php.net/manual/ja/stream.streamwrapper.example-1.php
0158>>136
2011/03/24(木) 13:38:28.27ID:???'root'@'localhost' の特権を更新しました
REVOKE ALL PRIVILEGES ON `link` . * FROM 'root'@'localhost';
GRANT ALL PRIVILEGES ON `link` . * TO 'root'@'localhost' WITH GRANT OPTION ;
上記のようにphpmyadminにてデータベースに固有の特権を与えてみたのですが何も変化はありませんでした…
0160nobodyさん
2011/03/24(木) 14:33:53.34ID:???secretをパスワードとして設定したの?
それともphpmyadmin使ってないから判らんけど表示上secret(非表示)って意味?
0161>>136
2011/03/24(木) 15:00:10.50ID:???こんな簡単な問題もクリアできず情けないです。
>>158
ユーザroot、パスワードsecretというアカウントでいつもログインしています。
新しいデータベース、linkの権限をrootに追加しようとしているのですが、それもうまくいってないみたいです…
>>159
はい、secretをパスワードにしています。
0162nobodyさん
2011/03/25(金) 17:53:39.59ID:Li7RFmgk["count"]=>
int(30)
["value"]=>
array(7) {
["title"]=>
string(4) "test"
このtitleを取得するにはどうアクセスしたらいいのでしょうか?
0163nobodyさん
2011/03/25(金) 18:07:53.83ID:???■ このスレッドは過去ログ倉庫に格納されています