|
|
|
| Прошу помощи в написании функции, задача функции дать новое значение переменной, например функция приняла значение "index", после проверки в БД было найдено такое значение "index", исходя из этого функция должна изменить это значение на "index2", если и такое значение существует присвоить значение "index3" и так далее пока присвоенное значение не будет находиться .
В том что уже есть происходит только одно преобазование.
<?php
function chpuchange($chpu)
{#
$result = mysql_query("SELECT * FROM partition WHERE chpu = '".$_POST['chpu']."'");
if(mysql_num_rows($result) > 0 )
{
$chpu = $chpu."1";
//chpuchange($chpu ); //если это раскоментировать происходит зацикливание
}
return $chpu;
}#
$_POST['chpu'] = chpuchange($_POST['chpu']);
echo $_POST['chpu'];
?>
|
| |
|
|
|
|
|
|
|
для: zavragnov
(04.02.2007 в 15:33)
| | Я даже с заткнутыми ушами слышу, как Ваша БД ревет и просит, чтоб ее перепроектировали. | |
|
|
|
|
|
|
|
для: zavragnov
(04.02.2007 в 15:33)
| | Хм... а каково назначение скрипта? Может можно найти менее затратный мезанизм? | |
|
|
|
|
|
|
|
для: cheops
(05.02.2007 в 00:26)
| | Этот скрипт предназначен для автоматической генераци урл (ЧПУ) через систему управления сайтом, пользователь (админ) пишет название статьи на русском, далее скрипт переводит это название в транслит, ищет нет ли такого названия в транслите в базе, если нет то записывает, если есть производит преобразование названия.
Вот что получилось у меня, может это как-то можно оптимизировать
<?php
if (empty($_POST['chpu']))
{
$_POST['chpu'] = translit($_POST['namemenu']) ;
}
function chpuchange($chpu)
{#
$result = mysql_query("SELECT * FROM partition WHERE chpu = '".$_POST['chpu']."'");
if(mysql_num_rows($result) > 0 )
{
$_POST['chpu'] = $chpu."1";
$_POST['chpu'] = chpuchange($_POST['chpu']);
}
return $_POST['chpu'];
}#
$_POST['chpu'] = chpuchange($_POST['chpu']);
echo $_POST['chpu'];
?>
|
| |
|
|
|
|
|
|
|
для: zavragnov
(05.02.2007 в 10:36)
| | Тогда можно хранить в таблице базовую строку транслитерированного варианта и счетчик применений (в отдельном целочисленном поле). При добавлении очередной темы искать базу и наращивать счетчик. Целевой URL соствавлять из базы и текущего значения счетчика. | |
|
|
|
|
|
|
|
для: Trianon
(05.02.2007 в 10:46)
| | Да. Этот скрипт это и делает он и записывает в базу транслит варинт в базу, но как поставить счетчик во это вопрос? Так чтобы к найденным вжождениям прибавлялось число найденных вхождений. В приведенном скрипте название просто выводится в браузер, а у меня происходит запись в базу, просто не стал выкладывать лишнее.
Что хотелось бы!
Например скрит принял параметр "index", и в базе уже имеется "index", тогда он преобразует этот параметр в "index1", ну а если есть и "index1", то в "index2" и так далее. | |
|
|
|
|
|
|
|
для: Trianon
(05.02.2007 в 10:46)
| | по-моему, еще проще использовать для этого автоинкрементное поле. | |
|
|
|
|
|
|
|
для: Loki
(05.02.2007 в 11:00)
| | Да но в момент преобразований еще не извесно автоинкрементное поле, так как преобразование происходит перед записью в БД.
PS
А може есть какая-нибудь функия которая считает колличество запусков функции | |
|
|
|
|
|
|
|
для: zavragnov
(05.02.2007 в 11:19)
| | а ничего преобразовывать не надо: пишете в базу как есть:
id name
1 index
2 index
3 news
4 index
|
получаем из базы:
SELECT CONCAT(name, id) FROM table
|
получаем
index1
index2
news3
index4
|
| |
|
|
|