Big Al Geschrieben 29. April 2004 Teilen Geschrieben 29. April 2004 Wie kann ich unter phpMyAdmin eine Tabelle in meiner mySQL Datenbank erzeugen, die etwa wie folgt aussieht und Texte für ein php Script beinhalten soll? Deutsch Text 1 Text 2 usw. Englisch Text 1 Text 2 usw. USW. Bin blutiger mySQL Anfänger mit Ambitionen ... ;-) Danke für Hilfe. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 29. April 2004 Teilen Geschrieben 29. April 2004 Hi, bleibt es bei den beiden Sprache oder können noch mehr hinzu kommen? Bei mehreren würde ich es in einer Datenbank so machen: # Database : `i18n` # # -------------------------------------------------------- # # Table structure for table `constants` # CREATE TABLE constants ( id int(11) NOT NULL auto_increment, constant varchar(32) NOT NULL default '', PRIMARY KEY (id), UNIQUE KEY constant (constant) ) TYPE=MyISAM AUTO_INCREMENT=2 ; # # Dumping data for table `constants` # INSERT INTO constants VALUES (1, 'titel'); # -------------------------------------------------------- # # Table structure for table `languages` # CREATE TABLE languages ( id int(11) NOT NULL auto_increment, locale varchar(32) NOT NULL default '', PRIMARY KEY (id), UNIQUE KEY locale (locale) ) TYPE=MyISAM AUTO_INCREMENT=3 ; # # Dumping data for table `languages` # INSERT INTO languages VALUES (1, 'de_DE'); INSERT INTO languages VALUES (2, 'en_US'); # -------------------------------------------------------- # # Table structure for table `translate` # CREATE TABLE translate ( constant int(11) NOT NULL default '0', language int(11) NOT NULL default '0', value varchar(255) NOT NULL default '', PRIMARY KEY (constant,language) ) TYPE=MyISAM; # # Dumping data for table `translate` # INSERT INTO translate VALUES (1, 1, 'Hallo Welt'); INSERT INTO translate VALUES (1, 2, 'Hello World'); Für eine einfachere externe Überstzung würde ich allerdings eher Property oder xml Dateien die in einen bestimmten Ordner kommen nehmen. Gruß Jaraz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Big Al Geschrieben 30. April 2004 Autor Teilen Geschrieben 30. April 2004 Hallo. :-) Erst mal vielen Dank. Das ist nicht für eine Übesetzung gedacht, sondern für ein php Script, dass nach der Übergabe der Sprachvariablen xy.php?lang=de die passenden Texte aus der Datenbank holen soll. Jede Sprache benötigt rund 30 Textstrings. Außerdem sollen zusätzlich noch Zahlenwerte in die Datenbank geschrieben werden für statistische Auswertungen, das ist aber eine andere Frage. Wäre dies also der Weg, die Sprachen in die Datenbank zu laden: # # Dumping data for table `translate` # INSERT INTO translate VALUES (1, 1, 'Hallo Welt'); INSERT INTO translate VALUES (2, 1, 'Alles klar?'); INSERT INTO translate VALUES (1, 2, 'Hello World'); INSERT INTO translate VALUES (2, 2, 'All fine?'); INSERT INTO translate VALUES (1, 3, 'Salut france'); INSERT INTO translate VALUES (2, 3, 'baguette'); Danke noch mal. :-) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 30. April 2004 Teilen Geschrieben 30. April 2004 Hi, ich wusste zwar bis jetzt nicht das "Alles klar?" im französischen baguette heißt, aber im im großen und ganzen ja. Gruß Jaraz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Big Al Geschrieben 1. Mai 2004 Autor Teilen Geschrieben 1. Mai 2004 im großen und ganzen ja. Fein, die felder sind angelegt, die Tabellen heißen jetzt: - constants, darin nur 'titel', wobei mir der Verwendungszweck nicht ganz klar ist. - languages, darin die Variablen für die Sprachen. (DEUT, ENGL, SPAN usw.) - translate, darin jeweils haufenweise Textzeilen für das Script. Wie ist bitte dann die Syntax, mit der ich bsp. die dritte Textzeile aus dem Deutschen (DEUT=1) auslese? <?echo translate(1,$languages)?> und verschiedene andere Varianten haben da nicht funktioniert. Besten Dank im Voraus! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 1. Mai 2004 Teilen Geschrieben 1. Mai 2004 Hi, basierend auf oben genannte Datenbank mache ich das so! <?php $language="de_DE"; $sql = 'SELECT constants.constant, translate.value' . ' FROM translate' . ' INNER JOIN constants ON translate.constant = constants.id' . ' INNER JOIN languages ON translate.language = languages.id' . ' WHERE languages.locale = \''.$language.'\''; $link = mysql_connect("localhost", "test", "test") or die("Could not connect : " . mysql_error()); mysql_select_db("i18n") or die("Could not select database"); $result = mysql_query($sql) or die("Query failed : " . mysql_error()); while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { $translate[$line['constant']] = $line['value']; } echo $translate['titel']; mysql_free_result($result); mysql_close($link); ?> [/php] $translate ist dann ein assozitives Array mit allen Bezeichnungen der entsprechenden Sprache. Würde mich an deiner Stelle trotzdem etwas mit mysql auseinandersetzen. Die mysql php funktionen sind hier beschrieben. http://de2.php.net/manual/en/ref.mysql.php Gruß Jaraz (Stundensatz kommt per PN ) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Big Al Geschrieben 2. Mai 2004 Autor Teilen Geschrieben 2. Mai 2004 <?php $link = mysql_connect("localhost", "test", "test")[/php] Gruß Jaraz (Stundensatz kommt per PN ) Weia, das würde mich wahrscheinlich arm machen! ;-) Ist so ein Script denn überhaupt sicher - wenn für "test" jeweils der Datenbankname und das Passwort eingegeben werden müssen? Schätze, der nächste mySQL Kurs bei der VHS wird dann mal von mir besucht ... *g* Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 2. Mai 2004 Teilen Geschrieben 2. Mai 2004 Ist so ein Script denn überhaupt sicher - wenn für "test" jeweils der Datenbankname und das Passwort eingegeben werden müssen? War ja nur ein Beispiel! Die Daten kommen am besten in eine Datei außerhalb des Document Root Directory und werden dann includiert. constants.php <?php define(DB_EXT_HOST, "localhost"); define(DB_EXT_USER, "test"); define(DB_EXT_PASS, "test"); define(DB_EXT_NAME, "i18n"); ?> skript.php <?php //Konstanten laden include("../constants.php"); //Datenbankconnection holen $link = mysql_connect(DB_EXT_HOST, DB_EXT_USER, DB_EXT_PASS) or die("Could not connect"); mysql_select_db(DB_EXT_NAME) or die("Could not select database"); ?> [/php] Gruß Jaraz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.