Проверьте имя уникальным, если не добавить - PullRequest
1 голос
/ 24 мая 2010

Мое приложение требует, чтобы пользователь ввел свое фирменное наименование, которое приложение автоматически создаст в уникальный идентификатор, который будет использоваться в URL-адресах, т.е.

"Кафе Боба" станет "Бобс-кафе"

Но если есть повторяющиеся имена, я бы хотел, чтобы приложение добавило номер, поэтому, если уже есть "bobs-cafe", мы будем использовать "bobs-cafe-1", а также, если уже есть "bobs-cafe" -1 "будем использовать" бобс-кафе-2 "

Я использовал explode и также просматривал регулярные выражения, но я не знаю, как лучше всего подойти к этому.

Я застрял в возможности получить число, увеличить его и вернуть строку

Ответы [ 3 ]

4 голосов
/ 24 мая 2010

Добавляя к ответу Сарфраза, вы можете захотеть найти его с помощью оператора LIKE

SELECT `urlIdentifier` FROM `businesses` WHERE `urlIdentifier` LIKE `bobs-cafe%`

, который получит все элементы кафе-бобов - таким образом, если вы получите 5 строк, которые, как вы знаете, есть

bobs-cafe
bobs-cafe-1
bobs-cafe-2
bobs-cafe-3
bobs-cafe-4

и что вам нужно будет добавить bobs-cafe-5

РЕДАКТИРОВАТЬ - Или это:

SELECT count(*)  as `howMany` FROM `businesses` WHERE `urlIdentifier` LIKE `bobs-cafe%`

Теперь ваш объект результата (или массив) будетиметь общее количество:

echo $ resultObject-> howMany;// количество найденных боб-кафе sql

2 голосов
/ 24 мая 2010

Почему бы не добавить номер автоинкремента к каждому идентификатору в URL-адресе?
Точно так же, как SO:

stackoverflow.com / questions / 2895334 / php-application-check-name-is-unique-if-not-append

так что у вас есть и уникальный идентификатор, и название компании.

Это даже лучше, потому что они могут свободно менять название своей компании,без изменения идентификатора.

По вашему вопросу это очень просто.Просто для практики PHP:

if (/* you've found the name is already non unique and have the max one in the $id */) {
  $parts = explode("-",$id);
  if (isset($parts[1])) $newid = $parts[0]."-".($parts[1]+1);
  else $newid = $parts[0]."-1";
}
1 голос
/ 24 мая 2010

Предполагая, что $user уже находится в форме bobs-cafe

function username_exists ( $user ) {

      $result = mysql_query("SELECT name FROM table WHERE $name LIKE '$user%' ");
      $count = mysql_num_rows($result);

        if ( $result ) {

            $num = $count+1;
            return username_exists ( $user.'-'.$num ) ;

        } else {

            return $user;
        }

}
...