Seite 1 von 2
db-abrage sortieren
Verfasst: 08.04.2007 14:22
von leopittoni
Hallo
Ich habe eine Datenbank mit verschiedenen Tabellen.
Zwei der Datensätze sind "Name" und "Punkte".
Nun möchte ich die Datenbank abfragen, und die 5 "Namen" mit den meisten "Punkten" anzeigen lassen.
Wie kann ich das machen? Habe nicht viel Ahnung von mysql,...
Danke! Léo
Verfasst: 08.04.2007 16:29
von Xwitz
ORDER BY - zum Sortieren nach Tabellenname Punkte
ASC - für umgekehrte Reihenfolge (absteigend)
LIMIT 5 - nur fünf Einträge
http://dev.mysql.com/doc/refman/5.1/de/select.html
Verfasst: 08.04.2007 16:40
von easygo
Xwitz hat geschrieben:ASC - für umgekehrte Reihenfolge (absteigend)
ASC = aufsteigend; DESC = absteigend / easy
Verfasst: 09.04.2007 13:15
von leopittoni
Hallo und schon mal danke für Eure Hilfe!
Habe es mal so versucht:
Code: Alles auswählen
<?php
$db = mysql_connect("localhost","dbminiadmin","passwort");
mysql_select_db("mini-shop");
$topminis = mysql_query("SELECT customers_firstname, customers_lastname, customers_shopping_points
FROM customers ORDER BY customers_shopping_points DESC LIMIT 5");
$row1 = mysql_fetch_row($topminis);
$fn1 = $row1[0];
$ln1 = $row1[1];
$sp1 = $row1[2];
$fn2 = $row1[3];
$ln2 = $row1[4];
$sp2 = $row1[5];
?>
<html>
<head>
<title>
Minis
</title>
<body>
<table border=1>
<tr>
<td>
<?php
echo($fn1);
?>
</td><td>
<?php
echo($ln1);
?>
</td><td>
<?php
echo($sp1);
?>
</td></tr><tr><td>
<?php
echo($fn2);
mysql_close($db);
?>
Ist wahrscheinlich viel zu umständlich gestaltet, aber wie könnte man das simpler machen? Es soll eine Tabelle geben mit in jeder Zeile 2 Spalten mit Vorname + Nachname und in der zweiten die Punkte (ohne Dezimalstellen wie jetzt...)
Für die erste Person funktioniert mein Script soweit, nur weiter gehts nicht...
Wer kann mir helfen?
Danke! Léo
Verfasst: 09.04.2007 14:05
von Jan500
hi
wie wäre es mit
Code: Alles auswählen
<html>
<head>
<title>
Minis
</title>
<body>
<table border="1">
<tr><th>Name, Vorname</th><th>Punkte</th></tr>
<?php
$db = mysql_connect("localhost","dbminiadmin","passwort");
mysql_select_db("mini-shop");
$limit = 5;
$sql = "SELECT customers_firstname, customers_lastname, customers_shopping_points
FROM customers ORDER BY customers_shopping_points DESC LIMIT $limit";
$topminis = mysql_query($sql);
while ($row = mysql_fetch_array($topminis))
{
echo '<tr>' . $row['customers_lastname'] . ', ' .$row['customers_firstname'] . '<td><td>' . $row['customers_shopping_points'] . '</td></tr>';
}
mysql_close($db);
?>
</table>
</body>
</html>
?
Jan
Verfasst: 09.04.2007 14:14
von leopittoni
Hi
Hatte zwar einen kleinen Fehler mit den <td> in
Code: Alles auswählen
echo '<tr><td>' . $row['customers_firstname'] . ' ' .$row['customers_lastname'] . '</td><td>' . $row['customers_shopping_points'] . '</td></tr>';
so ists richtig.
Aber funktioniert prima! Vielen Dank!
Was bezweckt denn genau
Das war mir noch nie klar...
Und noch: Ist es möglich, "customers_shopping_points" ohne Dezimalstellen auszugeben? Oder einfach die 3 hintersten Zeichen zu entfernen. (momentan ists zB. 92.00, angezeigt werden müsste aber nur 92
Vielen Dank! Léo
Verfasst: 09.04.2007 14:25
von Jan500
h
ja, sry hatte die tabele etwas schnell hingeschrieben ^^
damit du gane zahlen bekommst schreib
while ist eine schleife und wirdsolane wiederholt bis die bedingung FALSE wird (also bis keine ergebnissemehr vom query geiefert werden)
http://www.php.net/manual/de/control-st ... .while.php
Jan
Verfasst: 09.04.2007 14:30
von leopittoni
Danke!
Wo muss dass genau hin? So funktionierts nicht: es ändert nichts...
Code: Alles auswählen
echo '<tr><td>' . $row['customers_firstname'] . ' ' .$row['customers_lastname'] . '</td><td>' . intval($row['customers_shopping_points']) . '</td></tr>';
Verfasst: 09.04.2007 14:53
von Jan500
uinwas für einem typ sind die punkte gespeichert? als string?
soll das 92,00 sein? oder als "text" 92.00
wenn die letzte drei zeichen immer abgeschnitten werden oslln kannst du auch statt
das
schreiben
Jan
Verfasst: 09.04.2007 15:08
von leopittoni
Ok, danke! funktioniert!
Noch eine mySQL-Frage...
Ich habe in der Tabelle "customers" einen Eintrag "einsatz" mit versch. Daten.
Nun müsste ich das Aktuelle Datum erfassen, und alle "customers_names" anzeigen, die ein Datum in "einsatz" haben, welches diese Woche ist.
Ist das möglich? Wie müsste ich die Daten in "einsatz" eingeben/formatieren?
Und wie müsste ich das Datum checken und dann überprüfen, wer in der aktuellen Woche ein Datum eingetragen hat?
Danke! Léo