Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Поиск и замена значений в базе данных
 
 автор: zavragnov   (04.02.2007 в 15:33)   письмо автору
 
 

Прошу помощи в написании функции, задача функции дать новое значение переменной, например функция приняла значение "index", после проверки в БД было найдено такое значение "index", исходя из этого функция должна изменить это значение на "index2", если и такое значение существует присвоить значение "index3" и так далее пока присвоенное значение не будет находиться .

В том что уже есть происходит только одно преобазование.


<?php 

function chpuchange($chpu

{
#

$result mysql_query("SELECT * FROM partition WHERE chpu = '".$_POST['chpu']."'"); 
    if(
mysql_num_rows($result) > 
  
    {   
    
$chpu $chpu."1";
                    
//chpuchange($chpu ); //если это раскоментировать происходит зацикливание
    
}
return 
$chpu;

}
#

$_POST['chpu'] = chpuchange($_POST['chpu']);

echo 
$_POST['chpu'];

?>

   
 
 автор: Trianon   (04.02.2007 в 19:07)   письмо автору
 
   для: zavragnov   (04.02.2007 в 15:33)
 

Я даже с заткнутыми ушами слышу, как Ваша БД ревет и просит, чтоб ее перепроектировали.

   
 
 автор: cheops   (05.02.2007 в 00:26)   письмо автору
 
   для: zavragnov   (04.02.2007 в 15:33)
 

Хм... а каково назначение скрипта? Может можно найти менее затратный мезанизм?

   
 
 автор: zavragnov   (05.02.2007 в 10:36)   письмо автору
 
   для: 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) > 
  
    {  
    
$_POST['chpu'] = $chpu."1";
    
    
$_POST['chpu'] = chpuchange($_POST['chpu']);
    }
return 
$_POST['chpu'];

}
#


$_POST['chpu'] = chpuchange($_POST['chpu']);


echo 
$_POST['chpu'];


?>

   
 
 автор: Trianon   (05.02.2007 в 10:46)   письмо автору
 
   для: zavragnov   (05.02.2007 в 10:36)
 

Тогда можно хранить в таблице базовую строку транслитерированного варианта и счетчик применений (в отдельном целочисленном поле). При добавлении очередной темы искать базу и наращивать счетчик. Целевой URL соствавлять из базы и текущего значения счетчика.

   
 
 автор: zavragnov   (05.02.2007 в 10:57)   письмо автору
 
   для: Trianon   (05.02.2007 в 10:46)
 

Да. Этот скрипт это и делает он и записывает в базу транслит варинт в базу, но как поставить счетчик во это вопрос? Так чтобы к найденным вжождениям прибавлялось число найденных вхождений. В приведенном скрипте название просто выводится в браузер, а у меня происходит запись в базу, просто не стал выкладывать лишнее.

Что хотелось бы!

Например скрит принял параметр "index", и в базе уже имеется "index", тогда он преобразует этот параметр в "index1", ну а если есть и "index1", то в "index2" и так далее.

   
 
 автор: Loki   (05.02.2007 в 11:00)   письмо автору
 
   для: Trianon   (05.02.2007 в 10:46)
 

по-моему, еще проще использовать для этого автоинкрементное поле.

   
 
 автор: zavragnov   (05.02.2007 в 11:19)   письмо автору
 
   для: Loki   (05.02.2007 в 11:00)
 

Да но в момент преобразований еще не извесно автоинкрементное поле, так как преобразование происходит перед записью в БД.

PS
А може есть какая-нибудь функия которая считает колличество запусков функции

   
 
 автор: Loki   (05.02.2007 в 13:59)   письмо автору
 
   для: 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

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования