Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

mySQL Syntax von Laien gesucht.

Empfohlene Antworten

Veröffentlicht

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.

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

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

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

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!

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)


<?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*

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.