Передача переменной в PopUp окно

Alexanderod

Создатель
Регистрация
15 Янв 2009
Сообщения
49
Реакции
11
Привет!

Есть список товаров, который выводится циклом из базы.
Каждый товар имеет свой уникальный номер и может быть изменен кнопкой [Изменить].
При нажатии на кнопку [Изменить] - должна выводиться небольшая всплывающая форма, в нее можно внести изменения и сохранить, после чего всплывающее окно исчезает, а новые данные заносятся в базу.
В идеале хочется чтоб содержимое всплываюшего окна обрабатывалось и выводилось файлом в который будет передаваться номер товара методом GET. Пример - edit.php?id=3403.
Не могу найти решения этой задачи. Всплываюшее окно вывести могу, написать скрипт edit.php, обрабатывающий и выдающий результат на экран - тоже могу. А вот связать передачу данных от основной формы к всплывающему окну, которое вызовет edit.php для обработки и вывода в этоже всплывающее - не могу.

Форумчане, помогите пожалуйста решить вопрос. С меня помощь\консультации в написании парсеров, грабберов и др. вопросах где я разбираюсь.
Спасибо!
 
Не совсем понятно в чем проблема?

Как вы реализовывали всплывающее окно. Как через javascript window.open? Так добавьте сразу к url нужные вам параметры, т.е. id товара. Т.е. в этом случае это окно с вашей формой никак не связано и это полностью отдельный скрипт.

Если у вас окно обычное которое слоем выводится , т.к. это не отдельное окно , этот тот же dom. В таком случае необходимо через ajax посылать запрос на сервер чтобы он вернул вам нужные для редактирования параметры, если у вас их нет. И точно так же можно реализовать через ajax сохранение.
 
Не совсем понятно в чем проблема?
Как вы реализовывали всплывающее окно. Как через javascript window.open? Так добавьте сразу к url нужные вам параметры, т.е. id товара. Т.е. в этом случае это окно с вашей формой никак не связано и это полностью отдельный скрипт.
Если у вас окно обычное которое слоем выводится , т.к. это не отдельное окно , этот тот же dom. В таком случае необходимо через ajax посылать запрос на сервер чтобы он вернул вам нужные для редактирования параметры, если у вас их нет. И точно так же можно реализовать через ajax сохранение.
<a href="#" onclick="document.getElementById(\'wind1\').style.display=\'block\'; return false;" >'.$row['name'].'</a>
Реализовано так.
Если я использую javascript window.open, то я могу открыть сразу edit.php?id=2303 и содержимое выведется во всплывающее окно?
Если да - то как задать его размеры и т.п.? Это будет div?
Я пока что слаб с жавой и аяксом, но достаточно хорошо понимаю как писать на php. Учусь:)

P.S. т.е. мне надо небольшое окошко размером 400х400 которые всплывет посередине экрана, в котором будет содержимое которое выдаст edit.php и после редактирования которого тот же edit.php его сохранит в mysql базу.

Это не новое окно эксплорера и не новая вкладка, это что-то вроде попап фрейма висящего над основным окном.
 
Помогите решить, в долгу не останусь.Могу парсер картинок подарить за рабочий пример решения! Мне в понедельник это реализовать надо.:)
 
Так нужно всплывающее окно (именно новое окно) или всплывающий див?
Если первый вариант, просто window.open с параметрами, там гетом в скрипт параметры передаешь и обрабатываешь.
Если надо во всплывающем диве, то через аякс, либо, на Jquery есть библиотечка qtip со всплывающими подсказками, там можно содержимое всплывающей подсказки загружать динамически, а параметр просто в адрес вставляешь - делается очень быстро в таком варианте.
 
  • Заблокирован
  • #6
<a href="#" onclick="document.getElementById(\'wind1\').style.display=\'block\'; return false;" >'.$row['name'].'</a>
Реализовано так.
Если я использую javascript window.open, то я могу открыть сразу edit.php?id=2303 и содержимое выведется во всплывающее окно?
Если да - то как задать его размеры и т.п.? Это будет div?
Я пока что слаб с жавой и аяксом, но достаточно хорошо понимаю как писать на php. Учусь:)
P.S. т.е. мне надо небольшое окошко размером 400х400 которые всплывет посередине экрана, в котором будет содержимое которое выдаст edit.php и после редактирования которого тот же edit.php его сохранит в mysql базу.
Это не новое окно эксплорера и не новая вкладка, это что-то вроде попап фрейма висящего над основным окном.

Значит вам надо делать div-om. Никакие javascript window.open тут не нужны.
Делаете невидимый div, с параметром visibility=none
по событию через яваскрипт меняете параметр на True

PHP:
document.getElementById(divId).style.display ="none"; // невидимый

document.getElementById(divId).style.display ="block"; // видимый

Параметры передавать через Ajax
 
1. жмёшь на кнопку [edit], надо чтобы у кнопки был параметр который указывает на твой id(пусть class="edit" && id="200")
Код:
//jQuery
$(".edit").click(function(){
var id = $(this).attr('id');
$.ajax({
url: "edit.php",
data: {'id':id,'mode':'edit'},
dataType: "json",// думаю знаешь, как с json работать
success: function(json){
//тут показываешь окно, и заполняешь элементы
$("#window #hidden_id").val(id);
$("#window #text").val(json['value']);// если это textarea,input
$("#window").show();
}
})
});
2. после редактирования нажал на кнопу Save
Код:
//jQuery
$("#window .save").click(function(){
var id = $("#window #hidden_id").val();
$.ajax({
url: "edit.php",
data: {'id':id,'mode':'save','text':$("textarea#text").val()},
success: function(){
$("#window").hide();
}
})
});
примерно так
Если я использую javascript window.open, то я могу открыть сразу edit.php?id=2303 и содержимое выведется во всплывающее окно?Если да - то как задать его размеры и т.п.?
Код:
function window_open(url, width, height, name, scroll_bar, location){
	_top = Math.ceil((screen.height - height)/2);
	_left = Math.ceil((screen.width - width)/2);
	if(scroll_bar != true){
		var scroll = 'no';
	}else{
		var scroll = 'yes';
	}
	if(typeof location != "undefined" && location == true){
		var location = 'yes';
	}else{
		var location = 'no';
	}
	if(name == undefined){
		name = Math.round(999999 * Math.random());
	}
	new_win = window.open(url, name , 'width=' + width + ',height=' + height + ',location='+ location +',status=no,toolbar=no,menubar=no,resizable=yes,scrollbars=' + scroll + ',top=' + _top + ',left=' + _left);
	new_win.focus();
	return new_win;
}
 
Назад
Сверху