Vinzenz Mai: Einfache Datenbankabfrage (Codeoptimierung)

Beitrag lesen

Hallo

Ich bastel gerade etwas an einem bestehenden PHP-Skript, um aus einer mySQL-DB alle Einträge von 0-9 und A-Z abzufragen (Titel). Das Skript ist schon recht alt

das ist unschwer zu erkennen.

und wurde damals von einem Bekannten geschrieben.

Dein Bekannter hatte leider wenig Ahnung und sorgt daher mit dafür, dass die Loadbalancer unnötig Arbeit bekommen.

Nun die Frage: Lassen sich die zwei Codeblöcke (Abfrage 0-9 und Abfrage A-Z) nicht mittels einer Schleife o.ä. zu einem Codeblock zusammenlegen?

Ja, lassen sie sich.

Habe leider bisher nur wenig Ahnung.

Wovon hast Du wenig Ahnung? Ganz allgemein? Von PHP? Von SQL? Es liegt allein in Deiner Hand, diesen Zustand zu ändern. Bitte tu dies.

Danke! :)

Danke gleichfalls.

$query="select title from $mytable where ascii(substring(title,1,1)) between 48 AND 57 order by title";

Es gibt den OR-Operator.

$result = @mysql_db_query($dbname,$query,$db) or die(mysql_error());

Lies Dir durch, was das Handbuch zu mysql_db_query() zu sagen hat. Weiterhin ist es nicht die beste Idee, Fehlermeldungen  einfach zu unterdrücken.

$count=0;

Eine überflüssige Variable, es gibt mysql_num_rows().

[...]

if ($count==0)
  echo "Keine Einträge\n";
echo "</div>\n";

for ($letter = A; $letter <> AA; $letter++)
  {
    $query="select title from $mytable where title like '$letter%' order by title";

Ein vergeßlicher Bekannter. Oben kennt er noch BETWEEN und auch SUBSTRING, hier werden überflüssigerweise 26 einzelne Abfragen abgesetzt.

Viel Spass beim Lernen, beim Aktualisieren und nicht zuletzt beim Optimieren

Vinzenz