Проблема в коде 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> |
вы думаете кто-то будет разбирать эту кучу кода, из которого менее четверти относится к делу?
уменьшите ваш код до голого HTML+JS, оставив из них только то, что реально относится к вашим SELECT-ам ДА, и вообще почему бы вам самому не попытаться отладить? Я уж не говорю, о том, почему бы вам не задать свой вопрос разработчику скрипта? |
понимаете скрипт рабочий и где я его взял он там работал я хочу знать проблему почему у меня не работает и просто найти ошибку... Я сидел кучу времени .. чтобы понять
|
выложите ссылку на скрипт, работающий на вашем сайте
а лучше выложите тут минимальный вариант а еще лучше отладьте сами.очень полезный навык ссылку про отладку я выше уже написал |
У меня такая проблема: мне нужно чтобы при выборе страны появлялось в див сама страна. При выборе номера региона сам регион и так далее.
<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 . ']';} } } ?> Я сделал функции но почему то она не срабатывает. Если можно помогите составить. |
Часовой пояс GMT +3, время: 03:53. |