Ich habe eine DB für Dokumente. Jetzt möchte ich, dass die Datensätze nach bestimmten Kriterien durchsucht werden wenn der User eine Sortierfunktion aufgerufen hatt.
Wie erstelle ich die Afrage so, dass er mir die Datensätze entsprechend den Suchkriterien ausgibt. Also alles in einer Abfrage.
Hier sind mal die Funktionen für die Sortierung:
Wie erstelle ich die Afrage so, dass er mir die Datensätze entsprechend den Suchkriterien ausgibt. Also alles in einer Abfrage.
Hier sind mal die Funktionen für die Sortierung:
PHP-Code:
function letter() {
$alphabet = array ("ALL", "A","B","C","D","E","F","G","H","I","J","K","L","M",
"N","O","P","Q","R","S","T","U","V","W","X","Y","Z");
$num = count($alphabet) - 1;
echo "<center>";
/* start of HTML */
$counter = 0;
while (list(, $ltr) = each($alphabet)) {
echo "[<A HREF=\"index.php?letter=$ltr\">$ltr</a>]";
if ( $counter == round($num/2) ) {
echo " <p>\n\n";
} elseif ( $counter != $num ) {
echo " \n";
}
$counter++;
}
echo " \n</center>\n<br>\n"; // end of HTML
}
########################################################################################
# Erstellt eine Liste zum Sortieren
########################################################################################
function SortTut() {
global $sortby;
echo "\n<center>\n";
echo "<b>[</b> ";
if ($sortby == "sprache") {
echo " | ";
} else {
echo "<A HREF=\"index.php?sortby=lang\">Sprache</a> | ";
}
if ($sortby == "titel") {
echo " | ";
} else {
echo "<A HREF=\"index.php?sortby=titel\">Titel</a> | ";
}
if ($sortby == "datum") {
echo " | ";
} else {
echo "<A HREF=\"index.php?sortby=zeit\">Datum</a> | ";
}
if ($sortby == "autor") {
echo " | ";
} else {
echo "<A HREF=\"index.php?sortby=autor\">Autor</a> | ";
}
if ($sortby == "hits") {
echo " | ";
} else {
echo "<A HREF=\"index.php?sortby=hits\">Hits</a>";
}
echo " <b>]</b>\n</center>\n"; // end of HTML
}
PHP-Code:
###############################################
# Die Datensätze auf mehrere Seiten aufteilen
###############################################
// Stellt fest ob eine Seitenzahl übermittelt worden ist
$_GET['p'] = (!isset($_GET['p']) || $_GET['p'] == 0 || empty($_GET['p'])) ? 1 : $_GET['p'];
// Stellt fest ob eine Kategorie übermittelt worden ist
$_GET['k'] = (!isset($_GET['k']) || $_GET['k'] == 0 || empty($_GET['k'])) ? 1 : $_GET['k'];
// Anzahl der Datensätze pro Seite
$perpage = 5;
// Das obere und untere Limit
$limitlower = ($_GET['p']-1)*$perpage+1;
$limitupper = $_GET['p'] * $perpage;
// Abfrage ausführen
if($_GET['k']){
$sql = "SELECT a.dokid,a.catid,a.title,a.url,a.autor,a.abstract,a.zeit,a.lang,a.hits,b.catid ,b.cattitle
FROM dokument a INNER JOIN categories b
USING (catid)
WHERE a.catid = $_GET[k] ORDER BY a.catid,a.zeit DESC LIMIT ".($limitlower-1).",".$perpage;
} else {
$sql = "SELECT a.dokid,a.catid,a.title,a.url,a.autor,a.abstract,a.zeit,a.lang,a.hits,b.catid ,b.cattitle
FROM dokument a INNER JOIN categories b
USING (catid)
WHERE a.catid = b.catid ORDER BY a.catid,a.zeit DESC LIMIT ".($limitlower-1).",".$perpage;
}
// Enthält die Anzahl der gefundenen Datensätze
$sql_hits = "select count(*) as hits from dokument ";
if($_GET['k']) $sql_hits.= " WHERE catid = $_GET[k] ";
$r_sql_hits = mysql_query($sql_hits);
$r_sql = mysql_query($sql);
if($r_sql){
$hits = mysql_fetch_row($r_sql_hits);
$hits = $hits[0];
$limitupper = ($limitupper > $hits) ? $hits : $limitupper;
$limitlower = ($limitlower > $hits) ? $hits - $perpage : $limitlower;
$limitlower = ($limitlower <= 0) ? 1 : $limitlower;
if($hits==0){
echo "<div align=\"center\">Keine Datensätze vorhanden</div>";
}
else
{
// Ab Hier Ausgabe der Datensätze
}