質問編集履歴

2 コードを減らしました。以後多くならないよう注意いたします。ご指摘ありがとうございました。

narutomo

narutomo score 13

2017/05/25 21:07  投稿

チェックボックスによる検索機能で一覧表示をしたい
###前提・実現したいこと
htmlに記入した<input type="checkbox" name="kudamono_name[]">という複数選択したデータをPHPで読み込んで、検索機能という形にしてテーブルに一覧表示をさせたいです。
また、一覧表示で取得するデータはいくつかのテーブルから引っ張ってきたいです。
完成イメージ
![イメージ説明](2316c1b7eae97be71025aa7dbe884a34.png)
###発生している問題・エラーメッセージ
<input type="checkbox" name="kudamono_name[]">のデータを受け取るには、
foreach ($_POST['kudamono_name'] as $value) {echo $value;}
と記入して、echo $value;で値を取得するというのを調べていたら出てきたのですが、この取得したデータを変数にして、一覧表示させる方法はないものでしょうか?
###該当のソースコード
```ここに言語を入力
test2.html↓
<form method="post" action="test_search.php" style="width:800px;margin:0 auto;">
 <table style="border:1px solid black;width:600px;">
   <tr>
     <td style="border:1px solid black;">検索項目</td>
     <td style="world-wrap:break-word;"><#LIST#></td>
   </tr>
   <tr>
     <td colspan="2" style="text-align:center;">
       <input type="submit" value="検索">
     </td>
   </tr>
   <tr>
     <td><#RESULT#></td>
   </tr>
</form>
</table>
```
```
上記htmlをPHPで読み込み
<?php
$query='select kudamono_name from kudamono_list';
$search_checkbox = "";
if($result = mysqli_query($link,$query)){
$i = 0;
while($row = mysqli_fetch_assoc($result)){
 $kudamono_name[$i] = $row['kudamono_name'];
 $search_checkbox .= "<label><input type='checkbox' name='kudamono_name[]' value='$kudamono_name[$i]'>".$kudamono_name[$i]." </label>";
 $i++;
//こちらでチェックボックスのinputタグをデータがある分だけループさせています
}
mysqli_free_result($result);
}
mysqli_close($link);
//ここからはfopenでtest2.htmlを読み込みしているため省略してます
?>
```
```
検索後に表示させたいPHPです↓
<?php
//上記のPHPと同じコードを記入して、<input type="checkbox">をループさせています。
//以下が、一覧を表示させたいselect文  
 
$query_search='select kudamono_list.kudamono_name,customer_list.customer_name from kudamono_list,customer_list';
 
foreach ($_POST['kudamono_name'] as $value) {
 echo $value;
}
//このforeachで取ってきた値をどのように組み込めば他の一覧で表示させたいデータと一緒に、ループさせた感じで表示できるかが不明です
//このforeachで取ってきた値をどのように組み込めば他の一覧で表示させたいデータと一緒に、ループさせたいのですが、うまく行きませんでした。
$line="";
if($result_search = mysqli_query($link,$query_search)){
 $i = 0;
 while($row = mysqli_fetch_assoc($result_search)){
   $kudamono_name[$i] = $row['kudamono_name'];
   $customer_name[$i] = $row['customer_name'];
   $line .= "<tr><td>".$kudamono_name[$i]." ".$customer_name[$i]."</td></tr>";
//ここが一覧表示したいコード(ですが、foreachをどう入れるかが思いつきませんでした。)
   $line .= "<tr><td>".$kudamono_name[$i]." ".$customer_name[$i]."</td></tr>";//ここが一覧表示したいコード
   $i++;
 }
 mysqli_free_result($result_search);
}
mysqli_close($link);
$fp=fopen('./test_search.html','r');
while(!feof($fp)) {
 $html_line=fgets($fp);
 $html_line1=str_replace("<#LIST#>",$search_checkbox,$html_line);
 $html_line2=str_replace("<#RESULT#>",$line,$html_line1);
 $lines = $html_line1;
 echo $lines;
}
fclose($fp);
exit();
 
?>
```
###試したこと
foreach の中身を$kudamono_name = $value;と記入したり、色々試して変数に変えられれば、一覧に表示できるのではと思ったのですが、うまく行きません。
また、最後の$html_line2=str_replace("<#RESULT#>",$line,$html_line1);
を入れると、なぜかすごく長いデータの一覧が出てきてしまっているのもあります。
###補足情報(言語/FW/ツール等のバージョンなど)
html,php,mysql
利用OS=macOS自動的
  • PHP

    38036 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • MySQL

    11821 questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

1 コードを減らしました。以後コードを分けて記入するように気をつけます。

narutomo

narutomo score 13

2017/05/25 21:04  投稿

チェックボックスによる検索機能で一覧表示をしたい
###前提・実現したいこと
htmlに記入した<input type="checkbox" name="kudamono_name[]">という複数選択したデータをPHPで読み込んで、検索機能という形にしてテーブルに一覧表示をさせたいです。
また、一覧表示で取得するデータはいくつかのテーブルから引っ張ってきたいです。
完成イメージ
![イメージ説明](2316c1b7eae97be71025aa7dbe884a34.png)
###発生している問題・エラーメッセージ
<input type="checkbox" name="kudamono_name[]">のデータを受け取るには、
foreach ($_POST['kudamono_name'] as $value) {echo $value;}
を利用して、echo $value;で値を取得するというのを調べていたら出てきたのですが、この取得したデータ=$valueを変数にして、
$line = "";
while($row = mysqli_fetch_assoc($result_search)){
 $kudamono_name[$i] = $row['kudamono_name'];
 $i++;
これでループして取得するデータと一緒に、一覧に表示させたいですが、何か方法はないものでしょうか?
と記入して、echo $value;で値を取得するというのを調べていたら出てきたのですが、この取得したデータを変数にして、一覧表示させる方法はないものでしょうか?
###該当のソースコード
```ここに言語を入力
 
test2.html↓
<!DOCTYPE html>  
<html lang="ja">  
<head>  
 <meta charset="utf-8">  
</head>  
<body>  
<form method="post" action="test_search.php" style="width:800px;margin:0 auto;">
 <table style="border:1px solid black;width:600px;">
   <tr>
     <td style="border:1px solid black;">検索項目</td>
     <td style="world-wrap:break-word;"><#LIST#></td>
   </tr>
   <tr>
     <td colspan="2" style="text-align:center;">
       <input type="submit" value="検索">
     </td>
   </tr>
   <tr>  
     <td><#RESULT#></td>  
   </tr>  
</form>
</table>
</body>  
</html>  
test2.php↓(test2.htmlを読み込んでいます)  
```  
```  
上記htmlをPHPで読み込み  
<?php
require_once('./database_config.php');  
$link=mysqli_connect(DB_SERVER,DB_ACCOUNT_ID,DB_ACCOUNT_PW,DB_NAME);  
if (!$link) {  
  echo "error_connect";  
  exit;  
}  
mysqli_set_charset($link,"utf8");  
 
$query='select kudamono_name from kudamono_list';
 
$search_checkbox = "";
if($result = mysqli_query($link,$query)){
$i = 0;
while($row = mysqli_fetch_assoc($result)){
 $kudamono_name[$i] = $row['kudamono_name'];
 $search_checkbox .= "<label><input type='checkbox' name='kudamono_name[]' value='$kudamono_name[$i]'>".$kudamono_name[$i]." </label>";
 $i++;
//こちらでチェックボックスのinputタグをデータがある分だけループさせています
}
mysqli_free_result($result);
}
mysqli_close($link);
$fp=fopen('./test2.html','r');
while(!feof($fp)) {
 $line=fgets($fp);
 $line1=str_replace("<#LIST#>",$search_checkbox,$line);
//test2.htmlの一部である<#LIST#>をinput文に入れ替えています
 $lines = $line1;
 echo $lines;
}
fclose($fp);
exit();
//ここからはfopenでtest2.htmlを読み込みしているため省略してます
?>
```  
```  
検索後に表示させたいPHPです↓  
 
test_search.html↓(検索後に表示させたい画面)  
 
<!DOCTYPE html>  
<html lang="ja">  
<head>  
  <meta charset="utf-8">  
</head>  
<body>  
<form method="post" action="test_search.php" style="width:800px;margin:0 auto;">  
  <table>  
  <tr>  
      <td style="border:1px solid black;">検索項目</td>  
      <td style="world-wrap:break-word;"><#LIST#></td>  
    </tr>  
    <tr>  
      <td>  
        <input type="submit" value="検索">  
      </td>  
    </tr>  
</form>  
</table>  
<table style="border:1px solid black">  
  <tr>  
    <td><#RESULT#></td>//ここに一覧表示を出したいです  
  </tr>  
</table>  
</form>  
</body>  
</html>  
 
 
 
 
 
test_search.php↓(test_search.htmlの読み込み)  
 
 ?>  
<?php
require_once('./database_config.php');
$link=mysqli_connect(DB_SERVER,DB_ACCOUNT_ID,DB_ACCOUNT_PW,DB_NAME);
if (!$link) {
  echo "error";
  exit;
}
mysqli_set_charset($link,"utf8");
$query = 'select kudamono_name from kudamono_list';
$search_checkbox = "";
if ($result = mysqli_query($link, $query)) {
$i=0;
while ($row = mysqli_fetch_assoc($result)) {
 $kudamono_name[$i] = $row['kudamono_name'];
 $search_checkbox .= "<label><input type='checkbox' name='kudamono_name[]' value='$kudamono_name[$i]'>".$kudamono_name[$i]." </label>";
//検索後も、検索のチェックボタンは表示したいので、ここでも同じ読み込みをしています
 $i++;
 }
mysqli_free_result($result);
}
//上記のPHPと同じコードを記入して、<input type="checkbox">をループさせています。
//以下が、一覧を表示させたいselect文
$query_search='select kudamono_list.kudamono_name,customer_list.customer_name from kudamono_list,customer_list';
foreach ($_POST['kudamono_name'] as $value) {
 echo $value;
}
//このforeachで、チェックボックスでの選択された値は取れますが、この検索で取ってきた値を他の一覧で表示させたいデータと、kudamono_list.kudamono_name,customer_list.customer_nameで取った値をどうやって一緒に一覧にループさせた感じで組み込めばいいかが思いつきません
//このforeachで取ってきた値をどのように組み込めば他の一覧で表示させたいデータと一緒に、ループさせた感じで表示できるかが不明です
$line="";
 
 
if($result_search = mysqli_query($link,$query_search)){
 $i = 0;
 while($row = mysqli_fetch_assoc($result_search)){
   $kudamono_name[$i] = $row['kudamono_name'];
   $customer_name[$i] = $row['customer_name'];
   $line .= "<tr><td>".$kudamono_name[$i]." ".$customer_name[$i]."</td></tr>";
//ここが一覧表示したいコード(ですが、foreachをどう入れるかが思いつきませんでした。)
   $i++;
 }
 mysqli_free_result($result_search);
}
 
mysqli_close($link);
$fp=fopen('./test_search.html','r');
while(!feof($fp)) {
 $html_line=fgets($fp);
 $html_line1=str_replace("<#LIST#>",$search_checkbox,$html_line);
 $html_line2=str_replace("<#RESULT#>",$line,$html_line1);
 $lines = $html_line1;
 echo $lines;
}
fclose($fp);
exit();
?>
```
###試したこと
foreach ($_POST['kudamono_name'] as $value) {
  echo $value;
}の中身を$kudamono_name = $value;と記入したり、色々試して変数に変えられれば、一覧に表示できるのではと思ったのですが、うまく行きません。
foreach の中身を$kudamono_name = $value;と記入したり、色々試して変数に変えられれば、一覧に表示できるのではと思ったのですが、うまく行きません。
また、最後の$html_line2=str_replace("<#RESULT#>",$line,$html_line1);
を入れると、なぜかすごく長いデータの一覧が出てきてしまっているのもあります。
###補足情報(言語/FW/ツール等のバージョンなど)
html,php,mysql
利用OS=macOS自動的
  • PHP

    38036 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • MySQL

    11821 questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る