Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как вытащить все записи с поля таблицы после символа “/”, начинающиеся с англ. буквы средствами php?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Roman25
Отправлено: 14 Августа, 2015 - 11:30:15
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




Всем привет.
Такая проблема. Есть таблица data. В таблице есть поле title, в котором хранятся записи в таком виде - "Текст на русском / Some english text".
Как мне составить запрос, чтобы вытащить все текстовые записи с поля title после символа "/" (и пробела), которые, например, начинаются с буквы "S".
Должно выводиться что-то вроде:
Some english text,
Some text2,
Something else. и т.д.
Или с любой другой первой англ. буквы.
Буду очень благодарен.
 
 Top
andrewkard
Отправлено: 14 Августа, 2015 - 11:33:38
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




Roman25
Берите все записи из базы и потом обрабатывайте.
PHP:
скопировать код в буфер обмена
  1.  
  2. $str='Текст на русском / Some english text';
  3. $pos=strpos($str,' / ');
  4. if ($pos !== false){
  5.     $str=substr($str,$pos+3);
  6. }
  7. echo $str;
  8.  
 
 Top
Deonis
Отправлено: 14 Августа, 2015 - 11:40:55
Post Id



Посетитель


Покинул форум
Сообщений всего: 298
Дата рег-ции: Нояб. 2009  


Помог: 14 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT
  2.     SUBSTRING('Текст на русском / Some english text',
  3.     INSTR('Текст на русском / Some english text','/ ') + 1) AS `title` FROM DUAL;
  4. /* Some english text */

(Отредактировано автором: 14 Августа, 2015 - 11:41:59)

 
 Top
Roman25
Отправлено: 14 Августа, 2015 - 11:57:38
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




Что вы мне пишете? Здесь, наверное, должна быть регулярка.
Что-то в таком роде:

$result = mysql_query ("SELECT id,title FROM data WHERE title REGEXP '^[A-Z]' ORDER BY title ",$db);
$myrow = mysql_fetch_array ($result) .. и т.д.

Но так извлекает все записи, которые начинаются с A-Z.
А мне нужно после символа "/" , начиная с первой англ. буквы - типа как Like 'а%'.
Но я не знаю, как это написать.
 
 Top
Deonis
Отправлено: 14 Августа, 2015 - 12:28:21
Post Id



Посетитель


Покинул форум
Сообщений всего: 298
Дата рег-ции: Нояб. 2009  


Помог: 14 раз(а)




Roman25 пишет:
Что вы мне пишете?
А вы с трёх попыток догадайтесь. Мне же приходиться догадываться в чем смысл вашего вопроса. Его можно интерпретировать по разному.
В любом случае, я вам показал, как получить подстроку после слеша. Нужно еще проверить первую букву? Тогда добавьте REGEXP.
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT
  2.     *
  3. FROM
  4.     `data`
  5. WHERE
  6.     LTRIM(SUBSTRING(`title`, INSTR(`title`,'/ ') + 1)) REGEXP "^[A-Z]"

(Добавление)
В принципе можно и так сделать:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT
  2.     *
  3. FROM
  4.     `data`
  5. WHERE
  6.     `title` REGEXP "/ [A-Z]"
Скорость обработки увеличиться, а вот точность результата - нет

(Отредактировано автором: 14 Августа, 2015 - 12:32:36)

 
 Top
Roman25
Отправлено: 14 Августа, 2015 - 13:28:55
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




Так, как Вы написали, выводит все записи подряд.
"Текст на русском / Some english text"
"Текст на русском2 / Text english "
"Текст на русском3 / English Some text" и . т.д

А я хочу, чтобы вытягивались все на одну букву, например, на "S".
Вот так:
Some english text, (с "Текст на русском / Some english text")
Some text2, (с "Текст на русском / Some text2")
Something else (с "Текст на русском / Something else")
 
 Top
andrewkard
Отправлено: 14 Августа, 2015 - 15:32:54
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




Roman25
Вам же показали, как вычленить в запросе часть строки, делайте по аналогии:

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `data` WHERE LTRIM(SUBSTRING(`title`, INSTR(`titlet`,'/ ') + 2, 1)) = "S"
 
 Top
Roman25
Отправлено: 14 Августа, 2015 - 15:41:00
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




Выводит, например, так.
Рейд: Искупление / Serbuan Maut
Седьмой сын / Seventh Son
и т.д.
А как сделать, чтобы выводило так:
Serbuan Maut
Seventh Son
..?
 
 Top
andrewkard
Отправлено: 14 Августа, 2015 - 16:08:04
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT SUBSTRING(`title`, INSTR(`title`,'/ ')+2) FROM `data` WHERE LTRIM(SUBSTRING(`title`, INSTR(`title`,'/ ') + 2, 1)) = "S"
  3.  
 
 Top
Roman25
Отправлено: 14 Августа, 2015 - 16:24:37
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




Не работает. Ничего не выводит.
 
 Top
andrewkard
Отправлено: 14 Августа, 2015 - 16:35:29
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




Пробуйте, я тестировал на MySQL- выводит как нужно:
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT * FROM `data` WHERE LTRIM(SUBSTRING(`title`, INSTR(`title`,'/ ') + 2, 1)) = "S"
  3.  
  4. SELECT SUBSTRING(`title`, 10) FROM `data` WHERE LTRIM(SUBSTRING(`title`, INSTR(`title`,'/ ') + 2, 1)) = "S"
  5.  
  6. SELECT SUBSTRING(`title`, INSTR(`title`,'/ ')+2) FROM `data` WHERE LTRIM(SUBSTRING(`title`, INSTR(`title`,'/ ') + 2, 1)) = "S"
  7.  


и так далее, ищите в чем причина
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB