2016-05-21 7 views
-1

Ich habe ein Auswahlmenü, das eine Option enthält, wie die Daten aus meiner Datenbank sortiert werden. Ich bleibe dran, wie ich es nach Datum und Prüfung sortieren werde.MySQL-Daten über ein Auswahlmenü sortieren

Dies ist mein Code so weit:

echo "<form action=results.php method=post>"; 
echo "Sort By: <select name=q><option value= name=></option><option value=date name=date>Date</option><option value=exam name=exam>Exam</option></select>"; 
echo "</form>"; 

if() 
$q = $_GET['q']; 

echo "<table border=1 align=center><tr class=style2><td>Date <td>Student Name <td> Subject <td> Score"; 

$sortQuery = mysql_query("SELECT * FROM mst_adminresult m 
JOIN mst_test t ON t.test_id = m.test_id 
JOIN mst_subject s ON s.sub_id = t.sub_id order by'".$q."'" ,$cn) or die(mysql_error()); 

while($row=mysql_fetch_row($sortQuery)) 
{ 
    echo "<tr class=style8><td>$row[5]<td>$row[1] <td align=center> $row[4] <td align=center> $row[3]/20"; 
} 
echo "</table>"; 
+0

Die Felder in der ORDER BY-Klausel sollten in Backticks anstelle von einfachen Anführungszeichen eingeschlossen werden, besonders da Sie das reservierte Wort "date" verwenden. Aber tbh, wenn Sie so programmieren, haben Sie viel größere Probleme als nur ein paar fehlende Backticks. Ich hoffe, es ist nur Ihr Beispielcode ... Sie überprüfen nicht einmal, ob '$ _GET ['q']' gesetzt ist oder nicht – Kirito

+0

ich weiß, ich muss 'isset()' es aber das ist das Problem, das ich habe ... ich kenne den richtigen Weg nicht. Ich bin fest mit 'if (isset ($ _ GET ['q']) ==" examdate ") es sollte sein, wenn der Wert ist gleich examdate, wird es nach Datum sortiert, @Kirito – Jennifer

+0

Sie können nicht evaluate 'if (isset ($ _ GET ['q']) ==" examdate ")', nun ja, du kannst das, aber du erhältst unerwartete Ergebnisse. 'isset' gibt nur wahr oder falsch zurück, also benutze:' if (isset ($ _ GET ['q'])) {$ q = $ _GET ['q']; } else {$ q = "Datum"; } 'was bedeutet, dass' date' der Standardwert ist, falls '$ _GET [' q '] 'nicht gesetzt ist, oder Sie können es in' $ q = "examen" ändern; ', es liegt an Ihnen. – Kirito

Antwort

1

Nach "Ordnung durch" einen Raum haben muss!

Probe:

... ORDER BY column_name ASC|DESC ... 
+0

Ich weiß, ich muss 'isset()' es aber das ist das Problem, das ich habe ... ich kenne nicht den richtigen Weg, es zu tun. Ich bleibe bei 'if (isset ($ _ GET ['q']) ==" examdate ")' es sollte sein, wenn der Wert gleich examdate ist, wird es nach Datum sortieren – Jennifer

0

Ihre überarbeitete Code Hier ist es mir gab Angst, es zu sehen:

echo '<form action="results.php" method="post">'; 
echo 'Sort By: <select name="q"><option value=""></option><option value="date">Date</option><option value="exam">Exam</option></select>'; 
echo '</form>'; 

if(isset($_GET['q']) { 
    $q = $_GET['q']; 
} else { 
    $q = 'date'; 
} 

echo '<table border="1" align="center"><tr class="style2"><td>Date</td><td>Student Name</td><td>Subject</td><td>Score</td></tr>'; 

$sortQuery = mysql_query("SELECT * FROM mst_adminresult 
JOIN mst_test t ON t.test_id = m.test_id 
JOIN mst_subject s ON s.sub_id = t.sub_id order by `".$q."`" ,$cn) or die(mysql_error()); 

while($row=mysql_fetch_row($sortQuery)) 
{ 
    echo '<tr class="style8"><td>$row[5]</td><td>$row[1]</td><td align=center>$row[4]</td><td align=center>$row[3]/20</td></tr>'; 
} 
echo '</table>'; 

Einige Beobachtungen:

  • Optionen innerhalb wählt brauchen nicht ein Name
  • Viele Ihrer s hatten keine abschließende
  • Ihre s hatte keine Schließung
  • Benutzen Sie Text wickeln, die eine Menge doppelte Anführungszeichen verwendet oder die doppelten Anführungszeichen zu entkommen: 'this "text"' oder "this \"text\""

Ich hoffe, es hilft.

Verwandte Themen