【PHP】下らねぇ質問はここに書き込みやがれ 53
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/08/25(土) 22:11:08ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 52
http://pc11.2ch.net/test/read.cgi/php/1186794483/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0542nobodyさん
2007/09/02(日) 04:06:36ID:???連番の配列を作るにはどうしたらいいですか?
0547nobodyさん
2007/09/02(日) 04:55:15ID:???0548nobodyさん
2007/09/02(日) 11:59:26ID:IAvjtU3B・HTMLのフォームに初期値を表示したい。
・初期値は別のテキストファイルからphpで呼び出したい。
・下記のソースではフォームに「$file_data[0]」,「$file_data[0]」と表示されてしまいます。
・本当に表示させたいメッセージは「名前を入力してください」,「問い合わせ内容を入力してください」です。
【data2.txtの中身】
名前を入力してください
問い合わせ内容を入力してください
【環境】
サーバーのOS:CentOS 4.5
Webサーバー:Apache 2.0.52
PHP:5.1.6
0549nobodyさん
2007/09/02(日) 12:00:44ID:IAvjtU3B【index.htmlの中身】
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>フォームに初期値を表示する</title>
</head>
<body>
<?php
$file_data = file("data2.txt");
?>
<form method="post" action="form.php">
お名前:<input type="text" name="name" value="$file_data[0]">
<br>
問合せ:<input type="text" name="contact" value="$file_data[1]">
<br>
<input type="submit" value="送信">
</form>
</body>
</html>
0550nobodyさん
2007/09/02(日) 12:09:48ID:???お名前:<input type="text" name="name" value="<?php echo $file_data[0] ?>">
問い合わせも同様
0551nobodyさん
2007/09/02(日) 12:22:39ID:IAvjtU3Bありがとうございます。
正常に動作する事を確認しました。
※補足
>>550さんの記述+index.htmlをindex.phpにする事で動作しました。
何となく過去の経験上、phpは拡張子がhtmlでも動作した気がしたのですが、htmlのままでは動きませんでした。
0553nobodyさん
2007/09/02(日) 12:44:03ID:3ZNK8eVt$file = fopen("xxx.txt","r");
while (!feof($file)) {
$line = fgets($file,1024);
if ($line == 5){
fseek($file, $get);
$line = fgets($file,1024);
echo ("$line<br>");
}
$get = ftell($file);
}
fclose( $file );
これじゃできないんです。どうすればいいでしょうか
0554nobodyさん
2007/09/02(日) 13:33:02ID:???0555nobodyさん
2007/09/02(日) 13:37:02ID:IAvjtU3Bありがとうございます。
ググッて意味が理解でき、htmlでも動作するようになりました。
0556nobodyさん
2007/09/02(日) 15:36:12ID:bbqIMTHDhttp://allabout.co.jp/internet/database/closeup/CU20050321A/index5.htm
まあ読み込むたびに手動でエンコード変えればちゃんと見れるのだが・・・
どうすりゃデフォルトでShift-JISやEUC-JPで読み込んでくれるのよ?
0557nobodyさん
2007/09/02(日) 15:50:42ID:???0559nobodyさん
2007/09/02(日) 16:06:39ID:bbqIMTHDFFxだとうまく表示されるんだがIEだとなぜか西ヨーロッパ言語(ISO)になっちまうんだよ
ちなみにFFxだとエンコードはうまくいってるのにPHP5がちゃんと動作しない
どうすりゃいいのさ
0560nobodyさん
2007/09/02(日) 16:10:25ID:???0561nobodyさん
2007/09/02(日) 16:11:35ID:???>ちなみにFFxだとエンコードはうまくいってるのにPHP5がちゃんと動作しない
なんでPHPがブラウザに依存するんだよ
0562nobodyさん
2007/09/02(日) 16:15:54ID:???どこかに落ちてませんか?
0563nobodyさん
2007/09/02(日) 16:16:38ID:???0564nobodyさん
2007/09/02(日) 16:25:36ID:cq55lstZ$jikan = time();
$_SESSION['jikan'] = $jikan;
}
jikan();
echo $_SESSION['jikan']
jikan関数を定義して、$jikanに現在の時間を入れて、$getに$jikanを代入したのですが、
ブラウザを更新するたびに$getの値が変わってしまいます。
$getにはtime()って関数がそのまま代入されてるからでしょうか?
$getにはじめに取得した時間のまま値を変えずにするにはどうしたらいいのでしょうか?
0566nobodyさん
2007/09/02(日) 16:34:15ID:cq55lstZなんども定義関数を呼び出してました。
ありがとうございました。
0567nobodyさん
2007/09/02(日) 16:37:14ID:???高速化できますか?
0568nobodyさん
2007/09/02(日) 17:06:14ID:???0569nobodyさん
2007/09/02(日) 17:08:25ID:???1GhzのCPUは一秒間に1000000000の命令を実行できるから
改行一つ当たり0.00000001秒ぐらい。
0573nobodyさん
2007/09/02(日) 17:22:33ID:???ネットで調べろとは、また無茶なことを言うな。
ほれみろ、反論できやしない。
0575nobodyさん
2007/09/02(日) 17:25:48ID:???たかが改行を一つ飛ばすぐらい。
機械語でも、比較命令・アドレス加算、ジャンプの
数命令程度ですむわけだが?
0576nobodyさん
2007/09/02(日) 17:26:27ID:???0578nobodyさん
2007/09/02(日) 17:28:14ID:???もっとかかると言いたかったのだろうが、
改行を飛ばすコードなんて機械語でもほんの数命令でしか
ないことに気づかなかった馬鹿ということでFA?
それ以外に何を言いたいのかわからない。
0579nobodyさん
2007/09/02(日) 17:29:36ID:???0580nobodyさん
2007/09/02(日) 17:29:40ID:???お前さ、自分で反論していて、
その反論の理由をいえないなんて恥ずかしくないの?
私はあなたの意見の反論する。
その理由はお前がググレ。
これを議論の場で言ったら恥をかくだけだと思うよ。
0582nobodyさん
2007/09/02(日) 17:33:18ID:???スクリプトの解析処理がどういう仕組みになってるかによって
改行コードの有無による処理コストは変わってくるし、
そこを調べずに論議してもまるで無意味。
でも多分、改行コードは単独で判定されてるわけじゃなく、
正規表現での構文解析で他の記号とまとめて処理されてると思うので、
構文解析としては改行があっても無くても速度はまるで変わらず、
差が出るのはディスクから読み込むときにバッファが小さくて済み、
サイズが数十〜数100バイト小さい分だけディスクI/Oが早く完了する、
という点に尽きると思う。
この速度差はCPUのクロックだけじゃなく、ディスクのI/O速度にも依存する。
0583nobodyさん
2007/09/02(日) 17:36:40ID:7yTluSfaできればデファクトスタンダードになりそうなので
0585nobodyさん
2007/09/02(日) 17:37:49ID:???正規表現といっても、結局は最終的には
単純な機械語による比較とループとして実行されるわけで、
結局改行一つで増加するコードは10命令文にもならないだろうな。
0.00000001秒は妥当なんじゃね?むしろそれ以下。
0586nobodyさん
2007/09/02(日) 17:40:01ID:cq55lstZ$arrayに格納された値に含まれる1を削除したいのですが、
以下のコードよりももっと良い書き方ありませんでしょうか?
foreach($array as $k => $v) {
$hairetu[] = str_replace("1", "", $v);
}
0587nobodyさん
2007/09/02(日) 17:41:55ID:???> 今更PHP4がデファクトスタンダードになるわけないじゃん。
デファクトスタンダードになりそうな
フレームワークを聞いてるんだろ。
お前は日本語もわからんのかw
0589583
2007/09/02(日) 17:47:43ID:7yTluSfaZend FrameworkのようにPHP5のみじゃなくて
現状でPHP4が使えて今後デファクトスタンダードになりそうなフレームワークということです。
0590nobodyさん
2007/09/02(日) 17:49:19ID:???1割くらいは高速化するだろう
0591nobodyさん
2007/09/02(日) 17:50:01ID:???0592nobodyさん
2007/09/02(日) 17:50:17ID:7yTluSfaありがとうございます
試してみます
0597nobodyさん
2007/09/02(日) 18:37:55ID:SjqAaNKw初心者です 参考書を片手に勉強中なんですが
PHP mysqlでチェックボックスを使い フォームでチェックされた名前のも
のだけを取り出したいのですが 上手くいきません
チェックボックス側
<form method="GET" action="./hoge.html" >
<table width="778" border="0" cellpadding="0" cellspacing="1" bgcolor="#999999">
<tr> <td width="70" height="32" valign="top" bgcolor="#FFFFFF" class="unnamed2"><b>名前</b></td>
<td valign="top" width="229" bgcolor="#FFFFFF" class="unnamed2">
<?php
for ($si = 1; $i <=10; $i++) {
echo <input type=\"checkbox\" name=\"c1[]\" value=\"{$row['id']}\">{$row['id']};
}
?>
表示側
//データーを受け取る
$c1 = @$_POST["c1"];
$sql = "SELECT * FROM hoge";
//データーが選択されているときはWHERE以下を組み立てる
if (count($c1) > 0) {
//分割されたここのキーワードをSQLに反映
$where = "WHERE (id IN (";
for ($i = 0; $i < count($c1); $i++) {
$where .= $c1[$i];
if ($i < count($c1) - 1) {
$where .=","; }
else {
$where .= "))"; } } }
for ($i = 0; $i < count($c1); $i++) {
echo "$c1[$i]"; }
echo "<p>e".$sql.@$where;
0598nobodyさん
2007/09/02(日) 18:38:39ID:SjqAaNKw0599nobodyさん
2007/09/02(日) 18:44:42ID:???何を教えてほしいんだよ
ひどい質問だ
0600nobodyさん
2007/09/02(日) 18:46:15ID:???" 1 )); delete * from hoge; --"
とか送ってこられたら楽しいことになるぜ。へっへっへと
関係ないことを指摘しておく。
0601nobodyさん
2007/09/02(日) 18:47:16ID:???.@$where;
何言語?
0603602
2007/09/02(日) 18:50:51ID:???0605nobodyさん
2007/09/02(日) 20:57:00ID:lMwXxY/uあと、PHPでのファイル・クラスのネーミングルールとか。
0606nobodyさん
2007/09/02(日) 22:08:55ID:???として、
echo "$a ちんちん";
と
echo $a." ちんちん";
のどっちが速いっすかね?
0608nobodyさん
2007/09/02(日) 22:37:36ID:O0vZytK1http://pc11.2ch.net/test/read.cgi/php/1188731930/
これわかる人いませんか?
ぜんぜん表記されないのですが、かいてもよまれないと
言われたんですが、なんとかしたいんです。
0610nobodyさん
2007/09/02(日) 23:00:17ID:???検索するとたくさんヒットしたので試してみたけど上手くいかず
誰かセットアップ方法の解説願います
0611nobodyさん
2007/09/02(日) 23:18:10ID:pKjcWHTrなんでろだにあげなかったの?バカなの?
0612nobodyさん
2007/09/02(日) 23:38:24ID:O0vZytK1UPしました。
よろしくお願いします。
0614nobodyさん
2007/09/02(日) 23:40:52ID:???セットアップというか
Smarty.class.phpをincludeする
$smarty = new smarty;
$smarty->template_dir = "./templates/";
$smarty->template_c = "./templates_c/";
みたいに宣言する
./templates/ 内にテンプレートファイルを作成する。
./templates_c/ のパーミッションを707や777にする
PHPファイルで
$smarty->display("template.html");
のようにテンプレートを指定して表示する。
0615nobodyさん
2007/09/02(日) 23:40:55ID:pKjcWHTr本作ったトコにでも聞け
自分で作れないうちは会社で運用なんてすんな
0616nobodyさん
2007/09/02(日) 23:43:46ID:???とりあえずショートタグ「<?」は推奨されないからやめとけ。
最近のPHPのデフォルトじゃ動作しない可能性がある。
正しくは「<?php」と書く。
0617nobodyさん
2007/09/02(日) 23:48:36ID:???ちなみにこれ、最初に表示されるページはどれ?
あと ktouroku.php はPHPコードを含んでないようだけど、これも表示されないの?
0618nobodyさん
2007/09/03(月) 00:10:05ID:???> とりあえずショートタグ「<?」は推奨されないからやめとけ。
それよく聞くんだけど、この前理由を探したんだけど
よくわからなかった。なんで?
あとショートタグは<?=とは違うんだよね?
こっちは使っていいの? 単純に変数の内容を表示するだけなら
タイプ数が減っていいんだけど。
0619nobodyさん
2007/09/03(月) 00:17:29ID:KucjbbQWこれは表示されます。
それ以降が表示されません。
<?phpって
<?でいいのかな?
0620nobodyさん
2007/09/03(月) 00:17:43ID:???「<?=」もショートタグの1種。これは「<?php echo 」の省略形。
ショートタグはPHPしか使わない環境であればそれほど困らないけど、
XMLなどの他にも「<?***」形式の特殊タグを使うシステムが混在すると
「<?」だけでPHPと認識することはできなくなるので、将来性・拡張性に欠ける。
特に昨今はXMLとの混在環境も増えてきているので推奨されないというわけ。
その辺をきちんと意識して設計できる上位の人間なら好きにすれば、ってとこだが
分かってもいないのにその環境に慣れてしまうのは教育上よろしくないかと。
0621nobodyさん
2007/09/03(月) 00:25:41ID:???ktouroku2.phpを呼び出すと何も表示されない、ってこと?
ちなみにURL直打ちでktouroku2.phpを呼び出しても真っ白?
require('./include/init.inc');
の行を
//require('./include/init.inc');
とコメントアウトしてみたらどーなる?
ところで凄い気になるんだが、
<meta http-equiv=content-type content="text/html;charset=euc-jp">
とEUC-JP指定してるようだがソースはSJISで書かれてるよな。
これは本当はどっちにしたいんだ?
0622nobodyさん
2007/09/03(月) 00:36:02ID:KucjbbQWやってみました。
ktouroku2.phpが表示されました。
でも登録画面のktouroku3.phpはだめでした。
EUCでやりたいです。
このソースの書き方ではだめなの?
0623nobodyさん
2007/09/03(月) 00:38:21ID:???あー。やっぱり人間(コンピュータも?)の混乱が理由なのね。
もっと重大な、セキュリティ上の問題があるのかと思っていた。
<?=もやっぱり使っちゃだめなのだろうか?
php以外でこれ使うやつある?
まあ、phpだとわかりにくいが理由なら
その理由には納得するから、大きなプロジェクトでは
<?=も使わないけどね。
ただ、セキュリティ上の問題がないのなら、
個人的な小さなツールやテスト的になら使うけど。
0624nobodyさん
2007/09/03(月) 00:39:08ID:KucjbbQWアウトしたら表示されました。
どうしたらいいのでしょうか?
0625nobodyさん
2007/09/03(月) 00:40:12ID:???つまりini.incの実行で失敗してるわけだ。
こいつの内容は
$con = pg_connect("dbname=touroku");
とDBに接続してるだけなんだが、ちゃんとDBは用意されてるのか?
まずDBのアクセスだけの実験プログラムを作って
テストしてみた方がいい。
このプログラムだと接続失敗時はエラー表示がされるはずだが
それすら出てこないとなるとタイムアウトを起こしてる可能性が高い。
接続先のDBサーバー自体が正常動作してない可能性もありうる。
>EUC
だったらまずEUCのテキストが書けるまともなテキストエディタを用意すれ。
0626nobodyさん
2007/09/03(月) 00:42:52ID:???人間は別に混乱しない。コンピュータが混乱するので使えない。
「<?=」は他に無いというか、これも「<?」までの時点でPHPかどうかを判定できないと
PHPに処理を回せないので結局使えない。
セキュリティ的な問題はないと思うので、ちゃんと理解して使う分には問題ないかと。
0627nobodyさん
2007/09/03(月) 00:47:21ID:???0628nobodyさん
2007/09/03(月) 00:50:43ID:???余計な単語が混じらずほとんど変数埋め込み気分で使えて見やすいし。
0629nobodyさん
2007/09/03(月) 00:51:01ID:???使わない。<?=を使う時点でロジックとデザインを分離されていな糞プログラマーだから。
まぁ、趣味でやるなら別にいいけど。
0630nobodyさん
2007/09/03(月) 00:54:50ID:???<?php if() 〜 ?> とかならともかく、<?=変数?> だけならテンプレのパラメータ埋め込みと一緒だぞ。
それをロジックが分離されてないと思うのは単なる脊髄反射思考だろう。
0631nobodyさん
2007/09/03(月) 00:56:55ID:kOE1ZsUiサーバーはxamppを使っています。
mysqlを使わずにindex.php , archive.php , post.phpの3つで
フォーム入力、提出(post.php)すると、自動的にfilesにタイトル.txtを作って保存
(index.php)では提出した記事を表示とpost.phpへのリンクと(archive.php)へのリンク。
archive.phpへのリンクはindexの画面で、記事ごとのリンクになっている。
これは可能なんでしょうか?
ついでにphpの簡単なブログのコードがあるサイト知っていたら教えてもらえませんか?
よろしくお願いします。
0634nobodyさん
2007/09/03(月) 01:06:39ID:KucjbbQW$con =pg_connect("dbname=test2");
if(!$con){
print "DB接続成功"
}else{
print "DB失敗"
}
?>
で成功と出ているんだけど実際はtest2です。
後どこ見ればいいのでしょうか?
DBもちゃんと作ってあるんですが、
0635nobodyさん
2007/09/03(月) 01:08:01ID:KucjbbQW0636nobodyさん
2007/09/03(月) 01:09:53ID:???tourokuってDBは作ってあるの?
<?php
$con =pg_connect("dbname=touroku");
if(!$con){
print "DB接続成功"
}else{
print "DB失敗"
}
?>
を動かすと接続成功って出るの?
0637nobodyさん
2007/09/03(月) 01:14:48ID:KucjbbQW後プログラムのinit.incに名前とパスワードを入れたら
ほかのものも一気に表示はされるようになりましたが、
うけわたしてDB登録ができません。
0638nobodyさん
2007/09/03(月) 01:17:42ID:???> 「<?=」は他に無いというか、これも「<?」までの時点でPHPかどうかを判定できないと
「<?」までの時点でPHPかどうかを判定する方法なんてあるのかよ?w
0639nobodyさん
2007/09/03(月) 01:18:47ID:KucjbbQWktouroku3.php
はrequireをコメントアウトしないとでてこない。
ほかはでてきます。
0641nobodyさん
2007/09/03(月) 01:20:35ID:???DBのGRANT設定を間違ってるとかいう落ちじゃないだろうな。
ktouroku3.phpの
<a href=./kensaku.php>戻る</a><br>
下記のとおりに登録しました。<br><br>
の下辺りに
<?php echo pg_last_error($con); ?>
って1行入れたら何かエラーメッセージが出てこないか?
■ このスレッドは過去ログ倉庫に格納されています