phpの絞り込みデータを最初から表示させない

このQ&Aのポイント
  • phpでテキストタブ区切りのデータを読み込み、javascriptで絞り込みを行うページを作成しました。
  • 初心者ですが、欲しいソースを組み合わせ、何とか絞り込みは可能になったのですが、最初に全データが表示されます。
  • 最初ページを開いたときにあらかじめ設定したデータのみを表示させておくことは可能でしょうか?
回答を見る
  • ベストアンサー

phpの絞り込みデータを最初から表示させない

phpでテキストタブ区切りのデータを読み込み、javascriptで絞り込みを行うページを作成しました。 初心者ですが、欲しいソースを組み合わせ、 何とか絞り込みは可能になったのですが、最初に全データが表示されます。 最初ページを開いたときにあらかじめ設定したデータのみを表示させておくことは可能でしょうか? どの部分を表示すれば良いかわからず、 ソースは、phpの部分を表記させていただきました。 ─php─ <form> <? $fn = 'books.txt'; $line = file($fn); for ($a = 1; $a < count($line); $a++) { $data = split("\t", $line[$a]); for ($b = 0; $b < count($data); $b++) $array[$b][] = $data[$b]; } $data = split("\t", $line[0]);," echo '<table id="SampleData"><thead><tr> <th>日<br><br> <label> <select id="cell1" name="cell1" class="cellIndex0"> <option value="*">-</option> <option value="上">上旬</option> <option value="中">中旬</option> <option value="下">下旬</option> </select> </label> </th> <th>title</th> <th>IMG<br><br><br></th> </tr>'; for ($a = 0; $a < count($line) - 1; $a++) { echo '</thead><TR>'; for ($b = 0; $b < count($data); $b++) echo '<td>' . $array[$b][$a] . '</td>'; echo '</tr>'; } echo '</TABLE>'; ?> </form> こちらのサイトのように、最初は何も表示されない感じがよいです。 http://javascript.maxux.com/js104.htm (こちらはプルダウンが一つしかなかったので、既存のものを編集しようと考えていました) 参考になるページでもかまいません、ご存知の方、どうかよろしくお願いいたします。 質問ばかりで申し訳ないですが、データ数が現段階で10,000を越します。 mysqlも考えてはいましたが、データはcsvやタブ区切りの方が早く作れることと、htmlタグもcsv内にあるので変換が大変かと思うのですが・・・csvやタブ区切りでは難しいでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

よくわかってませんが… 表示の1行がデータのセットになっていると解釈して、1行ごとに表示/非表示の制御ができればよいものとして、 >javascriptで絞り込みを行うページを作成しました。 という部分の処理方法がわからないので、そちらとも関係してしまうけれど、 例えば、CSSで  #SampleData tbody tr { display:none; }  #SampleData tbody tr.show { display:table-row; } とでもしておいて、表示する行はclass="show"とする、とかではだめでしょうか? (ご提示のソースだと<thead>が閉じていないので、↑のままではうまくいきませんが…) ただし、IE系はdisplay:table-rowへの対応が不完全なようなので、ハックが必要みたい(未確認)。 なので、  #SampleData tbody tr.hidden { display:none; } として、最初の出力時に<tr class="hidden">で出力するほうが良いかも。 (表示する場合は、className=""などで)

rabbit-kimura
質問者

お礼

できました!!望み通りできたので、かなりびっくりです cssとは盲点でした… 色々調べた結果、データ量が多くてやはり1からデータベースを作ることになりそうですが…(泣 こちらはこちらで利用させていただきます!! 感謝します!!

rabbit-kimura
質問者

補足

早速ご回答ありがとうございます!! 元のソースが長く省略もして、わからないなりですがかなりいじってましたので、 伝わりにくかったことこの上ないと思いますが・・・ こんなに丁寧にご回答いただけるとは思いませんでした!! いただいた回答を参考にさせていただき、また後ほどお礼をさせていただきます!! お礼ポイントをもっていないため、ポイントはないのですが・・・本当にごめんなさい・・・

その他の回答 (1)

回答No.2

CSS で tr[aria-hidden="true"] { visibility: collapse; } とかして、 html で <tr aria-hidden="true">~ とかして、 すくりぷとで tr.setAttribute ('aria-hidden', 'false') とかして、ひょうじするとか・・・

rabbit-kimura
質問者

お礼

ありがとうございます!! CSS・html・スクリプト、3つでの方法…すごい!! 3つのデータを関連させる方法がまだまだ理解できてなくて未熟なので、大変参考になりました!! 本当、感謝です!!

関連するQ&A

  • php言語にて

    <?php print "<form><table border=\"1\" cellpadding=\"5\">\n"; for($i=0;$i<6;$i++){ if($i==0){print "<tr><td>&nbsp;</td><th>月曜日</th><th>火曜日</th><th>水曜日</th><th>木曜日</th><th>金曜日</th></tr>\n"; continue; } print "<tr><td align=\"center\">$i<br>限</td>"; for($j=1;$j<6;$j++){ print "<td><select name=\"kamoku$j$i\"><option value=\"\"> <option value=\"科目A\">科目 A<option value=\"科目B\">科目 B<option value=\"科目C\">科目 C<option value=\"科目D\">科目 D<option value=\"科目E\">科目 E<option value=\"科目F\">科目 F<option value=\"未定\">未定 </select> </td>"; } print "</tr>\n"; } print "</table>\n</form>"; ?> これにボタンを付けて、ボタンを押したら操作をできなくするにはどうすればいいですか? 保存のような機能を付けたいのですが… なにか参考になるサイトはありませんか?

    • 締切済み
    • PHP
  • 自動で増えてくれるPHP

    以前に質問させて頂いた内容をもとに、以下のようなものを作成しました。 以前の質問 → http://okwave.jp/qa/q6858703.html 作成したもの ↓ 【Aサーバ】「a.txt」(データ用) $name01='一子'; $age01='11'; $name02='二郎'; $age02='22'; 【Bサーバ】「b.html」(表示用) <?php $data = file_get_contents ('http://www.A/a.txt'); foreach (explode("\n" , $data) as $value) { if (preg_match ("/\\$(.+)='(.+)'/", $value, $matches)) { $$matches[1] = $matches[2]; } } echo '<table>'; echo '<tr><th>'.$name01.'</th><td>'.$age01.'</td></tr>'; echo '<tr><th>'.$name02.'</th><td>'.$age02.'</td></tr>'; echo '</table>'; ?> ここで質問なのですが、↑のような仕組みで、a.txtの中身が $name03='三太'; $age03='33'; $name04='~~'; $age04='~~'; と増えていった場合、b.htmlの echo '<tr><th>'.$name~~.'</th><td>'.$age~~.'</td></tr>'; が自動的に増えてくれるようなものを作りたいと考えています。 配列(?)を使うという方法も調べてみたのですが、分からず……。 ご教示願います。

    • ベストアンサー
    • PHP
  • form id、nameの番号振りなおし

    jqueryとphpにてフォームを作成しています。 フォームの追加、削除できるシステムを作っており、 フォームの追加はできたので、削除した際のinputのnameやidの番号を振り直しができず困っています。 商品1<br> <a href="javascript:void(0);" class="del" id="del_1">削除</a> <table> <tr> <th>商品番号</th> <td><input type="text" name="item[data][1][sir]" value="<?php echo $item[data][1][sir]; ?>"></td> </tr> <tr> <th>商品名</th> <td><input type="text" name="item[data][1][name]" value="<?php echo $item[data][1][name]; ?>"></td> </tr> <tr> <th>商品個数</th> <td> <select name="item[data][1][num]"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> </select> </td> </tr> </table> <a href="javascript:void(0);" id="add">フォームの追加</a> としており、 「フォームの追加」をクリックすると 商品2<br> <a href="javascript:void(0);" class="del" id="del_2">削除</a> <table> <tr> <th>商品番号</th> <td><input type="text" name="item[data][2][sir]" value="<?php echo $item[data][2][sir]; ?>"></td> </tr> <tr> <th>商品名</th> <td><input type="text" name="item[data][2][name]" value="<?php echo $item[data][2][name]; ?>"></td> </tr> <tr> <th>商品個数</th> <td> <select name="item[data][2][num]"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> </select> </td> </tr> </table> 商品3<br> <a href="javascript:void(0);" class="del" id="del_3">削除</a> <table> <tr> <th>商品番号</th> <td><input type="text" name="item[data][3][sir]" value="<?php echo $item[data][3][sir]; ?>"></td> </tr> <tr> <th>商品名</th> <td><input type="text" name="item[data][3][name]" value="<?php echo $item[data][3][name]; ?>"></td> </tr> <tr> <th>商品個数</th> <td> <select name="item[data][2][num]"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> </select> </td> </tr> </table> ができるようにPHPにてSESSION管理をおこなっています。 追加はできたのですが、 上記のフォーム4つほど出した後に商品2を削除した場合の商品1、商品3、商品4の各nameの番号(item[data][*][sir]、item[data][*][name]、item[data][*][num]の*部分) 振りなおしができず困っています。 いくらやってもできないため、どなたかソースを教えていただけないでしょうか。 宜しくお願いいたします。

  • phpのリンクについて

    <?php print "<form><table border=\"1\" cellpadding=\"5\">\n"; for($i=0;$i<6;$i++){ if($i==0){print "<tr><td>&nbsp;</td><th>月曜日</th><th>火曜日</th><th>水曜日</th><th>木曜日</th><th>金曜日</th></tr>\n"; continue; } print "<tr><td align=\"center\">$i<br>限</td>"; for($j=1;$j<6;$j++){ print "<td><select name=\"kamoku$j$i\"><option value=\"\"> <option value=\"科目A\">科目 A<option value=\"科目B\">科目 B<option value=\"科目C\">科目 C<option value=\"科目D\">科目 D<option value=\"科目E\">科目 E<option value=\"科目F\">科目 F<option value=\"未定\">未定 </select> </td>"; } print "</tr>\n"; } print "</table>\n</form>"; ?> (1)プルダウンではなく、リンクを表の中に入れる。 (2)リンク先に教科がいくつかあって、その中から教科を選択する (3)その選択した教科を表に反映させる。 上記のようなことをしたいんですけど、どうすればいいかわかりません。 どうかよろしくお願いします。

    • 締切済み
    • PHP
  • 一致しないデータも表示させたい

    初心者です。 よろしくお願いいたします。 $sql = "SELECT * FROM table WHERE s_code IN ('" .$code."')"; $res = mysql_query($sql) or die("データ抽出エラー"); echo( "<TABLE>" ); echo( "<TR>" ); echo( "<TH>コード</TH>" ); echo( "<TH>コード名称</TH>" ); echo( "<TH>情報</TH>" ); echo( "</TR>\n" ); while ($row = mysql_fetch_array($res,MYSQL_ASSOC)){ echo( "<TR>" ); echo("<td>$row[s_code]</td>"); echo("<td>$row[name_j]</td>"); echo("<td>$row[contents]</td>"); echo( "</TR>\n" ); } 上記を実行すると $codeにカンマ区切りで入っているデータと テーブル(table)のs_codeに一致するデータが表示されます。 一致しないデータがあった場合は $codeのデータのみ表の1列目に記入させることは可能でしょうか。 たとえば、 $codeが (A,B,C)で table には AとCしか ない場合 -------------------------------- コード  コード名称  情報 -------------------------------- A りんご 青森産 B  C バナナ フィリピン産 --------------------------------- 説明が下手ですみません。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • mysql データ表示

    下記のプログラムは詳細を選択すると選択されたデータをいま1件ずつ表示しているのですが 氏名と住所を編集できるようにテキストボックスにしたいまた選択されたデータを初期値として取りたいです 表示されるのですが入力できません どこにフォームなどの命令を入れればいいですか 全体表示のtop.php <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>一覧画面</title> </head> <body> <BLOCKQUOTE> <BR>一覧画面<BR><BR> <?php $con=mysqli_connect("localhost","root","admin","db_test"); // Check connection if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } $result = mysqli_query($con,"SELECT * FROM tbl_test"); echo "<table border='1'> <tr> <th>番号</th> <th>氏名</th> <th>住所</th> <th>詳細</th> </tr>"; while($row = mysqli_fetch_array($result)) { echo "<tr>"; echo "<td>" . $row['番号'] . "</td>"; echo "<td>" . $row['氏名'] . "</td>"; echo "<td>" . $row['住所'] . "</td>"; echo "<td><a href=\"exit.php?id=" . $row['番号'] . "\">詳細</a></td>"; echo "</tr>"; } echo "</table>"; mysqli_close($con); ?> <BR><BR><BR> <A HREF="http://localhost/regist.php"> <INPUT TYPE = "SUBMIT" VALUE = "新規登録"></A> </BLOCKQUOTE> </body> </html> 詳細表示の exit.php <html> <body> <table border='1'> <BR><BR> <tr> <th>番号</th> <th>氏名</th> <th>住所</th> </tr> <?php $id=(isset($_GET["id"]))?((int) $_GET["id"]):0; $con=mysqli_connect("localhost","root","admin","db_test"); $result = mysqli_query($con,"SELECT `番号`,`氏名`,`住所` FROM tbl_test where `番号`={$id}"); while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)) { print "<tr>"; print "<td>".htmlspecialchars($row["番号"])."</td>"; print "<td>".htmlspecialchars($row["氏名"])."</td>"; print "<td>".htmlspecialchars($row["住所"])."</td>"; print "</tr>"; } ?> </table> <BR><BR> <A HREF="http://localhost/top.php"> <INPUT TYPE = "SUBMIT" VALUE = "一覧へ戻る"></A> </body> </html>

  • phpでcsvデータをランダム表示について

    下記はcsvデータをランダムに1つだけ抽出するphpのプログラムですが、1度表示したデータに色をつけるとか、表示させない方法はありますか? <!doctype html> <html> <head> <meta charset="UTF-8"> <title>無題ドキュメント</title> </head> <body> <?php // 抽出数 $count = 1; $list = array(); // 読み込みCSVファイル $lines = file('test.csv'); shuffle($lines); foreach ($lines as $line) { if ( ! in_array($line, $list)) { array_push($list, $line); if (count($list) >= $count) { break; } } } // CSVファイルに出力 $file = fopen('test2.csv', 'w'); foreach ($list as $l) { echo $l.'<br>'; if ($file) { fputs($file, $l); } } fclose($file); ?> </body> </html>

    • ベストアンサー
    • PHP
  • CSVファイルを読み込んで表示するPHP

    <?php setlocale(LC_ALL, 'ja_JP'); if( $handle = fopen( 'data.csv', 'r' ) ){ echo '<table border=1 cellspacing=0 bordercolor=#ff6600 align=center>'; if( ( $data = fgetcsv( $handle ) ) !== FALSE ){ echo '<tr style="background-color:#FFCCFF">'; for( $i = 0; $i < count( $data ); $i ++ ){ if($i===0){ echo '<td align=center width=160px>' . $data[$i] . '</td>'; }else{ echo '<td align=center width=60px>' . $data[$i] . '</td>'; } } echo '</tr>'; } while( ( $data = fgetcsv( $handle ) ) !== FALSE ){ echo '<tr>'; for( $i = 0; $i < count( $data ); $i ++ ){ echo '<td align=center>' . $data[$i] . '</td>'; } echo '</tr>'; } echo '</table>'; } fclose($handle); ?> ■data.csvの内容 品名,数量,予備 AAA,1,1 BBB,1,1 CCC,1,1 上記のPHPは2列まで表示されるようになっています。 それを3列まで表示できるようにしたいのですが、 初心者なので、どう記述したらいいのか分かりません。 どうか、ご教授お願いします。

    • ベストアンサー
    • PHP
  • 困っています。PHPでのC絞込み?

    簡易的なCSVファイルを作成し、それを参考に質問をしていくというHPを作成しています。 2点ほど分からないことがありましたので是非ご教授ください。 test.csvの内容は ai,bb,0 ai,cc,0 au,bb,1 au,dd,1 ao,aa,0 ao,cc,0 ao,dd,0 ao,gg,0 とあります。 最初のページ(test1.php)で・ai ・au ・aoを選ぶページをつくます。 (1) CSVファイルを使用して aiを選択した場合、次のページ(test2.php)での選択肢が・bb ・cc 同様に・auの場合、選択肢は・bb ・dd ・aoの場合、選択肢は・aa ・cc ・dd ・ggと表示したいです。 (2) さらに次のページで CSVを見て 0の場合は(test3.php) 1の場合は(test4.php)と移動したいです。 (1)の方は一応できたのですがプログラムの書き方が適切なのかが不安の為 もっと効率のよい書き方があれば教えてください。 test1.phpはhtmlのみのプルダウンなので略。 test2.phpでの自分の書き方は <form action=●●.php method=POST> <input type=hidden name=test1 value=<?php echo"".$_POST[test1].""?>> <?php $file=file("test.csv");  for($i=0;$file[$i]; $i++){   $data=explode(",",$file[$i]);   if(($_POST[test1]=="ai")&&($data[0]=="ai")){    echo"<input type=radio name=test2 value=".$data[1].">".$data[1]."<br>"; }elseif(($_POST[test1]=="au")&&($data[0]=="au")){ echo"<input type=radio name=test2 value=".$data[1].">".$data[1]."<br>"; }elseif(($_POST[test1]=="ao")&&($data[0]=="ao")){ echo"<input type=radio name=area value=".$data[1].">".$data[1]."<br>"; } } ?> <input type=submit value="次へ"> (2) ●●.phpを新たに作成して そこでincludeかrequireを使用してtest3.phpかtest4.phpに移動 するプログラムを作成しているのですが、うまく移動しません。 案がありましたら是非ご教授ください。 まだプログラムを勉強中なので少し解説をつけていただくとうれしいです。 よろしくお願いします。

    • 締切済み
    • PHP
  • php csvデータを読み書き後表表示させたい

    PHP初心者です。 色々調べ、試したのですがなかなか完成まで辿りつけないので、どなたかお力添えお願い致します。 PHP バーション 5.3.1 XAMPP バージョン 2.5.8  OS Win XP SP2 access2007を使用し、以下のようなCSVファイルを出力しました。 それを、phpで加工後ブラウザに表示させたいのです。 csvのデータ "メーカCD","メーカー名","MRCD","棚番","品目CD","品目名","規格","繰越数","出荷","入荷","残","ITEM_C","実績テーブル集計(移動出入仕入売上)のクロス集計_sort","2010/10/01","2010/10/02","2010/10/03",  」 ここまでがタイトル行 ここから明細「"1 ","○○フーズ ","00200", "A101","15 ","くね","45g5" ,3.00,3.00,0.00,0.00,"15615 ","売上"1.00,,1.00" これを正表して、 |メーカCD| メーカー名| MRCD|棚番|CD|品名|規格|繰越|出荷|入荷|残|区分|10/1|10/2|10/3| |1 |○○フーズ|00300  |A101|15 |くね |45g5|3 |3 | 0|0 |売上 |   |3 | | の様な表にしたいです。 まず、初めに <?php //$filename変数にどのファイルかを割り当てる。 $filename = "c:\\xampp\\htdocs\\hi.csv"; $handle = fopen($filename,"r"); $contents = fread($handle, filesize($filename)); fclose($handle); $fp=str_replace("実績テーブル集計(移動出入仕入売上)のクロス集計_sort", "区分", $contents); $line = explode(",", $fp); echo "<table cellpadding='4' cellspacing='1' border='1';><tbody>"; for ($a = 0;$a < count($line); $a++) { $data = split("\t", $line[$a]); echo "<tr>"; if ($a == 0) $style = 'background-color : #e5e5e5;'; else $style = 'background-color : #ffffff;'; for ($b = 0; $b < count($data); $b++) echo'<td style="' . $style . '">' . $data[$b] . '</td>'; echo '</tr>'; } echo '</tbody>'; echo '</table>'; ?> とスクリプトを書き、CSVデータのタイトル行"実績テーブル集計(移動出入仕入売上)のクロス集計_sort"をstr_replaceを使用し”区分”への変更し、そのあと表として表示させてみようと思ったのですがうまく出来ません。 最終的には、「"」も消し、いらない空白も消し「"2010/10/02"」→は「10/2」に変更したいのですが先に進めない状態です。

    • ベストアンサー
    • PHP