Aus dem Titel eines Artikels wird ein Name generiert, der keine Leerzeichen/Sonderzeichen mehr erhält. Dieser soll zur sinnvollen URL verwendet werden. Jetzt muss aber dieser generierte Name eindeutig sein. Die Daten werden in zwei SQL-Tabellen gespeichert (entweder Artikel oder Kategorie).
Gibt es den Namen bereits in der Tabelle Artikel oder in der Tabelle Kategorie, so wird z.B. ein „_X“ an den Namen angehängt, wobei X eine Ziffer ist.
Ich würde also den generierten Namen in der DB bzw. in beiden Tabellen suchen (Select… und schauen, ob ein Datensatz vorliegt). Ist ein Datensatz vorhanden, wird ein „_2“ angehängt und dieser Name erneut in der DB gesucht, usw…
Ist so eine Schleife sinnvoll oder geht das einfacher?
Und wie bekomme ich die letzte Ziffer, um diese hochzuzählen?
split? und dann den letzten Teil überprüfen? Dann ergeben sich aber folgende Fehlermöglichkeiten:
also ich würde so an die Sache rangehen bevor ich jedes mal ein query los jage wenn ein treffer gefunden ist. Du hast ja den Namen ohne Unterstrich und ner Ziffer. Diese suchst du jeweils in einer Tabelle mit LIKE Name%
Damit erhälst du alle Treffer vom Namen, ob nun Name_1 oder Name_2.
Aber im Query kannst du dir immer den letzten Eintrag als erstes ausgeben, also sagen wir Name_6.
Exploden kann man zwar auch, selbst wenn der Name schon ein unterstrich hat, das würde dnen so ungefähr aussehen
Damit müsstest du immer die Ziffer bekommen, falls diese vorhanden ist. Wenn es keine Ziffer gibt musst du eh eine Ausnahme machen weil du dann _X anhängen musst
Ich hoffe das war etwas verständlich Aber es könnten auch noch andere Möglichkeiten geben. Vielleicht haben die anderen noch ne Idee
Die Tatsache, dass einmal ohne und dann immer mit Zahl gearbeitet werden soll, erhöht den Aufwand unnötig. Grundsätzlich mit Zahl arbeiten und als Zahl die ID des Datensatzes nehmen und fertig.
Ok, vielleicht muss ich mein Konzept umstellen.
Derzeit sieht es so aus:
Ich habe eine Tabelle mit Kategorien und Artikeln. In der Tabelle gibt es eine ID, einen Namen (ohne Sonderzeichen und Leerzeichen) und die Kategoriebezeichnung bzw. der Artikel.
Nun möchte ich, dass die URL nicht kryptisch mit allen Parametern dargestellt wird, sondern schön sauber www.website.de/ein-artikel
Per htaccess lese ich den Teil hinter dem „/“ ein und erhalte so den Artikel oder die Kategorie.
Dementsprechend muss das eindeutig sein, d.h. es darf für die Kategorie „Gesunde Ernährung“ und für den gleichnamigen Artikel nicht die gleiche Bezeichnung geben. Auf diese Weise benötige ich keine weiteren Parameter, d.h. das Script prüft erst, ob es eine Kategorie mit dem Namen gibt, dann ob es einen Artikel mit dem Namen gibt, sonst gibt es einen 404-Fehler.
So vermeide ich, dass die URL einen weiteren Parameter www.website.de/artikel/gesunde-ernaehrung und www.website.de/kategorie/gesunde-ernaehrung benötigt.
Klar, könnte ich eine ID anhängen, aber dann habe ich wieder eine URL wie www.website.de/gesunde-ernaehrung_3854
Ok, das Gegenargument ist natürlich, dass bei meinem Gedanken ja auch eine Ziffer angehängt wird, sobald die Bezeichnung nicht mehr eindeutig ist. Andererseits ist das ja nur in Ausnahmefällen der Fall. Deshalb möchte ich keine grundsätzliche ID anhängen…