MySQL に変換された Access データベースがあります。「EmailAddress」、「HideEmailAddress」、「FaxNumber」、「HideFaxNumber」、「PhoneNumber」、および「HidePhoneNumber」フィールドを持つテーブル Contacts があります。非表示フィールドはすべてチェックボックスなので、値は 1 または 0 で、1 が TRUE です。
非表示フィールドの値が 1 の場合、MySQL Select ステートメントまたは PHP クエリで情報を表示しないようにする必要があります。また、3 つのフィールドのうち 1 つだけが非表示としてマークされることもよくあります。 、だから、「これらのいずれかが 1 である場合、すべてを非表示にする」というブランケットを行うことはできません。クエリを Web ページに出力する必要があり、各列の非表示フィールドの値に応じて、上記の 3 つのフィールドを表示または非表示にする必要があります. 私の SELECT ステートメントは 6 つの値すべてを取得し、PHP はそれを配列に変換しています.しかし、ここでは配列の比較が役立つとは思いません。
ここで何をすべきかわかりません。私は数日間探していましたが、必要なものに近づくものは何もないようです. 締め切りまでに完了するために、PHPループで非常にアドホックなif-elseif-elseを実行していますが、それには9または12の異なるステートメントが必要であり、これを行うためのより良い方法があると確信しています.
これが私のコードです。元のクエリから大幅に切り詰めましたが、そのクエリは機能するため、ここにタイプミスがある場合は、切り上げによるものです。別のフィールドの値に基づいてフィールドを抑制する方法がわかりません。これが、SELECT ステートメントに 2 つの AS ステートメントがある理由でもあります。元のクエリでは、5 つの異なるテーブルからの情報があり、両方に "FaxNumber" と "EmailAddress" があります。状況が変わる場合に備えて、AS を離れました。
<?php
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) or die('Error connecting to MySQL server.');
$query = 'SELECT Contact.CompanyID, Contact.WebContact, Contact.FirstName, Contact.LastName, Contact.WorkPhone, Contact.HidePhoneNumber, Contact.FaxNumber AS ConFaxNumber, Contact.HideFaxNumber, Contact.EmailAddress AS ConEmailAddress, Contact.HideEmailAddress FROM Contact WHERE TDAT_Contact.WebContact = "1"';
mysqli_query($dbc, $query);
if($r = mysqli_query($dbc, $query)) {
while ($row = mysqli_fetch_array($r)) {
if(($row['HidePhoneNumber'] == 1) && ($row['HideFaxNumber'] == 1)) {
echo '<hr><div align="query"><span class="strong">Contact:</span> ' . $row['FirstName'] . ' ' . $row['LastName'] . '<br /><br /><span class="strong">Direct Email Address: </span>' . $row['ConEmailAddress'] . '</div>';
} elseif($row['HidePhoneNumber'] == 0) && ($row['HideFaxNumber'] == 0) {
echo '<hr><div align="query"><span class="strong">Contact:</span> ' . $row['FirstName'] . ' ' . $row['LastName'] . '<br /><span class="strong">Direct Telephone: </span>' . $row['WorkPhone'] . '<br /><span class="strong">Direct Fax: </span>' . $row['ConFaxNumber'] . '<br /><span class="strong">Direct Email Address: </span>' . $row['ConEmailAddress'] . '</div>';}
}
...
else { // Query didn't run.
echo '<p style="color: red;">Could not retrieve the data because:<br />' . mysqli_error($dbc) . '.</p><p>The query being run was: ' . $query . '</p>';
}
}}
mysqli_close($dbc); // Close the connection.
?>