Как извлечь только столбцы с ненулевыми значениями в mysql и php?

Я пытаюсь извлечь и отобразить на веб-странице, только ненулевые столбцы из базы данных mysql. которая когда-либо столбец дата 0000-00-00, я не хочу, чтобы dispaly эти столбцы на веб-странице.
Ниже приведен код HTML и php-скрипт соответственно.

<form action="search.php" method="post"> <p> <lable>ENTER SO NUMBER</lable> <input type="text" name="soid" id="soid" > </p> <p><button><img src="http://icons.iconarchive.com/icons/harwen/pleasant/256/Search-icon.png" height="50" />SEARCH</button></p> </form> </html> 

PHP-скрипт,

 <?php $userinput1 = $_POST['soid']; $servername = "localhost"; $username = "root"; $password = ""; $dbname = "status"; $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_errno) { printf("Connect failed: %s\n", $conn->connect_error); exit(); } $result = mysqli_query($conn, "SELECT * FROM $dbname.statusinfo WHERE soid = '$userinput1' ") or die(mysqli_error ($conn)); echo "<p><font size= 4>SO_NUMBER:$userinput1"; echo "<table border='1'> <tr> <style> th{ color: blue; } td{ color: black; } </style> <th>Sample Recived</th> <th>Mol-Bio Extraction</th> <th>Extraction QC</th> <th>Library Prep</th> <th>Library QC</th> <th>Sequencing</th> <th>Data Check</th> <th>RE Sequencing</th> <th>QC Check</th> <th>Analysis Started</th> <th>Analysis Completed</th> <th>Report</th> <th>Outbound</th> </tr>"; while($row = mysqli_fetch_assoc($result)) { echo "<tr>"; echo "<br />"; echo "Department:".$row['dept'] ; echo "<td>" . $row['samplerecived'] . "</td>"; echo "<td>" . $row['molbioextraction'] . "</td>"; echo "<td>" . $row['molbioextractionqc'] . "</td>"; echo "<td>" . $row['libraryprep'] . "</td>"; echo "<td>" . $row['libraryqc'] . "</td>"; echo "<td>" . $row['sequencing'] . "</td>"; echo "<td>" . $row['datacheck'] . "</td>"; echo "<td>" . $row['resequencing'] . "</td>"; echo "<td>" . $row['qccheck'] . "</td>"; echo "<td>" . $row['analysisstarted'] . "</td>"; echo "<td>" . $row['analysiscompleted'] . "</td>"; echo "<td>" . $row['report'] . "</td>"; echo "<td>" . $row['outbound'] . "</td>"; echo "</tr>"; } echo "</table>"; ?> 

Теперь я получаю все столбцы, отображаемые на веб-странице, мне нужны только те столбцы, в которых записана дата, а не 0000-00-00.
это таблица mysql. введите описание изображения здесь
Выход, который я получаю, – это
введите описание изображения здесь
Я хочу отображать только ненулевые столбцы. заранее спасибо

Попробуй это:

 $result = mysqli_query($conn, "SELECT * FROM $dbname.statusinfo WHERE soid = '$userinput1' AND date_column <> '0000-00-00' ") or die(mysqli_error($conn)); 

Хотя, с mysql вы даже можете это сделать:

 $result = mysqli_query($conn, "SELECT * FROM $dbname.statusinfo WHERE soid = '$userinput1' AND date_column > '0000-00-00' ") or die(mysqli_error($conn)); 

Надеюсь это поможет

РЕДАКТИРОВАТЬ

Я могу видеть, что вы хотите сейчас, когда вы изменили вопрос. К сожалению, я не знаю, как вы хотите использовать SQL (кто-то может).

Вы выводите заголовки столбцов и поэтому не выводят конкретный столбец, чтобы они отображались в неправильных столбцах, поэтому вам просто нужно выводить ничего, где время 0000-00-00

Так я бы сделал это на PHP. (и если я пропустил вашу точку снова, я могу застрелить себя :))

 <?php $userinput1 = $_POST['soid']; $servername = "localhost"; $username = "root"; $password = ""; $dbname = "status"; $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_errno) { printf("Connect failed: %s\n", $conn->connect_error); exit(); } $result = mysqli_query($conn, "SELECT * FROM $dbname.statusinfo WHERE soid = '$userinput1' ") or die(mysqli_error($conn)); $arrayHeadings = array( "dept" => "Department", "samplerecived" => "Sample Recived", "molbioextraction" => "Mol-Bio Extraction", "molbioextractionqc" => "Extraction QC", "libraryprep" => "Library Prep", "libraryqc" => "Library QC", "sequencing" => "Sequencing", "datacheck" => "Data Check", "resequencing" => "RE Sequencing", "qccheck" => "QC Check", "analysisstarted" => "Analysis Started", "analysiscompleted" => "Analysis Completed", "report" => "Report", "outbound" => "Outbound", ); ?> <style> th{ color: blue; } td{ color: black; } </style> <table border='1'> <tr> <?php foreach($arrayHeadings as $key => $name): ?> <th><?= $name; ?></th> <?php endforeach; ?> </tr> <tr> <?php while($row = mysqli_fetch_assoc($result)): ?> <?php foreach($arrayHeadings as $key => $name): ?> <?php if($row[$key] != "0000-00-00"): ?> <td><?= $row[$key]; ?></td> <?php else: ?> <td></td> <?php endif; ?> <?php endforeach; ?> <?php endwhile; ?> </tr> </table> 

РЕДАКТИРОВАТЬ

Заголовки таблицы не выводятся, если поле содержит 0000-00-00. Это зависит только от вывода одного элемента за раз.

 <?php $userinput1 = $_POST['soid']; $servername = "localhost"; $username = "root"; $password = ""; $dbname = "status"; $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_errno) { printf("Connect failed: %s\n", $conn->connect_error); exit(); } $result = mysqli_query($conn, "SELECT * FROM $dbname.statusinfo WHERE soid = '$userinput1' ") or die(mysqli_error($conn)); $arrayHeadings = array( "dept" => "Department", "samplerecived" => "Sample Recived", "molbioextraction" => "Mol-Bio Extraction", "molbioextractionqc" => "Extraction QC", "libraryprep" => "Library Prep", "libraryqc" => "Library QC", "sequencing" => "Sequencing", "datacheck" => "Data Check", "resequencing" => "RE Sequencing", "qccheck" => "QC Check", "analysisstarted" => "Analysis Started", "analysiscompleted" => "Analysis Completed", "report" => "Report", "outbound" => "Outbound", ); ?> <style> th{ color: blue; } td{ color: black; } </style> <table border='1'> <tr> <?php foreach($arrayHeadings as $key => $name): ?> <?php if($row[$key] != "0000-00-00"): ?> <th><?= $name; ?></th> <?php endif; ?> <?php endforeach; ?> </tr> <tr> <?php while($row = mysqli_fetch_assoc($result)): ?> <?php foreach($arrayHeadings as $key => $name): ?> <?php if($row[$key] != "0000-00-00"): ?> <td><?= $row[$key]; ?></td> <?php endif; ?> <?php endforeach; ?> <?php endwhile; ?> </tr> </table> 

Измените свой запрос следующим образом:

 $result = mysqli_query($conn, "SELECT * FROM $dbname.statusinfo WHERE soid = '$userinput1' AND date IS NOT NULL ") or die(mysqli_error($conn)); 

Добавить «IS NOT NULL» после поля даты