Zum Inhalt springen

mySQL Syntax von Laien gesucht.


Big Al

Empfohlene Beiträge

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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. :-)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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!

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :D)

Link zu diesem Kommentar
Auf anderen Seiten teilen


<?php
$link = mysql_connect("localhost", "test", "test")[/php]

Gruß Jaraz (Stundensatz kommt per PN :D)

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*

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...