php nach datum sortieren und vieles mehr

Dolphon

Erfahrenes Mitglied
Moin.

Also ich bin noch ein Php Anfänger.
Hab jetzt angefangen mein erstes Programm zu schreiben. Unter dieser Addy
http://www.mugamo.de/test/test.rar

bekommt ihr das Programm.

eingabe.html--> damit gebe ich die Daten in die DB ein.

Wäre gut wenn die PW geschützt wäre, und das PW in der config.php steht.

work.php--> werden eingegebene DAten verarbeitet.

alben.php--> dort werden die Daten ausgegben.

wäre schön wenn der nur jeweils 5 Alben auf ein Seite machen würde, und dann eine neue anfängt. weiß nur das man dann die Einträge aus de DB lesen muss, und dem dann sagen muss nach 5 einträgen soll er eine neue Seite machen. Weiß nur nich wie das gehen soll.

connect.php, mysql.php, config.php --> wichtige Angaben zum Connecten.


Und es wäre gut das der die Alben nach dem Erscheinungstermin bei der Eingabe sortiert.

MFG

DOlphon
 
Das Sortieren ist kein Problem, sofern das Datum in der DB eingetragen ist, wovon ich ausgehe;
PHP:
/*
** Verbindung herstellen etc. hier
*/
mysql_query("SELECT * FROM [Tabellenname] ORDER BY [Datumsfeld]");
/*
** Ausgabe hier
*/

Das Verteilen der Ausgabe auf mehrere Seiten ist etwas komplizierter...
Ich verlinke hier mal ein Tut. Dieses bezieht sich zwar auf ein Gästebuch, funktionieren wird das bei dir aber genauso.
http://www.tutorials.de/forum/showthread.php?threadid=6083&highlight=mehrere+seiten
 
Wie sollte denn das Datum Feld aussehen?
Das heißt wie die Spalte dafür in de DB definiert werden muss, und was ich beim füllen angeben musss.

DIeses GB Tut hatt ich mir schon angschaut uns ausprobiert. aber der spuckt mir immer ne Fehlermeldung aus.

PHP:
<?

include ("config.php");
include ("mysql.php");



$sql = "SELECT artist,titel FROM ametal2000";


$result = mysql_query($sql,$conn);
$number = mysql_num_rows($result);
$seiten=floor($number/$proseite);
$start=$page * $proseite;
$sql="SELECT * FROM table LIMIT $start,$proseite";
$result = mysql_query($sql,$conn);
$ende = $start + $proseite;
if ($ende>$number) { $ende = $number; }
echo "Zur Zeit sind $number Einträge in den Metalalben <BR> \n";
echo "Seite $page - Einträge von $start bis $ende <BR> \n";
while ($row = mysql_fetch_array($result)) {   // hier der Fehler
	echo "Eintrag von: ".$row['artist']." <BR> \n";
	echo $row['titel']."<BR> \n";
	}
if ($page>0) {
	$i=$page-1;
	echo "<A HREF=\"alben.php?page=$i\">&lt;previous</A>";
}
for($i=0; $i<=$seiten; $i++) {
	if ($i==$page) {
		echo $i."&nbsp;";
	}
	else {
		echo "<A HREF=\"alben.php?page=$i\">$i</A>&nbsp;";
	}
}
if ($page<$seiten) {
	$i=$page+1;
	echo "<A HREF=\"alben.php?page=$i\">next&gt;</A>";
}
?>
 
SO der Fehler oben ist behoben.

Nur weiß ich immer noch nicht genau wie cih die DB Eintrag nach dem datum sortierren. Ein Beispiel wäre hier am Besten.
 
Ist doch ganz einfach; lege in deiner Tabelle ein Feld vom Typ 'DATE' an. In diesem legst du dann deine Datumsangaben ab. Diese musst du so formatieren, dass sie in der DB in der Form YYYY-MM-DD ankommen. Am einfachsten geht's, wenn du für Tag Monat und Jahr ein eigenes Eingabefeld benutzt.

Bei dir geht es aber um Alben, richtig? Dann wirst du vermutlich nur das Erscheinungsjahr eintragen. Hierfür reicht dann ein Feld vom Typ INT (Integer, vier Stellen), in das du dann das Jahr einträgst, und mit
PHP:
SELECT * FROM [Tabellenname] ORDER BY [Datumsfeld]
wieder ausliest.
 
So weit so gut. Das sortieren klappt schonmal, aber in die falsche Richtung. ER sortiert die Alben von 19xx nach oben und die Neusten, also die von 20xx, nach unten. Sollte aber umgekehrt sein.
Hier der Code:

PHP:
### Auslesen der Alben aus der Datenbank
$db = mysql_connect($db_host, $db_user, $db_pass);
$res = mysql_db_query($db_name, "SELECT * FROM alben ORDER BY termin");
$num = mysql_num_rows($res);
for ($i=0; $i<$num; $i++)
{
 $id = mysql_result($res, $i, "id");
 $interpret = mysql_result($res, $i, "interpret");
 $titel = mysql_result($res, $i, "titel");
 $termin = mysql_result($res, $i, "termin");
 $bild = mysql_result($res, $i, "bild");
?>
	<tr height="50">
		<td valign="top">
		 <strong><? echo "$interpret - $titel"; ?></strong><br>
		 Erscheinungstermin: <? echo $termin; ?>
		</td>
		<td width="150" valign="top">
		 <img src="<? echo $bild; ?>" alt="<? echo "$interpret - $titel"; ?>" border="0">
		</td>
	</tr>
<?
}
mysql_close($db);
?>
 
Für die ORDER Anweisung gibts natürlich zwei Richtungen, ASC (wie ascending, also aufsteigend) und DESC (wie descending - absteigend).
PHP:
$res = mysql_db_query($db_name, "SELECT * FROM alben ORDER BY termin DESC");

Bei so kleinen Sachen würde dir vielleicht ein Blick in die mySQL Dokumentation etwas Zeit sparen, nämlich die die es braucht, bis dir hier jemand antwortet...:-)
 
Zurück