Problem mit Anhängsel in der URL

teamfake

Mitglied
Hallo zusammen,
ich bin gerade dabei mir ein Forum zu basteln, aber ich stehe gerade vor einem Problem. Ich lasse immer die Daten des Datensatze die den entsprechenden Postname enthält. Also z.B. "index.php?das ist der Postname". Leider wird das Leerzeichen nich einfach ausgelassen sondern wird so im Browser dargestellt:
Code:
%20
Also dann wird der Code im Browser so:
Code:
index.php?das%20ist%20der%20Postname
In dem Forum von tutorials.de ersetzt da das Leerzeichen immer ein Bindestrich. Wie geht das? Weil das wäre mir eine Größe hilfe, weil mit diesem "%20" geht das nicht in der Datenbank und wenn ich es mit Leerzeichen mach auch nicht. Bitte um Hilfe ;)

Danke schonmal im Vorraus ;)
TF
 
Hallo,
also, wenn ich ein Formular habe, dann muss ich ja den Datensatz in zwei Tabellen speichern, also in eine mit und in eine ohne Leerzeichen. Das Problem ist dabei nur, wie:confused:
Weil mein bischeriges Eintragformular sieht so aus:
PHP:
$sql="INSERT INTO threads " .
"(Content, user_id, URLAnhang) VALUES ('$_POST[Thread]', " .
"'$_POST[user_id]', '$getAnhang')";

Und wie soll ich das dann machen, weil ich kann in $_POST["Thread"] diese Funktion ja nicht einbauen, weil sonst wäre es ja in 2 Tabellenfelder ohne Leerzeichen :confused:

Danke schonmal im Vorraus ;)
TF
 
Wieso 2 Tabellen?

Nimm das Beispiel von Gumbo.

Du bekommst eine URL aus dem Formular und wandelst das um:

PHP:
$str = $_POST['url'];
$urlstring = str_replace(' ', '-', $str);

Das speicherst du in die Datenbank, in _eine_ Spalte. Also:

PHP:
$sql = 'INSERT INTO threads (Content, user_id, URLAnhang) VALUES (' .$_POST['thread']. ', ' .$_POST['user_id'].', ' .$urlstr.' )';

Und auslesen dann einfach andersrum

PHP:
$printurl = str_replace('-', ' ', $url_aus_db);

* ohne Gewähr das alles :)
 
Also ich habe es jetzt mal auf eigene Faust probiert, aber das ging leider in die Hose :D

PHP:
$ThreadLeerzeichen = $_POST[Thread];
$ThreadLeerzeichen = str_replace(" ", "-", $ThreadLeerzeichen);
$sql="INSERT INTO threads " .
"(Content, user_id, URLAnhang, Content_Leerzeichen) VALUES ('$_POST[Thread]', " .
"'$_POST[user_id]', '$getAnhang', '$ThreadLeerzeichen')";
if (mysql_query($sql)) {
  echo "<p>Dateneingabe erfolgreich!<script language=\"javascript\">location.href=\"threads.php?$getAnhang\"</script></p>";
} else {
  echo "<p>Dateneingabe nicht erfolgreich!</p>";
}

Da werden die Leerzeichen immer noch nicht umgesetzt :mad:

TF
 
Ich nutze auf meiner Seite mod_rewrite Adressen.
Da hab ich mir folgende Methode gebastelt, um Titel "Linktauglich" zu machen:
PHP:
<?php
function conlink($return) {
   $uml = array("ä", "ü", "ö", "ß"); $convert = array("ae", "ue", "oe", "sz");
   $return = str_replace($uml, $convert, strtolower($info['ds']['title'][0])); // Umlaute umwandeln und Alle Buchstaben in kleine Umwandeln
   $return = preg_replace("/[^a-zA-Z0-9_]/", "-", $return); // Alle Zeichen außer Buchstaben und Zahlen ausfiltern
   return $return;
}
?>
Sieht dann so aus: http://sim4000.pudelwerfer.de/blog,1,3,sim4000-de-be-v3,view,35.html
 
Zuletzt bearbeitet:
Und wie müsste das dann bei mir heißen? Etwa so?:
PHP:
<?php
function conlink($ThreadLeerzeichen) {
   $ThreadLeerzeichen = array("ä", "ü", "ö", "ß"); $convert = array("ae", "ue", "oe", "sz");
   $ThreadLeerzeichen = str_replace($uml, $convert, strtolower($info['ds']['title'][0])); // Umlaute umwandeln und Alle Buchstaben in kleine Umwandeln
   $ThreadLeerzeichen = preg_replace("/[^a-zA-Z0-9_]/", "-", $return); // Alle Zeichen außer Buchstaben und Zahlen ausfiltern
   return $ThreadLeerzeichen;
}
?>

Würde das so stimmen? (Ich glaube nämlich eher nicht :P )

TF
 
Das was du da gemacht hast ist quatsch. :rolleyes:
So muss es ausssehen:
PHP:
<?php
function conlink($return) {
   $uml = array("ä", "ü", "ö", "ß"); $convert = array("ae", "ue", "oe", "sz");
   $return = str_replace($uml, $convert, strtolower($return)); // Umlaute umwandeln und Alle Buchstaben in kleine Umwandeln
   $return = preg_replace("/[^a-zA-Z0-9_]/", "-", $return); // Alle Zeichen außer Buchstaben und Zahlen ausfiltern
   return $return;
}
?>
Hier eine Demo: http://sim4000.pudelwerfer.de/temp/urlcon.php

Wenn du das so machst,
PHP:
<?php
function conlink($ThreadLeerzeichen) {
   $ThreadLeerzeichen = array("ä", "ü", "ö", "ß"); $convert = array("ae", "ue", "oe", "sz");
   $ThreadLeerzeichen = str_replace($uml, $convert, strtolower($info['ds']['title'][0])); // Umlaute umwandeln und Alle Buchstaben in kleine Umwandeln
   $ThreadLeerzeichen = preg_replace("/[^a-zA-Z0-9_]/", "-", $return); // Alle Zeichen außer Buchstaben und Zahlen ausfiltern
   return $ThreadLeerzeichen;
}
?>
Wird ja die Var die Convertiert werden soll mit Liste der Umlaute überschrieben. Außerdem war in dem str_replace noch eine falsche Variable, die ich in meiner Version hier in diesem Beitrag korrigiert hab. ;)
 
Zuletzt bearbeitet:
Zurück