|
|
|
| Подскажите, пожалуйста, как можно выводить текст с таблицы, но при этом в зависимости от обстановки менять некоторые слова в этом тексте, словами из другой таблицы? Можно вставить в текст который в таблице переменную, которой и будет присваиваться другие слова с других таблиц? Или не получиться??? | |
|
|
|
|
|
|
|
для: xpom
(08.07.2008 в 13:10)
| | Помогите плиз... | |
|
|
|
|
|
|
|
для: xpom
(08.07.2008 в 13:10)
| | Вы бы привели пример....
На голом SQL такие вещи делать неудобно.
Проще будет получить данные и выполнить замены на php-уровне. | |
|
|
|
|
|
|
|
для: Trianon
(08.07.2008 в 17:26)
| | Вот смотрите, одна таблица, которая содержит выводимый текст:
CREATE TABLE `opis` (
`OID` int(11) NOT NULL auto_increment,
`San` int(11) NOT NULL default '0',
`OName` varchar(40) default NULL,
`discript` varchar(255) NOT NULL default '',
PRIMARY KEY (`OID`),
KEY `San` (`San`)
) ENGINE=MyISAM DEFAULT CHARSET=cp125 ;
|
получаем текст из таблицы в рнр:
$res = mysql_query("SELECT * FROM opis",$db);
if(!$res) exit("Ошибка в синтаксисе запроса");
if ($myrow = mysql_fetch_row($res)) {
$dis=$myrow[3];
}
|
теперь нужно одни и те же слова из этого полученного текста, менять на другие из вот этой таблицы (колонка STName в таблице), в зависимости от id кот будет в адресной строке, т.е. методом GET передаваться.
CREATE TABLE IF NOT EXISTS sity (
STID INTEGER NOT NULL AUTO_INCREMENT,
STName VARCHAR(30),
Primary Key (STID)
)
|
вот как менять в тексте, который будет браться из первой таблицы ( $dis=$myrow[3]; ), словами из второй таблицы? | |
|
|
|
|
|
|
|
для: xpom
(09.07.2008 в 12:11)
| | Как же можно заменять слоа в тексте, помогите пожалуйста, может кто знает..??? | |
|
|
|
|
|
|
|
для: xpom
(09.07.2008 в 12:11)
| | Структура таблиц - это замечательно.
Теперь бы еще несколько строк из дампа данных этих таблиц,
пример вызова, и текст ожидаемого результата. | |
|
|
|
|
|
|
|
для: Trianon
(09.07.2008 в 14:51)
| | таблица с текстом имеет следующий обычный текст:
INSERT INTO `opis` VALUES(5, 4, 'Увлечение', 'идет описание... и имеется название города... Москва ... описание... Москва... описание, ');
INSERT INTO `opis` VALUES(5, 7, 'Отдых', 'идет описание... и имеется название города... Москва ... описание... Москва... описание, ');
|
и вот дамп таблицы с городами:
INSERT INTO `opis` VALUES(1, 'Омск');
INSERT INTO `opis` VALUES(5, 'Новосибирс');
|
Нужно вывести текст первой таблицы (discript) с заменой города Москва на Омск, в другом варианте на Новосибирск, в зависимости от того какое значение имеет переменная в адресной строке...
вот например выводим:
$res = mysql_query("SELECT opis FROM Cat
WHERE OID=".$_GET['op'],$db);
if(!$res) exit("Ошибка - ".mysql_error());
if ($myrow = mysql_fetch_row($res)) {
$opis=$myrow[3];
}
else {
$opis='no';
}
echo "$opis";
|
ну это я просто вывел а нужно с заменой города... | |
|
|
|
|
|
|
|
для: xpom
(09.07.2008 в 16:13)
| | Из приведенного содержимого таблиц никак не выходит, что должно меняться именно слово "Москва" | |
|
|
|
|
|
|
|
для: Trianon
(09.07.2008 в 16:28)
| | Да меняться должно слово "Москва".
Ну может есть какие ошибки... | |
|
|
|
|
автор: .... (09.07.2008 в 19:54) |
|
|
для: xpom
(09.07.2008 в 18:08)
| | (initialization) 0.0000192
Opening tables 0.0000557
System lock 0.0000022
Table lock 0.0000035
init 0.0000057
optimizing 0.0000027
statistics 0.000005
preparing 0.0000047
executing 0.000036
Sending data 0.0000275
end 0.0000042
query end 0.0000035
freeing items 0.0000065
closing tables 0.000003
removing tmp table 0.0000232
closing tables 0.000006
logging slow query 0.0000027
Отображает строки 0 - 5 (6 всего, запрос занял 0.0053 сек.)
при первом запросе , не использующем кэшированные данные
(SELECT `OID`,
`San`, `OName`, REPLACE(discript, 'Москва', (SELECT STName FROM sity WHERE STID=1)) FROM opis)
UNION ALL
(SELECT `OID`,
`San`, `OName`, REPLACE(discript, 'Москва', (SELECT STName FROM sity WHERE STID=5)) FROM opis)
|
| |
|
|
|
|
|
|
|
для: ....
(09.07.2008 в 19:54)
| | До чего полезное дело - на таблице из трех строк запускать бенчмарки. | |
|
|
|
|
автор: ,,,, (09.07.2008 в 20:05) |
|
|
для: Trianon
(09.07.2008 в 19:59)
| | я о том-же , всего ничего данных , а такое большевастенькое время выполнения ) | |
|
|
|
|
|
|
|
для: ,,,,
(09.07.2008 в 20:05)
| | Каков запрос - таков ответ.
Тогда уж:
SELECT `OID`, `San`, `OName`, REPLACE(discript, 'Москва', STName) FROM opis,sity
|
Не люблю кросс-джоинов, но по-моему, это куда лучше, чем Ваш UNION | |
|
|
|
|
|
|
|
для: xpom
(09.07.2008 в 16:13)
| | То есть получить строку с текстом в переменную $opis Вы умеете.
Теперь, помимо этого, получите точно также из другой таблицы строку с текстом в переменную $gorod.
Останется лишь заменить слово:
$opis = str_replace('Москва', $gorod, $opis);
После чего - вывести. | |
|
|
|
|
|
|
|
для: Trianon
(09.07.2008 в 19:55)
| | Спасибо большое, вроде все понятненько...заменяет команда str_replace, я так понял.
Буду пробовать, еще раз спасибо Вам... | |
|
|
|