Фанат, спасибо большое. Пошагово, вы меня вывели на нужный результат. И
SelenIT спасибо.
С dos, я умею работать, так как начинал освоение компьютера с dos и нортона, ну вы как раз правильно говорите что бы я в них делал запросы, чтробы понять их работу.
Я через phpmyadmin, выполнял нужные мне запросы и увидел результаты.
Я неправильно использовал функцию MID, я использовал ее как substr($, 0, 1) в PHP, а надо так MID($, 1, 1) для вывода первого символа.
Вот такой запросы $sql ="select DISTINCT MID(cities.cityrus, 1, 1) ..." и такой вывод результата запроса
... $result = db_result_to_array($result);
Выдает массив букв, в данном случае без повторения.
! Замечу, что SUBSTR, в любом варианте не выполняется, выдается ошибка.
А вот дальше, при помощи циклов, я делаю вывод, в зависимости от того, чему равна $pay, которую я также извлекаю из массива результата БД:
$sql ="select DISTINCT MID(cities.cityrus, 1, 1), order.pay ...
Из-за этого, получается что при извлечении из БД букв, например если для слов на букву 'М', есть $pay = yes, = no и = NULL, буква 'М' выводится 3 раза, чтоюы она выводилась один раз и подсвечивалась, потому что $pay = yes, я сделал это при помощи двух циклов:
//Вот так вот я решаю вопрос, с тем чтобы не было повторов в запросе
$QUERY_STRING = (isset($letter)) ? eregi_replace('&letter='.$letter, '', strtolower($_SERVER['QUERY_STRING'])) : $_SERVER['QUERY_STRING'];
PHP:
// Сначала я вывожу весь список букв в одну переменную для которых $pay = 'yes'
$row_repeat = '';
foreach ($letter_array as $row)
{
if($row['pay'] == 'yes')
$row_repeat .= $row[0].' ';
}
//Затем уже я вывожу буквы в зависимости от значение $pay, и если при $pay = 'yes' есть например буква М,
//и такая же буква есть при $pay = '', то я не вывожу букву М при $pay = ''
foreach ($letter_array as $row)
{
if($row['pay'] == 'yes')
$letter_select .= $select.' <a href="?'.$QUERY_STRING.'&letter='.strtolower($row[0]).'">'.$row[0].'</a> '."\n";
if($row['pay'] == '' && !stristr($row_repeat, $row[0]))
$letter_select .= $select.' <a href="?'.$QUERY_STRING.'&letter='.strtolower($row[0]).'" id="letter_select">'.$row[0].'</a> '."\n";
}
Возможно я как-то сильно накрутил с двумя циклами, но одним у меня не получалось это решить. Если это не грубая ошибка, ну нормальный вараинт, то хорошо.
Всетаки, я могбы и с массиовом возится, который содержал 1500 городов, из-за этого кстати я не мог выводить данные на определенную букву в два столбца (никак не выходило это обработать), НО
Фанат как никак вывел меня на более корректное решение, и до этого мне также так сказать оптимизировали мой код, поэтому я стораюсь всегда советоваться с корректностью и правильностью какого-либа сложного для меня кода.