【PHP】下らねぇ質問はここに書き込みやがれ 49
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/06/26(火) 03:03:40ID:ox2uyHLdPHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 45 (※実質48)
http://pc11.2ch.net/test/read.cgi/php/1180181033/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0020nobodyさん
2007/06/26(火) 14:33:40ID:???$num = abc(); ←js
これだとエラーになってしまいます。
002110です
2007/06/26(火) 14:43:18ID:rv4paT9V早速の回答有難う御座います。
Webで表示するだけではないので文字列にしたいのですが、html_entity_decode()ではダメでした。
その後、PHPマニュアルとWEBを探したら、mb_decode_numericentity()で解決できました。
以下、参照用のURLを貼っておきます(いずれもmb_encode_numericentity()のほうの解説ですが)。
ttp://bmky.net/diary/log/881.html
ttp://d.hatena.ne.jp/shozzy/20060929/1159545013
0022nobodyさん
2007/06/26(火) 15:03:11ID:???phpがrpmでインストールしてあるのならrpmで追加すればいい
yumも使えるかも知れない
ソースからコンパイルしているのならphpizeで追加
0023nobodyさん
2007/06/26(火) 15:40:00ID:???0025nobodyさん
2007/06/26(火) 16:11:55ID:???0026nobodyさん
2007/06/26(火) 16:13:11ID:GmLOHAVFclass TEST{
class TEST2{
public function __construct(){
・・・・・・・・・・
}
}
}
Parse error: syntax error, unexpected T_CLASS, expecting T_FUNCTION
0027nobodyさん
2007/06/26(火) 16:18:31ID:???0028nobodyさん
2007/06/26(火) 16:20:21ID:GmLOHAVF共通の変数とか与えようと思って・・・
あと、見やすいから・・・
0030nobodyさん
2007/06/26(火) 16:28:58ID:KN0J5qoY異なるそれぞれの文字列(html)で文字数が異なっている4つのフォームから
送信された文字列を一つのindex.htmlに書き込み、
取り出す時にはまた4つのフォームにそれぞれの文字列を戻す。
ということは出来ますでしょうか?
0034nobodyさん
2007/06/26(火) 16:59:05ID:???やはりjs使うしかないんでしょうか?
0037nobodyさん
2007/06/26(火) 17:17:18ID:???0039nobodyさん
2007/06/26(火) 17:33:48ID:KN0J5qoYその方法を教えてほしいです。
0040nobodyさん
2007/06/26(火) 17:43:43ID:???つ[ ttp://affiliate.aki-f.com/prog/page/40.html ]
ここみて理解できたらもう一度質問しろ
0041nobodyさん
2007/06/26(火) 18:05:05ID:JgraNuKY$data_dir = "./data/"; のr_data.dat のデータ $ex_r_data[0]と
$Data=file('data.csv'); のline[1]の内容が合致したばあい、
$ex_r_data[0]の任意のデータを抽出するにはどういうふうにすれば
いいのでしょうか?
お知恵をお貸しください。
0042nobodyさん
2007/06/26(火) 18:09:03ID:???面倒見切れなくなった老人を入れるポスト。
0043nobodyさん
2007/06/26(火) 18:12:55ID:???$file1 = file("./data/r_data.dat");
$file2 = file("data.csv");
if($file1[0] == $file2[1]){
echo $file[0];
}
0049nobodyさん
2007/06/26(火) 18:44:42ID:???0051nobodyさん
2007/06/26(火) 18:59:59ID:KrNYGdyB二つのデータファイルを照合して
合致したものだけを抽出させたいんじゃないかな?
005351
2007/06/26(火) 19:05:09ID:KrNYGdyB0055nobodyさん
2007/06/26(火) 19:16:54ID:???0057nobodyさん
2007/06/26(火) 19:33:38ID:JgraNuKYどうもうまくいきません。
PHP2日目の初心者ですので、むちゃくちゃかもしれませんが、ご指導ください。
$file1 = file("../data/or_data.dat");
$file2 = file("../data.csv");
$line=explode(",",$file2[$i]);
if($file1[0] == $line[1]){
echo "$line[30]";
0058nobodyさん
2007/06/26(火) 19:54:53ID:???foreach($file as $v){
$line = explode(",",$v);
if($file1["0"] == $line["1"]){
echo $line["30"];
break;
}
}
0059nobodyさん
2007/06/26(火) 19:57:44ID:iUlJJkmfPHP5をメインでやっていくほうがいいですか?
0061nobodyさん
2007/06/26(火) 20:14:25ID:r5oReIjo君は電車で横に席座られるのが怖くてずっと立ってしまうタイプだな
0062nobodyさん
2007/06/26(火) 20:42:57ID:JgraNuKYありがとうございます。
いろいろとやってみましたが、やはりうまくデータecho $line["30"];を吐き出しません。
なんともなさけないです・・・
006451
2007/06/26(火) 20:50:43ID:KrNYGdyB$file2 = file("../data.csv");
$str = array_intersect($file1,$file2);
foreach($str as $value){
echo $value;
}
0065nobodyさん
2007/06/26(火) 21:18:59ID:JgraNuKY51さん、ありがとうございます。
インターセクトでなにも吐き出さないのをみると、もっと根本的なとこで間違ってるんでしょうね。
顔洗って出直します^^;
0066nobodyさん
2007/06/26(火) 21:19:46ID:???0067nobodyさん
2007/06/26(火) 21:23:44ID:JgraNuKYデータ上2つのファイルでは同じデータがあるのに
ひっかからないという意味です。
0068nobodyさん
2007/06/26(火) 21:24:06ID:???0072nobodyさん
2007/06/26(火) 21:41:27ID:JgraNuKY最終的になにがしたいかといいますと、
商品詳細のページに商品レビューを載せたいのです。
$file1 = file("../data/商品レビューのデータベース.dat");
$file2 = file("../商品詳細のデータベース.csv");
$line=explode(",",$file2[$i]);
if($file1[0] == $line[1]){ //file1の商品レビューのデータIDとfile2の商品詳細のIDが合致した時
echo "商品詳細のページにレビューが表示される";
今はレビューと商品詳細ページが別々になっているので、一緒に表示されるように
がんばっているところです^^
0073nobodyさん
2007/06/26(火) 21:48:57ID:???だからレス数だけが増えてなんの益にもならない
0074nobodyさん
2007/06/26(火) 21:50:27ID:???0075nobodyさん
2007/06/26(火) 21:55:46ID:???すみません
商品名称<>ID<>URL<>レビュー内容<>レビュー内容2<>レート<>2007/06/26 13:50<>1
こんな感じです。
0076nobodyさん
2007/06/26(火) 21:56:42ID:???0078nobodyさん
2007/06/26(火) 22:03:27ID:???>>75
配列とforeachの使い方覚えればいいことあるよきっと
0079↑
2007/06/26(火) 22:06:25ID:JgraNuKY商品詳細のURLが http://www.xxx.com/shohin/[ID].htm
となりますので、
このファイル2のIDとレビューデータベース(file1)のIDが一致 (==)
したときに、商品詳細ページに該当IDのレビューが表示されるようにしたいんです。
0081nobodyさん
2007/06/26(火) 22:22:07ID:???$line=explode(",",$file2[$i]);
if($file1[0] == $line[1])
これの $line[1]のつもりです。※正確には$line[0]
0082nobodyさん
2007/06/26(火) 22:24:30ID:???file1,file2を関係付ける意味がわからんけど、まあそういうところを聞きなおすとよけいに
混乱するだろうからおいとけば、file1の行もexplodeしなきゃだめなのだよ。
/*********************************************/
$file1 = file("../data/商品レビューのデータベース.dat");
$file2 = file("../商品詳細のデータベース.csv");
$line=explode(",",$file2[$i]);//$iがすでに特定できるとして、
/************ここまでが>>72のまま**************/
$ID_file2 = $line[0];//file2のIDを判りやすいように書き直して
foreach($file1 as $key=>$val) {
$rtn = explode('<>',$val);
$ID_file1 = $rtn[1] ;//ID確保
if($ID_file1 == $ID_file2) {
echo 'SUCCESS';
}
}
まずこんだけやってごらんよ。
008451
2007/06/26(火) 22:28:26ID:KrNYGdyBちょっと待て、
ページにIDが入ってるぞ
0086nobodyさん
2007/06/26(火) 22:36:31ID:???>ファイル2は普通のCSVで
>商品名称,価格,詳細1,詳細2,・・・・・ と続いていきます。
>$line=explode(",",$file2[$i]);
>if($file1[0] == $line[1])
>これの $line[1]のつもりです。※正確には$line[0]
$line[1]には価格が入るんじゃないのか?
あと
・正確には$line[0]の意味が分からん。最初から正確な話をしてくれ。
・$iがどこから来たかすらそもそも分からん。
0088nobodyさん
2007/06/26(火) 22:45:57ID:JgraNuKYありがとうございます。
「$iがすでに特定できるとして、」
$iが特定できてませんでした・・・
商品詳細のページでは
$Data=file('../商品詳細.csv');
for($i=0;$i<sizeof($Data);$i++){
$line=explode(",",$Data[$i]);
こんなかんじで$iを特定できてましたが、今回は・・・
この$iはCSVの列の指定に関係あるとぼんやり分かるのですが。・・・
今回適当に、めちゃくちゃ!? $i=0と指定したら
SUCCESSと表示されました!
しかし、レビューのない全てのページに表示されたので、$iを正確に指定しれば
できそうですが・・
0089nobodyさん
2007/06/26(火) 22:47:51ID:JgraNuKYすいません、書き間違いです
正確には 商品ID,商品名称,価格,詳細1,詳細2,・・・・・
となりますので、IDは$line[0]になります。
0090nobodyさん
2007/06/26(火) 23:16:09ID:KjJKv0cFPHP.iniとか
どうでしょう?
0092nobodyさん
2007/06/26(火) 23:24:24ID:KjJKv0cF簡単なことでよいので教えていただければ嬉しいです。
0095nobodyさん
2007/06/27(水) 01:09:15ID:???ini_set('display_errors','1');
0096nobodyさん
2007/06/27(水) 02:33:24ID:???var_dump($hoge);
print_r($hoge);
var_export($hoge);
$a = print_r($hoge,1);
echo $a;
$b= var_export($hoge,1);
echo $b;
とか駆使してとにかく $hoge の構造がどうなっているのか
逐一デバッグ汁。まずそこからだ。
0097nobodyさん
2007/06/27(水) 06:25:54ID:FJbbPuHDif文とforeach文を使って、正解か不正解を判断させるようにしたいのですが、
以下の文で利用者が正解か正解ではないかをif文、または他の方法で判断するにはどうすれば良いのでしょうか?
文はこんな感じです。
$kaitouget = array(@$_GET["mondai1"],@$_GET["mondai2"],@$_GET["mondai3"],@$_GET["mondai4"],@$_GET["mondai5"]);
$seikai = array("a","c","b","a","d");
foreach ($kotae as $seikai){
...
と続けさせて、最後に送信ボタンを押したら、あなたは5問中x問正解です、と表示させたいです。
またラジオボタンを押してない箇所があった場合は、もう一度入力してください、と注意を促せるようにしたいです。
009897
2007/06/27(水) 06:30:29ID:FJbbPuHDforeach ($kaitouget as $seikai){
でした。
0099nobodyさん
2007/06/27(水) 06:52:59ID:???$count = 0;
foreach ($kaitouget as $key=>$val){
if ($seikai[$key] == $val) { $count++; }
}
010088
2007/06/27(水) 07:46:45ID:???また格闘してみます。
010197
2007/06/27(水) 08:29:42ID:FJbbPuHDありがとうございます。追加してみたら出来ました。
この状態から、ラジオボタンを押してない箇所があった場合は、もう一度入力してください、
と注意を促すにはどうすればいいのでしょうか?
0102nobodyさん
2007/06/27(水) 08:32:38ID:???javascriptでやるか、if(!isset($_GET["mondai1"])) とかで値判定するか
0103nobodyさん
2007/06/27(水) 08:36:29ID:???そもそも、こういう場合は親ループは$seikai側でまわす。
$kaitouget 配列で@などの処理もしないですむ。
/*************/
$mondaiNum = 1;
$seikai = 0;
$input = true;
foreach($seikai as $k=>$v) {
$key = 'mondai'.$mondaiNum;
if(!isset($_GET[$key]) { $input = false; break;}
if($v == $_GET[$key]) {
$seikai++;
}
$mondaiNum++;
}
if($input==false) {
echo '入力するよろし';
} else {
echo '正解は'.$seikai.'個数';
}
010482
2007/06/27(水) 09:06:41ID:???それは$iを特定できてるんじゃなくて、詳細.csvの行の配列添え字(行番)だっていうだけ。
で、そのループの$lineの中に$ID_file2の子ループが入るってことになる。
for($i=0;$i<sizeof($Data);$i++){ //親
$line = ...;
$ID_file2 = $line[0];//>>82のループ
foreach($file1 as..){ 子
....
}
}
しかしこれをやれたから、なにかよかったかというと、全然意味無いのはわかりますよね?
袋小路に入ってるよ。ポイントはfile1のID、file2のIDが一致してるかどうかではなくて、
IDがfile1,file2にそれぞれあるかどうかなんだから。
>>79でwww.xxx.com/shonin/[ID].html
とIDがそこで現れてるんだから、>>93の人が聞いてるように、このIDがどこからやってくるの
かをまず探索、理解すべき。
そのID(の変数)で、ID == file1 ID、ID==file2 IDと別々に判定すれば終わり。
0106nobodyさん
2007/06/27(水) 11:11:50ID:???とてもしたい。
誰か書いてくりー
0107nobodyさん
2007/06/27(水) 11:27:33ID:???--html--
<form action="test.php" method="POST">
〜中略
<input type="submit" value="送信">
</form>
--test1.php--
<?php
print $name; //フォームのname
print $addres;
print $tel;
?>
このような形で試したんですが、何も表示されません。
どういったことが考えられるでしょうか?
0109nobodyさん
2007/06/27(水) 11:41:37ID:???$bar = 多重連想。
function foo($bar) {
/*loop*/
while とかforeachとか
{
/*処理*/
その時点で配列が終わるものを$someとして取得
if(さらに子配列$anyがあるなら) {
$rtn= array_merge(foo($any),$some);
}
}
return $rtn;
}
の考え方でやれ。
更に、array_mergeとかarray_merge_recursiveじゃたらなきゃ(同一キーを書き換えると困る場合)、
多重に書き換え出来るarray_merge_recursive_overrideとかいう自前関数、
$rnn = array_merge_recursive_override(...);
などとする
自前っていってもニーズがあるからネットに転がってるが(xml、yaml,json系の配列操作スクリプト)。
なお中を表示したいなら上の関数でecho してもいいけど、
汎用に上の関数を作っておいて表示用のものをその関数結果を使ってやるのが普通。
どうせ、多重連想配列を <ul><li>で表示したいとか,xmlのツリーに書き変えたいとかのニーズだろうから。
0110nobodyさん
2007/06/27(水) 12:00:16ID:???function string_r($array){
$tabsize = " ";
$arg = func_get_args();
$indent = $arg["1"];
if (func_num_args() == 1):
$indent = $tabsize;
endif;
foreach ($array as $name => $value){
if (is_array($value)):
$contentString .= $indent.'['.$name.'] => Array' . "\n".$indent.$tabsize."(\n";
$contentString .= string_r($value, $indent. $tabsize.$tabsize);
$contentString .= $indent .$tabsize. ")\n\n";
else:
$contentString .= $indent . '['.$name.']' . ' => ' . $value . "\n";
endif;
}
if (func_num_args() == 1):
$contentString = "Array\n(\n" . $contentString . ")\n";
endif;
return $contentString;
}
0112nobodyさん
2007/06/27(水) 12:03:33ID:???できました^^ありがとうございます。
ただ、プルダウン(select)の値も同様に記述したらエラーになってしまいました。
同じ記述じゃ駄目なんでしょうか?
0113nobodyさん
2007/06/27(水) 12:22:06ID:n4m0L2rR$stringsはhtmlspecialcharsをかますべきでしょうか?
それとも画面に表示されないので必要ないですかね?
echo "<input type=\"text\" name=\"$strings\">";
0114nobodyさん
2007/06/27(水) 12:24:08ID:5PCg8aId次の画面に遷移させた後、書き直しかなんかでブラウザの戻るボタン前の画面に戻ると、
期限切れの表示がされてしまいます。
ブラウザの設定のせいかとずっと思っていたのですが、
他の通販サイトで買い物をしていたところ、戻るボタンで戻っても
きちんと表示されていたので、私のPGのせいだと思うのですが、
どの辺の処理を修正すれば宜しいでしょうか?
宜しくお願いします。
ちなみに、header関数で出力している箇所は全て消してやってみたのですが駄目でした。
0115nobodyさん
2007/06/27(水) 12:25:24ID:???print_r($_POST);
を取得側のPHPに書き込んで出力されたものに
selectフォームの名前があるか確認し、ない場合は
POSTができていないと判断しPOST側を直せ
名前がある場合は受け取り側のポスト部分をチェック
$_POST["ここの部分がまちがっている"]
0119nobodyさん
2007/06/27(水) 12:52:39ID:???postとセッションでできるの?
postしたあとにリダイレクトして実現してるのかと思ったけど
もっといい方法があったら教えて
■ このスレッドは過去ログ倉庫に格納されています