Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Übersetzungs Script Problem
Frage
Hallo
Ich habe mir jetzt mit mühe und not einen übersetzer zusammen gebastelt. So dann habe ich aber gemerkt das meine Tabellen wie sie jetzt sind nicht effektiv genug sind für weitere Sprachen. So nun habe ich die Tabellen geändert. Und die DB abfrage auch. Nur weiß ich nicht wie ich den rest des sciptes ändern soll. Kann mir jemand sagen was ich da machen muss und wo vielleicht noch fehler liegen?
Das Script ist gut beschrieben und nicht sehr lang.
Neue DB abfrage:
[code]
$query = "SELECT wort FROM uebersetzer WHERE sprache = ´".$_POST[´sprache´]."´ AND id = (SELECT id FROM uebersetzer WHERE wort = ´".$_POST[´wort´]."´)";[/code]
Das restliche script mit der neuen abfrage:
[code]
<html>
<body>
<form action="<?php echo $_SERVER[´PHP_SELF´];?>" method="post">
Text: <textarea name="wort" ><? if(isset($_POST[´wort´])){
echo($_POST[´wort´]); } ?></textarea>
Sprache:<select selected="selected" name="sprache" <?php if(isset($_POST[´sprache´])){
echo("value=\"".$_POST[´sprache´]."\""); } ?>>
<option value=´fr´>Deutsch - Englisch</option>
<option value=´de´>Englisch - Deutsch</option>
<option value=´fr´>Englisch - Französisch</option>
<option value=´en´> Französisch - Englisch</option>
</select>
<input type="submit" value="Senden" name="senden">
</form>
<?php
// prüft ob das formular alle benötigten spalten enthält
if(isset($_POST[´senden´]) && !empty($_POST[´wort´]) && !empty($_POST[´sprache´])) {
// suche alle worte heraus, wandle sie in kleinschreibweise um und entferne doppelte einträge
$words = array_map("strtolower", preg_split("/[^a-zA-ZäöüÄÖÜß]+/ims", $_POST[´wort´]));
//entferne leere elemente
foreach($words as $key => $value) {
if(empty($value)) unset($words[$key]);
$words[$key] = "wort = ´$value´";
}
// für eine sql abfrage sollte diese where-klausel verwendet werden
$where = implode(" OR ", $words);
/* daten zu debugging zwecken ausgeben
echo "<pre>";
print_r($words);
echo "\n\nwhere: $where\n\n";
*/
// originalsatz in die ausgabe kopieren
// $result wird in der folgenden schleife sukzessive verändert
$result = $_POST[´wort´];
// datenbank abfragen
$verbindung = mysql_connect ("localhost","root", "") or die ("keine Verbindung möglich. Benutzername oder Passwort sind falsch");
mysql_select_db("uebersetzer") or die ("Die Datenbank existiert nicht.");
$query = "SELECT wort FROM uebersetzer WHERE sprache = ´".$_POST[´sprache´]."´ AND id = (SELECT id FROM uebersetzer WHERE wort = ´".$_POST[´wort´]."´)";
$sql = mysql_query($query);
if(!$sql) die(mysql_error());
// ergebnisse durchlaufen und ersetzungen vornehmen
while($row = mysql_fetch_assoc($sql)) {
$pattern = "/\b".$row[´wort´]."\b/ims";
$result = preg_replace($pattern, $row[´wort´], $result);
}
// ergebnis ausgeben
echo ($result);
echo "</pre>";
}

