【初心者】励ましあいながらサイト製作【PHP】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2005/09/03(土) 10:30:34ID:???http://pc8.2ch.net/test/read.cgi/php/1125396428/
から分家。
共同で何かを作るわけではなく、それぞれが勝手に自分の物を
作りながらひとり言を言ったり傷を舐めあったり質問をしあったりするスレです。
0102nobodyさん
2005/09/18(日) 10:10:54ID:???これって変数をまとめて初期化しているんですよね?
0103nobodyさん
2005/09/18(日) 19:23:32ID:???羅列してる変数全てに""を代入してる。
PHPでは基本的にあまり変数の宣言や初期化はしないし、
するにしても、そういう分かりにくい仕方はしないよ。
0104nobodyさん
2005/09/18(日) 22:10:06ID:???気持ち悪いからしてるけど普通しないもんなの?
0105nobodyさん
2005/09/19(月) 00:01:34ID:???http://d.hatena.ne.jp/keyword/register_globals
register_globals問題もあるので、念のため初期化してからの方が無難なのかもね。
自分も初心者なのでよーわからんのですが、
function Hoge_Hoge(){
//必要なグローバル変数だけを意識的に取り込む
global $str;
処理
}
Hoge_Hoge();
ってな感じでとりあえずfunctionで囲んでおけば安心?
0106nobodyさん
2005/09/19(月) 00:32:40ID:???初期化とは異なるけど、例えば分岐処理を簡単に済ませたい時とか
function fooBar(){
$text = "";
if (式) {
$text = "foobar";
}
return $text;
}
こういうelseの必要ない書き方とか、あとは何があったかな
0107nobodyさん
2005/09/19(月) 03:13:27ID:???たとえば
for($i = 0; $i < 10; $i++) $foo .= $bar[$i];
なところは
$foo = "";
for($i = 0; $i < 10; $i++) $foo .= $bar[$i];
とするとか。そのくらい。
自分が始めた時は、そういうことも大事だけど
http://php.s3.to/man/types.comparisons.html
あたりの挙動をちゃんと把握する事の方が、変な動作するスクリプト減らすのには役立つなぁと思った次第。
>>106
それって、パフォーマンス的にも可読性保つためにも、素直にelse使った方がいい気が…
0108nobodyさん
2005/09/19(月) 10:20:39ID:???漏れは>>106の書き方好き。
先にまず初期値。
その後、複数の条件を羅列することも出来る。
case文っぽい感じだよね?
可読性に関しては好みだとは思うけど、パフォーマンス的に差が出るようなものなの?
0109nobodyさん
2005/09/19(月) 16:09:08ID:???まぁ、「最初は""で、trueだった時だけ"foobar"」って見方も出来るから、好みっちゃ好みなのは確かなんだけど、
>>104みたいな初期化の仕方をした上で>>106の記述をすると、
「ん?この値何が入ってるんだよ」って感じで、ソースをさかのぼって見なきゃいけなくなっちゃう事が多い。
(書いてる時はいいんだけど、後から保守する時が……)
パフォーマンス云々は、体感できる差じゃないけど、後から必ず値が入る場合にも初期化されちゃう分無駄だよ、ってだけ。
0110nobodyさん
2005/09/19(月) 17:37:00ID:???>>>104みたいな初期化の仕方をした上で>>106の記述をすると、
>>106の方で「初期化とは異なる」と最初で断ってるわけなんだからこれはおかしいんじゃない?
変数を空にするのは、単に初期化するためだけはないと言ってるんじゃないの?
それに>>106みたいな手法の方が楽だということもあるんだし、それぞれじゃないかな。
0111109
2005/09/19(月) 21:08:52ID:???>>106は、初期化(初期値の代入)と取るのが自然な気が。
現に、""を初期値に設定して、ifがtrueの場合のみ"foobar"を代入、と捕らえるのが自然な記述だと思うし。
こういうのって、本人がどういうつもりで書いたかという事よりも
実際の挙動や、読み手がどう取るか、の方が大事なんじゃないかな。
んで、それぞれはそれぞれだよ、駄目だなんて一言も言ってない。
読み難くなくて、ちゃんと動けば全然問題ないと思う。
0112nobodyさん
2005/09/20(火) 10:32:51ID:???if (!式) { return; }
return "foobar";
}
自分ならこう書くかな。
初期化以前に極力新しい変数は作らない。
0113nobodyさん
2005/09/20(火) 11:01:10ID:???たとえば式がcount(array)とかで、1ページで何回も呼び出されるものなら、
staticでページ1回につき1回の計算だけで済ましたりするだろう。
単純になんでもない式なら>>112だな。
0114nobodyさん
2005/09/28(水) 20:10:51ID:???という感謝祭が私の作ったプログラムの中で連日開催されているのですが
何とかならないものでしょうか
0115nobodyさん
2005/09/29(木) 07:55:10ID:???if (get_magic_quotes_gpc()) {
$_POST['com'] = stripslashes($_POST['com']);//¥除去
}
0116nobodyさん
2005/09/29(木) 14:07:07ID:???function getGPC($string) {
if(is_array($string)) {
foreach($string as $key => $value) $string[$key] = getGPC($value);
return $string;
}
if (get_magic_quotes_gpc()) {
return stripslashes(urldecode($string));
} else {
return urldecode($string);
}
}
0118nobodyさん
2005/10/01(土) 17:52:21ID:???0119nobodyさん
2005/10/08(土) 00:46:19ID:???0120nobodyさん
2005/10/08(土) 10:03:04ID:???完成してから公開、とか考えると逆に駄目だね。
一人で製作の弱点って、そこだな。
0121nobodyさん
2005/10/10(月) 11:56:34ID:???0122nobodyさん
2005/10/10(月) 18:16:08ID:???0123nobodyさん
2005/10/10(月) 19:57:17ID:???0124nobodyさん
2005/10/16(日) 23:41:23ID:???0125nobodyさん
2005/10/18(火) 15:18:57ID:???このシリーズ、役に立つようになるかも。
0126nobodyさん
2005/10/19(水) 22:49:11ID:CHcSnYiIまだまだ未完だけど上げてみる
0127nobodyさん
2005/10/20(木) 10:14:07ID:???HTMLで済むのをむりやりPHPに移植するスレだったのか。
>ククク.
だまされましたね?
ここは自宅のPowerBook Serverです.
くれぐれもアタックをかけない様に(藁
ttp://glagla.dw.land.to/index.php
こっちにも同じ事書いてあるけど、land.toはいつからオマイの自鯖になったんだ?
というか新たなnullの誕生か?
2度と行かね。
0128nobodyさん
2005/10/20(木) 15:43:58ID:???作ってますよー
Guestアカウント
ID:[email protected]
pass:guest
カートの方は製作中かつ仕事だからまだ非公開だけど。
どちらにせよ意地になって無理やり公開するもんじゃないね。
不具合多すぎ。
0131126
2005/10/20(木) 19:13:20ID:???indexねぇぞっつう警告メール来たんでとりあえず置いて、そのままだったや。
思い出サセテクレテありがとう。
まぁ見るに耐えられない痛いサイトなのは承知だぜぃ・・・
0132nobodyさん
2005/10/30(日) 09:14:30ID:???0133nobodyさん
2005/10/30(日) 18:17:15ID:???本家が単発スレ立ち上げたものだから、
今一つ気がのらないだけ。
0134nobodyさん
2005/11/04(金) 20:37:45ID:???0135nobodyさん
2005/11/04(金) 21:41:10ID:KfXUaxV2XOOPSがあるんだから、独自にサイト作るのって車輪の再発明ってことに気づいてない?
XOOPSを改良する方向に力注げよ。
0136nobodyさん
2005/11/05(土) 10:10:40ID:???つかXOOPSは駄目スクリプトだと洩れは思うぞ
0137nobodyさん
2005/11/05(土) 10:16:14ID:???むやみに XOOPS を設置しまくるように仕向けるのは賛成できない
0138nobodyさん
2005/11/05(土) 10:16:55ID:???0139nobodyさん
2005/11/05(土) 17:13:50ID:???0140nobodyさん
2005/11/05(土) 20:25:11ID:???0141nobodyさん
2005/11/06(日) 15:58:35ID:???案外工夫の余地があるんだよな
デザインをテンプレートで分離するとか RSS の出力を工夫して管理しやすくするとかね
データの管理の仕方とか
0142nobodyさん
2005/12/19(月) 00:32:48ID:???テキストファイルのデータを読み込んでinsert文でmysqlのテーブルに挿入するスクリプト作ったんだが上手くいかなかった
んで、いろいろ試して文字/改行コードをEUC、LFじゃなくてSHIFT-JIS、CR+LFにしたら上手くいった
phpってEUCで書くもんだと思ってたけどコレでいいの?
0143nobodyさん
2005/12/20(火) 17:06:27ID:???0144nobodyさん
2005/12/20(火) 20:45:17ID:???0146142
2005/12/24(土) 00:04:49ID:???今こんなカンジ
テキスト(EUC)を読み込んでPHPスクリプト(S-JIS)でテーブルに挿入
mysqlにログインして直にテーブル内容を確認したらデータが文字化け
文字化けしたデータを別のPHPスクリプトで内容表示させたら文字化せずちゃんと表示される
ちなみに表示させたデータをmb_detect_encoding()で確認したらEUCだった
で、mysqlにログインしたついでにスクリプトではなく直にinsert文で同じデータを追加してみた
結果、テーブル内では文字化けしないが、スクリプトで表示させると文字化け(つーか日本語部分が表示されない)
mb_detect_encoding()で確認したらS-JISになってた
mysqlの設定がおかしいのか?
0147nobodyさん
2005/12/25(日) 01:34:00ID:???0148nobodyさん
2005/12/25(日) 22:59:15ID:???[mysqld]
default-character-set=sjis
>>147
PHPの方かな
0149nobodyさん
2005/12/26(月) 00:24:45ID:???テーブルからデータ読み込む時はS-JIS→EUCとする事で思ったとおりの動作させることが出来たけど・・・
もしかしてmysqlの設定がS-JISになってるからダメなのか?
でも何処でWINDOWSでmysqlの設定方法調べてmy.iniに
[mysqld]
default-character-set=sjis
[mysql]
default-character-set=sjis
[mysqldump]
default-character-set=sjis
って書けって書いてるんだが
0150nobodyさん
2006/02/01(水) 18:32:48ID:???どうにもうまくいかない。ちょっと、教えてくれると助かります。
とりあえず、元のテキストデータ(複数)があって、たとえば0行目が
1であれば内容を表示するって言う感じで↓みたいにとりあえずして
実際動かしてみた。
<!--ファイル読み込み-->
<?php
$ファイル(1) = file("ファイル(1)");
}
?>
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
<!--内容表示-->
<?php
if(ファイル(1)の0行目指定 == 1) { print("内容");
}
?>
で、まあこれで動いたんで調子乗ってもう一つのテキストデータを
読み込ませた同じやつ(ファイルの0行目指定(2)みたいな感じで)
を同じように書いてみたんだけど、なぜか表示されない。(↓)
0151nobodyさん
2006/02/01(水) 18:35:13ID:???<?php
$ファイル(1) = file("ファイル(1)");
$ファイル(2) = file("ファイル(2)");
}
?>
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
<!--内容表示-->
<?php
if(ファイル(1)の0行目指定 == 1) { print("内容");
}
?>
<?php
if(ファイル(2)の0行目指定 == 1) { print("内容");
}
?>
にんともかんともわからなかったので
if(ファイル(2)の0行目指定 == 1)を
if(ファイル(2)の0行目指定 == 0←※)と言う風に他のに変えたら
OKでした。これはやっぱり、なんか競合してるからダメポという事
なのでしょうか??
説明ベタですみませんが、
知っている方教えていただけると助かります。
0152nobodyさん
2006/02/01(水) 19:01:48ID:???0153nobodyさん
2006/02/03(金) 14:11:35ID:XtE8ZpDP$f_one = file("hoge1.dat");
$f_two = file("hoge2.dat");
if($f_one[0] == 1){ print "内容";}
if($f_two[0] == 1){ print "内容";}
?>
・・・こういうこと?
0154nobodyさん
2006/02/13(月) 19:22:54ID:CRi0u1UUイメージ的にはこんな風に・・・。
<FORM action="a.php" method="post">
print "<input type='hidden' name='sel[][]' value='$sel'>";
</FORM>
配列はnameに[]をつけないといけないということはわかったのですが、
この書き方ではうまくいかず。。。
1個ずつ送らないといけないのでしょうかorz
0155nobodyさん
2006/02/13(月) 21:46:07ID:c0AZgeUz0156nobodyさん
2006/02/13(月) 21:50:46ID:???0157nobodyさん
2006/02/13(月) 21:54:42ID:???でもただの質問スレになるならいらね
0158nobodyさん
2006/02/14(火) 01:32:16ID:bs1BKFdz,を</td><td>に変えるのってどうやるのでしょうか?
初心者なもんで。誰かおしえてください。
0159nobodyさん
2006/02/14(火) 17:11:30ID:???0160nobodyさん
2006/02/15(水) 09:06:20ID:???でやって
foreachで繰り返す時にtrとかやったらいいんじゃない
0161158
2006/02/15(水) 13:16:56ID:oPyCFoG40162nobodyさん
2006/02/15(水) 19:06:58ID:???0163nobodyさん
2006/02/21(火) 17:27:31ID:???ereg_replaceとかで置換できますよ
0165nobodyさん
2010/01/02(土) 12:12:00ID:???01661/3
2012/01/19(木) 10:56:51.20ID:8XvWf5+2外部RSSを簡単に読み込んで出力するルーチン
(ttp://phpspot.net/php/pg%E5%A4%96%E9%83%A8%EF%BC%B2%EF%BC%B3%EF%BC%B3%E3%82%92%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF.html)を使用して、
HPにブログの更新された日付とタイトルを表示させたいのですが、
日付が表示されないです。
どうかご教授下さい。
01672/3
2012/01/19(木) 10:59:35.67ID:8XvWf5+2<?php
// 外部RSSを簡単に読み込んで出力するルーチン
$RSSURL = "ttp://feedblog.ameba.jp/rss/ameblo/staff/rss20.xml";
$buff = "";
$fp = fopen($RSSURL,"r");
while ( !feof($fp) ) {
$buff .= fgets($fp,4096);
}
fclose($fp);
// パーサ作成
$parser = xml_parser_create();
// パーサオプションを指定
xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);
// パース実行、連想配列にパース結果代入
xml_parse_into_struct($parser,$buff,$values,$idx);
// パーサ開放
xml_parser_free($parser);
// パースして得た連想配列をまわす
$in_item = 0;
$count = 0;
foreach ($values as $value) {
$tag = $value["tag"];
$type = $value["type"];
$value = $value["value"];
$tag = strtolower($tag);
if ($tag == "item" && $type == "open") {
$in_item = 1;
} else if ($tag == "item" && $type == "close") {
if($count < 10){
echo "<tr><th>".$dateDisp."</th><td><a href=\"".$link."\"> ".$title."</a></td></tr>\n";
}
01683/3
2012/01/19(木) 11:01:19.55ID:8XvWf5+2$in_item = 0;
}
if ($in_item) {
switch ($tag) {
case "title":
// UTF-8なドキュメント
$value = mb_convert_encoding($value, "UTF-8", "UTF-8");
$title = $value;
break;
case "link":
$link = $value;
break;
case "category":
// UTF-8なドキュメント
$value = mb_convert_encoding($value, "UTF-8", "UTF-8");
$category = $value;
break;
case "dc:date";
$date = $value;
$dateArr = explode("T",$date);
$dateDisp = explode("-",$dateArr[0]);
$dateDisp = implode(".",$dateDisp);
break;
}}}
?>
</table>
amebloを使用してるので、
$RSSURL = "ttp://feedblog.ameba.jp/rss/ameblo/staff/rss20.xml";
にはamebloスタッフさんのブログを表示させていただきました。
お知恵拝借できればとおもいます。 宜しくお願いします。
0169nobodyさん
2012/02/16(木) 06:38:50.92ID:esLRBlikまだApache云々とかまで全然手出せてないからわからないんだけど
色んな人のプログとかサイト見てるとブラウザのurlバーにhoge.htmlとかって
リクエストに対して返ってきたファイルの拡張子まで表示される場合と拡張子のない場合と
あるんだけどあれってどうゆうことなんでしょうか?
0170nobodyさん
2012/04/12(木) 06:21:26.33ID:m/Rs2chW使ってるphpのバージョンが5なら、「simplexml_load_file」を使うと、もっと簡素なソースで組めるぞ?
この関数でサンプルソースをググってみれ。
>>169
http://httpd.apache.org/docs/current/content-negotiation.html
0172nobodyさん
2014/01/21(火) 17:09:22.14ID:QV3/HIGbphpのコードとhtmlの見通しをよくしようと考えました。
<h1 id="h1"><img src="<?php bloginfo(template_url); ?>/images/title/info.png"></h1>
<h3 id="h3">管理情報</h3>
を
<?php
echo '<h1 id="h1"><img src="'. bloginfo(template_url) .'/images/title/info.png"></h1>',
'<h3 id="h3">管理情報</h3>'
?>
のようにしてみたのですが、
imgのsrcにURLを設定するbloginfo(template_url)の部分の処理の順番が前後してしまって、
表示したWebページのソースを見ると、
http://localhost/<h1 id="h1"><img src="/images/title/info.png"></h1><h3 id="h3">管理情報</h3>
のようになっています。
これを修正する方法を教えてください。
0173nobodyさん
2014/01/22(水) 09:11:10.70ID:BWvY5tS3あと、WordPress を参考にしたんなら、
あれはプログラムの手本の真逆を行ってる
糞コードの最右翼だから気をつけれ
0174nobodyさん
2014/01/22(水) 19:24:26.87ID:???0175nobodyさん
2014/01/24(金) 16:36:28.39ID:qjy9c34Obloginfo()がどこにあるのか見つけられなかったのですが、これはWordPressの関数なんですよね?
ま、それはそれとして、自分でも、このコードの見通しは、大差ないかむしろ悪いくらいだわ、とは思ったんです…。
ふだんはC#なんですけど、phpって、こんなに見通しが悪いんだ…。
いやはや。
0176nobodyさん
2014/01/31(金) 11:37:17.46ID:???main.php(メイン)
include_once( 'myclass.php' );
$my_class = new myclass();
$my_class->クラスの関数();
myclass.php(の中身)
class myclass{
myclass(){}
クラスの関数(){
include_once('hoge.php' );
$戻った値=関数1();
}
}
hoge.php(の中身)
include_once('tmp.php' );
関数1(){
global $tmp;
…
return …
}
tmp.php(の中身)
$tmp = array(なんたら,かんたら)
hoge.phpの関数1で、$tmpの中身が空なので、
間違っている所を教えてください。
■ このスレッドは過去ログ倉庫に格納されています