1 (изменено: GrandMasterX, 2011-07-13 02:23:09)

Тема: Помогите начинающему программисту :)

Всем привет!
Задача такая:
есть две таблицы, мне нужно выбрать поля с обеих,НО! в одной таблице поле типа text и хранить значения цифровые(то есть там не одно значение, а целый список через запятую), второе поле это id типа int, мне нужно проверить вхождение id в text
ниже собссно сам код

SELECT
title
countries
FROM tourfirms
LEFT JOIN cities.CTName,cities.CTNameLat
WHERE tourfirms.countries=cities.country_id

собственно tourfirms.countries- типа text, а вот cities.country_id int. Я уже намучался придумывая как их сравнить...
Поскажите пожайлуста как сие чудо сотворить без шаманства и плясания с бубнами? smile

Или делай, или не делай - пытатся не надо.

2

Re: Помогите начинающему программисту :)

Попробуйте выбрать таким образом. Если не получится, то придется выбирать запросом все данные и дальше уже с помощью регулярного выражения PHP искать вхождения идентификатора.

SELECT
title
countries
FROM tourfirms
LEFT JOIN cities.CTName,cities.CTNameLat
WHERE tourfirms.countries = cities.country_id
OR tourfirms.countries LIKE CONCAT(cities.country_id, ",%")
OR tourfirms.countries LIKE CONCAT("%,", cities.country_id)
OR tourfirms.countries LIKE CONCAT("%,", cities.country_id, ",%")

3 (изменено: GrandMasterX, 2011-07-13 15:38:46)

Re: Помогите начинающему программисту :)

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'cities.CTNameLat WHERE tourfirms.countries = cities.country_id OR tourfirms.coun' at line 5
Печаль ><
Я так понимаю нужно терь tourfirms.countries  через explode() присвоить переменной?
то ест типа

<?php
$SQL= "SELECT
tourfirms.countries 
FROM tourfirms";
$res = mysql_query($SQL);
$countries = explode(",", $res);


                    for( $i=0; $i<=50; $i++)
                    {
                        $cityarrays[i] = $countries[i];
                        echo ($cityarrays[i]);
                    }


?>

И опять ничего О_о


МОжно обьяснить поподрбнее вот это:

OR tourfirms.countries LIKE CONCAT("%,", cities.country_id)
OR tourfirms.countries LIKE CONCAT("%,", cities.country_id, ",%")

Что означает "%," ?

Или делай, или не делай - пытатся не надо.

4

Re: Помогите начинающему программисту :)

Попробуйте так сделать.

SELECT
title
countries
FROM tourfirms, cities
WHERE tourfirms.countries = cities.country_id
OR tourfirms.countries LIKE CONCAT(cities.country_id, ",%")
OR tourfirms.countries LIKE CONCAT("%,", cities.country_id)
OR tourfirms.countries LIKE CONCAT("%,", cities.country_id, ",%")
GrandMasterX сказал:

Что означает "%," ?

Символ процента - это подстановочный знак выражения LIKE для любого количества любых символов. В запросе выбираем все возможные варианты совпадений идентификатора в строке.

5 (изменено: GrandMasterX, 2011-07-14 20:00:15)

Re: Помогите начинающему программисту :)

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'countries.CName WHERE tourfirms.countries LIKE CONCAT(countries.country_id, &quot;,%&quot;' at line 5

SELECT
title
countries
FROM tourfirms
LEFT JOIN countries.country_id,countries.CName
WHERE tourfirms.countries LIKE CONCAT(countries.country_id, ",%")
OR tourfirms.countries LIKE CONCAT("%,", countries.country_id)
OR tourfirms.countries LIKE CONCAT("%,", countries.country_id, ",%")

Тут я пытаюсь джойнить айдишки и название стран если такие страны есть в тектовом поле турфирм, в текстовом поле ни записаны через запятую, вот только все равно ошибку выдает sad

Попробовал еще так

SELECT
title
countries
FROM tourfirms
LEFT JOIN cities.CTName
WHERE tourfirms.countries LIKE CONCAT(cities.country_id, ",%")
OR tourfirms.countries LIKE CONCAT("%,", cities.country_id)
OR tourfirms.countries LIKE CONCAT("%,", cities.country_id, ",%")

привело к:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE tourfirms.countries LIKE CONCAT(cities.country_id, &quot;,%&quot;) OR tourfirms.coun' at line 6

попробовал по Вашему:

SELECT
title
countries
FROM tourfirms, cities
WHERE tourfirms.countries = cities.country_id
OR tourfirms.countries LIKE CONCAT(cities.country_id, ",%")
OR tourfirms.countries LIKE CONCAT("%,", cities.country_id)
OR tourfirms.countries LIKE CONCAT("%,", cities.country_id, ",%")

Работает, привело к тому что вывело все турфирмы в которых есть country_id из таблицы cities.
Но мне то нужно джойнить таблицы что б сделать связку:

Сначала title турфирмы,также поле с countries где перечислены все направления цифрами но в поле типа text.
Потом нужно джойнуть countries.country_id,countries.CName, при условии что countries.country_id присутствуют в поле tourfirms.countries, потом джойнить cities.CTName при условии что cities.country_id и countries.country_id. Все это нужно для того что бы на сайте в выпадающем списке отображали только те фирмы в которых есть направлния которые выбрал пользователь, направления я буду сравнивать по именам, так как база поиска предоставлена мне без доступа, а фирмы регистрируются у меня в БД, единственный спосом сделать таблицу джойнами, вытащить таким хитровы***м способом имя направления которое есть в турфирме и потом сравнить с выбором пользователя...
Если есть какой-то способ легче, который работает или похожее что-то - напишите, помогите разобратся, уже перепробовал все, спросил у кого только можно, в гугле подобного нет. Единственный вариант узнать у практиков.
Понимаю что у Вас итак много работы и свои дела, но я уже просто незнаю к кому обратится sad

Или делай, или не делай - пытатся не надо.

6

Re: Помогите начинающему программисту :)

Вышлите структуры таблиц и пару строк с данными в каждой, чтобы ими можно было оперировать. Приведите пример необходимой связи с теми данными, которые отправите. Отправьте все на hanut@php-myadmin.ru

7 (изменено: GrandMasterX, 2011-07-19 14:25:50)

Re: Помогите начинающему программисту :)

Нашел решение

SELECT t.title, t.countries, f.email, co.name AS city_name, co.city_id AS id, c.CName AS cityname, c.country_id AS countries_id
FROM tourfirms t
LEFT JOIN tourfirm_offices f ON t.firm_id = f.firm_id
LEFT JOIN ua_cities co ON co.city_id = f.city_id
LEFT JOIN countries c ON t.countries LIKE CONCAT( c.country_id, ",%" )
OR t.countries LIKE CONCAT( "%,", c.country_id )
OR t.countries LIKE CONCAT( "%,", c.country_id, ",%" )
WHERE t.pay_status =1 AND c.country_id=?
ORDER BY c.CName, t.title

Спасибо за подсказку!
Теперь еще б помогли решить вопрос с вставкой этого кода в php, и было бы супер. Так как оно чего-то матюкается


$link = mysql_pconnect($CONFIG['DB']['local']['mysql']['host'], $CONFIG['DB']['local']['mysql']['user'], $CONFIG['DB']['local']['mysql']['password']);
                mysql_select_db($CONFIG['DB']['local']['mysql']['db_name'], $link);

                $SQL = "SELECT t.title, t.countries, f.email, co.name AS city_name,
                            co.city_id AS id,
                            c.CName AS cityname,
                            c.country_id AS countries_id
                            FROM tourfirms t
                                LEFT JOIN tourfirm_offices f ON t.firm_id = f.firm_id
                                LEFT JOIN ua_cities co ON co.city_id = f.city_id
                  ----->     LEFT JOIN countries c ON t.countries LIKE CONCAT( c.country_id, ",%" ) OR t.countries LIKE CONCAT( "%,", c.country_id ) OR t.countries LIKE CONCAT( "%,", c.country_id, ",%" ))
                            WHERE t.pay_status =1 AND c.country_id=14
                                ORDER BY c.CName, t.title";
                $res = mysql_query($SQL);

                $out_city = "";
                while ($info = mysql_fetch_array($res)) {
                    $city_array[] = $info["id"];
                    $out_city .= "<option value='".$info["id"]."'>".iconv("windows-1251", "utf-8", $info["name"])."</option>";
                }

Пишет:

Syntax error:
expected: instanceof,OR,XOR,AND,?,||,/ ... и так далее
я так понимаю оно на OR матюкается. Только почему? другие знаки тоже погоды не делают.
Заранее благодарен.

Или делай, или не делай - пытатся не надо.

8

Re: Помогите начинающему программисту :)

Вы засунули двойные кавычки внутрь строки с двойными кавычками. Внутри строки с двойными кавычками допустимы только одинарные кавычки, либо экранированные двойные кавычки. Экранирование делается символом обратной косой черты ( c.country_id, \",%\" ).

9

Re: Помогите начинающему программисту :)

Огромное Вам спасибо!!!
Выручили smile

Или делай, или не делай - пытатся не надо.

10 (изменено: GrandMasterX, 2011-07-22 15:56:43)

Re: Помогите начинающему программисту :)

И еще инетересный вопрос smile Никак не могу понять как бы его сделать.

            <?
                include("../admin/config/db.conf.php");
                $link = mysql_pconnect($CONFIG['DB']['local']['mysql']['host'], $CONFIG['DB']['local']['mysql']['user'], $CONFIG['DB']['local']['mysql']['password']);
                mysql_select_db($CONFIG['DB']['local']['mysql']['db_name'], $link);

                $SQL = "SELECT t.title,
t.email,
c.name as city_name,
co.CName AS cityname,
f.countries
     FROM tourfirm_offices t
     LEFT JOIN ua_cities c ON c.city_id = t.city_id
     LEFT JOIN tourfirms f ON t.firm_id = f.firm_id
     LEFT JOIN countries co ON f.countries LIKE CONCAT( co.country_id, \",%\" )
     OR f.countries LIKE CONCAT( \"%,\", co.country_id )
     OR f.countries LIKE CONCAT( \"%,\", co.country_id, \",%\" )
  WHERE t.pay_status = 1
        
    ORDER BY c.name";
                $res = mysql_query($SQL);

                $out_city = "";
                while ($info = mysql_fetch_array($res)) {
                    $city_array[] = $info["id"];
                    $out_city .= "<option value='".$info["id"]."'>".iconv("windows-1251", "utf-8", $info["city_name"])."</option>";
                }


                $SQL = "SELECT t.title,
t.email,
c.name as city_name,
co.CName AS cityname,
f.countries
     FROM tourfirm_offices t
     LEFT JOIN ua_cities c ON c.city_id = t.city_id
     LEFT JOIN tourfirms f ON t.firm_id = f.firm_id
     LEFT JOIN countries co ON f.countries LIKE CONCAT( co.country_id, \",%\" )
     OR f.countries LIKE CONCAT( \"%,\", co.country_id )
     OR f.countries LIKE CONCAT( \"%,\", co.country_id, \",%\" )
  WHERE t.pay_status = 1

    ORDER BY c.name";
                $res = mysql_query($SQL);

                while ($info = mysql_fetch_array($res)) {
                    $agancy_array[] = $info;
                }
                //var_dump($agancy_array);
                //echo iconv("windows-1251", "utf-8", $data[0]["name"]);
            ?>
                <script>
                      var data = new Array();
                      data["empty"] = '<select name="why" style="width:200px;"><option>-------</option></select>';
                      <?
                      foreach ($city_array as $c_key => $c_value) {

                      ?>
                          data["<?=$c_value?>"] = '<select name="why" style="width:200px;">';

                      <?
                        foreach ($agancy_array as $a_key => $a_value) {
                            if ($a_value["id"] == $c_value) {
                    ?>
                                data["<?=$c_value?>"] += '<option value="<?=$a_value["email"]?>"><?=iconv("windows-1251", "utf-8", $a_value["title"])?></option>';
                    <?
                            }
                        }
                    ?>
                        data["<?=$c_value?>"] += '</select>';
                    <?
                    }
                      ?>
                      function changeCity(obj) {
                          document.getElementById("office").innerHTML = data[obj.value];
                      }
                  </script>


И оно выводит в выпадающем меня столько раз название города, к примеру Киев, сколько есть фирм в этом городе, как сделать так что бы повторения не выводились? И когда выбераешь город в выпадающем списке фирм тоже идут повторения фирм о_О
Как это можно убрать? Что бы они только 1 раз писались? Без повторений?:)
И, если я добавляю строку к примеру


WHERE t.pay_status = 1
AND cо.CName = "Австрия"

вместо

WHERE t.pay_status = 1

То вообще ничего не выводится.
Если пробовать через phpMyAdmin через SQL запрос то все супер, как швейцарские часы.

Или делай, или не делай - пытатся не надо.

11

Re: Помогите начинающему программисту :)

GrandMasterX сказал:

как сделать так что бы повторения не выводились?

Это делается через оператор группировки - GROUP BY, который должен предшествовать ORDER BY.

... WHERE t.pay_status = 1
GROUP BY cityname
ORDER BY c.name

В данном условии я ошибки не вижу. Все верно и должно работать, если в поле cо.CName есть запись с точным соответствием слову "Австрия". Только не забывайте экранировать двойные кавычки внутри SQL запроса.

WHERE t.pay_status = 1
AND cо.CName = "Австрия"

12

Re: Помогите начинающему программисту :)

Если честно я не пойму в чем дело...

$SQL = "
SELECT t.title,
t.email,
c.name as city_name,
c.city_id as id,
co.CName AS cityname,
f.countries
     FROM ua_cities c
     LEFT JOIN  tourfirm_offices t ON t.city_id = c.city_id
     LEFT JOIN tourfirms f ON t.firm_id = f.firm_id
     LEFT JOIN countries co ON (f.countries LIKE CONCAT( co.country_id, \",%\" )
     OR f.countries LIKE CONCAT( \"%,\", co.country_id )
     OR f.countries LIKE CONCAT( \"%,\", co.country_id, \",%\" ))
  WHERE t.pay_status = 1
  AND cо.CName = $turkey
  GROUP BY t.title
    ORDER BY c.name";

где

$turkey="Турция";

Тупо ничего не выводит в выпадающем меню, хотя через SQL в PhpMyAdmin выводит все фирмы где есть направление Турция о_О
Пробовал также

WHERE t.pay_status = 1
  AND cо.CName = \"Турция\"

Все равно пусто!
и даже через

WHERE t.pay_status = 1
  AND cо.CName = 'Турция'

Эфект нулевой...
Как Вы думаете, в чем может быть проблема?

Или делай, или не делай - пытатся не надо.

13

Re: Помогите начинающему программисту :)

AND cо.CName = '$turkey' - Так будет правильно; строки должны находиться в кавычках.

Попробуйте найти ошибку таким образом:
if (!$res = mysql_query($SQL)) exit(mysql_error());

14 (изменено: GrandMasterX, 2011-07-26 13:38:23)

Re: Помогите начинающему программисту :)

попробовал вывести так

var_dump($agancy_array);
                echo iconv("windows-1251", "utf-8", $data[0]["name"]);

в результате мне выдало NULL во всех случаях добавления фильтра по городам.

а когда не добавляешь отбор

AND cо.CName = '$turkey'

или

AND cо.CName = \"Турция\"

то выводит такое

array(31) { [0]=> array(12) { [0]=> string(8) "Adventec" ["title"]=> string(8) "Adventec" [1]=> string(24) "travel@adventecgroup.com" ["email"]=> string(24) "travel@adventecgroup.com" [2]=> string(4) "����" ["city_name"]=> string(4) "����" [3]=> string(4) "1160" ["id"]=> string(4) "1160" [4]=> string(7) "�������" ["cityname"]=> string(7) "�������" [5]=> string(7) "104,223" ["countries"]=> string(7) "104,223" } [1]=> array(12) { [0]=> string(9) "Celebrity" ["title"]=> string(9) "Celebrity" [1]=> string(22) "info@celebrity.kiev.ua" ["email"]=> string(22) "info@celebrity.kiev.ua" [2]=> string(4) "����" ["city_name"]=> string(4) "����" [3]=> string(4) "1160" ["id"]=> string(4) "1160" [4]=> string(9) "���������" ["cityname"]=> string(9) "���������" [5]=> string(17) "13,55,153,223,209" ["countries"]=> string(17) "13,55,153,223,209" } [2]=> array(12) { [0]=> string(11) "Comfortlife" ["title"]=> string(11) "Comfortlife" [1]=> string(20) "ns@comfortlife.in.ua" ["email"]=> string(20) "ns@comfortlife.in.ua" [2]=> string(4) "����" ["city_name"]=> string(4) "����" [3]=> string(4) "1160" ["id"]=> string(4) "1160" [4]=> NULL ["cityname"]=> NULL [5]=> string(2) "44" ["countries"]=> string(2) "44" } [3]=> array(12) { [0]=> string(14) "Diamond Travel" ["title"]=> string(14) "Diamond Travel" [1]=> string(21) "admin@d-travel.com.ua" ["email"]=> string(21) "admin@d-travel.com.ua" [2]=> string(4) "����" 

результат есть в общем))только он длиннее намного.

Что-то я все равно не могу понять почему оно при фильтре таком выбивает NULL, все же правильно!


Пробовал так как и Вы сказали - результата нету.

Если попробовать добавить if (!$res = mysql_query($SQL)) exit(mysql_error());   то когда таблица грузится при сборе данных и крутится круг загрузки то он просто виснет smile
Обрыв весь интернет, непонятно в чем ошибка, в мануалке тоже ничего. Все правильно, должно работать, НО не работает О_О Что за ..... ???
Есть у Вас какие-то еще идеи в чем может быть загвоздка?




вот весь кусок кода


   <form method="post" id="package_order_form"  name="package_order_form" action=''>
      <input type="hidden" name="action" value="package_tour_order_submit" />
      <input type="hidden" name="tour_id" value="<? echo $search_result['offers'][0]['id']; ?>" />
      <h4><? echo $lang['info_about_tourist']; ?></h4>
      <div class="error_form"></div>
      <div class="package_order_form">
        <div class="itt_first_level">
          <div class="first_frame">
              <h4>
        <?php
$turkey="Австрия";
                ?>
                
           
              </h4>
            <?
                include("../admin/config/db.conf.php");
                $link = mysql_pconnect($CONFIG['DB']['local']['mysql']['host'], $CONFIG['DB']['local']['mysql']['user'], $CONFIG['DB']['local']['mysql']['password']);
                mysql_select_db($CONFIG['DB']['local']['mysql']['db_name'], $link);

                $SQL = "SELECT t.title as title,
t.email as email,
c.name as city_name,
c.city_id as id,
co.CName AS cityname,
co.country_id,
f.countries
     FROM ua_cities c
     LEFT JOIN  tourfirm_offices t ON t.city_id = c.city_id
     LEFT JOIN tourfirms f ON t.firm_id = f.firm_id
     LEFT JOIN countries co ON f.countries LIKE CONCAT( co.country_id, \",%\" )
     OR f.countries LIKE CONCAT( \"%,\", co.country_id )
     OR f.countries LIKE CONCAT( \"%,\", co.country_id, \",%\" )
  WHERE t.pay_status = 1
  AND co.CName = '$turkey'

  GROUP BY city_name";
                $res = mysql_query($SQL);

                $out_city = "";
                while ($info = mysql_fetch_array($res)) {
                    $city_array[] = $info["id"];
                    $out_city .= "<option value='".$info["id"]."'>".iconv("windows-1251", "utf-8", $info["city_name"])."</option>";
                }



                $SQL = "
SELECT t.title as title,
t.email as email,
c.name as city_name,
c.city_id as id,
co.CName AS cityname,
co.country_id,
f.countries
     FROM ua_cities c
     LEFT JOIN  tourfirm_offices t ON t.city_id = c.city_id
     LEFT JOIN tourfirms f ON t.firm_id = f.firm_id
     LEFT JOIN countries co ON f.countries LIKE CONCAT( co.country_id, \",%\" )
     OR f.countries LIKE CONCAT( \"%,\", co.country_id )
     OR f.countries LIKE CONCAT( \"%,\", co.country_id, \",%\" )
  WHERE t.pay_status = 1
  AND co.CName = '$turkey'
  GROUP BY t.title
 ";
                $res = mysql_query($SQL);

                while ($info = mysql_fetch_array($res)) {
                    $agancy_array[] = $info;
                }

                             //   if (!$res = mysql_query($SQL)) exit(mysql_error());

            //    var_dump($agancy_array);
            //    echo iconv("windows-1251", "utf-8", $data[0]["name"]);
            ?>
                <script>
                      var data = new Array();
                      data["empty"] = '<select name="why" style="width:200px;"><option>-------</option></select>';
                      <?
                      foreach ($city_array as $c_key => $c_value) {

                      ?>
                          data["<?=$c_value?>"] = '<select name="why" style="width:200px;">';

                      <?
                        foreach ($agancy_array as $a_key => $a_value) {
                            if ($a_value["id"] == $c_value) {
                    ?>
                                data["<?=$c_value?>"] += '<option value="<?=$a_value["email"]?>"><?=iconv("windows-1251", "utf-8", $a_value["title"])?></option>';
                    <?
                            }
                        }
                    ?>
                        data["<?=$c_value?>"] += '</select>';
                    <?
                    }
                      ?>
                      function changeCity(obj) {
                          document.getElementById("office").innerHTML = data[obj.value];
                      }
                  </script>
           
                  <table cellspacing="0" class="tour_general_touriste" border="0" align="center"  id='order_form_table'>
                <tbody>
                  <tr>
                    <td><label class="title_strong">ФИО<span class="red_star">*</span>:</label></td>
                    <td class="second"><input tabindex="1" id="second_name" name="fio" value="<? echo post('second_name'); ?>" /></td>
                  </tr>
                  <tr>
                    <td><label class="title_strong">Город<span class="red_star">*</span>:</label></td>
                    <td class="second"><input tabindex="4" name="city" value="<? echo post('city'); ?>" /></td>
                  </tr>
                  <tr>
                    <td><label class="title_strong">Телефон<span class="red_star">*</span>:</label></td>
                    <td class="second"><input tabindex="5" name="tel" value="<? echo post('phone'); ?>" /></td>
                  </tr>
                  <tr>
                    <td><label class="title_strong">E-mail:</label></td>
                    <td class="second"><input tabindex="6" name="email" value="<? echo post('email'); ?>" /></td>
                    </tr>
                </tbody>
              </table>
              <div style="float:left; padding-top:10px;" align="center">
                  Выберете офис:
              </div>
              <table cellspacing="0" class="tour_general_touriste" border="0" align="center"  id='order_form_table'>
                <tbody>
                  <tr>
                    <td><label class="title_strong">Город:</label></td>
                    <td class="second">
                        <select style="width:200px;" onchange="changeCity(this)">
                            <option value="empty">-------</option>
                            <?=$out_city?>
                        </select>
                    </td>
                  </tr>
                 <tr>
                    <td><label class="title_strong">Офис:</label></td>
                    <td class="second">
                        <div id="office">
                            <select name="why" style="width:200px;">
                                <option>-------</option>
                            </select>
                        </div>
                    </td>
                  </tr>
                </tbody>
              </table>
              <input type="hidden" name="tour" value="<? echo $search_result['offers'][0]['id']; ?>" />
              <input type="hidden" name="action" value="send">
              <input type="hidden" name="hash" value="<?=$hash?>">
              <input type="hidden" name="time" value="<?=$time?>">
          </div>
          <div class="second_frame">

                    <span class="ittour_order_title">Погода в регионе <? echo $search_result['offers'][0]['locations'][0]['region_name']; ?></span>

                        <ul>
                    <?
                    if(is_array($search_result['offers'][0]['weather'])) {
                      foreach($search_result['offers'][0]['weather'] as $key => $weather) {
                        if($key > 3)
                          continue;
                        ?>
                        <li>
                            <span class="ittour_order_ico"><img src="http://module.ittour.com.ua/res/images/ico_weather_<? echo $weather['image_group']; ?>.gif" alt="" /></span>
                            <span class="ittour_order_date"><? echo date('d.m.y', strtotime($weather['date'])) ?></span>
                            <span class="ittour_order_night"  style="margin-left:10px;font-size:10px;">ночью: <span class="ittour_order_bleu_strong">+<? echo $weather['temperature_low'] ?></span><span class="ittour_order_bleu">°С </span></span>
                            <span class="ittour_order_day" style="margin-left:10px;font-size:10px;">днём: <span class="ittour_order_bleu_strong">+<? echo $weather['temperature_high'] ?></span><span class="ittour_order_bleu">°С</span></span>
                        </li>
                        <?
                      }
                    }
                    ?>
                        </ul>


          </div>
        </div>
        <div class="send_block">
        <input id="package_order_submit_button" tabindex="9" type="submit" name="" value="<? echo $lang['send']; ?>" onclick="document.package_order_form.submit()" /><span class="package_order_load"></span>

        </div>


      </div>


    </form>

    <? } ?>
Или делай, или не делай - пытатся не надо.

15

Re: Помогите начинающему программисту :)

Во втором запросе вместо строки:
$res = mysql_query($SQL);
Поставьте:
if (!$res = mysql_query($SQL)) exit(mysql_error());

16 (изменено: GrandMasterX, 2011-07-26 22:20:36)

Re: Помогите начинающему программисту :)

Получается пустое выпадающее меню. Ничего. о_О
какой-то бред, нету ошибки а оно вы****.

Или делай, или не делай - пытатся не надо.

17

Re: Помогите начинающему программисту :)

Тогда вышлите сам скрипт и дамп таблиц с которыми он работает на hanut@php-myadmin.ru

Как вышлите файлы, дайте знать.

18

Re: Помогите начинающему программисту :)

Отправил Вам на емейл.

Или делай, или не делай - пытатся не надо.

19

Re: Помогите начинающему программисту :)

Отпишите результаты пожайлуста smile

Или делай, или не делай - пытатся не надо.

20

Re: Помогите начинающему программисту :)

Посмотрел скрипты и дамп, никаких проблем не обнаружил, все должно работать.

Перекодировка не нужна, потому что данные в БД находятся в Юникоде (utf8), как и сама страница сайта.

21 (изменено: GrandMasterX, 2011-07-28 23:21:37)

Re: Помогите начинающему программисту :)

Должно, но не работает... А вот почему?
У Вас запрос работает?

Или делай, или не делай - пытатся не надо.

22

Re: Помогите начинающему программисту :)

GrandMasterX сказал:

У Вас запрос работает?

Оба запроса работают совершенно нормально и возвращают данные. Второй вопрос собирает данные в массив $agancy_array после чего идет разбор и формирование чего-то на JavaScript, что я не понял.

Уточните что именно не работает. Может PHP делает все как надо, а проблемы с JavaScript?

23

Re: Помогите начинающему программисту :)

все решил.
ВОт ответ

<?php
$var=$search_result['offers'][0]['locations'][0]['country_name'];
                ?>
                
           
              </h4>
            <?
                include("../admin/config/db.conf.php");
                $link = mysql_pconnect($CONFIG['DB']['local']['mysql']['host'], $CONFIG['DB']['local']['mysql']['user'], $CONFIG['DB']['local']['mysql']['password']);
                mysql_select_db($CONFIG['DB']['local']['mysql']['db_name'], $link);
                mysql_query("SET NAMES utf8");

                $SQL = "SELECT t.title as title,
t.email as email,
c.name as city_name,
c.city_id as id,
co.CName AS cityname,
co.country_id,
f.countries
     FROM ua_cities c
     LEFT JOIN  tourfirm_offices t ON t.city_id = c.city_id
     LEFT JOIN tourfirms f ON t.firm_id = f.firm_id
     LEFT JOIN countries co ON (f.countries LIKE CONCAT( co.country_id, \",%\" )
     OR f.countries LIKE CONCAT( \"%,\", co.country_id )
     OR f.countries LIKE CONCAT( \"%,\", co.country_id, \",%\" ))
  WHERE t.pay_status = 1
  AND co.CName = \"$var\"
  GROUP BY city_name";
                $res = mysql_query($SQL);

                $out_city = "";
                while ($info = mysql_fetch_array($res)) {
                    $city_array[] = $info["id"];
                    $out_city .= "<option value='".$info["id"]."'>".( $info["city_name"])."</option>";
                }



                $SQL = "
SELECT t.title as title,
t.email as email,
c.name as city_name,
c.city_id as id,
co.CName AS cityname,
co.country_id,
f.countries
     FROM ua_cities c
     LEFT JOIN  tourfirm_offices t ON t.city_id = c.city_id
     LEFT JOIN tourfirms f ON t.firm_id = f.firm_id
     LEFT JOIN countries co ON f.countries LIKE CONCAT( co.country_id, \",%\" )
     OR f.countries LIKE CONCAT( \"%,\", co.country_id )
     OR f.countries LIKE CONCAT( \"%,\", co.country_id, \",%\" )
  WHERE t.pay_status = 1
  AND co.CName = \"$var\"
  GROUP BY t.title";
$res = mysql_query($SQL);
                while ($info = mysql_fetch_array($res)) {
                    $agancy_array[] = $info;
                }

                             //   if (!$res = mysql_query($SQL)) exit(mysql_error());

                //var_dump($agancy_array);
                //echo iconv("windows-1251", "utf-8", $lang['country']);
                //echo ($search_result['offers'][0]['locations'][0]['country_name']);
            ?>
                <script>
                      var data = new Array();
                      data["empty"] = '<select name="why" style="width:200px;"><option>-------</option></select>';
                      <?
                      foreach ($city_array as $c_key => $c_value) {

                      ?>
                          data["<?=$c_value?>"] = '<select name="why" style="width:200px;">';

                      <?
                        foreach ($agancy_array as $a_key => $a_value) {
                            if ($a_value["id"] == $c_value) {
                    ?>
                                data["<?=$c_value?>"] += '<option value="<?=$a_value["email"]?>"><?=($a_value["title"])?></option>';
                    <?
                            }
                        }
                    ?>
                        data["<?=$c_value?>"] += '</select>';
                    <?
                    }
                      ?>
                      function changeCity(obj) {
                          document.getElementById("office").innerHTML = data[obj.value];
                      }
                  </script>
           
                  <table cellspacing="0" class="tour_general_touriste" border="0" align="center"  id='order_form_table'>
                <tbody>
                  <tr>
                    <td><label class="title_strong">ФИО<span class="red_star">*</span>:</label></td>
                    <td class="second"><input tabindex="1" id="second_name" name="fio" value="<? echo post('second_name'); ?>" /></td>
                  </tr>
                  <tr>
                    <td><label class="title_strong">Город<span class="red_star">*</span>:</label></td>
                    <td class="second"><input tabindex="4" name="city" value="<? echo post('city'); ?>" /></td>
                  </tr>
                  <tr>
                    <td><label class="title_strong">Телефон<span class="red_star">*</span>:</label></td>
                    <td class="second"><input tabindex="5" name="tel" value="<? echo post('phone'); ?>" /></td>
                  </tr>
                  <tr>
                    <td><label class="title_strong">E-mail:</label></td>
                    <td class="second"><input tabindex="6" name="email" value="<? echo post('email'); ?>" /></td>
                    </tr>
                </tbody>
              </table>
              <div style="float:left; padding-top:10px;" align="center">
                  Выберете офис:
              </div>
              <table cellspacing="0" class="tour_general_touriste" border="0" align="center"  id='order_form_table'>
                <tbody>
                  <tr>
                    <td><label class="title_strong">Город:</label></td>
                    <td class="second">
                        <select style="width:200px;" onchange="changeCity(this)">
                            <option value="empty">-------</option>
                            <?=$out_city?>
                        </select>
                    </td>
                  </tr>
                 <tr>
                    <td><label class="title_strong">Офис:</label></td>
                    <td class="second">
                        <div id="office">
                            <select name="why" style="width:200px;">
                                <option>-------</option>
                            </select>
                        </div>
                    </td>
                  </tr>
                </tbody>
              </table>
              <input type="hidden" name="tour" value="<? echo $search_result['offers'][0]['id']; ?>" />
              <input type="hidden" name="action" value="send">
              <input type="hidden" name="hash" value="<?=$hash?>">
              <input type="hidden" name="time" value="<?=$time?>">
          </div>

Нужно было поставить

 mysql_query("SET NAMES utf8"); 

а так же поубирать

.iconv()

и кодировка не глючит и все ищет супер!
Спасибо Вам огромнейшее за уделенное время! Без Вас я бы не справился smile

Или делай, или не делай - пытатся не надо.