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

Тема в разделе "PHP", создана пользователем Alexanderod, 21 янв 2011.

Модераторы: latteo
  1. Alexanderod

    Alexanderod Создатель

    Регистр.:
    15 янв 2009
    Сообщения:
    49
    Симпатии:
    11
    Привет!

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

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

    ADyDyka Создатель

    Регистр.:
    19 янв 2010
    Сообщения:
    26
    Симпатии:
    5
    Не совсем понятно в чем проблема?

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

    Если у вас окно обычное которое слоем выводится , т.к. это не отдельное окно , этот тот же dom. В таком случае необходимо через ajax посылать запрос на сервер чтобы он вернул вам нужные для редактирования параметры, если у вас их нет. И точно так же можно реализовать через ajax сохранение.
     
  3. Alexanderod

    Alexanderod Создатель

    Регистр.:
    15 янв 2009
    Сообщения:
    49
    Симпатии:
    11
    <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 базу.

    Это не новое окно эксплорера и не новая вкладка, это что-то вроде попап фрейма висящего над основным окном.
     
  4. Alexanderod

    Alexanderod Создатель

    Регистр.:
    15 янв 2009
    Сообщения:
    49
    Симпатии:
    11
    Помогите решить, в долгу не останусь.Могу парсер картинок подарить за рабочий пример решения! Мне в понедельник это реализовать надо.:)
     
  5. Kloster

    Kloster

    Регистр.:
    22 июн 2009
    Сообщения:
    216
    Симпатии:
    12
    Так нужно всплывающее окно (именно новое окно) или всплывающий див?
    Если первый вариант, просто window.open с параметрами, там гетом в скрипт параметры передаешь и обрабатываешь.
    Если надо во всплывающем диве, то через аякс, либо, на Jquery есть библиотечка qtip со всплывающими подсказками, там можно содержимое всплывающей подсказки загружать динамически, а параметр просто в адрес вставляешь - делается очень быстро в таком варианте.
     
  6. DenisK

    DenisK

    Регистр.:
    8 фев 2007
    Сообщения:
    205
    Симпатии:
    13
    Значит вам надо делать div-om. Никакие javascript window.open тут не нужны.
    Делаете невидимый div, с параметром visibility=none
    по событию через яваскрипт меняете параметр на True

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

    document.getElementById(divId).style.display ="block"// видимый
    Параметры передавать через Ajax
     
  7. CnecHa3

    CnecHa3 Постоялец

    Регистр.:
    10 фев 2007
    Сообщения:
    105
    Симпатии:
    20
    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;
    }