Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.06.2010, 22:00
Интересующийся
Отправить личное сообщение для xDMK Посмотреть профиль Найти все сообщения от xDMK
 
Регистрация: 06.04.2010
Сообщений: 21

Проблема в коде SELECT
Я не понимаю где здесь ошибка но регины и города не выводяться.
<?php

define("db_prefix","pb_");

function sql($query) {
$db = mysql_connect('localhost','tari', '123456' );
mysql_select_db('tari',$db);	
$res=mysql_query ( $query );
if(!$res)die("Запрос:\n".$query."\n");
return $res;
}

// capital - ссылка на город столица государства
// telcod - телефонный код страны
sql('CREATE TABLE IF NOT EXISTS '.db_prefix.'country (
        id INT(25) NOT NULL AUTO_INCREMENT,
        PRIMARY KEY ( id ),
        name VARCHAR(64) NOT NULL UNIQUE,
        fullname VARCHAR(64) NOT NULL,
        english VARCHAR(64) NOT NULL,
        country_code2 CHAR(2) NOT NULL, 
        country_code3 CHAR(3) NOT NULL, 
        iso CHAR(3) NOT NULL, 
        telcod CHAR(4) NOT NULL,
        location ENUM("Азия", "Океания", "Европа", "Африка", "Антарктика", "Америка"),
        capital INT UNSIGNED NOT NULL
        ) DEFAULT CHARACTER SET cp1251 COLLATE cp1251_bin');

// capital - ссылка на город, обласной центр
sql('CREATE TABLE IF NOT EXISTS '.db_prefix.'area (
        id INT UNSIGNED NOT NULL AUTO_INCREMENT,
        PRIMARY KEY ( id ),
        name VARCHAR(64) NOT NULL, 
        okrug VARCHAR(64) NOT NULL,
        country INT UNSIGNED NOT NULL,
        autocod VARCHAR(12) NOT NULL,
        capital INT UNSIGNED NOT NULL
        ) DEFAULT CHARACTER SET cp1251 COLLATE cp1251_bin');

sql('CREATE TABLE IF NOT EXISTS '.db_prefix.'city (
        id INT UNSIGNED NOT NULL AUTO_INCREMENT,
        PRIMARY KEY ( id ),
        name VARCHAR(64) NOT NULL, 
        area INT UNSIGNED NOT NULL,
        telcod CHAR(7) NOT NULL,
        latitude FLOAT(10,6),
        longitude FLOAT(10,6)
        ) DEFAULT CHARACTER SET cp1251 COLLATE cp1251_bin');

// ip - начальный IP адрес диаппазона ip-адрессов одного провайдера
// count - количество ip-адресов
sql('CREATE TABLE IF NOT EXISTS '.db_prefix.'geo_ip (
        ip BIGINT UNSIGNED NOT NULL UNIQUE,
        count INT UNSIGNED NOT NULL,
        city INT UNSIGNED NOT NULL
        ) DEFAULT CHARACTER SET cp1251 COLLATE cp1251_bin');

if(isset($_GET['country'])){
   echo "<option value='0'>выбрать регион</option>\n";
   $res = sql('SELECT * FROM '.db_prefix.'area WHERE country="'.addslashes(param('country')).'"');
   while($row = mysql_fetch_array($res))
    echo "<option value='" . $row['id'] . "'>" . $row['name'] . "</option>\n";
   die;    
   }
elseif(isset($_GET['region'])){
   echo "<option value='0'>выбрать город</option>\n";
   $res = sql('SELECT * FROM '.db_prefix.'city WHERE area="'.addslashes(param('region')).'"');
   while($row = mysql_fetch_array($res))
    echo "<option value='" . $row['id'] . "'>" . $row['name'] . "</option>\n";
   die;    
   }
elseif(isset($_GET['city'])){
$city=addslashes(param('city')); LoadGeo();
echo "
<div style='border: #C5D3DC 1px solid; padding: 10px; width: 97%;'>
Город: <b>". $geo['city']."</b><br />
Регион: <b>". $geo['region']."</b><br />
Округ: <b>". $geo['okrug']."</b><br />
Страна: <b>".$geo['country']."</b><br />
Код страны: <b>".$geo['country_code2']."</b><br />
Код страны: <b>".$geo['country_code3']."</b><br />
Широта: <b>".$geo['latitude']."</b><br />
Долгота: <b>".$geo['longitude']."</b><br />
Телефонный код страны:<b>".$geo['telcod']."</b><br />
Телефонный код города:<b>".$geo['country_telcod']."</b><br />
Автомобильный код региона:<b>".$geo['autocod']."</b><br />
Столица <b>". $geo['capital']."</b><br />
Областной центр <b>". $geo['capital']."</b><br />
</div>";
   die;    
}

function LoadGeo() // для $city заполняет $geo и переменные $region, $country
{global $geo, $city, $region, $country;
   $res = sql('SELECT * FROM '.db_prefix.'city WHERE id='.$city.' LIMIT 1');
   if($row = mysql_fetch_array($res)){
     $geo['city']=$row['name'];
     $region=$row['area'];
     $geo['city_telcod']=$row['telcod'];
     $geo['latitude']=$row['latitude'];
     $geo['longitude']=$row['longitude'];
     $res = sql('SELECT * FROM '.db_prefix.'area WHERE id='.$region.' LIMIT 1');
     if($row = mysql_fetch_array($res)){
    $geo['region']=$row['name'];
    $geo['okrug']=$row['okrug'];
    $geo['autocod']=$row['autocod'];
    $country=$row['country'];
    $res = sql('SELECT * FROM '.db_prefix.'country WHERE id='.$country.' LIMIT 1');
    if($row = mysql_fetch_array($res)){
       $geo['country']=$row['name'];
       $geo['fullname']=$row['fullname'];
       $geo['english']=$row['english'];
       $geo['country_code2']=$row['country_code2'];
       $geo['country_code3']=$row['country_code3'];
       $geo['iso']=$row['iso'];
       $geo['country_telcod']=$row['telcod'];
       $geo['location']=$row['location'];
       }
    }
     }    
}

$ip2=ip2long(getenv('REMOTE_ADDR'));
$f_add=false;
if($ip2>0){
   $res = sql('SELECT * FROM '.db_prefix.'geo_ip where '.$ip2.' BETWEEN ip and ip+count LIMIT 1');
   if ($geo = mysql_fetch_assoc($res)) {$city=$geo['city']; LoadGeo();}
   }
?>

<div id='r7'>
</div>
<br /><br />
<select name="country" id="country" onLoad="this.focus = false;"
    onChange="ajaxLoad('region', 'index.php?country='+this.options[this.selectedIndex].value, '','',''); document.getElementById('region').disabled='';">
<option value="0">выбрать страну</option> 

<?php
$res = sql('SELECT * FROM '.db_prefix.'country');
while($row = mysql_fetch_array($res)){
   if($row['id']==@$country){
        echo "<option value='" . $row['id'] . "' selected='selected'>" . $row['name'] . "</option>\n";
        $country=$row['id'];}
   else
        echo "<option value='" . $row['id'] . "'>" . $row['name'] . "</option>\n";
}
?>
</select>

<select name="region" id="region" <?=(@$country?'':'disabled="disabled"')?>
    onChange="ajaxLoad('city', 'index.php?region='+this.options[this.selectedIndex].value, '','',''); document.getElementById('city').disabled='';">
<option value="0" disabled="disabled">выбрать регион</option> 
<?php
if(@$country){
$res = sql('SELECT * FROM '.db_prefix.'area WHERE country='.$country);
while($row = mysql_fetch_array($res)){
   if($row['id']==@$region){
        echo "<option value='" . $row['id'] . "' selected='selected'>" . $row['name'] . "</option>\n";
        $region=$row['id'];}
   else
        echo "<option value='" . $row['id'] . "'>" . $row['name'] . "</option>\n";
   }
}
?>

</select>


<select name="city" id="city" <?=(@$region?'':'disabled="disabled"')?>
    onChange="ajaxLoad('info', 'index.php?city='+this.options[this.selectedIndex].value, '','','');"> 

<option value="0" disabled="disabled">выбрать город</option> 
<?php
if(@$region){
$res = sql('SELECT * FROM '.db_prefix.'city WHERE area='.$region);
while($row = mysql_fetch_array($res)){
   if($row['id']==@$city){
        echo "<option value='" . $row['id'] . "' selected='selected'>" . $row['name'] . "</option>\n";
        $region=$row['id'];}
   else
        echo "<option value='" . $row['id'] . "'>" . $row['name'] . "</option>\n";
   }
}
?>
</select>

<div id="info">
</div>

<script language=JavaScript><!--
function ajaxLoad(obj,url,defMessage,post,callback){
  var ajaxObj;
  if (defMessage) document.getElementById(obj).innerHTML=defMessage;
  if(window.XMLHttpRequest){ 
      ajaxObj = new XMLHttpRequest(); 
  } else if(window.ActiveXObject){ 
      ajaxObj = new ActiveXObject("Microsoft.XMLHTTP");  
  } else { 
      return; 
  } 
  ajaxObj.open ((post?'POST':'GET'), url);
  if (post&&ajaxObj.setRequestHeader)
      ajaxObj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=windows-1251;");
 
  ajaxObj.onreadystatechange = ajaxCallBack(obj,ajaxObj,(callback?callback:null));
  ajaxObj.send(post); 
  return false;
  } 
function updateObj(obj, data, bold, blink){ 
   if(bold)data=data.bold();
   if(blink)data=data.blink();
   document.getElementById(obj).innerHTML = data; // упрощенный вариант, работает не во всех браузерах
  } 
function ajaxCallBack(obj, ajaxObj, callback){
return function(){
    if(ajaxObj.readyState == 4){
       if(callback) if(!callback(obj,ajaxObj))return;
       if (ajaxObj.status==200)
        updateObj(obj, ajaxObj.responseText);
       else updateObj(obj, ajaxObj.status+' '+ajaxObj.statusText,1,1);
    }
}}

//--></script>

Последний раз редактировалось xDMK, 07.06.2010 в 22:46.
Ответить с цитированием
  #2 (permalink)  
Старый 07.06.2010, 22:06
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

вы думаете кто-то будет разбирать эту кучу кода, из которого менее четверти относится к делу?

уменьшите ваш код до голого HTML+JS, оставив из них только то, что реально относится к вашим SELECT-ам

ДА, и вообще почему бы вам самому не попытаться отладить?
Я уж не говорю, о том, почему бы вам не задать свой вопрос разработчику скрипта?

Последний раз редактировалось Gvozd, 07.06.2010 в 22:10.
Ответить с цитированием
  #3 (permalink)  
Старый 07.06.2010, 22:44
Интересующийся
Отправить личное сообщение для xDMK Посмотреть профиль Найти все сообщения от xDMK
 
Регистрация: 06.04.2010
Сообщений: 21

понимаете скрипт рабочий и где я его взял он там работал я хочу знать проблему почему у меня не работает и просто найти ошибку... Я сидел кучу времени .. чтобы понять
Ответить с цитированием
  #4 (permalink)  
Старый 07.06.2010, 23:18
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

выложите ссылку на скрипт, работающий на вашем сайте
а лучше выложите тут минимальный вариант
а еще лучше отладьте сами.очень полезный навык
ссылку про отладку я выше уже написал
Ответить с цитированием
  #5 (permalink)  
Старый 16.06.2010, 00:24
Интересующийся
Отправить личное сообщение для xDMK Посмотреть профиль Найти все сообщения от xDMK
 
Регистрация: 06.04.2010
Сообщений: 21

У меня такая проблема: мне нужно чтобы при выборе страны появлялось в див сама страна. При выборе номера региона сам регион и так далее.
<script type="text/javascript">





   
  (function($){
  // очищаем select
  $.fn.clearSelect = function() {
	  return this.each(function(){
		  if(this.tagName=='SELECT') {
		      this.options.length = 0;
		      $(this).attr('disabled','disabled');
		  }
	  });
  }
  // заполняем select
  $.fn.fillSelect = function(dataArray) {
	  return this.clearSelect().each(function(){
		  if(this.tagName=='SELECT') {
			  var currentSelect = this;
			  $.each(dataArray,function(index,data){
				  var option = new Option(data.text,data.value);
				  if($.support.cssFloat) {
					  currentSelect.add(option,null);
				  } else {
					  currentSelect.add(option);
				  }
			  });
		  }
	  });
  }
})(jQuery);                                 

</script>
<script type="text/javascript">
$(document).ready(function(){

  // выбор автомобиля
  function adjustAuto(){
  	var countryValue = $('#cod_country').val();
  	var tmpSelect = $('#cod_contry');
  	if(countryValue.length == 0) {
  		tmpSelect.attr('disabled','disabled');
  		tmpSelect.clearSelect();
  		adjustModel();
		zone();
  	} else {
  		$.getJSON('ajaxcascade.php',{cod_country:countryValue},function(data) { tmpSelect.fillSelect(data).attr('disabled',''); adjustModel();zone();});
  		
  	}
  };
  // выбор модели
  function adjustModel(){
  	var countryValue = $('#cod_country').val();
  	var autoValue = $('#cod_contry').val();
  	var tmpSelect = $('#cod_def');
  	if(countryValue.length == 0||autoValue.length == 0) {
  		tmpSelect.attr('disabled','disabled');
  		tmpSelect.clearSelect();
  	} else {
  		$.getJSON('ajaxcascadedef.php',{cod_country:countryValue},function(data) { tmpSelect.fillSelect(data).attr('disabled',''); });
  	}
  };
	function zone() {
	var countryValue = $('#cod_country').val();		
	var zoneValue = $('#zone');
	
		$.getJSON('ajaxcascadezone.php',{cod_country:countryValue},function(data){zoneValue.text(data.value.id + ": " + data.text.zonme)});
		};
		
  $('#cod_country').change(function(){
	  zone();
  	adjustAuto();
  }).change();
  $('#cod_contry').change(adjustModel);
  $('#cod_def').change(function(){
  	if($(this).val().length != 0) { alert('Выбор сделан!'); }
  });

});
</script>
</head>
<body>

<h3 align="left">Введите номер для поиска</h3> 
<form action = "" method="POST" enctype="multipart/form-data"> 

 <tr>
 <td>

  <select id="cod_country">
    <option value="">Выбрать страну</option>
    <option value="1">Германия</option>
    <option value="2">Ю.Корея</option>
    <option value="3">Япония</option>
    <option value="4">Китай</option>
    <option value="5">Таджикистон</option>
    <option value="6">Япония</option>
    <option value="7">Россия</option>
    <option value="8">Америка</option>
    <option value="9">Татарстан</option>
  </select>
  </div>
</td>
 <td>
<select id="cod_contry" name="cod_contry" disabled="disabled"></select>
 </td>
 <td>
<select  id="cod_def" name="cod_def" disabled="disabled"></select>
</td>
<td width="100%">
<input type="text" name = "nkod" id="defaultKeypad">
<strong>@allo<span class="alloallru">all</span>.ru</strong>
<input type="submit" value="Поиск" name="submit">
</form>
</td>

</tr>
<tr>
<td>
<div id="zone"></div>
<div id="country"></div>
<div id="operator"></div>
</td>

<?php 
header('Content-Type: text/html; charset=windows-1251');
 if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {
$db = mysql_connect("localhost", "alloall", "12345");
mysql_select_db("alloall",$db);		 
	 
if ($_GET['cod_country'] == 1) {

	
$items=mysql_query('SELECT id, zone FROM alloall_code WHERE cod_zone=1');	


$json = '';
while ($a = mysql_fetch_assoc($items))
{
    $json .= ($json ? ',' : '') . '{"value" : "' . $a['id'] . '", "text" : "' . addslashes($a['zone']) . '"}';
}
if ($json){ 
	    echo '[' . $json . ']';}
}





 }
?>
Я сделал функции но почему то она не срабатывает. Если можно помогите составить.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с дизайном после отправки xmlhttprequest, Проблема с дизайном после отправки cyberx AJAX и COMET 3 01.05.2010 17:07
Продлема с получением данных из select Tartyga Общие вопросы Javascript 10 05.08.2009 22:13
Проблема с CSS COKOJIOB (X)HTML/CSS 5 04.08.2009 14:19
заполнить select значениями другого select Central Элементы интерфейса 1 30.05.2009 14:41
событие на выпадение-скрытие списка select Aderba jQuery 1 03.04.2009 21:51