【PHP】下らねぇ質問はここに書き込みやがれ 22
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/06/08(木) 05:09:28ID:5gGJKVO4ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
まず読め【PHP マニュアル】
http://www.php.net/manual/ja/
過去スレは>>2
0232nobodyさん
2006/06/13(火) 12:31:59ID:BClcCsNSApacheの設定変更が必要ですが、
それをphp.iniの設定で変更できたらご教授願います。
或いは、プログラムレベル内で変更できますか?
0235nobodyさん
2006/06/13(火) 15:17:40ID:???っていうか、ソースもデータも何もかもEUCで統一したほうが
問題が少ないと思うんだけど。
HTML出力でUTFにしたいときだけアウトプットを変換すればいいし。
0236nobodyさん
2006/06/13(火) 15:52:48ID:UqVx0E5SWindowsXPPro+Apache2.0.52+PHP5.0.2+MySQL4.1.7で、
ttp://tsuttayo.sytes.net/mysql/install/mysql/10/20/20/20/install.php
の通りにMySQLを設定しました。それで、MySQLのIDとPWを作って、データベースを
作成することは出来ました。localhostで、確かにコマンドプロンプトからは、My
SQLのIDとPWでMySQLにログインすることは出来ますし、MySQLが起動していること
も確かです。
ところが、PHPでMySQLと接続する文を書くと、(PHPにはサーバの場所(localhost)
やMySQLのID・PWも正確に書いています)
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]:
Access denied for user 'ODBC'@'localhost' (using password: NO) in
C:\Program Files\Apache Group\Apache2\htdocs\index.php on line 78
という表示が出てしまうのです。この「'ODBC'@'localhost'」とは一体何なのでしょうか?
PHPにはサーバの場所(localhost)やMySQLのID・PWも正確に書いていますのに、何故この
ような表示が出てしまうのでしょうか?
どうしたら、PHPでMySQLと接続する文を書くことが出来るのでしょうか。どなたか教えて
下さい。宜しくお願いします。
0237nobodyさん
2006/06/13(火) 16:15:50ID:???0239nobodyさん
2006/06/13(火) 16:26:17ID:???>Access denied for user 'ODBC'@'localhost' (using password: NO)
WindowsでMySQL接続ユーザを指定せずに、MySQLに接続しにいった時に
デフォルトユーザのODBC@localhostが指定されたと解釈されて出てるエラー。
78行に至るまでをチェックしろ、ウンコー
0241nobodyさん
2006/06/13(火) 16:42:45ID:UqVx0E5Sしないでくれるだけでも、有難いです。
>>238
>コマンドプロンプトから作ったユーザー?
いえ、MySQLのユーザー名はrootであり、デフォルトで作成されるものです。PWは
私がMySQLのGUIの画面で作成しました。
>>239
>>Access denied for user 'ODBC'@'localhost' (using password: NO)
>WindowsでMySQL接続ユーザを指定せずに、MySQLに接続しにいった時に
>デフォルトユーザのODBC@localhostが指定されたと解釈されて出てるエラー。
>78行に至るまでをチェックしろ、ウンコー
ありがとうございます。78行目を見たのですが、DBのエスケープ処理が失敗した
ことしか分からなかったのです。それで、「WindowsでMySQL接続ユーザを指定」
するとは、具体的にどうすれば良いのでしょうか。php.iniでmysql.default_user
を設定しても、うまくいかなかったのですが・・・。
>>240
>mysql_connectも失敗してるんじゃないの
エラー表示は、前述のものだけでしたが、多分mysql_connectも失敗していると
思います。以前、この環境にXOOPSをインストールしようとしたら、「DBに接続
出来ません。」という表示が出てしまったからです。
この後、「WindowsでMySQL接続ユーザを指定」するとは、具体的にどうすれば良
いのでしょうか。php.iniでmysql.default_user = root と設定しても、うまく
いかなかったのですが・・・。
0242nobodyさん
2006/06/13(火) 17:08:58ID:???>php.iniでmysql.default_user = rootと設定しても、うまくいかなかった
・そのphp.iniが使ってるPHPで有効な設定ファイルではない。
・更に優先度の高い設定ファイル等で別の値が上書きされている。
・mysql_connect()に変数でパラメータが指定されていて、その変数の値が空(NULLではなく空文字)
mysql_connectのパラメータに着目して処理を追え
(@mysql_connectになってる。多分)
0243242
2006/06/13(火) 17:12:14ID:???と思ったが、だったら78行目でリソース型(mysql接続リソース)
じゃないってエラーになるか。
0244nobodyさん
2006/06/13(火) 17:22:07ID:???<?php
$output = shell_exec('ls -lart');
echo "$output";
?>
が表示されません。
なぜでしょうか?
0246nobodyさん
2006/06/13(火) 17:51:04ID:UqVx0E5Ssafe-modeはOFFになっていても、
open_basedir が設定してあるのではないでしょうか?
0247nobodyさん
2006/06/13(火) 17:57:02ID:???mysql_real_escape_string()は接続してないと使えない関数。
で、接続されていないとデフォルトで接続を試みる。
ということでconnectできていないと考えられる。
まずはconnectができているか簡単なので試してみるといいかも。
(マニュアルより)
<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('接続できませんでした: ' . mysql_error());
}
echo '接続に成功しました';
mysql_close($link);
?>
0248nobodyさん
2006/06/13(火) 18:13:04ID:UqVx0E5Sありがとうございます。test1.phpに、
<?php
$link = mysql_connect('localhost', 'root', '私が設定した英数字のパスワード');
if (!$link) {
die('接続できませんでした: ' . mysql_error());
}
echo '接続に成功しました';
mysql_close($link);
?>
を書いて実行してみたところ、
Warning: mysql_connect() [function.mysql-connect]: Client does not support authentication protocol requested by server;
consider upgrading MySQL client in C:\Program Files\Apache Group\Apache2\htdocs\test1.php on line 2
Client does not support authentication protocol requested by server; consider upgrading MySQL client
という表示が出ました。接続出来ていないようですが、何故でしょうか・・・。MySQLでデータベースは作成出来た訳ですし、
MySQLが起動しているのも、「コントロールパネル」−「管理ツール」−「サービス」で確認しています。php.iniにも、
extension=php_msql.dll
extension=php_mysql.dll
extension=php_mysqli.dll
と書いていますし、test1.phpのID・PWも合っています。接続出来ない原因として、考えられるのは何でしょうか?教えて
下さい。お願い致します。
0249nobodyさん
2006/06/13(火) 18:15:12ID:???WindowsXP Home
HTTPD 1.42n
PHP 5.1.1
です。
>>246
open_basedirはコメントアウトされていました。
一瞬だけコマンドプロンプトは表示されるのですが・・・
0250nobodyさん
2006/06/13(火) 18:16:31ID:???phpのMySQLモジュールバージョンとMySQLサーバのバージョンの問題かも
パスワードの関係でなんかあったような・・・
一度パスワード無しのユーザを作ってそれで接続してみたらできるかも。
もちろんパスワードは無しで接続ね。
0252250
2006/06/13(火) 18:41:25ID:???調べたらphpのmysqlモジュールバージョンが4.0.x以下だとまずいみたい。
phpinfo()でmysqlのバージョン調べてみてね。
4.0.x以下だったら、phpのバージョン上げるか以下のページに回避策(英語)
http://dev.mysql.com/doc/refman/4.1/en/old-client.html
0255nobodyさん
2006/06/13(火) 19:05:16ID:UqVx0E5S>>一度パスワード無しのユーザを作ってそれで接続してみたらできるかも。
>>もちろんパスワードは無しで接続ね。
248です。パスワードは無しのユーザで試したところ、接続できました!!
ありがとうございます!しかし、パスワードありでは接続できないのでし
ょうか・・・・。
環境は、WindowsXPPro+Apache2.0.52+PHP5.0.2+MySQL4.1.7
です。パスワードありでは接続できないというのは、不自然な気がします・・・。
どなたか、解決策をご存知ではないでしょうか?
0256250
2006/06/13(火) 19:57:52ID:???教えた関連サイト読んでもないのか?252で書いた調べもやってなさそうだし。
もし理解したいと思うなら252のURLのenをjaに変えてみて見れ。
0257nobodyさん
2006/06/13(火) 20:37:50ID:???0258nobodyさん
2006/06/13(火) 20:39:16ID:???0259nobodyさん
2006/06/13(火) 21:27:58ID:y/p6TWtm>教えた関連サイト読んでもないのか?252で書いた調べもやってなさそうだし。
>もし理解したいと思うなら252のURLのenをjaに変えてみて見れ。
すみません。mysqlのバージョンが 4.1.7だったので、>>252で教えて
頂いたサイトは自分には当てはまらないことだと思っていました。
「mysqlのバージョン」と「mysqlモジュールバージョン」は違うので
すね。>>257様や>>258様の話を聞いて、段々原因が掴めてきました。
今はサーバの近くにいないので、明日、皆様のおっしゃったことを
試してみます。
本日は皆様、本当に細かく教えて下さり、誠にありがとうございまし
た。
0260nobodyさん
2006/06/13(火) 22:08:23ID:???MySQLでフィールドがid、name、add、koukou、daigakuと5つあります。
その中で検索するということをしたいと思っています。
送られてきた[data1]の単語をkoukou、daigakuのフィールドからor検索したいのですが、
$sql = "SELECT * FROM base WHERE koukou or daigaku like '%".$data1."%' ORDER BY id";
とすると後ろのdaigakuだけ検索してkoukouからは検索してくれません。
多分根本的に文法が違うのかな〜と思っているのですが、どうすれば検索できますか?
0261nobodyさん
2006/06/13(火) 22:25:21ID:???2つの画像を重ねて表示する場合は、imagecopymerge でできますが、
3つ以上の画像を重ねて表示したい場合、imagecopymerge でできるのでしょうか?
試してはみたのですが、どうもうまくいきません。
他にいい方法があるんでしょうか。。。
0262nobodyさん
2006/06/13(火) 22:49:17ID:???koukou=hogehoge or daigaku=hogehoge
文字列だとかLIKEだとかは自由にどうぞ
0263nobodyさん
2006/06/13(火) 22:50:13ID:???次のページに行くとき、bbs.php?page=2みたいにしたいのですが、
どうやってfor関数に組み込めばいいのかわかりません。
どのように記述すればいいでしょうか?
for関数で記事表示しています。よろしくお願いします。
0264nobodyさん
2006/06/13(火) 22:55:12ID:???ちと意味がわかんない
$_POST['page']とか$_GET['page']でページ数を取得してるんだよね?
記事の管理方法は?DBは使ってる?
DB使ってるならOFFSETするのが早い
使ってないなら多分ファイルだろうからファイルの管理方法も教えて
1日単位でログにしてるとか、1記事1ファイルにしてるとか
0265nobodyさん
2006/06/13(火) 23:17:44ID:???ひとつのテキストファイルをログファイルとして1記事1行で保存しており、
新規記事はログファイルの上から追加されると仮定すると、
$page = $_GEt['page']; // ページの指定
$line = 10; // 1ページあたりの記事数
$article = file(ログファイル); // ログの配列(1記事1行で最初の要素が最新の記事)
for ($num = ($page - 1) * $line; $num < $page * $line; $num++) {
print $article[$num];
}
こんな感じ?
0267263
2006/06/13(火) 23:32:12ID:???投稿日時,投稿者名,投稿内容
で記録しています。上からの追加です。
1ページ10件表示にして、ページ下部にある
次の10件(./bbs.php?page=x)をクリックすると
次の10件が、といった風にしたいんです。。
表現力が…
0268nobodyさん
2006/06/13(火) 23:50:23ID:???0270263
2006/06/14(水) 00:37:42ID:???みなさん、ありがとうございます。
0271nobodyさん
2006/06/14(水) 00:38:32ID:???ページに400×400の画像を貼り付けて、
その画像上の任意の場所をクリックした時のマウスポインタの座標を取得することは可能でしょうか?
よろしければ、関数名などを教えてください。よろしくお願いします。
0273nobodyさん
2006/06/14(水) 00:44:52ID:???0275nobodyさん
2006/06/14(水) 00:49:25ID:???よし!俺ねる!お前ら明日もがんばれよ!俺もがんばるよ!
0276nobodyさん
2006/06/14(水) 00:51:10ID:???0277nobodyさん
2006/06/14(水) 01:03:58ID:???ありがとうございます。
input type に imeage という属性があるのをはじめて知りました。
自分の買ったphp参考書には一行も書いてなかったです。
ちなみにこの参考書、誤字脱字やミスが結構あります・・・。
0278nobodyさん
2006/06/14(水) 01:05:24ID:???HTMLを学ばずしてPHPが分かると思うなよ
0279273
2006/06/14(水) 01:10:05ID:???HTMLは一通り知ってるつもりだったのに…ハズカシ
0282nobodyさん
2006/06/14(水) 02:20:38ID:???Windowsで動くIDE以外のお勧めのテキストエディタってある?
もちろんPHPの関数とかが強調表示されたり色変えられたりするやつ。
Linuxならもちろんviだな
0283nobodyさん
2006/06/14(水) 02:59:05ID:???0284nobodyさん
2006/06/14(水) 03:10:11ID:???では俺が回答してやろうジャマイカ
つhttp://pc8.2ch.net/test/read.cgi/php/1133785416/
0285nobodyさん
2006/06/14(水) 12:30:48ID:2q2dqRMtしないのですが、MySQLから取ってきた日本語は全て文字化けしてしまいます。
どなたか、解決策をご存知ではないでしょうか?
php.iniは
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = UTF-8
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = auto;
とし、my.iniは
[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8
init-connect="SET NAMES utf8"
としています。MySQLのコマンドラインからshow variables like 'char%'; と打つと、
character_set_client latin1
character_set_connection latin1
character_set_database utf8
character_set_results latin1
character_set_server utf8
character_set_system utf8
character_set_dir C:\Program Files\MySQL\MySQL Server4.1\share\charsets/
となります。PHPファイルの先頭に
$con = mysql_connect('localhost', 'ユーザー名', 'パスワード');
mysql_query("SET NAMES utf8", $con); //←強制的にUTF8にしようとする。
mysql_select_db("DB名");
と書いても、MySQLから取ってきた日本語は全て文字化けしてしまいます。
どなたか、解決策をご存知ではないでしょうか?宜しくお願い致します。
0287nobodyさん
2006/06/14(水) 14:19:14ID:???これで解決するかどうかは分かんないけど、
つ ttp://puchiko.lowtech.ne.jp/index.php?itemid=349
0288nobodyさん
2006/06/14(水) 14:31:44ID:2q2dqRMt書いたPHP文の全文は、以下の通りです。
<?php
$con = mysql_connect('localhost', 'ユーザー名', 'パスワード');
mysql_query("SET NAMES utf8", $con); //←強制的にUTF8にしようとする。
mysql_select_db("DB名");
$sql="select * from Tuser";
$result=mysql_query($sql);
while($data = mysql_fetch_array($result)) {
print($data["id"]);
print($data["name"]);
print($data["name_kana"]);
print("<br>");
}
mysql_close($con);
?>
ここで、number型の$data["id"]は正しく表示されるのですが、日本語である
$data["name"]と$data["name_kana"]は文字化けしてしまうのです。
>>287
教えて頂いたサイトの「skip-character-set-client-handshake」は、MySQL4.1.15
以降でないと、出来ないのです。やはり、「SET NAMES 文字コードセット」をクエ
リすることだと思うのですが、mysql_query("SET NAMES utf8", $con); と書いて
いるのに文字化けしてしまう原因が分かりません。どなたか解決策をご存知でしょう
か。宜しくお願いします。
0289nobodyさん
2006/06/14(水) 14:46:40ID:???$match = '/>>(.+)/i';
$change = '<font color="red">\0</font>';
$msg = preg_replace($match,$change,$msg);
>>hogeさん
この部分だけ色を変えたいのですが、上のかきかたでは改行以降も色換えしてしまいます。。
くだらない質問ですが、どのようにすれば改行は含まないようにできるのでしょうか?
0290nobodyさん
2006/06/14(水) 14:47:28ID:???して、それが正しく出てくるかチェックしたら?
0293nobodyさん
2006/06/14(水) 14:56:12ID:???スネーク、まずは>>173-180を見るんだ。
それが終わったら次に>>214-219を見るんだ。
その上で今度は>>221を見るんだ。
そしたら>>223を見るんだ。
最後に、iに関してはこっちを参照するんだ。
http://php.s3.to/man/pcre.pattern.modifiers.html
0295nobodyさん
2006/06/14(水) 15:16:35ID:???preg_replace("/\\\*/","auau", $hoge);
の場合、\*が検索文字列になりますよね?
なぜか、ヒットしない…。
0296nobodyさん
2006/06/14(水) 15:23:56ID:2q2dqRMt<?php
$con = mysql_connect('localhost', 'ユーザー名', 'パスワード');
mysql_query("SET NAMES utf8", $con); //←強制的にUTF8にしようとする。
mysql_select_db("DB名");
mysql_query("INSERT INTO Tuser(name,name_kana) VALUES('ほげ','ふが')");
$sql="select * from Tuser";
$result=mysql_query($sql);
while($data = mysql_fetch_array($result)) {
print($data["id"]);
print($data["name"]);
print($data["name_kana"]);
print("<br>");
}
mysql_close($con);
?>
とやったところ、「ほげ」・「ふが」は正しく表示され、既にDBに入っている
レコードは、文字化けのままでした。PHPから、全てのレコードをinsertすれば
文字化けしないで済むということでしょうか?しかし、PHPから全てのレコード
をinsertしていくのは大変ですので(何千件もある)、文字化けを直して表示
する方法はないのでしょうか?
0297nobodyさん
2006/06/14(水) 15:28:49ID:???そのDBにデータ入れるときにUTF-8以外の文字コードで入れてる
そのまま使うならコンバートして使いたまへ
0298nobodyさん
2006/06/14(水) 15:29:58ID:???0299nobodyさん
2006/06/14(水) 15:37:02ID:???「ああああああ
ああああ
ああああああ」
と、フォームで打ち送信して、
\n⇒<BR>に直したのですが、
保存すると
「ああああああ<BR>ああああ<BR>ああああああ」
にならずに
「ああああああ<BR>
ああああ<BR>
ああああああ」
となってしまいます。
「ああああああ<BR>ああああ<BR>ああああああ」
にするにはどうしたらよいのでしょうか?
0301nobodyさん
2006/06/14(水) 15:54:23ID:2q2dqRMt>>そのDBにデータ入れるときにUTF-8以外の文字コードで入れてる
>>そのまま使うならコンバートして使いたまへ
ありがとうございます!!DBにインポートする際、ダンプファイル
の先頭にset names utf8;と書いたら、文字化けが全て直りました!
一生、感謝致します。(涙涙)本当に、ありがとうございました!!
0302nobodyさん
2006/06/14(水) 16:02:05ID:???$comment = str_replace("\n","<BR>",trim($comment));
$comment = str_replace("\r","<BR>",trim($comment));
$comment = str_replace("\n\r","<BR>",trim($comment));
なんかバグったwwwwwwww
0303nobodyさん
2006/06/14(水) 16:04:30ID:???確か、内部的に\*は\\*になってるので
preg_replace("/\\\\\*/", "auau", $hage);
なら上手く行くかも。
でも普通ならstr_replace()使った方が早いと思います。
以下は参考。
<?php
$hage = "\*\*\*\*";
print $hage."\n";
$hoge = preg_replace("/\\\\\*/", "auau", $hage);
print $hoge."\n";
$huge = str_replace("\*", "auau", $hage);
print $huge."\n";
?>
これの出力は、
\*\*\*\*
auauauauauauauau
auauauauauauauau
になった。
0305nobodyさん
2006/06/14(水) 16:09:06ID:???日本語使ってんならマルチバイト対応関数でやれ
あと、それじゃ「いずれかなら」じゃなくて「すべてにおいて」になる。1行でやれ。
比較の順番も考慮しろよ
0307nobodyさん
2006/06/14(水) 16:23:20ID:???あと、何でゴミ削除の関数必要なんだろう?
$comment = str_replace("\n\r","<BR>", $comment);
$comment = str_replace("\n","<BR>", $comment);
$comment = str_replace("\r","<BR>", $comment);
0309nobodyさん
2006/06/14(水) 16:32:53ID:???>>300はいかにもマズい。
/nと/rを変換→/n/rを変換になってるけど、
正しくやるなら\r\nを変換→/nと/rを変換の順番にすべき。
でないと/r/nがあった時に<BR>2個に変換される。
そもそも何で毎回trim()するのかとかもうワケ分からん。
あと\n\rじゃなくて\r\n。
$comment = trim($comment); // 行末改行を削除
$comment = nl2br($comment); // 改行コードの前に<br />追加
$search = array("\r\n", "\r", "\n");
$comment = str_replace($search, "", $comment); // 改行コード排除
か、
$comment = trim($comment); // 行末改行を削除
$search = array("\r\n", "\r", "\n");
$comment = str_replace($search, "<br />", $comment); // 改行コードを<br />に
の好きな方で。
>>305
これにmbstringなんて要りますか?
0310nobodyさん
2006/06/14(水) 16:42:06ID:lNdv+Y0Zもしくは
$comment = str_replace("\n\r|\n|\r","<BR>", $comment);
あたりで一発でできなかったっけ?
0312nobodyさん
2006/06/14(水) 16:57:15ID:???0313nobodyさん
2006/06/14(水) 16:59:34ID:???0314nobodyさん
2006/06/14(水) 17:02:44ID:???っ http://d.hatena.ne.jp/keyword/%C0%B5%B5%AC%C9%BD%B8%BD
0316nobodyさん
2006/06/14(水) 17:12:00ID:???CGIみたいにHTMLに埋め込みはどうすれば良いのでしょうか?
0318nobodyさん
2006/06/14(水) 17:37:18ID:???0319318
2006/06/14(水) 17:38:08ID:???0320nobodyさん
2006/06/14(水) 17:39:33ID:???PHPで書いたCGIで(比較してるのは多分PerlのCGIのことだろ?)同様にやればよい。
そのページ自体を全部PHPで出力しても良いけど。それもPerlのCGIと同様。
(Perlよりか楽だけど)
画像のカウンターなら>>317
0321nobodyさん
2006/06/14(水) 18:52:07ID:???テンプレにいろいろリンクないの?
PHPってちゃんと解説されてるサイトないの?
0323nobodyさん
2006/06/14(水) 18:54:30ID:???0325nobodyさん
2006/06/14(水) 18:59:52ID:???良し分かった!
ここにPHPについて解説されているサイトへのリンクを列挙しておいた。
ちゃんと全部読んでから質問に来るんだぞっ。
http://qrl.jp/?234511
0326nobodyさん
2006/06/14(水) 19:01:48ID:???0327nobodyさん
2006/06/14(水) 19:04:44ID:???えー
いきなりリファレンス全部読めってか
通して読める入門サイトとかない?
あと、レシピ集みたいのも欲しい
0329nobodyさん
2006/06/14(水) 19:31:52ID:???いくらでもあるよ。好きなのをドゾー
入門
http://qrl.jp/?234512
レシピ集
http://qrl.jp/?227513
まあ隅から隅まで全部完璧に理解する必要なんか無いけどさ、
少しくらいは自力で探す&理解する努力もしてみない?
>>1のマニュアルにだって検索機能付いてるしさ。
0330nobodyさん
2006/06/14(水) 19:49:47ID:???後の関数解説等は必要な時に参照すりゃ良いと"理解できるだろ?"
0331nobodyさん
2006/06/14(水) 20:01:29ID:???>>1の「マニュアル」を消して「リファレンス」とでも書いておけば飛びついて読むんじゃね?w
■ このスレッドは過去ログ倉庫に格納されています