2

私は比較的 php / mysql 初心者の 1 人であり、そのバックグラウンドは開発ではなくサポートにありました。しかし、これらのような素晴らしいリソース サイトのおかげで、私が達成しようとしている多くのことをまとめることができました。したがって、過去、現在、未来のすべての人に感謝します. ただし、必要な情報を見つけるための適切な Google クエリを作成できないか、どこかに単純なトリックがないと思います。

つまり、約 15 の列 (フィールド) を持つテーブルを持つ mysql db があります。データベースにクエリを実行できるphpフロントエンドがあり、すべての行を返すか、すべてのフィールドで一般的な検索項目を含む行のみを返します。すべて良好、表示良好、動作良好。ただし、結果で返される列 (フィールド) だけを選択するオプションをユーザーに提供したいと考えています。したがって、チェックボックスと値(列名)がそれに応じて割り当てられた列名が表示された検索ページがあります。以下のようにコードします。

<form action="result.php" method="post">     Search for* :  <input type="text" name="searchterm" />
<input type="submit" name="submit" value="Search Database" /> <br /><br /><br />
<input type=button value="Select ALL" onclick="select_all( check, true ); return false;">
<input type=button value="Clear ALL" onclick="select_all( check, false ); return false;">
<table>
<tr><th>FirstName<br/><input type="checkbox" id="check" name="field[]" value="FirstName,"></th> 
<th>LastName<br/><center><input type="checkbox" id="check" name="field[]" value="LastName,"></center></th> 
<th>Age<br/><center><input type="checkbox" id="check" name="field[]" value="Age,">        </center></th> 
<th>Instrument<br/><center><input type="checkbox" id="check" name="field[]" value="Instrument,"></center></th>
<th>Grade<br/><center><input type="checkbox" id="check" name="field[]" value="Grade,"></center></th> 
<th>LandlineNo<br/><center><input type="checkbox" id="check" name="field[]" value="LandlineNo,"></center></th>
<th>MobileNo<br/><center><input type="checkbox" id="check" name="field[]" value="MobielNo,"></center></th> 
<th>Email<br/><center><input type="checkbox" id="check" name="field[]" value="Email,"></center></th> 
<th>AddressLine1<br/><center><input type="checkbox" id="check" name="field[]" value="AddressLine1,"></center></th> 
<th>AddressLine2<br/><center><input type="checkbox" id="check" name="field[]" value="AddressLine2,"></center></th> 
<th>Town<br/><center><input type="checkbox" id="check" name="field[]" value="Town,"></center></th> 
<th>County<br/><center><input type="checkbox" id="check" name="field[]" value="County,"></center></th> 
<th>Postcode<br/><center><input type="checkbox" id="check" name="field[]" value="Postcode,"></center></th> 
<th>Price<br/><center><input type="checkbox" id="check" name="field[]" value="Price,"></center></th> 
<th>Paid<br/><center><input type="checkbox" id="check" name="field[]" value="Paid,"></center></th> 
<th>LastUpdated<br/><center><input type="checkbox" id="check" name="field[]" value="LastUpdated,"></center></th>
</tr>
</table>
</form>

すべてのチェックボックスに名前として field[] が割り当てられているため、result.php の配列に出力されます。さらに少し読んだ後、次のように、選択した列をコンマ区切りで表示 (エコー) する配列を取得できます。

for ($i=0; $i<count($_POST['field']); $i++){ 
$columns = addslashes($_POST['field'][$i]); 
echo $columns;
}

// output example

LastName,Age,Instrument,Email

ただし、結果のビューで選択した列のみを取得する方法について、私は途方に暮れています。誰かが親切に私を正しい方向に助けてくれませんか。私はこれを持っていますが、すべての列が返されるため機能しません。

$result = mysql_query("select * from TABLE where FirstName like '%$searchterm%' or LastName like '%$searchterm%' or Age like '%$searchterm%' or Instrument like '%$searchterm%' or Grade like '%$searchterm%' or LandlineNo like '%$searchterm%' or MobileNo like '%$searchterm%' or Email like '%$searchterm%' or AddressLine1 like '%$searchterm%' or AddressLine2 like '%$searchterm%' or Town like '%$searchterm%' or County like '%$searchterm%' or Postcode like '%$searchterm%' or Price like '%$searchterm%' or Paid like '%$searchterm%'");

echo '<table>';
while ($row = mysql_fetch_assoc($result)) {
if (empty($columns)) {
    $columns = array_keys($row);
    echo '<tr><th>'.implode('</th><th>', $columns).'</th></tr>';
}
$resultset[] = $row;
echo '<tr><td>'.implode('</td><td>', $row).'</td></tr>';
}
echo '</table>';

最後の仕上げは、結果セットに応じて列見出しを取得してテーブルに入力することです。ガイダンス、提案、改善について事前に感謝します。

ジム

4

1 に答える 1

0
$result = mysql_query("select * from TABLE where FirstName like '%$searchterm%' or LastName like '%$searchterm%' or Age like '%$searchterm%' or Instrument like '%$searchterm%' or Grade like '%$searchterm%' or LandlineNo like '%$searchterm%' or MobileNo like '%$searchterm%' or Email like '%$searchterm%' or AddressLine1 like '%$searchterm%' or AddressLine2 like '%$searchterm%' or Town like '%$searchterm%' or County like '%$searchterm%' or Postcode like '%$searchterm%' or Price like '%$searchterm%' or Paid like '%$searchterm%'");
$start = FALSE;
echo '<table><thead><tr>';
while ($row = mysql_fetch_assoc($result)) {
foreach ($row as $column => $value)
{
// Now we print the columns if they aren't printed
if ($start === FALSE && !empty($value))
{
echo "<th>$column</th>";
}
}
// And if the columns were printed now we turn start to TRUE.
if ($start === FALSE)
{
echo "</tr></thead><tbody>";
$start === TRUE;
}
echo "<tr>";
// Now for each key and value in the array we verify if the user wanted to print the column and we print it.
foreach ($row as $column => $value)
{
if (!empty($value))
{
echo "<td>$value</td>";
}
echo '</tr>';
}
}
echo '</tbody></table>';

これはうまくいくはずです。コメントでそれがどのように機能するかを見ることができます。

于 2012-07-24T12:50:58.003 に答える