くだすれ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/
0003nobodyさん
2008/06/17(火) 20:01:46ID:Xhinm60Q0004nobodyさん
2008/06/17(火) 22:08:49ID:???0005919です。
2008/06/18(水) 00:58:52ID:eWKB+6dR大角本でわからないところがあり質問です。
カテゴリーのところがよくわかりません。
一応カテゴリーに関するところのソースをUPしたんですが
http://gichioka.web.fc2.com/document.rar
誰か説明してください。
よろしくお願いします。
特になんでこれでcategoryが作られるのかわかりません。
新しくカテゴリーが、これであとなんで商品登録ができるのでしょうか?
0007919です。
2008/06/19(木) 01:07:52ID:uVAJKLwkわからない。
0008919です。
2008/06/19(木) 01:11:28ID:uVAJKLwk0009nobodyさん
2008/06/19(木) 15:20:33ID:byCSm/IpPCだと、
コメントを削除→元の画面
→コメントが削除されている
ケータイだと、
コメントを削除→元の画面
→コメントが表示されたまま(実際にはデータは消えいてる)
更新すると、コメントが削除されている画面が表示される。
どうも、ケータイだと前の画面の情報を掴んだままの状態があるようです。
cache-control
などをやっていますが、効果はないようです。
ケータイのブラウザに、昔の情報を表示させない方法はご存知ありませんか?
0010nobodyさん
2008/06/19(木) 15:30:10ID:???0011nobodyさん
2008/06/19(木) 15:35:08ID:byCSm/Ipあっ、なるほどURLと画面が紐づいているなら有効そうですね。
試してみます。
0015nobodyさん
2008/06/20(金) 23:47:29ID:???を使いたいのですが、下記のようなエラーが出てきます。
なんとか自分のHPに設置したいのですが、どこをどう直せばいいのやら
わかりません。
Warning: main(XML/RSS.php) [function.main]: failed to open stream:
No such file or directory in /home/sites/lolipop.jp/users/main.jp-
○○○/web/allblog/rssup.php on line 5
Fatal error: main() [function.require]: Failed opening required
'XML/RSS.php' (include_path='.:/usr/local/lib/php:/usr/local/lib/php/Smarty')
in /home/sites/lolipop.jp/users/main.jp-○○○/web/allblog/rssup.php on line 5
レンタルサーバーはロリポップ
サブドメインでallblog.ドメインとしてます。
ファイルは
allblog
├reeup.php
├RSS.php
├PEAR.php
├Parser.php
├index.html(このHTMLに<?php include("rssup.php"); ?>を貼ってます)
├.htaccess(中にAddType application/x-httpd-php .htmlと書き込んだだけ)
なんとか動かしたいのですがどなたか親切な方教えていただけないでしょうか?
0016nobodyさん
2008/06/21(土) 01:26:38ID:???今、reeup.phpの5行目が有効になってると思う。
ソレをコメントアウトして、
3行目をコメントインしたら、動くんじゃないかなぁ。
0018nobodyさん
2008/06/21(土) 01:52:50ID:???今後も似たようなエラー出てくると思うから、
思い立ったときにでも、エラーメッセージをそのまま検索とかして、何のエラーかとか、
少し学習するのもいいと思う。
がんばって下さい。
0019nobodyさん
2008/06/22(日) 13:25:43ID:PqDX8Tujお勧めのHPとかありますか。
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等が使えないはずはないと思うんですけどね。
メモらせていただきます、ありがとうございます。
■ このスレッドは過去ログ倉庫に格納されています