[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
REDAXO Forum • [gelöst]PHP Umlaute für DB ersetzen
Seite 1 von 1

[gelöst]PHP Umlaute für DB ersetzen

Verfasst: 23. Aug 2012, 16:46
von Ray
Hey liebe Redaxos,

Ich habe ein PHP-Formular zum Füllen einer mySQL-Datenbank mit Adressdaten. Diese werden über Google Geocode in Längen- und Breitengrade umgewandelt, damit sie als Marker in einer Google-Map erscheinen.

Tauchen Sonderzeichen in den Adressdaten auf, Quittiert Google den Dienst. Ich stehe also vor der Aufgabe, die Umlaute der Adresseingaben ersetzen zu lassen (z. B. ä -> ae. Ich bin noch nicht der PHP-Freak und habe ein paar Scriptbeispiele kopiert.

Mit strtr( strtolower() ) wurde es empfohlen. Komischerweise werden bei mir nicht die Umlaute, sondern nur die Leerzeichen durch Unterstriche ersetzt.

Hast du einen Idee, an was das liegt? Kann dies mit dem Character Encoding im Dokument zu tun haben?

Würde mich sehr freuen, wenn ihr mir weiterhelft! :wink:

Code: Alles auswählen

// Variablen zum Umlaute umwandeln
$ersetzen = array( 'ä' => 'ae', 'ö' => 'oe', 'ü' => 'ue', 'ß' => 'ss', ' ' => '_', '\\' => '-', '/' => '-' );

// Formular auswerten

if(isset($_POST['send'])){
 if(isset($_POST['name'])){
   $name= $_POST ['name'];
     if(isset($_POST['address'])){

$address1 = utf8_encode($_POST ['address']);
$address = strtr( strtolower( $address1 ), $ersetzen );


        // Name und Text in Tabelle Test eintragen
     $mysql_befehl = "INSERT INTO markers(name,address) VALUES('$name', '$address')";
     $mysql_input = mysql_query ($mysql_befehl);

     if($mysql_input== true) {
      echo $name. "wurde erfolgreich eingetragen!";
     }
   }
  }
}


echo "
<form method='POST' action='maps.php'>

<p>Auslegestelle: <input type='text' name='name'></p>
<p>Adresse (Stra&szlig;e, Ort): <input type='text' name='address'></p>
<p><input type='submit' value='Absenden' name='send'></p>

</form>
";
$content = "SELECT * FROM markers";
$mysql_content = mysql_query($content);
while($input = mysql_fetch_array($mysql_content))
{
echo "<p><b>".$input['name']."</b>, ".$input['address'].", " .$input['stueckzahl']. "St&uuml;ck," .$input['person']."</p>";
}


Re: PHP Umlaute für DB ersetzen

Verfasst: 23. Aug 2012, 18:25
von Cheffchen
Hallo,

also ich mach das so

Code: Alles auswählen

	  function umlautepas($string){
	  $upas = Array("ä" => "ae", "ü" => "ue", "ö" => "oe", "Ä" => "Ae", "Ü" => "Ue", "Ö" => "Oe","ß" => "ss","á"=>"a","Á"=>"A","é"=>"e","è"=>"e","ê"=>"e","É"=>"E","'"=>"","("=>"",")"=>"","/"=>"", " OT "=>" ","str."=>"strasse ","Str."=>"Strasse ");
	  return strtr($string, $upas);
	  }

$adressefuerurl=urlencode(umlautepas(_POST ['address']));
dies ersetzt deine beiden zeilen und das $ersetzen=...

Code: Alles auswählen

$address1 = utf8_encode($_POST ['address']);
$address = strtr( strtolower( $address1 ), $ersetzen );
Cheffchen

Re: [gelöst]PHP Umlaute für DB ersetzen

Verfasst: 25. Aug 2012, 09:01
von Ray
funktioniert, supertoll, lieben Dank! :)

Info für Nachmacher: UTF8 muss im Header angegeben werden:

Code: Alles auswählen

<?
header('Content-Type:text/html; charset=UTF-8');
?>
Du hast damit übrigens einen Beitrag dafür geleistet, das Allgäu nachhaltiger zu machen. Die Datenbank erleichtert die Übersicht über Geschäfte, bei denen die bürgerschaftlich organisierte Zeitschrift "nachhaltiges Allgäu" ausgelegt wird. ;)