2011-10-15 1 views
0

J'ai une table DB nommée games qui permet simplement de simplifier par exemple les colonnes "id" et "gametitle" et qui contient environ 7 000 lignes.Comment générer un alias SEF pour une valeur de chaîne DB

Ce que je voudrais faire est d'avoir un morceau de SQL qui génèrerait un alias SEF pour le gametitle que je peux utiliser dans l'URL (J'ai réécriture d'URL fonctionnant avec succès sur le site).

Le nouveau champ serait entré dans une nouvelle colonne nommée "gamealias". Ainsi, par exemple, si j'avais un gametit de "Halo: Combat Evolved", il supprimerait tous les caractères spéciaux et produirait quelque chose de similaire à "halo-combat-evolué". Tous les alias de la table doivent être uniques car ils vont être utilisés dans l'url des jeux ... par ex. En outre, il serait bien que lors de l'insertion d'une nouvelle ligne, l'alias pourrait être généré automatiquement à partir de SQL sans avoir à le gérer en PHP (peut-être en utilisant la valeur par défaut des champs SQL), mais je ne sais pas attention à faire cela en PHP si ce n'est pas possible magiquement en SQL.

Répondre

0

Je pense que cela pourrait être fait dans MySQL en utilisant un trigger et un UDF regex-replace, mais ce serait probablement un chemin plus simple utilisant PHP. Vous pourriez facilement garantir l'unicité de gamealias si vous intégrez la clé primaire du titre avec la chaîne. Par exemple, considérons quelque chose qui produirait "halo-combat-evolved-321".

+0

hmmm, cela porte à réfléchir! la clé primaire contenue dans l'alias sonne comme une bonne idée .... mais je ne pense pas avoir les compétences MySQL nécessaires pour écrire ma propre fonction définie par l'utilisateur :( Merci, pour la perspicacité! :) – flexage

+0

@ flexage, si vous voulez aller sur la route UDF regex-replace, jetez un oeil à http://www.mysqludf.org/lib_mysqludf_preg/ ou https://launchpad.net/mysql-udf-regexp ... – imm

+0

merci, Je vais prendre une lecture et voir si je suis au travail! ;) – flexage

Questions connexes