Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2012, 00:29   #1
Fier
Пользователь
 
Регистрация: 12.02.2011
Сообщений: 21
По умолчанию PHP + AJAX

Сутки уже долбаюсь.

Ситуация:

Есть области и города. При загрузке страницы области подгружаются вместе с ней. Вы выбираете нужную вам область, и подгружаются при помощи аджакса города именно той области. Но, посколько они подгружаются потом, ПХП считает его уже пустым. Тоесть когда я посылаю его на обработчик, то получаю только область.

Посоветуйте как поступить.


Сама форма:

Код HTML:
<td>
					Регион:<font color="red">*</font> 
					</td>
					<td>
					<div style="display: none" id="loading_region"><img alt="" src="/img/ajax_loader.gif" />Загрузка...</div>
					<div>
	
		   			<select name="regionid" id="region" onchange="getList('city', 'region')" style="width:300px;">
		   		    <?php
		   		    $sql = mysql_query("SELECT id,name FROM region");
		   		    $row = mysql_fetch_array($sql);
		   		    do {
					printf('
					<option value="%s">%s</option>
					',$row['id'],$row['name']);}
					while ($row = $row = mysql_fetch_array($sql));
		   		    ?> 
		   		    </select>
					</div>
					</td>
					</tr>
					<tr>
					<td>
					Город:<font color="red">*</font> 
					</td>
					<td>
					<div style="display: none" id="loading_city"><img alt="" src="/img/ajax_loader.gif" />Загрузка...</div>
					<div>
		   			<select name="city_id" id="city" style="width:300px;">
		   		    <option>-Выберите город-</option>
		   		    		   		         
		   		    </select>
					</div>
PHP код:


<?php

include ('backend/bd.php');

if (isset(
$_POST['regionid'])){ $regionid $_POST['regionid']; if ($regionid == '') { unset($regionid);} }
if (isset(
$_POST['city_id'])){ $city_id $_POST['city_id']; }
if (isset(
$_POST['lname'])){ $lname $_POST['lname']; if ($lname == '') { unset($lname);} }
if (isset(
$_POST['fname'])){$fname $_POST['fname']; if ($fname == '') { unset($fname);} }
if (isset(
$_POST['sname'])){$sname $_POST['sname']; if ($sname == '') { unset($sname);} }
if (isset(
$_POST['tel'])){$tel $_POST['tel']; if ($tel == '') { unset($tel);} }
if (isset(
$_POST['addtel'])){$addtel $_POST['addtel']; if ($addtel == '') { unset($addtel);} }
if (isset(
$_POST['skype'])){$skype $_POST['skype']; if ($skype == '') { unset($skype);}  }
if (isset(
$_POST['mail'])){$mail $_POST['mail']; if ($mail == '') { unset($mail);} }
if (isset(
$_POST['bday'])){$bday $_POST['bday']; if ($bday == '') { unset($bday);} }
if (isset(
$_POST['bmonth'])){$bmonth $_POST['bmonth']; if ($bmonth == '') { unset($bmonth);} }
if (isset(
$_POST['byear'])){$byear $_POST['byear']; if ($byear == '') { unset($byear);} }
if (isset(
$_POST['training'])){$training $_POST['training']; if ($training == '') { unset($training);} }

$sql_city mysql_query("SELECT name FROM city WHERE id = $city_id");
$sql_region mysql_query("SELECT name FROM region WHERE id = $regionid");
$row_city mysql_fetch_array($sql_city);
$row_region mysql_fetch_array($sql_region);



echo 
$city_id;
echo 
$row_region['name'];
echo 
$row_city['city_id'];
//echo $lname;
//$sql = mysql_query("INSERT INTO clients (lname,fname,sname,tel,addtel,skype,mail,bday,bmonth,byear,training,invite_by,dateadd,timeadd) VALUES ('$lname','$fname','$sname','$tel','$addtel','$skype','$mail','$bday','$bmonth','$byear','$training','$lname_info $fname_info $sname_info','$dateadd','$timeadd')");

//if ($sql=='true'){
//echo "Запись успешно добавлена!"; 
//}
//else {
//echo "Произошла ошибка!";
//}


?>
Так же пытался курить АДЖАКС запросы, но я его слабо очень знаю, поэтому ничего не получилось.

Вышло вот что:

<script type="text/javascript">

$(document).ready(function(){
$("#button").click(function(){

var region = $("#region").val();
var city = $("#city").val();

$.ajax({
type: "POST",
url: "save_clients.php",
region:$("#region").val(),
* * city:$("#city").val(),
cache: false

});

});

</script>

Но я не знаю. надо ли на кнопку вешать что-то...
Fier вне форума Ответить с цитированием
Старый 10.12.2012, 08:53   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

Ajax вешаешь на onChange запрос <SELECT>
при изменении по селекту - меняется соответствующий списков в другом селекте....
все это в форме должно быть - при отправке- все значения будут передаваться
ADSoft вне форума Ответить с цитированием
Старый 10.12.2012, 13:41   #3
Fier
Пользователь
 
Регистрация: 12.02.2011
Сообщений: 21
По умолчанию

Есть уже прогресс. Прикрутил я аджакс:

Код:
 <script type="text/javascript">

$(document).ready(function(){
    $("#button").click(function(){
 
     var region = $("#region").val();
     var city = $("#city").val();
	    
	 alert(region + "-" + city);   
	    
      $.ajax({
 * * * * *type: "POST",
 * * * * *url: "save_clients.php",
 * * * * *data: {
 * * * * * * *region: region,
 * * * * * * *city: city,
 
 * * * * }
 });
 });
 
 });
 
</script>
Повесил его на кнопку. Вот только слабый все же прогресс. Алертом оно выводит все равно только область. Почему-то оно не подтягивает города.

Код:
<?php
mysql_connect('localhost', 'root', '111' );
mysql_select_db('ovb');
mysql_query('set names utf8');

$id   = (int)$_POST['id']; // id объекта (страна или регион)
$type = $_POST['type']; // тип списка, который нужно получить (города или регионы)

sleep(1); // картинка

if ($type == 'city') {
	// выбираем города в данном регионе
	$result = mysql_query('SELECT * 
    	                   FROM city 
    	                   WHERE region_id = '.$id.' 
    	                   ORDER BY name');
	if (!empty($result)) {
		echo "out.options[out.options.length] = new Option('-Выберите город-','none');\n";
		while ($city = mysql_fetch_array($result)) {
			echo "out.options[out.options.length] = new Option('".$city['name']."','".$city['city_id']."');\n";
		}
	}
	else {
		echo "out.options[out.options.length] = new Option('нет городов','none');\n";
	}
}
/* if ($type == 'region') {
	// выбираем регионы в данной стране
	$result = mysql_query('SELECT * 
    	                    FROM region 
    	                    WHERE country_id = '.$id.' 
    	                    ORDER BY name');
	if (!empty($result)) {
		echo "out.options[out.options.length] = new Option('выберите регион...','none');\n";
		while ($region = mysql_fetch_array($result)) {
			echo "out.options[out.options.length] = new Option('".$region['name']."','".$region['region_id']."');\n";
		}
	}
	else {
		echo "out.options[out.options.length] = new Option('нет регионов','none');\n";
	}
} */
?>
Вот city.php на который посылается аджакс при обновлении городов:

Код:
<!-- Города -->

<script type="text/javascript" src="js/jquery.js"></script>
			<script type="text/javascript">
			function getList(type, obj) {
				$('#loading_' + type).show();
				$.post('/blocks/city.php', {type: type, id: $('#'+obj).val()}, onAjaxSuccess);
				function onAjaxSuccess(data) {
			        	out = document.getElementById(type);
			 			for (var i = out.length - 1; i >= 0; i--) {
			      			out.options[i] = null;
			 			}
			        	eval(data);
			        	$('#loading_' + type).hide();
				}
			}
			</script>
			
<!-- Города -->
Короче курю дальше. Не могу найти в чем проблема, почему СЕЛЕКТ не запоминает город.


Последний раз редактировалось Fier; 10.12.2012 в 13:44.
Fier вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ajax jquery php gunsoy JavaScript, Ajax 17 13.01.2014 14:33
AJAX без php fonok JavaScript, Ajax 12 04.09.2012 22:55
AJAX + PHP errload JavaScript, Ajax 11 19.05.2012 02:40
AJAX + PHP mar4elo JavaScript, Ajax 8 12.10.2011 14:24