【PHP】下らねぇ質問はID出して書き込みやがれ 89
■ このスレッドは過去ログ倉庫に格納されています
0001●
2009/10/11(日) 21:18:54ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 88
http://pc11.2ch.net/test/read.cgi/php/1253061577/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0573nobodyさん
2009/10/24(土) 11:39:51ID:???JavaScriptとPHPの連携っていってるようなものだからAjaxって答えが返ってくるのも無理もない
MixiやYoutubeのようなSNSサービスをやりたいってことね
セッションとか勉強するといいよ
0575nobodyさん
2009/10/24(土) 11:58:58ID:???0577nobodyさん
2009/10/24(土) 12:01:27ID:o7jv7fS8レスアンカーは自分(>>570)にですよね?
そうだと思って返答させて下さい
>人が作成したPHPのプログラムを落としてHTML部分がどうなってるか探してみる
こういうのはWebサイトで検索して、人が書いたサンプルコードを集めて学習しろという事なのでしょうか?
それとも、自分は知らない(というかコードを読み取られると危険なのでそもそも出来ないのではと思うのですが)、ソース読み取りソフトとかあるのでしょうか?
例えばWebサイトであればIEのソース機能やFireFoxのFireBugのようなHTMLのコードを表示出来る様なソフトの事です
>>573
あぁ、すみませんでした
自分の表現がおかしかったようです
HTML+CSSにPHP(テンプレートやライブラリ含む)を組み込んで実装する、実際に運営する為の雛形コードを学習したかったのです
0578nobodyさん
2009/10/24(土) 12:05:25ID:???単にフォームからのリクエストを処理するPHPのコード、ってんなら、
PHPの本で2〜3章かけて解説してるんじゃね?
あとは自分の作りたいものに似てるの探して、コード読むべし。
0579nobodyさん
2009/10/24(土) 12:05:29ID:???>実際に運営する為の雛形コードを学習したかったのです
フレームワークのview部分とか見てみるといいかもしれない
0580nobodyさん
2009/10/24(土) 12:10:51ID:???aaa<br>
<?php
>>562のコード
?>
bbb<br>
でbbb<br>より後にdestructが現れるってことか?
どっちみちDBクローズならそれでもいいだろ
0581555
2009/10/24(土) 12:11:40ID:???無知を晒してしまいました
ごめんなさい
0582nobodyさん
2009/10/24(土) 12:22:14ID:???objにnullいれるだけ?
0583nobodyさん
2009/10/24(土) 12:59:43ID:???その下にまた<?phpが出てくるとか、include/requireされてるとか。
>>582
$objはスコープから外れてないけど、インスタンスは
ガベージコレクションで回収されるから、そのときに
デストラクタが起動されるんだと思う。
PHPで明示的なスコープって言ったら関数かな。
ローカル(グローバルでない)変数のスコープは関数内でしょ。
0584nobodyさん
2009/10/24(土) 13:03:20ID:???いやだからそれは俺が振られた理由になってねえよ
なんで会社の休憩時間にイタリアフルコース頼まないといけないんだよ
0585nobodyさん
2009/10/24(土) 13:16:46ID:???0586nobodyさん
2009/10/24(土) 13:56:20ID:???0587552
2009/10/24(土) 14:16:10ID:BvPjRTUmclass sqlite{
var $_result = array();
var $_pointer = null;
var $_message = null;
function connect($dbfile){
return $this->_pointer = sqlite_open($dbfile,0666,$this->_message);
}
function close(){
sqlite_close($this->_pointer);
}
function exec($que){
return sqlite_exec($this->_pointer,$que,$this->_message);
}
function array_query($que){
return sqlite_array_query($this->_pointer,$que,$this->_message);
}
function get_escape($str){
return sqlite_escape_string($str);
}
function get_result(){
return $this->_result;
}
function get_pointer(){
return $this->$_pointer;
}
function get_message(){
return $this->$_message;
}
}
0589nobodyさん
2009/10/24(土) 14:57:50ID:???0590nobodyさん
2009/10/24(土) 18:28:54ID:???あと、ヤンデレこえぇwww
0591nobodyさん
2009/10/24(土) 18:29:35ID:???0592nobodyさん
2009/10/24(土) 19:04:29ID:???若いっていいね。
0593nobodyさん
2009/10/24(土) 19:35:19ID:???はずかしいから黙ってて
0594nobodyさん
2009/10/24(土) 20:43:07ID:???で、ダミー関数であるdeleteが登録されてるせいで、
delete($classA)とか書いてもしばらく気がつけない
0595nobodyさん
2009/10/24(土) 20:45:44ID:???0596nobodyさん
2009/10/24(土) 20:47:28ID:???0597nobodyさん
2009/10/24(土) 21:14:45ID:???0598nobodyさん
2009/10/24(土) 21:21:53ID:???0599nobodyさん
2009/10/24(土) 22:35:42ID:aM0DiAaq【PHPのバージョン】php5.2.10
【連携ソフトウェア】mysql
【質問内容】
心理テストのようなサイトを作ろうとしています。
何人がその答えを選んだかの集計と、
それとは別に選んだ答えがどのような性格をあらわすのかを表示できるようにしたいです。
チェックボタンを選んだ状態で「あなたはこんな人」のようなラジオボタンで
そのページに遷移させたいです。
どのようにしたらいいのでしょうか?
アバウトな質問でごめんなさい。
0602nobodyさん
2009/10/24(土) 22:40:40ID:???最近の若者は安易だなぁ
0603nobodyさん
2009/10/24(土) 22:45:01ID:aM0DiAaq0604nobodyさん
2009/10/24(土) 22:45:53ID:???0605nobodyさん
2009/10/24(土) 22:50:44ID:aM0DiAaq例えば赤を選んだら赤色を好きな人の性格について書いてあるページで、
青を選んだら青色が好きな人の性格について書いてあるページです。
アバウトすぎてごめんなさい。
0606nobodyさん
2009/10/24(土) 22:51:31ID:aM0DiAaq<html>
<head><title>心理テスト</title></head>
<body>
<h1>メンタル編</h1>
<p>あなたがいつか天国へ旅立つとしたら、何色の石をお守りにしたいですか?
<?php
// スクリプト名取得
$script = basename(__FILE__);
// メンバー名配列
$member = array("", "赤いルビー", "ピンクのローズクォーツ", "ゴールド",
"イエロートパーズ", "緑のヒスイ", "青のラピスラズリ", "紫水晶", "白の水晶");
// 投票がある場合
if ($_POST['COLOR'] > 0) {
// 投票者番号
$no = $_POST['COLOR'];
// MySQLに接続
$db = mysql_connect("localhost", "root", "root");
// DB選択
mysql_select_db("graduation", $db);
// insert文実行
mysql_query("insert into ninki values(null, {$no},
now())", $db);
// DB切断
mysql_close($db);
}
?>
0607nobodyさん
2009/10/24(土) 22:52:32ID:aM0DiAaq<form method="POST" action="<?= $script ?>">
<p><input type="radio" name="COLOR" value="1">赤いルビー</p>
<p><input type="radio" name="COLOR" value="2">ピンクのローズクォーツ</p>
<p><input type="radio" name="COLOR" value="3">ゴールド</p>
<p><input type="radio" name="COLOR" value="4">イエロートパーズ</p>
<p><input type="radio" name="COLOR" value="5">緑のヒスイ</p>
<p><input type="radio" name="COLOR" value="6">青のラピスラズリ</p>
<p><input type="radio" name="COLOR" value="7">紫水晶</p>
<p><input type="radio" name="COLOR" value="8">白の水晶</p>
<p><input type="submit" value="投票"></p>
</body></html>
こんな感じです。
ごめんなさい。
0608nobodyさん
2009/10/24(土) 22:56:06ID:???switch($COLOR){
case 1
処理&リダイレクト1
break;
case 2
処理&リダイレクト2
break;
case 3
処理&リダイレクト3
break;
.....
}
あとaction="<?php echo $script ?>"はまずくね?
それだったらaction=""で空でいいと思うよ
0609nobodyさん
2009/10/24(土) 22:58:11ID:???ね":"を忘れずに
0611nobodyさん
2009/10/24(土) 23:05:20ID:???0612nobodyさん
2009/10/24(土) 23:24:44ID:TvoLhocc俺はcaseからインデントつけて位置に書いてるけど
そうすると最後でインデントが2つ一気になくなってしまう違和感がある
>>608みたいに書くとcase処理内な感じがしない違和感
0614nobodyさん
2009/10/24(土) 23:35:29ID:???case $a:
break;
0615nobodyさん
2009/10/24(土) 23:41:58ID:???case 0:
do_something();
break;
case 1:
do_something();
break;
default:
do_something();
break;
}
どの言語の解説でもたいていこうなってるしこれがスタンダードじゃないかね
0616nobodyさん
2009/10/24(土) 23:42:52ID:???0617nobodyさん
2009/10/25(日) 00:28:25ID:???0618nobodyさん
2009/10/25(日) 00:56:35ID:???switch('a'){
case 'a'; //末尾が ;
}
と
switch('a'){
case 'a': //末尾が :
}
は等価
0619nobodyさん
2009/10/25(日) 05:29:05ID:TWuysydg$search = "/([^0-9])([0-9])c([^0-9])/";
$replace = "$1c$2$3";
echo preg_replace($search, $replace, $test);
これで、期待する出力は
c1 c2 c3!
実際の出力は
c1 2c c3!
質問は、
・なぜこのような動作になるのでしょうか?
・どうすれば解決できるでしょうか?
後、欲しいアイデアとして
・"1c 2c 3c"のように、先頭にスペースを入れなくても"c1 c2 c3"に変える正規表現を教えてほしい
(ただし"11c"のような形の場合は変化させないでほしい)
0620nobodyさん
2009/10/25(日) 05:53:15ID:???substrで文字を抜き出したのを結合すえばええ
0621nobodyさん
2009/10/25(日) 10:22:02ID:???0622nobodyさん
2009/10/25(日) 11:14:26ID:???$test = "1c 2c 3c!";
$search = "/([^| ][0-9]{1})c/";
$replace = "c$1";
0623nobodyさん
2009/10/25(日) 13:01:49ID:???0625nobodyさん
2009/10/25(日) 21:45:40ID:???リクエスト終わったらメモリ開放されるんでしょ?
0626nobodyさん
2009/10/25(日) 22:19:54ID:???1リクエストの中だけでも必要なときはあるさ。
0627nobodyさん
2009/10/25(日) 22:38:37ID:Ltpwqrvc以下のようにするとcount.phpにリダイレクトできるのですが、
count.phpからLocationで飛ばすとループしているのか404NotFoundになってしまいます。
どうすれば正常にできますか?
例:www.example.com/img/abc01.jpg をクリックしてcount.phpを介してカウント
www.example.com/img/abc01.jpgのまま表示する
//サーバー側
RewriteEngine on
RewriteRule ^/img/abc([0-9]+).(*)$ /img/count.php?id=$1&extension=$2
//count.php側
header("Location: http://www.example.com/img/abc$id.$extension");
0628nobodyさん
2009/10/25(日) 22:42:08ID:???0629627
2009/10/25(日) 22:54:09ID:Ltpwqrvcやってみましたがだめでした・・・。
0630nobodyさん
2009/10/25(日) 23:07:22ID:???0631nobodyさん
2009/10/25(日) 23:15:10ID:???0632627
2009/10/26(月) 00:20:09ID:8+sjsIrsアドバイスありがとうございます。
何とか解決できたみたいです。
/img/を物理ディレクトリ、URL表示部分を新規に/img2/として(抽象ディレクトリ)
リライトしたらできるようになりました。
0633627
2009/10/26(月) 00:33:00ID:8+sjsIrsreadfileも必要だったみたいです。
ありがとうございました。
0634nobodyさん
2009/10/26(月) 05:27:50ID:???<html>
<body>
<?php include("./hoge.php");?>
</body>
</html>
で閲覧に問題はないのですが、
ソースを見ると
<html>
<body>
<html><body></body></html>
</body>
</html>
と2度使われ重複している状態です。
hoge.phpには<html><body></body></html>などの記述はしておりません。
問題の箇所等ご指摘願います。
0635nobodyさん
2009/10/26(月) 05:31:55ID:???それだけではなんともいえない
0637nobodyさん
2009/10/26(月) 05:48:48ID:n4efgg6U日付順に取得記事をソートしたいのですが、うまくいきません。
アドバイスお願いします。
$rssurl = array ();
$rssurl[] = "http://mainichi.pheedo.jp/f/mainichijp_flash";
$rssurl[] = "http://rss.asahi.com/f/asahi_newsheadlines";
foreach ($rssurl as $pre) {
$url = $pre;
$rss = fetch_rss($url);
$title = $rss->channel['title'];
$title = mb_convert_encoding($title, "shift_jis", "auto");
$url = $rss->channel['link'];
$rss->items = array_slice($rss->items, 0, 1);
foreach ($rss->items as $item ) {
$day = date('n/j',strtotime(substr($item['dc']['date'],0,10)));
$time = date('H:i',strtotime(substr($item['dc']['date'],11,8)));
$date = "$day $time";
$rdf = $item[link];
$article = $item[title];
$article = mb_convert_encoding($article, "shift_jis", "auto");
$linkstr = "$date $rdf $article $url $title<br>\n";
$rssarray["{$date}"] = $linkstr;
krsort($rssarray);
echo "$linkstr";
0639nobodyさん
2009/10/26(月) 05:55:31ID:n4efgg6Uはい、順序以外は期待通りの実行結果です。
0640nobodyさん
2009/10/26(月) 06:00:30ID:???どんな$linkstrを入れるとどのようなソート結果になるか例を出してもらえますか?
ちなみに第二引数にソートフラグを指定して挙動を変えることができる
http://www.php.net/manual/ja/function.sort.php
今回の場合は全て文字列だから関係ないかもしれないけど
0641nobodyさん
2009/10/26(月) 06:09:43ID:n4efgg6U$rssurl[] = "http://mainichi.pheedo.jp/f/mainichijp_flash";
$rssurl[] = "http://mainichi.jp/rss/etc/mantan.rss";
$rssurl[] = "http://mainichi.jp/rss/etc/enta.rss";
$rssurl[] = "http://mainichi.jp/rss/etc/sports.rss";
10/26 05:00 ■URL ■人事:法務省(26日) ■URL ■毎日jp-ニュース速報(総合)
10/25 21:00 ■URL ■注目アニメ紹介:「空中 ■URL ■毎日jp-まんたんウェブ
10/25 22:14 ■URL ■the GazettE ■URL ■毎日jp-エンタメ
10/25 23:10 ■URL ■横浜:巨人・尾花コーチ ■URL ■毎日jp-スポーツ
(長いので削ってます)
このような結果が出ます。
日付でソートをかけているつもりですが、まったくされていません。
$rssurl配列の上から順に表示されています。
0642nobodyさん
2009/10/26(月) 06:10:21ID:???echoで文字列を出力してるのか?
それともただアドセンス部分のHTMLだけ書いてるのか?
試してみたがhtml bodyタグが加わることはない
サーバかPHPの設定かもしれないがどの設定項目かはわからんわ
PHP使えるレン鯖が2つ以上あるなら両方で試してみ
ローカルに環境作るのが一番いいけど
0643nobodyさん
2009/10/26(月) 06:11:55ID:???使う関数まちがってるんじゃね?
krsortって逆順ソートだよ
0644nobodyさん
2009/10/26(月) 06:15:55ID:???0645nobodyさん
2009/10/26(月) 06:17:41ID:???ただ単にキーを逆順にするソートってこと
ユーザー定義のソートをしたいのならusort()とかじゃないと
0646nobodyさん
2009/10/26(月) 06:18:06ID:n4efgg6U$rssurl[] = "http://mainichi.jp/rss/etc/enta.rss"; //エンタメ
$rssurl[] = "http://mainichi.pheedo.jp/f/mainichijp_flash"; //ニュース速報(総合)
$rssurl[] = "http://mainichi.jp/rss/etc/sports.rss"; //スポーツ
10/25 21:00 ■URL ■注目アニメ紹 ■URL ■毎日jp-まんたんウェブ
10/25 22:14 ■URL ■the GazettE ■URL ■毎日jp-エンタメ
10/26 05:00 ■URL ■人事:法務省( ■URL ■毎日jp-ニュース速報(総合)
10/25 23:10 ■URL ■横浜:巨人・尾 ■URL ■毎日jp-スポーツ
例がわかりにくかったので書き直しました。
0647645
2009/10/26(月) 06:19:49ID:???よくよんでなかったw
>日付でソートをかけているつもりですが、まったくされていません。
ってかいてたからてっきり
データ見る限りだとkrsortでよさそうだね
0648645
2009/10/26(月) 06:20:38ID:???0649nobodyさん
2009/10/26(月) 06:22:04ID:n4efgg6UWarning: Wrong parameter count for usort() in C:\WWW\php.php on line 30
>>648
26日が真上だと日付でソートされているように見えたので…
配列順に表示されるだけでソート機能が働いていないというのが今回の悩みです。。。
0650nobodyさん
2009/10/26(月) 06:25:26ID:???マニュアルみようぜ
http://www.php.net/manual/ja/function.usort.php
krsort($rssarray);を
usort($rssarray);にかえただけじゃだめ
第2引数入れないと
0651nobodyさん
2009/10/26(月) 06:26:20ID:???0652nobodyさん
2009/10/26(月) 06:34:30ID:n4efgg6Uすいません、ありがとうございます。
試している最中ですが、cmpの設定に少し時間がかかりそうなので結果が遅れます。
>>651
$day 記事の更新日
$time 記事の更新時間
$date 上記二つを合わせた文字列
$rdf 記事のURL
$article 記事のタイトル
$url 配信元のURL
$title 配信元のタイトル
です。
0653nobodyさん
2009/10/26(月) 06:41:45ID:???ごめん、krsortに$linkstr関係なかったね
$array = array('10/25 21:00'=>1,'10/25 22:14'=>2,'10/26 05:00'=>3,'10/25 23:10'=>4);
var_dump($array);
krsort($array);
var_dump($array);
array(4) {
["10/25 21:00"]=>
int(1)
["10/25 22:14"]=>
int(2)
["10/26 05:00"]=>
int(3)
["10/25 23:10"]=>
int(4)
}
array(4) {
["10/26 05:00"]=>
int(3)
["10/25 23:10"]=>
int(4)
["10/25 22:14"]=>
int(2)
["10/25 21:00"]=>
int(1)
}
こちらで試してみたら想定どおりにソートされてる気がするけども
0654nobodyさん
2009/10/26(月) 06:43:43ID:???$a部分を連想配列にしてキーを$rssarrayのキーと一致させておけば簡単
比較は値のunixタイムにしたものを比較する感じで
マニュアルの例そのまま使うならrsort()にしたほうがいいと注意書きに書いてるから
まずはusortで形をつくってからパフォーマンスのためにrsortで書き直してみては?
0656nobodyさん
2009/10/26(月) 06:50:28ID:???$rssarrayをソートかけてんのに$linkstr表示してっからだろ
0657nobodyさん
2009/10/26(月) 06:50:51ID:???krsort($rssarray);
echo "$linkstr";
froeachの終わりがどこかわからんけど、echo結果を見ているなら$rss->itemsの順番に表示されてるんじゃ?
$rssarrayに入れたいものを全部入れてからkrsortしてprint_r($rssarray)で確認してみたらどうかな
0658nobodyさん
2009/10/26(月) 06:56:25ID:n4efgg6Uphpは昨日触ったばかりなのでじっくり参考にさせて頂きます。
>>654>>655
助言を求めたのは私なのでハマりから抜け出すためのしっかり参考にさせて頂きます。
>>656>>657
やっと原因が究明出来ました。
表示がまだ思い通りにいかないので試行錯誤してみます。
0659nobodyさん
2009/10/26(月) 07:00:40ID:n4efgg6Ukrsort($rssarray);
for(reset($rssarray); $i=i($rssarray); next($rssarray)){
echo "$rssarray[$i]";
$count++;
if($count == 4){
break;
}
}
これでしっかりと表示出来ました。
原因はkrsort($rssarray);をforeachの中に入れていたことと
$linkstrを表示していたことです。
皆様ありがとうございました!
0660nobodyさん
2009/10/26(月) 07:01:41ID:???の行は単にデバッグのためループの中で出力を確認しているだけで
当然そのあとにテーブルか何かで一覧を表示して、正しくソートされてないと言ってるもんだと思ってた。
$linkstrはkrsortどころか$rssarrayとも関係ない。foreachの順で表示されるだけじゃん。
0661nobodyさん
2009/10/26(月) 07:07:28ID:???オマエラ馬鹿すぎ。
0662nobodyさん
2009/10/26(月) 07:23:29ID:???リアルでどういうやつなのかぜひ見てみたいわ
0664nobodyさん
2009/10/26(月) 10:20:50ID:???0665nobodyさん
2009/10/26(月) 10:41:51ID:???0669nobodyさん
2009/10/26(月) 11:27:59ID:???俺が自動ログインで、そいつの振りして利用できる?
0670nobodyさん
2009/10/26(月) 11:33:33ID:???0671nobodyさん
2009/10/26(月) 11:34:10ID:???0672nobodyさん
2009/10/26(月) 11:44:57ID:???■ このスレッドは過去ログ倉庫に格納されています