Kann mir jemand mit der Post helfen und Fragen und Echos beantworten? Datensätze haben mehrere unterschiedliche Daten und ich möchte eine Suche durchführen, bei der eines der 6 verschiedenen Daten zwischen 2 verschiedenen Daten liegt. Nachdem ich vom Formular gesucht habe und der Beitrag passiert, zeigt dies korrekt alle verschiedenen Datensätze an, wobei eines der 6 Daten zwischen den 2 im Formular ausgewählten Daten liegt. Aber es zeigt alle Daten des Datensatzes. Ich möchte nur die Datumsangaben anzeigen, die tatsächlich zwischen den beiden ausgewählten Daten liegen.Wie kann ich verhindern, dass bestimmte Spaltendaten angezeigt werden, wenn sie nicht der ursprünglichen Abfrage entsprechen?
<?php
if (isset($_POST['search'])) {
$fromdate = mysql_real_escape_string(htmlspecialchars($_POST['fromdate']));
$todate = mysql_real_escape_string(htmlspecialchars($_POST['todate']));
echo "<h2>Search Result</h2>";
echo "<p><strong>From:</strong> ".$fromdate." <strong>To:</strong> ".$todate."</p>"; //test
$query = mysql_query("
SELECT *
FROM jobs j
WHERE dropdate1 BETWEEN '$fromdate' AND '$todate'
OR dropdate2 BETWEEN '$fromdate' AND '$todate'
OR dropdate3 BETWEEN '$fromdate' AND '$todate'
OR dropdate4 BETWEEN '$fromdate' AND '$todate'
OR dropdate5 BETWEEN '$fromdate' AND '$todate'
OR dropdate6 BETWEEN '$fromdate' AND '$todate';"
);
while($row = mysql_fetch_array($query)) {
$dropdate1 = $row['dropdate1'];
$dropdate2 = $row['dropdate2'];
$dropdate3 = $row['dropdate3'];
$dropdate4 = $row['dropdate4'];
$dropdate5 = $row['dropdate5'];
$dropdate6 = $row['dropdate6'];
echo "<strong>".$row['id'].":</strong> ".$row['clientname']."<br>";
if ($dropdate1 !== "") {
echo "<strong>Drop 1:</strong> ".$row['dropdate1']."<br>";
}
if ($dropdate2 !== "") {
echo "<strong>Drop 2:</strong> ".$row['dropdate2']."<br>";
}
if ($dropdate3 !== "") {
echo "<strong>Drop 3:</strong> ".$row['dropdate3']."<br>";
}
if ($dropdate4 !== "") {
echo "<strong>Drop 4:</strong> ".$row['dropdate4']."<br>";
}
if ($dropdate5 !== "") {
echo "<strong>Drop 5:</strong> ".$row['dropdate5']."<br>";
}
if ($dropdate6 !== "") {
echo "<strong>Drop 6:</strong> ".$row['dropdate6']."<br>";
}
echo "<br>";
}
}
?>
Hier sind einige Beispielergebnisse.
Search Result
From: 04-01-2016 To: 04-08-2016
1: blah1
Drop 1: 04-03-2015
2: blah2
Drop 1: 03-17-2015
Drop 2: 03-23-2015
Drop 3: 03-30-2015
Drop 4: 04-06-2015
3: blah3
Drop 1: 04-05-2015
Drop 2: 04-05-2015
4: blah4
Drop 1: 03-31-2015
Drop 2: 04-07-2015
5: blah5
Drop 1: 04-05-2015
So ist die if-Anweisungen, ich habe es gut für nicht die Daten zeigt, die leer sind, aber jetzt möchte ich einen Schritt weiter gehen und nicht die Daten zeigen, die nicht zwischen den zwei Suchdaten sind. Diese
ist, was ich will das Suchergebnis aussehen:
Search Result
From: 04-01-2016 To: 04-08-2016
1: blah1
Drop 1: 04-03-2015
2: blah2
Drop 4: 04-06-2015
3: blah3
Drop 1: 04-05-2015
Drop 2: 04-05-2015
4: blah4
Drop 2: 04-07-2015
5: blah5
Drop 1: 04-05-2015
Beenden Sie die Verwendung der ** veralteten und ab PHP7 entfernten ** mysql_ * -Funktionen. Migrieren Sie zu PDO und verwenden Sie vorbereitete Anweisungen. –
Verwenden Sie auf jeden Fall vorbereitete Anweisungen wie Charlotte erwähnt, und Sie könnten dies mit einer SQL-Lösung lösen und müssen nicht auf Code angewiesen sein, um die unerwünschten Ergebnisse herauszufiltern. – Namrehs
Aufzählungsspalten sind oft ein Zeichen von schlechtem Design – Strawberry