Datenbank alphabetisch auslesen

Urbanice

Grünschnabel
Hi, ein bekannter hat mir vor einer weile ein script programmiert um rezepte aus einer datenbank alphabetisch auszulesen. Das hat lange auch gut geklappt doch nun fügt es jedes neue rezept am ende nur an und ordnet es nicht mehr nach dem alphabet. Ist vielleicht im script ne begrenzung an einträgen oder ähnliches, vielleicht könnt ihr mir helfen.

PHP:
<?php
/*
 * Verbindungs und Config-Settings
 */
@$connect = mysql_connect("localhost","xxxxx","xxxxxx") or die ("<h1>Fehler, konnte nicht zur MySQL-Datenbank verbinden!</h1>");
@mysql_select_db("usr_web225_1");

$config["anzahl_pro_seite"] = 37;
$config["limit_start"] = (is_numeric($_GET["start"])) ? $_GET["start"] : 0;

$result = mysql_query("SELECT titel, link, datum FROM rezepte_archiv ORDER BY 'titel' ASC LIMIT ".$config["limit_start"].", ".$config["anzahl_pro_seite"]."", $connect);


echo "<table style=\"width:100%;\">\n";
echo "\t<tr>\n";
echo "\t\t<td><b><SMALL>Rezept</SMALL></b></td>\n";
echo "\t\t<td style=\"width:80px;\"><b><SMALL>Datum</SMALL></b></td>\n";
echo "\t<tr>\n";



while($row = mysql_fetch_object($result))
{
	echo "\t<tr>\n";
	echo "\t\t<td><SMALL><a href=\"http://www.koch-universum.de/index.php?content=".$row->link."\">".stripslashes($row->titel)."</SMALL></td>\n";
	echo "\t\t<td style=\"width:80px;\"><SMALL>".$row->datum."</SMALL></td>";
	echo "\t</tr>";
}

echo "</table>\n";

mysql_free_result($result);
unset($row);

$result = mysql_query("SELECT COUNT(id) AS anzahl FROM rezepte_archiv", $connect);
$row = mysql_fetch_object($result);

if ($row->anzahl > $config["anzahl_pro_seite"])
{
	echo "<p align=\"right\">Seite&nbsp;";
		
	$seitenzahl = 1;
	$seitenausgabe = 0;

	while ($row->anzahl >= $seitenausgabe)
	{
		if ($config["limit_start"] != $seitenausgabe)
		{
			$linkstart = "<a href=\"index.php?content=".$_GET["content"]."&amp;start=".$seitenausgabe."\">";
			$linkende = "</a>";
		}
		else
		{
			$linkstart = "";
			$linkende = "";
		}

		echo "[".$linkstart.$seitenzahl.$linkende."]&nbsp;";

		$seitenzahl++;
		$seitenausgabe += $config["anzahl_pro_seite"];
	}

	echo "</p>\n";
}

mysql_free_result($result);
unset($row);
?>
 
In welcher Reihenfolge sie in der Datenbank stehen ist vollkommen egal. Die Datenbankabfrage
PHP:
ORDER BY 'titel' ASC
sorgt für die Sortierung und die sieht eigentlich OK aus.

Sind die ausgegeben Einträge alle unsortiert?

Was passiert wenn Du
PHP:
$config["anzahl_pro_seite"] = 37;
mal testhalber auf z.B. 100 setzt?
 
Zuletzt bearbeitet:
Ja ok das hab ich probiert, daran liegts leider nicht. Jetzt hab ich aber festgestellt dass das ganze auf einmal nach datum sortiert wird.

Die ersten naja etwa 80 Einträge sind sortiert weil ich die auch schon anfangs alphabetisch eingetragen habe, der rest wurde jetz nur hintenran gehängt und und ist vom datum her immer aufsteigend.

kann das auch an einer falschen eingabe in der datenbank selbst liegen?
 
Hmm strange...die einzige Abfrage die etwas wiedergibt enthält eine Sortierung nach "titel".

PHP:
mysql_query("SELECT titel, link, datum FROM rezepte_archiv ORDER BY 'titel' ASC LIMIT ".$config["limit_start"].", ".$config["anzahl_pro_seite"]."", $connect);

Wenn im Titel also keine Zahlen am Anfang stehen sollte er auch danach sortieren.
 
Hallo!
Hmm strange...die einzige Abfrage die etwas wiedergibt enthält eine Sortierung nach "titel".
Irrtum!
'titel' ist kein Spaltenname sondern ein String (mysql_error() sollte hier eigentlich meckern).
Daher wird nicht nach titel sortiert, sondern nach der ersten Spalte (vermutlich der ID).
Da das Datum vermutlich immer das aktuelle Datum vom Tag des Eintrags ist, sieht es nur so aus als wenn nach dem Datum sortiert werden würde.

Lange Rede, kurzer Sinn: Spaltennamen gehören in ``.
PHP:
ORDER BY `titel`
Kleinvieh macht halt auch Mist. ;)
Ich würde aber auch die Spaltennamen die per SELECT ausgewählt werden, in `` setzen (man weiss ja nie ;) ).

Gruss Dr Dau
 
In diesem Fall sollte
PHP:
ORDER BY titel
genauso gehen. Bei mir in der Testumgebung tuts das auf jeden Fall mit beiden Schreibweisen. Ohne `` muss man halt darauf achten keine SQL Schlüsselwörter wie "user, mod etc." zu treffen. Sicherer ist es mit.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück