くだすれPHP(超初心者用)4
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/06/13(金) 20:32:36ID:???もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
PHP使いが優しくコメントを返しますが、
お礼はPHPの布教と初心者の救済をお願いします。
PHP Home Page
http://www.php.net/
http://jp.php.net/
前スレ: くだすれPHP(超初心者用)3
http://pc11.2ch.net/test/read.cgi/php/1193295871/
適当に関連スレ(マルチはだめぽ)
【PHP】下らねぇ質問はここに書き込みやがれ 69
http://pc11.2ch.net/test/read.cgi/php/1211879073/
0020nobodyさん
2008/06/22(日) 15:16:41ID:???http://jp2.php.net/manual/ja/
0021nobodyさん
2008/06/22(日) 16:53:20ID:???PHP 入門
でググって出てきたサイトを上から眺めていけばいいんじゃないかな。
ほでなすPHPとかでも勉強にはなった。
まぁ、入門っていうなら、PHP関連の書籍スレでも眺めて、初心者向けでいい本を読むのがいいかな。
0022nobodyさん
2008/06/25(水) 02:35:31ID:???基礎からのPHPでの質問ですが、admin.phpのところで、
if (isSet($_GET['tab']) && $_GET['tab'] == 'conf')
{
require('adminConfig.php');
}
else if (isSet($_GET['tab']) && $_GET['tab'] == 'edit')
{
require('adminEdit.php');
}
else if (isSet($_GET['tab']) && $_GET['tab'] == 'list')
{
require('adminList.php');
}
else
{
require('adminConfig.php');
の部分でisSet($_GET['tab']) の意味がわかりません。
どっからtabはでてきたんですか?
http://gichioka.web.fc2.com/blog.rar
ここにソースを保存したので、よろしくです。
0023nobodyさん
2008/06/25(水) 03:03:27ID:???GETメソッドと、POSTメソッド、って言うものを理解しないと正直きつい。
まぁ、とにかく、
このadmin.phpにアクセスするときに、
ttp://www.example.com/admin.php?tab=conf
とか、って書いた場合、これはGETメソッドで、そのadmin.php以下のプロパティを渡すんだ。
で、ソレはPHPが自動的に、$_GETっていう連想配列に渡される。
上の例だと、$_GET['tab']に、'conf'が渡されるわけだ。
POSTメソッドで渡されたものは、$_POSTに渡されてくる感じ。
で、分かるかな。
適当な回答なので突っ込みあれば宜しく。
0025nobodyさん
2008/06/25(水) 19:14:43ID:???よくわかりました。
ありがとうございます
0026nobodyさん
2008/06/25(水) 21:01:39ID:57l0ft98大角本で質問なんですが、
?
if ( $_SESSION['checked_item'] != '' ) {
foreach( $_SESSION['checked_item'] as $value ) {
$sql = "select * from item
left join author on item.author_id = author.author_id
where item_id = '$value'";
$result = mysql_query( $sql );
while ( $item = mysql_fetch_array( $result ) ) {
?>
の部分の$_SESSION['checked_item']の'checked_item'はどこからきたの?
あと$sql = "select * from item
left join author on item.author_id = author.author_id
where item_id = '$value'";
このsql文はなんでしょうか?
教えてください。
ソースはこちらにあります。
http://gichioka.web.fc2.com/sample-ec101.zip
0027nobodyさん
2008/06/25(水) 21:03:44ID:???0028nobodyさん
2008/06/25(水) 21:18:45ID:???0029nobodyさん
2008/06/25(水) 21:18:57ID:57l0ft98sessionとmysql見てみたんですが、
sqlに関しては左側の部分をとりだすとのことなんですが、
いまいち意味がわかりません。
よろしくお願いします。
author.author_id ここの部分とか....
わかりません。
0030nobodyさん
2008/06/25(水) 21:22:09ID:57l0ft98もしだけならここ見たらいいよとかのURLやここに聞いたらいいよ
とかのヒントだけでもお願いします。
0031nobodyさん
2008/06/25(水) 21:22:35ID:???2.本読め
3.リファレンス読め
0032nobodyさん
2008/06/25(水) 21:23:06ID:???まぁ、超初心者スレだから、そういうなよ。何をどう検索したら良いかとかいまいちピンと着てないだけかもしれないでしょ。
とりあえず、>>26は、そのSQL文の何がどうわからないのか教えてよ。
$_SESSIONは、セッション変数って奴で、多分別のファイル見れば、セッション変数に値入れてる行があると思うよ。
詳しくは、
http://jp2.php.net/session
003332
2008/06/25(水) 21:26:52ID:???恥ずかしい。
>>29
item.author_idってのは、itemテーブルのauthor_idフィールドのこと。
author.author_idってのは、authorテーブルのauthor_idフィールドのこと。
0034nobodyさん
2008/06/25(水) 22:10:36ID:???・PHP 5.26 @ WinXP SP2
・ファイルは BOM無しのUTF8 で保存
・mbstring.internal_encoding = UTF-8
・mbstring.http_output = pass
・mbstring.http_input = auto
以上の環境にて、以下のようなスクリプトを動作させたとき、
<?php
var_dump($_GET);
?>
$_GET に日本語が含まれると文字化けを起こしてしまいます。
mb_detect_encoding を使ってみた結果、$_GET が SJIS で渡されており、これがファイル保存時の文字コードと異なるために、
文字化けを起こすものと思われます。
これをどうにか解消したい($_GETをUTF8で受け取ってほしい)のですが、どのようにすればよいか検討がつきかねます。
どなたか、ご助力いただけると幸いです。よろしくお願いします。
003534
2008/06/25(水) 22:11:44ID:???・PHP 5.2.6 @ WinXP SP2
です。
0036nobodyさん
2008/06/25(水) 22:15:56ID:???0037nobodyさん
2008/06/25(水) 22:23:08ID:6PfOtUiM・ファイルは BOM無しのUTF8 で保存 に含めたつもりでしたが、
HTMLもUTF8になっています。
0038nobodyさん
2008/06/25(水) 22:48:20ID:???HTMLの<head>タグに、
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
を突っ込んだらどうよ。
003934
2008/06/25(水) 22:48:25ID:???同じように $_POST も試してみましたが、こちらは文字化けは起こらず、mb_detect_encodingの結果も UTF-8 でした。
発生するのは $_GET のときのみのようです。
0040nobodyさん
2008/06/25(水) 22:50:15ID:???ありがとうございます。
meta に入れるのもやってみました。
やはり、$_GET で受け取った文字列だけが文字化けが起こします。
0041nobodyさん
2008/06/25(水) 22:54:13ID:???あぁ、
日本語WindowsのアプリってエンコードSJISだから、GETメソッドでクエリ送れば、SJISになりますよ。
http://example.com/index.php?hoge=あいうえお
とかやると。
URLに渡すときはURLエンコードとかかけなきゃいけないんじゃないかな。
0042nobodyさん
2008/06/25(水) 23:04:21ID:???0043nobodyさん
2008/06/25(水) 23:06:51ID:???情報小出しになってしまってごめんなさい。
はい、アドレスバーに直接打ち込んでテストしています。
あきらめて、SJISでプログラムしたほうがいいのでしょうか……。
0044nobodyさん
2008/06/25(水) 23:08:44ID:???んでもって、本番でもアドレスバーから直接入力するんですか?それともページ中にリンク張るんですか???
0045nobodyさん
2008/06/25(水) 23:12:40ID:???本当に申し訳ないです。
もちろん、ページ中からリンクを貼りますが、$_GET から値を持ってきて、HTML中で表示させたときに文字化けしてしまうとなると、
form などから get で送って、次のページで受け取り表示する、ということができないので、何とか解決したいと思っています。
0046nobodyさん
2008/06/25(水) 23:15:52ID:???form から get で送ればURLエンコードされるよ
?hoge=あいうえおの部分はinput type=hiddlenで指定する
0048nobodyさん
2008/06/25(水) 23:19:29ID:???よく分からん。
HTML中に<a href="hoge.php?q=あいうえお">とか書くってこと?
それともフォームでmethod="get"でinput type="text"に日本語入力してもらうってこと?
いずれも適切にエンコード設定すれば文字化けなんかしないから大丈夫
0049nobodyさん
2008/06/25(水) 23:19:33ID:???あれれれ……?
そのとおりです。formから送ったらgetでも正常でした。
ってことは、「アドレスバーから直接打ち込んでいた」ことが原因だったようですね……。
これだけのために、本当にご迷惑をおかけしました。
情報の小出し、気をつけます。
ありがとうございました。
0050nobodyさん
2008/06/25(水) 23:40:40ID:???0051nobodyさん
2008/06/26(木) 23:16:43ID:???「item.php」のこの部分みたい
if ( ++ $_SESSION['checked_item_num'] > 4 ) $_SESSION['checked_item_num'] = 1;
if ( ! in_array( $_GET['item_id'], (array)$_SESSION['checked_item'] ) )
$_SESSION['checked_item'][$_SESSION['checked_item_num']] = $_GET['item_id'];
ところで二行目の (array) ってなんの意味があるの?
だれか教えて下さい。
0053nobodyさん
2008/06/27(金) 00:15:13ID:???こういう使い方なら理解できるんだけど
function foo($value)
{
$array = (array) $value;
print_r($array);
}
なんでif()の条件に
if ( ! in_array( $_GET['item_id'], (array)$_SESSION['checked_item'] ) )
こういう使い方をするんだろ。
0054nobodyさん
2008/06/27(金) 00:23:41ID:???http://php.net/in_array
0055nobodyさん
2008/06/27(金) 00:26:03ID:???$_SESSION['checked_item']が配列じゃなかったときにエラーはかれるのを回避したかったんじゃないの?
(array)で型キャストすれば単一文字列が入ってても、配列に変換されるし。
0056nobodyさん
2008/06/27(金) 00:43:47ID:???要素が一つでも配列は配列だし。
うーん。
眠いから明日また考えてみる。
ありがとう。
0057nobodyさん
2008/06/27(金) 00:50:44ID:???$_SESSIONは配列かもしれないけど、
$_SESSION['checked_item']は、配列じゃないかもしれないだろ?
0058nobodyさん
2008/06/27(金) 02:50:58ID:???0059nobodyさん
2008/06/27(金) 04:01:35ID:XEI5jC31if ( ! in_array( $_GET['item_id'], (array)$_SESSION['checked_item'] ) )
$_SESSION['checked_item'][$_SESSION['checked_item_num']] = $_GET['item_id'];
僕もわかりません。
(array)と結局なんの処理なんでしょうか?
0061nobodyさん
2008/06/27(金) 07:32:24ID:???0062nobodyさん
2008/06/27(金) 12:39:58ID:???item_idがその中に無ければ配列として追加してってる感じ?
その配列キーは$_SESSION['checked_item_num']で最大4まで
それ以上の場合は1に戻す
006356
2008/06/27(金) 22:24:17ID:???やっと理解できました。
array型へのキャストは、スカラならその値をひとつの要素とした配列に
配列ならそのままの状態、というふうに切り替わるんですね。
そこを知らなかったから余計に混乱してました。
ありがとうございます。
0064nobodyさん
2008/06/27(金) 22:42:45ID:???0065nobodyさん
2008/06/27(金) 23:39:22ID:???型キャストって言葉が出てこなかったら、(array)で何が起こってるかっていうのは、
検索しづらいんじゃない?
きっかけとかとっかかり掴みづらい内容ではあったと思う。
超初心者スレだし、多めに見てやりなよ。
0066nobodyさん
2008/06/27(金) 23:44:38ID:???0067nobodyさん
2008/06/27(金) 23:56:10ID:???あとマニュアルが一番基礎の教科書
0068nobodyさん
2008/06/28(土) 00:44:20ID:???0069nobodyさん
2008/06/28(土) 00:46:53ID:???0070nobodyさん
2008/06/28(土) 07:49:57ID:9QUTsyON$str = <<<EOM
あああ<br />
いいい<br />
ううう<br />
<!--S-->
えええ<br />
おおお<br />
<!--E-->
EOM;
このうち<!--S-->と<!--E-->で囲まれている<br />だけを削除したいのですが、
正規表現を使って綺麗に書けるでしょうか?
以下のように試したのですが、<!--S-->と<!--E-->が消えるだけでした。
$str = preg_replace("/<!--S-->([\W\w]+)<!--E-->/",str_replace("<br />","","\\1"),$str);
また、<!--S(E)-->で囲まれている部分は改行や半角英数字などが含まれる場合があります。
どなたかご教示いただけますでしょうか。よろしくお願いいたします。
0071nobodyさん
2008/06/28(土) 07:57:27ID:???0073nobodyさん
2008/06/29(日) 10:08:17ID:l4KJ7KZ4同じ方法でUTF-8を判別させる方法てありますか?BOMは
考慮にいれたくないです。
0074nobodyさん
2008/06/29(日) 17:48:22ID:???0075nobodyさん
2008/06/29(日) 18:23:50ID:hneArZSD基礎からのPHPからの質問なんですが、
自分のサーバーに移行して実行したところ、
loginForm.phpでIDとパスワードを聞かれて入力したいのですが、
うごきません。というかIDとパスワードはなんなんでしょうか?
本にはroot,rootpassと書いてあったんですが、動きません。
すべてデータベースも起動させているのですが、pearも入っています。
http://gichioka.web.fc2.com/blog.rar
ここにソースを保存したので、よろしくです。
0076nobodyさん
2008/06/29(日) 18:31:26ID:???それよりおまえ、>5で>26だろ?
SQLを基礎から勉強してこいって。
0077nobodyさん
2008/06/29(日) 18:41:10ID:hneArZSDよろしくです。
SQLの勉強もします。
お願いします
0078nobodyさん
2008/06/29(日) 18:43:49ID:???0079nobodyさん
2008/06/29(日) 19:07:35ID:hneArZSD0080nobodyさん
2008/06/29(日) 19:10:11ID:???0081nobodyさん
2008/06/29(日) 19:14:08ID:hneArZSD今回これがなぜうごかないのかわかりません。
この板ではだめですか?
0082nobodyさん
2008/06/29(日) 19:15:56ID:hneArZSDあと、ログイン画面は表示されるのですが、
下のトップページに戻るは真白です。
よろしくお願いします。
0083nobodyさん
2008/06/29(日) 19:42:13ID:???0084nobodyさん
2008/06/29(日) 20:50:46ID:hneArZSD0085nobodyさん
2008/06/29(日) 21:24:23ID:???0086nobodyさん
2008/06/29(日) 22:42:12ID:???0087nobodyさん
2008/06/30(月) 01:49:34ID:???0088nobodyさん
2008/06/30(月) 02:51:43ID:???0089nobodyさん
2008/06/30(月) 18:04:53ID:???テーブル、カラム、データベース全体……個別個別で細かく設定できすぎてよくわからない。
0090nobodyさん
2008/06/30(月) 22:24:41ID:???どこか参考になるサイトありますか?
/* PUSH */
$arr = array();
$num = 5; //意味ないかもしれませんが・・・
for($i = 0;$i < $num;$i++)
{
$arr[] = $i; //array_push($arr,$i); とやろうとしたけど、これは無理でしょうか。
}
$ct = count($arr);
echo "要素数:$ct\n");
・
・
・
・
てな感じで書いてるんです。
本当はarray_pushやarray_pop、unshiftやらを使いたいのですが、
これら全てが上手く動いてくれません。助言お願いします。
0091nobodyさん
2008/06/30(月) 22:27:09ID:???0092nobodyさん
2008/06/30(月) 22:31:07ID:???for文の中身は確か、
$arr[] = $i + 1;
の間違いでした、スイマセン。
echoで$arrの中身を順番に表示させると、
1
2
3
4
5
という風になるんですが、array_pushで>>90のコメントで書いている通りのコードで
実行させると、配列から何も取り出せてなかったんです。
0093nobodyさん
2008/06/30(月) 22:32:46ID:???0094nobodyさん
2008/06/30(月) 22:34:22ID:???実は入社してから、初めてPHPを触りまして、まだ2日目です。
0095nobodyさん
2008/06/30(月) 22:35:55ID:???0097nobodyさん
2008/06/30(月) 22:40:44ID:???pushの部分では、>>90の通りです。
後は、echoで&arrの中身5つを順に表示させて終わりです。
$arr[] = $i + 1;
の下に、
echo = "$arr[i]\n";
これだけです。
ちなみにstackクラスの中でpushとpopの関数を作っています。
0098nobodyさん
2008/06/30(月) 22:41:37ID:???0099nobodyさん
2008/06/30(月) 22:42:43ID:???ああ・・そうです、すいません
まだ$つけるの慣れてないものでつけ忘れました・・・
実際のコードではつけてますので。
0100nobodyさん
2008/06/30(月) 22:45:49ID:???$arr = array();
for($i=0; $i<5; $i++) {
array_push($arr,$i);
echo "$arr[$i] ";
}
結果
0 1 2 3 4
0101nobodyさん
2008/06/30(月) 22:56:51ID:???ええ・・・出来るんですか
あと、>>97でecho = ...とかやってますね、もう間違い酷すぎます・・・。
自分の環境では、
PHP5
apache 2.2
eclipse(PDT) 3.3
なんですけど、array_push等が使えないはずはないと思うんですけどね。
メモらせていただきます、ありがとうございます。
0102nobodyさん
2008/07/01(火) 20:24:33ID:???A〜Eの5つの投票対象(固定)に対して1票と1行コメントを同時送信できるスタンダードな(?)ものです
A.txt 〜 E.txtまでを作成し、そこから票数を読んで加算、上書きするという形で一応投票の基本的な部分までは作成することが出来ました
またコメントも別にA_comment.txt 〜 E_comment.txtを用意し、そこの最後の行に追記していくことで保存できるようにしました
そして今、現在の各アイテム票数をランキングにして表示できるようにしたいのです
具体的には、例えばAに15票、Bに20票、Cに5票、Dに1票、Eに50票入っていたとしたら
1位 E(50票)
2位 B(20票)
3位 A(15票)
4位 C(5票)
5位 D(1票)
という風に表示したいのです
またそれに関連して各項目をクリックするとコメントを見られるページに飛ぶという仕様を考えましたが、これはリンクでGETを使ってパラメータで分岐すればいいと考えています
肝心のランキング表示部分をどう作っていいのか分からないので、どなたか教えていただけないでしょうか
ソートについても色々調べてみましたが、票数を並べ替えた後の項目との関連付けをどうやっていいかよく分かりませんでしたorz
010475です。
2008/07/02(水) 02:21:42ID:/ZwHa0Ji今勉強をして、なんとか自己解決できるように
したいと思います。
SQL勉強中です。
亀レスすいません。
0105nobodyさん
2008/07/02(水) 02:48:17ID:???一回、PHPから離れて、MysqlとかでDB構築して、コマンドラインでいろんなSQL実行してみればいいと思うよ。
がんばれ。
0106nobodyさん
2008/07/02(水) 02:49:38ID:???一番最後「HTTP リクエストで独自のヘッダを送信する」にある
ini_set('user_agent', "PHP\r\nX-MyCustomHeader: Foo");
$fp = fopen('http://www.example.com/index.php', 'r');
送信されるリクエスト
X-MyCustomHeader: Foo
とありますが、実際受信側のレスポンスを見ると、
HTTP_X_MYCUSTOMHEADER: Foo
という風に"HTTP_"が付加されていました。
そういうものなんでしょうか?
0108nobodyさん
2008/07/02(水) 12:23:28ID:???Host: www.example.com →HTTP_HOST
User-Agent: PHP →HTTP_USER_AGENT
X-MyCustomHeader: Foo →HTTP_X_MYCUSTOMHEADER
つまりはそういうこと。
0109nobodyさん
2008/07/04(金) 00:37:52ID:q3bb7c0a89.53201 35.45 15.6783にしたいのですがどうしたらいいのでしょうか?
0110nobodyさん
2008/07/04(金) 00:38:48ID:q3bb7c0a0111nobodyさん
2008/07/04(金) 00:39:27ID:???すいません…
0112nobodyさん
2008/07/04(金) 00:43:41ID:???$a = 8953201
$a = preg_replace('/^([0-9]{2})([0-9]+)$/', '$1.$2', $a);
つまり正規表現を使えばよいのではないか。
0113nobodyさん
2008/07/04(金) 00:52:45ID:???ちなみにこれは、前半部分が$1に、後半部分が$2になってるって解釈でいいんでしょうか?
0115nobodyさん
2008/07/04(金) 01:09:53ID:???0116nobodyさん
2008/07/04(金) 12:20:55ID:???<?php
$link = dbx_connect(DBX_SYBASECT, "localhost", "db", "username", "password");
dbx_close($link);
?>
とりあえずこれで、dbx関数とsybasect周りが使えるかどうかチェックしたんですけど
エラーが出てしまいました。
Warning: dbx_connect() [function.dbx-connect]: dbx: module '7' not loaded or not supported
環境はxampp1.6.6 for linuxで、apacheは2.2.8、PHPは4.4.8です。
extensionに設定されたディレクトリに、php_dbx.dllとともに、php_sybase_ct.dllを配置してあるので
読み込まれていない・・・ということは無いと思いますし(apacheの再起動は何度もかけています。)
php.iniの設定も問題なさそうです。
PHPのバージョンも、4.2.0より後発のもので、サポートもしていると思うのですが
どなたか、なにとぞ助力をお願いできないでしょうか。
0117nobodyさん
2008/07/04(金) 13:10:39ID:???0118nobodyさん
2008/07/04(金) 14:04:56ID:???マシン入れ替えていろいろ試してたら混乱してしまった。
0119nobodyさん
2008/07/04(金) 15:33:23ID:???■ このスレッドは過去ログ倉庫に格納されています