online 1
gast (50)

/ Forum / Skripte(PHP,ASP,Perl...)

Skripte(PHP,ASP,Perl...)Skripte(PHP,ASP,Perl...)

Fragevon Razer-head vom 20.08.2022, 08:51 Options

PHP Wörterbuch

Hallo,

kann mir vielleicht jemand helfen??

ich habe vor ein Wörterbuch in PHP zu programmieren, wenn es jemanden hilft werde ich den Quellcode ebenfalls hier posten.

Vielen dank für eure Hilfe.

uebersetzung.html:

<html>
<head>
<title>
Mini Directory</title>
</head>
<body>
<form action = "zahlausgabe.php" method = "POST">
<p>
<font size = "5" color = "green">Mini Directory</font>
</p>
<p><font size = "3" color = "green">Please make your choice:</font></p>
1 from german to english<br>
2 from german to french<br>
3 from english to french<br>
4 from french to english<br>
5 from french to german<br>
6 from english to german<br>
<p>Please enter your number:<input name = "zahl" /></p>
<p><input type = "submit" value = "OK" /></p>
<p><input type = "reset" /></p>
</form>
</body>
</html>

zahlausgabe.php:

<html>
<body>
<?php
$eingabe = $_POST["zahl"];

if($eingabe == "1")
{
echo "You want to translate a word from german to english";
}
else
{
if($eingabe == "2")
{
echo "You want to translate a word from german to french";
}
else
{
if($eingabe == "3")
{
echo "You want to translate a word from english to french";
}
else
{
if($eingabe == "4")
{
echo "You want to translate a word from french to english";
}
else
{
if($eingabe == "5")
{
echo "You want to translate a word from french to german";
}
else
{
if($eingabe == "6")
{
echo "You want to translate a word from english to german";
}
else
{
echo "Please enter a number from 1 to 6!";
}
}
}
}
}
}
?>
<form action = "wortuerbersetzung.php" method = "post">
<p>Please enter your word to translate: <input name = "wort" /></p>
<p><input type = "submit" value = "Ok" /></p>
<p><input type = "reset" /></p>
</body>
</html>

den Quellcode für wortuerbersetzung hab ich noch nicht gemacht.

Mein Problem ist das wenn ich die Zahl 7 eingebe, dann erscheint auf der nächsten Seite immer noch "Please enter your word to translate" obwohl das nicht dort stehen sollte, sondern nur "Please enter a number from 1 to 6!".


Vielen dank für eure HIlfe


Antwort schreiben

Antwort 1 von son_quatsch vom 20.08.2022, 10:22 Options

Na weil deine HTML-Ausgabe ganz unten in jedem Fall jenen Text ausgibt.

An deiner Arbeit gibt es einiges zu optimieren:

  • Warum muss eine Zahl eingegeben werden? Sowas kann doch mit einer bereits vorgegebenen Auswahl (per Combobox) viel einfacher gelöst werden.
  • Warum erst nur eine Zahl eingeben? Besser wär doch die Übersetzungsrichtung zu wählen und dann gleich das zu übersetzende Wort auch.
  • Warum mehrere Dokumente? Die ganze Logik kann in einem PHP-Dokument Platz finden - da ist gar kein HTML-Dokument davor oder sonstwann nötig.
  • Warum immer einen neuen Block nach else öffnen?
  • Warum die Texte mehrfach schreiben?
  • Warum hast du den [ code ]-Tag nicht hier bei deinem Beitrag für deinen Quelltext verwendet? Jetzt siehst du, dass die ganze Formatierung flöten gegangen ist.
  • Der HTML-Tag <font> ist voriges Jahrhundert.

Da mir etwas langweilig war, hab ich gleich ein funktionierendes Beispiel gebaut und hoffe, dass du daraus einiges lernen kannst. Genug Kommentare sind jedenfalls drin. Es übersetzt sogar ein paar Wörter (z.B. "peace", "house", "two"). Einfach als irgendwas.php abspeichern und aufrufen. Selbsterklärend in der Benutzung.

<?php

	// Übersetzungsrichtung, wobei 0=EN, 1=FR und 2=DE
	$aSprache= array
	( '0-1'=> 'from English to French'
	, '0-2'=> 'from English to German'
	, '1-0'=> 'from French to English'
	, '1-2'=> 'from French to German'
	, '2-0'=> 'from German to English'
	, '2-1'=> 'from German to French'
	);

	// Wörterbuch: jedes Element besteht aus einem Feld, in welchem im 0ten Element EN, im 1ten FR und im 2ten DE definiert ist. Immer kleingeschrieben!
	$aDict= array
	( array( 'peace', 'paix', 'frieden' )
	, array( 'house', 'maison', 'haus' )
	, array( 'we', 'nous', 'wir' )
	, array( 'english', 'anglais', 'englisch' )
	, array( 'two', 'deux', 'zwei' )
	);

	// Nur dieses eine Dokument wird benötigt; ein großer Teil der Ausgabe ist immer identisch
	echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>
	<title>Mini Directory</title>
	<style type="text/css">
		body { font: 13px Arial, sans-serif; }
		h1 { color: green; }
		label { display: block; float: left; width: 130px; text-align: right; margin: 5px 10px 0px 0px; }
		input, select { margin-top: 3px; }
	</style>
</head><body>
	<h1>Mini Directory</h1>';

	// Übersetzungsrichtung angegeben? Wenn nicht, wurde die Seite nur aufgerufen statt abgeschickt
	$sDirection= isset( $_POST['fromto'] )? $_POST['fromto']: 0;

	// Zu übersetzendes Wort angegeben?
	$sWord= isset( $_POST['word'] )? $_POST['word']: '';

	// Möglicher auszugebender Fehler
	$sError= '';

	// Mögliche gefundene Übersetzung
	$sFound= '';

	// Befindet sich die ausgewählte Übersetzungsrichtung überhaupt in unserer Definition des Felds oben?
	if( isset( $aSprache[$sDirection] ) ) {
		// Wurde überhaupt ein zu übersetzendes Wort angegeben?
		if( $sWord!= '' ) {
			// Gänsefüßchen und Apostrophe ggf. de-escaped
			if( get_magic_quotes_gpc() ) $sWord= stripslashes( $sWord );

			// Zahl vor dem Bindestrich ist Quellsprache, Zahl dahinter ist Zielsprache - in Feld aufteilen
			$aDirection= explode( '-', $sDirection );

			// Zu übersetzendes Wort in Kleinbuchstaben umwandeln, da unser Wörterbuch auch nur Kleinbuchstaben hat
			$sWordLower= strtolower( $sWord );

			// Wörterbuch durchwandern
			foreach( $aDict as $iKey=> $sWert ) {
				// Die Quellsprache eines Wörterbuch-Elements stimmt mit dem zu suchenden Wort überein?
				if( strcmp( $sWert[$aDirection[0]], $sWordLower )== 0 ) {
					// Zielsprache des Elements merken
					$sFound= $aDict[$iKey][$aDirection[1]];

					// Schleife verlassen und nicht zu Ende durchlaufen
					break;
				}
			}
			
			// Falls nichts gefunden, dann Hinweis ausgeben
			if( $sFound== '' ) $sError= 'No translation found';
		} else $sError= 'Please enter a word';
	}

	// Fehlermeldung auszugeben?
	if( $sError!= '' ) echo '
	<p style="color: red;">'. $sError. '!</p>';

	// Formular beginnen
	echo '<form action="'. $_SERVER['PHP_SELF']. '" method="post"><div>
		<label for="fromto">Direction:</label>
		<select name="fromto" id="fromto">';

	// Alle Übersetzungsrichtungen anbieten
	foreach( $aSprache as $sKey=> $sWert ) echo '
			<option value="'. $sKey. '"'. ( $sDirection== $sKey? ' selected="selected"': '' ). '>'. $sWert. '</option>';

	// Ggf. zu übersetzendes Wort wieder mit ausgeben
	echo '
		</select><br/>

		<label for="word">Word to translate:</label>
		<input name="word" id="word" value="'. htmlentities( $sWord ). '" /><br/>';

	// Übersetzung gefunden? Zusätzliche unveränderliche Textbox
	if( $sFound ) echo '
		<label for="found" style="color: green;">Found translation:</label>
		<input id="found" style="background-color: #EFE;" readonly="readonly" value="'. htmlentities( $sFound ). '" /><br/>';

	// Formularende
	echo '		
		<label>&nbsp;</label>
		<input type="submit" />
		<input type="reset" />
	</div></form>
</body></html>';

?>

Antwort 2 von mrbleach vom 20.08.2022, 12:47 Options

Vielen dank für die schnelle Hilfe :D

Ähnliche Themen

PHP Besucherzähler
Coromu  13.05.2009 - 390 Hits - 13 Antworten

php Kontaktformular
nafasi3  29.06.2009 - 508 Hits - 14 Antworten

(PHP) einen PHP-Parser mit PHP programmieren
skribbtkiddie  17.07.2009 - 354 Hits - 1 Antwort

PHP Loginscript
phplife  21.08.2009 - 360 Hits - 2 Antworten

Suche meine php.ini, und wo ist dies: /usr/local/php5/lib/php.ini
TremorChrist  07.09.2009 - 342 Hits - 7 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026