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

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Ray
Beiträge: 38
Registriert: 9. Okt 2007, 02:14

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

23. Aug 2012, 16:46

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>";
}

Zuletzt geändert von Ray am 25. Aug 2012, 08:59, insgesamt 1-mal geändert.

Benutzeravatar
Cheffchen
Beiträge: 1809
Registriert: 3. Mär 2009, 13:51
Wohnort: Berlin
Kontaktdaten: Website

Re: PHP Umlaute für DB ersetzen

23. Aug 2012, 18:25

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

Ray
Beiträge: 38
Registriert: 9. Okt 2007, 02:14

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

25. Aug 2012, 09:01

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

Zurück zu „Sonstiges“