トップページphp
1001コメント304KB

【PHP】下らねぇ質問はID出して書き込みやがれ 110

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2011/08/30(火) 17:23:31.78ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 109
http://hibari.2ch.net/test/read.cgi/php/1311803617/

◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0334nobodyさん2011/09/08(木) 21:23:29.05ID:179MIfwx
質問です。
Notice: Undefined index: id in /opt/lampp/htdocs/samples/chapter2/2-6/intval.php on line 34
って出るんですけど、"id"って定義されてないですか?
9行目のは定義じゃないんですか?

1 <html>
2 <head>
3 <title>SQLコマンドに数値のみを反映する</title>
4 </head>
5 <body>
6 <?php
7 // intval()関数による変換
8 $temp_sql = "SELECT * FROM t1 WHERE id = %s";
9 $id = isset($_POST["id"]) ? intval($_POST["id"]) : "";
10 $result_sql_intval = sprintf($temp_sql, $id);
11
12 // sprintf()関数による変換
13 $temp_sql = "SELECT * FROM t1 WHERE id = %d";
14 $id = isset($_POST["id"]) ? $_POST["id"] : "";
15 $result_sql_sprintf = sprintf($temp_sql, $id);
16 ?>
続く
0335nobodyさん2011/09/08(木) 21:23:44.33ID:179MIfwx
17 <form method="POST" action="<?php echo $_SERVER["PHP_SELF"]?>">
18 <table>
19 <tr>
20 <td>ID:<input type="text" name="id"
21 value="<?php echo $_POST["id"] ?>">
22 <input type="submit" value="作成" name="sub1">
23 </td>
24 </tr>
25 <tr>
26 </tr>
27 <tr>
28 </td>
29 </tr>
30 </table>
31 </form>
32 </body>
33 <?php
34 echo "<p>入力値:" . $_POST["id"] . "</p>";
35 echo "<p>作成されたSQL(sprintf):" . $result_sql_sprintf . "</p>";
36 echo "<p>作成されたSQL(intval):" . $result_sql_intval . "</p>";
37 ?>
0336nobodyさん2011/09/08(木) 21:28:01.21ID:???
34行目の配列のインデックスidは定義されていない
つまり$_POST["id"]が定義されてないってことだろ
つうかそのエラーが出ないように9行目のような処理してんだろ?
34行目は$idを出力しなさい
0337334-3352011/09/08(木) 21:29:39.98ID:179MIfwx
しかも、このPHP走らせると、既にID: を入力するところに
<br /><b>Notice</b>: Undefined index: id in <b>/opt/lampp/htdocs/samples/chapter2/2-6/intval.php</b> on line <b>21</b><br />
というのが入っています。
枠の外なら分かりますけど、枠内ですよ?
0338334-3352011/09/08(木) 21:36:31.23ID:179MIfwx
>>336
ありがとうございます。
そのとおりにすると、枠外のエラーは消えました。
ただ、枠内のエラーが消えていません。
今はこんな感じです:

ID: <br /><b>Notice</b>: Undefined index: id in <b>/opt/lampp/htdocs/samples/chapter2/2-6/intval.php</b> on line <b>21</b><br />

入力値:

作成されたSQL(sprintf):SELECT * FROM t1 WHERE id = 0

作成されたSQL(intval):SELECT * FROM t1 WHERE id =

あ!じゃあ、枠内のも・・・
21行目のも$idにしたら消えました!
正常に動作します!

・・・あのー、これって累計10万部超えた11刷目の本のサンプルコードなんですけど?
これってバグですよね???
0339nobodyさん2011/09/08(木) 21:36:45.51ID:???
21行目も同じことだろ
0340nobodyさん2011/09/08(木) 21:40:54.90ID:???
バグっていうかエラーの種類があって
Noticeは一番軽いエラーで
一般的な環境だと出力が制御されて表示されない
Noticeでもなくすべきっていう思想の人ならでないように9行目のような処理を入れる
ていうか9行目の処理をわざわざいれてるのに$_POST["id"]を出力するのは意味不明
あとhtmlspecialcharsをしてないのも意味不明
0341334-3352011/09/08(木) 21:41:25.34ID:179MIfwx
>>339
そのとおりでした。
2006年に初版が発行されてもう5年も経っているので
少し内容が古いかと思ったのですが、アマゾンでは好評だったので買いました。
ただ、今までのところでも deprecatedな使い方やStrict Standardsなんていうのが沢山出ています。

スーパーサンプルってこんなもんですか?
バグ潰しながら進んでいかないといけないんですか???
0342nobodyさん2011/09/08(木) 21:44:32.24ID:???
PHPほど、ひどい本の多い言語もあるまい。
0343334-3352011/09/08(木) 21:46:47.65ID:179MIfwx
>>340
バグではないんですね・・・自分にとっては警告も気になりますね。
一つ間違ったらエラーになるかもって気がしますから。
ヒヤリハットが大事故に繋がるみたいなものです。

>>342
これは酷すぎます。
5年も経ってて第二版も出しててこれですか?
累計で10万部売れてるんですから、そのうちの1%でもバグ報告してたら、こんなことにはならないでしょう?
まだ第二章ですよ?
刷数が若いとバグも多いだろうと思ってわざわざ新品を買ったのに・・・。
さすがにこれはクレームつけたくなりました・・・。
0344nobodyさん2011/09/08(木) 21:50:16.48ID:???
厳密に言えばNoticeってのはエラーでは無い。
この場合だと、定義されていない変数使ってるからいいんかい?って警告くらいのもんだよ。

最新のマヌアルを読みこなせるような人ならそんな本要らないし、そんな事で文句も言わん。
・・・が、読みこなせるような奴が居ないから好評なんだろね
0345334-3352011/09/08(木) 21:54:52.34ID:179MIfwx
>>344
> ・・・が、読みこなせるような奴が居ないから好評なんだろね

見事に納得しましたw
それがファイナルアンサーでしょうねw

これが最初の本なんですよ。
こんな調子なのでまた質問することになると思います。
気を取り直して勉強に戻ります。
ありがとうございました!
0346nobodyさん2011/09/08(木) 21:55:51.17ID:???
PHPは、

本を書く方も、
本を読む方も、

両方ともコミュ障だから、

バグがあっても報告しない、
報告を受けても対応せずに無視する、

こういう連中なので慣れるしかない。

0347nobodyさん2011/09/08(木) 22:12:50.02ID:???
>>343
> 累計で10万部売れてるんですから、そのうちの1%でもバグ報告してたら、こんなことにはならないでしょう?
まったくもってそのとおり。

> 刷数が若いとバグも多いだろうと思ってわざわざ新品を買ったのに・・・。
そうそう。

> さすがにこれはクレームつけたくなりました・・・。
え、報告しないんだw
0348nobodyさん2011/09/08(木) 23:01:06.19ID:???
>>342
HTMLやCSSほどじゃない
0349nobodyさん2011/09/08(木) 23:21:49.77ID:???
非プログラミング言語が比較対象かよw
0350nobodyさん2011/09/08(木) 23:46:17.59ID:???
html、CSS、プログラミングの初心者向けの本ってとりあえず
最初に書いとくのは文字コードだろうがって思う。
文字化けするだろうがカス。そして誤植が多いし、動かないだろが
ってプログラミングがいっぱいある。マジで校正が甘すぎる。
大学でphpもcgiも習わないから独学するオレのような大学生が
すんげー困る。自分のブログで〜の本のphpプログラミング動かねーから
その対策とか誤植情報とか載せてる。
0351nobodyさん2011/09/08(木) 23:52:43.18ID:???
その本読んでないから知らんけど
要するにそのページ(あるいは章、節)の主題と直接関係がない箇所だから
サンプルコードでNoticeが出ようが関係ない、ってことなんだろうな。
初心者にとっては不親切なわけだけど、著者側からすれば揚げ足取るな、って感じなんだろうな。
0352nobodyさん2011/09/08(木) 23:56:55.63ID:GnAoDzU0
すいません
headfirstphp&mysqlで、勉強はじめました
メール送信に関する設定をしています
php.iniを、開けません
書類 php.ini を開くために必要なデフォルトアプリケーションが指定されていません。と、出ます。
どうしたらよいでしょうか?

環境
mac

進行状況
XAMPPをインストールして、
apachと、mysqlを、起動させるところまで

よろしくお願いします


0353nobodyさん2011/09/08(木) 23:59:24.63ID:???
4の頃の本だろー
4の頃なら何にも出なかったから文句言うやつもいなかったわけでw
0354nobodyさん2011/09/09(金) 00:00:57.08ID:???
>>352
それはXAMPPというよりmacが出してるエラーじゃないの?
php.ini(テキストファイル)を開く標準アプリケーションが設定されてないんでしょ
0355nobodyさん2011/09/09(金) 00:02:25.79ID:???
>>352
php.iniはテキストファイルだから、メモ帳とかで開いたら
開ける。
0356nobodyさん2011/09/09(金) 00:02:59.03ID:???
>>355
macにメモ帳あんのかよ
0357nobodyさん2011/09/09(金) 00:05:48.91ID:???
テキストエディット だな。
右おして情報を見る このアプリケーションで開くで ソレでどーだ。
03583522011/09/09(金) 00:18:39.86ID:ANnoOIHP
>>357
できました!
ありがとうございます!

他のアドバイスくれた人も、
ありがとう!
0359nobodyさん2011/09/09(金) 00:30:10.52ID:???
>>359
mac使ったことないが、windowsのメモ帳に相当する
ものがあるだろうと思った。
0360nobodyさん2011/09/09(金) 01:27:25.64ID:ANnoOIHP
>>359
助かった

0361nobodyさん2011/09/09(金) 01:37:36.76ID:ANnoOIHP
本で、
ファイルを、phpのインストールしたwebサーバーに、アップロードしろという

XAMPPを、ダウンロードした

これに、どうやったら、アップロードできますか?
0362nobodyさん2011/09/09(金) 01:49:59.11ID:???
jpgをうpするならxampp1.7.4ならC:\xampp\htdocs\に
あらかじめuploadsのフォルダを作っとく。

upload.htmlの記述
<form action="upload_image.php" method="POST" enctype="multipart/form-data">
<input type="file" name="filename" size="50">
<br>
<input type="submit" value="アップロード">
</form>


upload_image.phpの記述
<?php
//ファイルの取り出し
$file_name=$_FILES['filename']['name'];
//一時ファイル名の取り出し
$temp_name=$_FILES['filename']['tmp_name'];

// 保存先のディレクトリ
$dir = 'uploads/';
// 保存先のファイル名
$upload_name = $dir.$file_name;
// JPEG形式、GIF形式のファイルをアップロードする
// アップロード(移動)
$result = move_uploaded_file($temp_name, $upload_name);//これがないと失敗
echo ($result)?'アップロード成功':'アップロード失敗';
?>
<img src="<?php echo $upload_name; ?>">


こんな感じ。考えるな感じるんだ。
0363nobodyさん2011/09/09(金) 01:52:26.44ID:ANnoOIHP
ありがとうございます
実験してみます
0364nobodyさん2011/09/09(金) 02:03:10.91ID:???
>>363
分かってるの思うが、>>362の記述は<html></html>の
<body>から</body>の間に記述だぜ。
0365nobodyさん2011/09/09(金) 10:50:14.19ID:???
>>362
スマン
macの場合はどうする?
0366nobodyさん2011/09/09(金) 10:52:19.74ID:???
同じように、htdocに、アップロードようフォルダを作ってやってみる

夜やるから、夜結果報告する。

0367nobodyさん2011/09/09(金) 11:14:03.05ID:???
マックでも同じだろ?
htdocにupload.htmlを入れて、xamppのApache起動させといて
http://localhost/upload.htmlにアクセスできるだろ?
0368nobodyさん2011/09/09(金) 14:25:20.33ID:???
>>362
なんとなく、うっすらと、だけど。

ローカルマシンでphpスクリプトを作成し、リモートのWebサーバに
作成したスクリプトをアップロードせよって話の気がする。

つまり、htdocs配下にコピーすればおk、というものの気がする。
0369nobodyさん2011/09/09(金) 14:43:01.49ID:???
ってか>>362をコピペするだけだから2分以内でできる。
0370nobodyさん2011/09/09(金) 14:44:34.99ID:???
>>369
ローカルサーバにスクリプトなりファイルなりをアップロードするのは5秒もあればできる
0371nobodyさん2011/09/09(金) 15:25:38.05ID:qgGY9iV0
cakephpなんですが、fooテーブルの項目date(dateの形式)の日付が3ヶ月前までなら、という条件式を
'condition' => array(
'Foo.date >' => date('Y-m-d', strtotime("-3 month"))
)
と書いたんですが3ヶ月以上前でも全部表示されてしまいます
なにが問題なのかお教えいただけたらさいわいです
0372nobodyさん2011/09/09(金) 18:05:22.27ID:???
知らんね
0373nobodyさん2011/09/09(金) 18:08:54.18ID:???
とりあえずconditionsだったと思う

あと、CakePHPのスレがあっからそっちで質問の方がいいんじゃね?
0374nobodyさん2011/09/09(金) 18:09:58.76ID:???
CakePHPっていいの?
0375nobodyさん2011/09/09(金) 18:25:14.59ID:???
中規模以上のシステムだとフレームワーク使わないと効率悪すぎる。
フレームワークを何使うかは人それぞれ好みが分かれる。
0376nobodyさん2011/09/09(金) 18:38:14.53ID:???
50万の中規模システムをサクラエディタ(設定やプラグインもいれずメモ張程度の機能しかない)のみで作成した俺って天才じゃね?
0377nobodyさん2011/09/09(金) 18:40:46.21ID:???
エディタ関係ないし
0378nobodyさん2011/09/09(金) 18:51:01.10ID:???
IDEと混同したんだな
0379nobodyさん2011/09/09(金) 18:56:28.45ID:???
>>376 のおかげで自信出てきた。
0380nobodyさん2011/09/09(金) 19:03:32.43ID:???
50万って単位はなに?
0381nobodyさん2011/09/09(金) 19:08:02.97ID:???
人月だよもちろん
0382nobodyさん2011/09/09(金) 19:10:55.63ID:???
パーフェクトPHP・6章のひとこと掲示板で、
ロジックとビューを分けた後、どこにheader()を書けばいいのか
どなたか教えてたもれ〜
0383nobodyさん2011/09/09(金) 19:18:39.04ID:???
header()はだいたい先頭

最初に echo か print がでてくる前に書けばいいんでない?

0384nobodyさん2011/09/09(金) 19:21:03.34ID:???
>>377
補完機能も動的デバッグもなくて大変なんだぜ?
まぁしょうがなかったんだわ
メモリ512MBの糞PCで開発させられてたからIDEなんて入れられなくてな
0385nobodyさん2011/09/09(金) 19:23:41.81ID:???
あ、フレームワークと関係ないっていいたかったんだね
まぁ大変さを強調したかっただけだからスルーしてくれ
0386nobodyさん2011/09/09(金) 19:35:57.31ID:???
>>381
サクラエディタ使ってピラミッドでも建てたのか?
0387nobodyさん2011/09/09(金) 19:44:27.53ID:???
テキストエディタで十分
0388nobodyさん2011/09/09(金) 20:19:18.76ID:???
>>384
文脈を考慮しなくていい(ただのキーワードマッチ)補完ならVimでできるし、さくらと大してメモリ消費量も変わらないんでないのかな
0389nobodyさん2011/09/09(金) 21:02:39.93ID:g+bZZ5lK
$array = array('aaaa', 'bbbb', array('cccc', 'dddd'), 'eeee' );
などとある時に、array内のarrayの要素数まで含めたトータルの要素数をcountする関数ってありますか
0390nobodyさん2011/09/09(金) 21:17:21.02ID:???
http://jp.php.net/manual/ja/function.count.php

>オプションのmode 引数が COUNT_RECURSIVE (または 1) にセットされた場合、
>count() は再帰的に配列をカウントします。
>これは多次元配列の全ての要素をカウントするといった場合に特に有効です。
> count() は無限の再帰を検出しません。
0391nobodyさん2011/09/09(金) 21:22:30.23ID:g+bZZ5lK
>>390
COUNT_RECURSIVE を使うと正しい結果が出ないので、使えないのです
例えば>>389の配列だと5と出て欲しいのですが、配列自体も含めてしまうので6となってしまう
0392nobodyさん2011/09/09(金) 21:58:34.73ID:???
countのユーザーノート見ればいくつかあるだろ
03933612011/09/09(金) 22:48:31.16ID:ANnoOIHP
>>362
やりました!
htdocに、upload_image.phpと、htmlを、いれました
それを、ブラウザで、開けました
ありがとうございます!

前より理解できました
分かったこと
・htdocに、置くと、アップロードしたことになること
・ブラウザでhtmlファイルの、ボタンを押すと、phpファイルが、動くこと

これから、本を読み進めていきます







03941/32011/09/09(金) 22:50:13.91ID:???
<?php
 function count_array($array)
 {
  $i = 0;
  $j = 0;

  $keys = array_keys($array);

  foreach ($keys as $key)
  {
   if (is_array($array[$key]))
   {
    $j += count_array($array[$key]);
   }
   else
03952/32011/09/09(金) 22:51:30.09ID:???
   {
    $j++;
   }

   $i++;
  }

  return $j;
 }

 $array = array(
  'hoge' => 'aaaa',
  'bbbb',
  'cccc' => array(
   'cccc',
03963/32011/09/09(金) 22:52:46.87ID:???
   'dddd',
   array(
    'eeee',
    'piyo' =>6,
    'gggg'
   ),
  ),
  'hhhh'
 );

 $count = count_array($array);

 echo $count . "\n";
?>
0397nobodyさん2011/09/09(金) 22:54:47.11ID:???
間違えた、変数$i はもういらない
03983612011/09/09(金) 23:24:41.44ID:ANnoOIHP
htmlは、ブラウザで、
ボタンなどで、表示されます。

そのボタンを押して、phpファイルを動かそうとすると、
文字だけの、ソースコードの画面になってしまいます。

どうしたら、phpファイルを、出力できるでしょうか?
0399nobodyさん2011/09/09(金) 23:30:38.87ID:???
>>398
もっと詳しく書いてくれ。
>>362の画像うpのスクリプトの話?
0400nobodyさん2011/09/09(金) 23:41:36.94ID:???
>>398
多分、間違えてるな。
htdocにupload.htmlを入れて、xamppのApache起動させといて
http://localhost/upload.htmlにアクセスしろ
Apacheは簡単に言うとhttp://localhost/のurlを使えるようにする。
http://localhost/でないとwebプログラムのphp、cgiが動かない。
君はブラウザのurlの欄にC:\xampp\htdocs\ybhujnindex.html
って表示されてるんじゃない?
0401nobodyさん2011/09/09(金) 23:43:07.73ID:???
ミスった、
C:\xampp\htdocs\ybhujnindex.html
でなくC:\xampp\htdocs\upload.htmlってブラウザのurl欄に
表示されてるんじゃない?
0402nobodyさん2011/09/09(金) 23:54:31.88ID:z7az+EcJ
MySQLのデータを読み出してドロップダウン・メニューを生成するだけのコードですが、文字コードがうまく変換されないので文字化けします。
1 <html>
2 <head>
3 <title>選択リストをデータベースから生成する</title>
4 </head>
5 <body>
6 <?php
7 // 接続設定(サーバ/データベース/ユーザ/パスワード)
8 $sv = "localhost";
9 $dbname = "testdb";
10 $user = "root";
11 //$pass = "********";
12 $pass = "";
13
14 // 文字コード
15 //$enc_disp = "EUC-JP";
16 //$enc_db = "EUC-JP";
17 $enc_disp = "UTF-8";
18 $enc_db = "UTF-8";
19
20 // データの文字コードを変換する関数
21 function cnv_enc($string, $to, $from) {
22 // 文字コードを変換する
23 $det_enc = mb_detect_encoding($string, $from . ", " . $to);
24 // if ($det_enc and $det_enc != $to) {
25 if ($det_enc != $to) {
26 return mb_convert_encoding($string, $to, $det_enc);
27 }
28 else {
29 return $string;
30 }
31 }
0403nobodyさん2011/09/09(金) 23:56:27.89ID:z7az+EcJ
33 // データベースに接続する
34 $conn = mysql_connect($sv, $user, $pass) or die("接続エラー");
35 mysql_select_db($dbname) or die("接続エラー");
36
37 // データを取り出す
38 $sql = "SELECT id, nam FROM prod ORDER BY id";
39 $res = mysql_query($sql, $conn) or die("データ抽出エラー");
40
41 // 取り出したデータを表示する
42 echo "<select name=\"menu1\">";
43 while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
44 echo "<option value=\"".$row["id"]."\">".
45 // cnv_enc($row["nam"], $enc_disp, $enc_db)."</option>";
46 cnv_enc($row["nam"], "UTF-8", "UTF-8")."</option>";
47 }
48 echo "</select>";
49
50 // 接続を解除する
51 mysql_close($conn);
52
53 ?>
54 </body>
55 </html>
24行目のcnv_encのandは間違いですよね?
コメントアウトして自分なりに直してみましたが、それでも結果は変わりません。
アドバイスをお願いします。
0404nobodyさん2011/09/10(土) 00:39:44.72ID:???
>>403

23 $det_enc = mb_detect_encoding($string, $from . ", " . $to);

って

23 $det_enc = mb_detect_encoding($string, $from, $to);

じゃないの?
0405nobodyさん2011/09/10(土) 00:50:45.35ID:???
0406nobodyさん2011/09/10(土) 01:16:09.21ID:???
もうその本窓からステなよ
0407nobodyさん2011/09/10(土) 01:33:26.75ID:???
>>394-397
dです。
ちなみにこのように書き換えて使うことにしました。動作確認おkのようです。

function count_array($array)
{
 $count = 0;
 foreach ($array as $elem){
  if (is_array($elem)){
   $count += count_array($elem);
  }
  else{
   $count++;
  }
 }
 return $count;
}
04084032011/09/10(土) 01:37:07.17ID:dFxJuFkm
>>404
ああ、確かに訳の分からない連結してますね。
そこを直しましたけど変わりないですね。

>>406
4,000円もしたんですよ?

まず、ここ
24 if ($det_enc and $det_enc != $to) {
が正しいかどうか答えてくださいませんか?
自分は生まれてこの方こんなコード見たことないです。
まさか、($det_enc and $det_enc)がTRUEで$toがFALSEだったら真、ということは・・・ないですね。
0409nobodyさん2011/09/10(土) 02:23:06.02ID:???
>>408
演算子の優先順位
ttp://www.php.net/manual/ja/language.operators.precedence.php
0410nobodyさん2011/09/10(土) 02:33:50.69ID:???
>>408
×答えてくださいませんか?
○教えて頂けないでしょうか?

「お前、客かよ!」なんかイラッとしたw
0411nobodyさん2011/09/10(土) 03:15:30.25ID:???
このスレの住民は「そんな本捨てろばっかだな」
おまいらいい年したオッサンなんだから、php初心者〜上級者
小学生〜中年まで対応したphpの解説したwebサイト作ってくれよ。
0412nobodyさん2011/09/10(土) 04:33:48.26ID:???
>>3
0413nobodyさん2011/09/10(土) 05:18:27.95ID:???
PEARって使ってる?
04143612011/09/10(土) 07:15:55.24ID:b1uhXqiv
>>400
>>401
ありがとう!

そのようにしたら、
できた!

ブラウザのURL欄は、
file:///Applications/XAMPP/xamppfiles/htdocs/upload.html この表示の時、できなかった

http://localhost/upload_image.php この表示の時、できた

サンクス

XAMPP,apach,ローカルホストは、ただで、
webページ貸してくれるけど、いままで、webページ借りるのに、金払ってたから、悪い

あと、localhostに表示されると、すごい文字化けする。どこをなおしたらよいでしょうか?
0415nobodyさん2011/09/10(土) 07:49:57.17ID:???
>>411 
本家マニュアルよりもphpプロがおすすめ
これから入門するならね
04163612011/09/10(土) 07:54:39.58ID:b1uhXqiv
UTF-8,Shift-JIS,EUCで、実験しましたが、駄目でした
04173612011/09/10(土) 08:08:13.23ID:b1uhXqiv
失礼しました
Shift-JISにしたら、なおりました。
0418nobodyさん2011/09/10(土) 08:26:08.57ID:9mHd+BwL
mb_convert_encodingが必要なのは、
外部の記憶領域(ファイル、セッション、DB)から、
変数を取り出したり書き込んだりする時だけでいいんですよね?
例えば同じファイルに書いて、

<?php
$a="こんにちは";
echo mb_convert_encoding($a,'UTF-8','auto');
?>
なんてのは無意味ですよね?
ちなみに上のスクリプトの動作は、SJISで保存してようが、UTF-8で保存してようが、
文字化けせずにUTF-8でこんにちはを出力してくれます。
0419nobodyさん2011/09/10(土) 09:44:10.77ID:???
php.iniでmbstring.internal_encoding='SJIS'だとしてもそうなるのかな。
0420nobodyさん2011/09/10(土) 10:01:06.00ID:???
>>408

データベースに接続する処理のあとにmysql_query("SET NAMES UTF8");
をいれてみて
0421nobodyさん2011/09/10(土) 10:05:27.98ID:???
>>420の追記

解決したかもしれないけど

$det_enc and $det_enc != $toは

$det_encが真かつ$det_encがtoでないって意味だと
04224032011/09/10(土) 10:28:31.95ID:dFxJuFkm
ありがとうございます。
まだ未解決です。

>>420-421
mysql_query("SET NAMES UTF8");
を入れてみると、最初のは
PHP?泣?潟??????
と表示されるようになりました。
この?は、黒い菱形で"?"を囲んだ特殊な文字です。

同じ変数をandで比較して存在してるかどうか調べているんですね。
それでいて後半部分は$det_encが$toと一致しない、と…

やはり正しく表示されませんね…。
どうすればいいでしょうか?
04234032011/09/10(土) 10:36:20.45ID:dFxJuFkm
>>420-421
あーっ!ブラウザ(上でIEと書きましたがFireFoxでした…)の文字コードを"UTF-8"にしたら
正しく日本語で"PHPサンプル集"と表示されました!!!
ありがとうございます!

ただ、F5を押すと自動判別されてまた"PHP?泣?潟??????"に戻ります…。
自動判別を解除すると、もちろん"PHPサンプル集"と表示されるんですけど、
一般の方はきっと自動判別に設定していますよね…。

なぜ自動判別だとEUC-JPになってしまうのでしょうか?
何を基準にして自動判別しているのでしょうか?
04244032011/09/10(土) 10:46:30.68ID:dFxJuFkm
>>420-421
追記です。
文字コードを"UTF-8"にすると"PHPサンプル集"と表示されますけど、
今度はタイトルが文字化けします。

文字コードを"自動判別"にすると"PHP?泣?潟??????"と表示されますけど、
タイトルは「選択リストをデータベースから生成する」と正しく表示されます。

でも、PHPコード内のタイトルのところで文字コードなんて指定していないですよね?
0425nobodyさん2011/09/10(土) 10:51:56.43ID:???
自動判別がおかしいのはmetaタグで指定してやればよさそうだけど
根本的に、文字コードを何で出力すればよいのか設計があやふやではないかい?
少なくとも、設計の時点で、
・データベース
・ソースコード
・HTML出力
を何の文字コードで管理すべきかは決めておかないと、どこで何の文字コードに変換すべきかわからなくならないか。
0426nobodyさん2011/09/10(土) 10:52:19.98ID:???
32行より↑の
<html>〜<body>間に↓入れてる?

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
0427nobodyさん2011/09/10(土) 10:53:42.43ID:???
古い記事だけど
http://hain.jp/index.php/tech-j/2007/02/13/p125
04284032011/09/10(土) 10:56:47.67ID:dFxJuFkm
>>425
そのmetaタグというのを具体的に教えていただけませんか?

PHP始めてまだ一週間程度の自分にそれを言われても困ります。
というか、この本スーパーサンプルがそれについて言及するべきだと思います。
日本語でデータベースを扱うのはこの本ではこれが最初です。
まだ右の左も分からない人間でもほぼそのまま実行できるサンプル、
っていうのが売りのはずの本なんですけどまったくのデタラメですね。
0429nobodyさん2011/09/10(土) 11:06:55.05ID:???
>>428
だから捨てろっていってんのに、困りますって言われてもこっちも困りますねー。
どっちかっていうと、分かってる人が思い出すのに使えるかなっていうところ。
いわゆるセキュリティとか丸ごと無視してるし。そういうの分かっている人じゃないと。

*初心者*がそういう引っかかるところを網羅してちゃんと使える本は無いんじゃないかな。
分厚くなりそうでちゃんと書くとかえって読みづらいし。
04304032011/09/10(土) 11:08:15.13ID:dFxJuFkm
>>426
自動判別で"UTF-8"が選択されるようになりました。
が、しかし、タイトルは文字化けしたままです。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" > ←(2)
<title>選択リストをデータベースから生成する</title>
</head>
<body>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" > ←(1)
<?php
// 接続設定(サーバ/データベース/ユーザ/パスワード)

挿入した箇所は、まず(1)に挿入して自動判別で"UTF-8"が選択されることを確認し、
次にタイトルも正常に表示されないだろうかと(2)に挿入してみてダメでした。

タイトルもUTF-8にする方法というのはありますか?
0431nobodyさん2011/09/10(土) 11:11:49.26ID:???
ソース自体の文字コードが違うのかな?
04324032011/09/10(土) 11:16:33.70ID:dFxJuFkm
>>431
ちなみに>>428を書く前に
上で教えてもらったiconvを使ってソースコード自体をUTF-8に変換しました。
ブラウザで開こうとするとダウンロードするかgeditで開くか訊かれて
geditで開くとブランクで何も表示されませんでした。
多分、テキストということすら認識されていないと思います。
0433nobodyさん2011/09/10(土) 11:19:38.94ID:???
>>430

(1)は意味ない
(2)でうまくいかないのはよくわからない

EUC-jpになるならEUC-jpに統一してみては?
04344032011/09/10(土) 11:24:59.05ID:dFxJuFkm
>>433
ありがとうございます。
なるほど、ということはデータベースからすべてEUC-JP、ということですね?

今日は他にもやることがあるので、後で試してまたレスします。
■ このスレッドは過去ログ倉庫に格納されています