Seite 1 von 1

mysql.php & mysql4.php des phpBB

Verfasst: Fr 10.Jun, 2005 16:55
von AmigaLink
Ich nutze in meinem Lexicon Mod diesen Code zum ermitteln der Daten für die Letternavigation:

Code: Alles auswählen

// Which letters are present?
$sql = "SELECT DISTINCT ord(keyword) FROM " . LEXICON_ENTRY_TABLE;
if ( $categorie_id != 0 )
{
	$sql .= " WHERE cat = '$categorie_id'";
}

if ( !($result = $db->sql_query($sql)) )
{
	message_die(GENERAL_ERROR, 'Error getting lexicon entrys', '', __LINE__, __FILE__, $sql);
}
$present_letters = ' ';
while($row = $db->sql_fetchrow($result)) $present_letters.=strtoupper(chr($row[0]));
$db->sql_freeresult($result);
Das Funktioniert auch einwandfrei. :)
Vorrausgesetzt man hat das phpBB nicht über die mysql4.php am laufen!!!
Denn wenn man in der config.php mysql4 einträgt, dann bleibt $present_letters leer. :(

Kann mir einer erklären warum das so ist und was ich dagegen tun kann?

Verfasst: Fr 10.Jun, 2005 19:07
von oxpus
Besser so:

Code: Alles auswählen

// Which letters are present?
$sql = "SELECT DISTINCT ord(keyword) as character FROM " . LEXICON_ENTRY_TABLE;
if ( $categorie_id != 0 )
{
	$sql .= " WHERE cat = '$categorie_id'";
}

if ( !($result = $db->sql_query($sql)) )
{
	message_die(GENERAL_ERROR, 'Error getting lexicon entrys', '', __LINE__, __FILE__, $sql);
}
$present_letters = ' ';
while($row = $db->sql_fetchrow($result)) $present_letters .= strtoupper(chr($row['character']));
$db->sql_freeresult($result);
Die Variante mit $row[0] ... [n] ist nicht die schnellste birgt auch Gefahren und wurde daher ab der 4er Version per default deaktiviert, daher besser immer solchen Berechnungen ein Alias geben und dieses ist dann abfragbar.
Damit bleibt man dann auch immer kompatibel.

Verfasst: Fr 10.Jun, 2005 19:30
von AmigaLink
Super - das Funktioniert.
Vielen dank!!!

Ich musste allerdings character gegen letters ersetzen, da character anscheinend eine reservierte bezeichnung ist und zu nem error führte.

Verfasst: Fr 10.Jun, 2005 20:24
von oxpus
Ach so, ja kann sein.
Hatte ich jetzt nicht drauf geachtet.

Verfasst: Fr 10.Jun, 2005 20:29
von AmigaLink
Macht ja nichts. Hauptsache das Problem ist gelöst und ich weis worauf ich ihn zukunft achten sollte.

Ich hab hier heute den ganzen Tag gesessen und nach ner Lösung gesucht. Konnte mir das Problem überhaupt nicht erklären (war eh zufall das ich rausgefunden hab woher es kommt) und war schon nahe dran eine komplett andere Ermittlungsmethode zu proggen. :rolleyes:

Verfasst: Fr 10.Jun, 2005 20:33
von oxpus
Frag mich doch ;)
Aber schön daß wir wieder was gemeinsam gelernt haben:
Du, wie man sowas löst, ich, was org() bedeutet und character ein reserviertes SQL-Wort ist.

Verfasst: Fr 10.Jun, 2005 20:49
von AmigaLink
:lol:
Fein das wir uns ergänzen. :D

Verfasst: Fr 10.Jun, 2005 22:09
von oxpus
Ja, ein echtes PHP-DreamTeam ;)