db-abrage sortieren

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
leopittoni
Mitglied
Beiträge: 1162
Registriert: 26.04.2004 20:17

db-abrage sortieren

Beitrag 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
Xwitz
Mitglied
Beiträge: 1104
Registriert: 21.06.2005 21:41

Beitrag von Xwitz »

Code: Alles auswählen

"... ORDER BY Punkte ASC LIMIT 5"
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
Benutzeravatar
easygo
Mitglied
Beiträge: 2170
Registriert: 03.09.2004 13:45
Kontaktdaten:

Beitrag von easygo »

Xwitz hat geschrieben:ASC - für umgekehrte Reihenfolge (absteigend)
ASC = aufsteigend; DESC = absteigend / easy
Benutzeravatar
leopittoni
Mitglied
Beiträge: 1162
Registriert: 26.04.2004 20:17

Beitrag 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
Benutzeravatar
Jan500
Ehemaliges Teammitglied
Beiträge: 4199
Registriert: 01.03.2003 21:32
Wohnort: Hamburg
Kontaktdaten:

Beitrag 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
"Life begins at 40 Knots...!" :D
kein (kostenlosen) Support per pn, mail, icq usw. | Kostenlosen Support gibt es hier im Forum!
Benutzeravatar
leopittoni
Mitglied
Beiträge: 1162
Registriert: 26.04.2004 20:17

Beitrag 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

Code: Alles auswählen

while ($row = mysql_fetch_array($topminis))
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
Benutzeravatar
Jan500
Ehemaliges Teammitglied
Beiträge: 4199
Registriert: 01.03.2003 21:32
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Jan500 »

h
ja, sry hatte die tabele etwas schnell hingeschrieben ^^

damit du gane zahlen bekommst schreib

Code: Alles auswählen

intval($row['customers_shopping_points'])
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
"Life begins at 40 Knots...!" :D
kein (kostenlosen) Support per pn, mail, icq usw. | Kostenlosen Support gibt es hier im Forum!
Benutzeravatar
leopittoni
Mitglied
Beiträge: 1162
Registriert: 26.04.2004 20:17

Beitrag 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>';
Benutzeravatar
Jan500
Ehemaliges Teammitglied
Beiträge: 4199
Registriert: 01.03.2003 21:32
Wohnort: Hamburg
Kontaktdaten:

Beitrag 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

Code: Alles auswählen

intval($row['customers_shopping_points'])
das

Code: Alles auswählen

substr($row['customers_shopping_points'], 0, -3) 
schreiben


Jan
"Life begins at 40 Knots...!" :D
kein (kostenlosen) Support per pn, mail, icq usw. | Kostenlosen Support gibt es hier im Forum!
Benutzeravatar
leopittoni
Mitglied
Beiträge: 1162
Registriert: 26.04.2004 20:17

Beitrag 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
Antworten

Zurück zu „Coding & Technik“