Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Обновление базы
 
 автор: kuf   (09.03.2009 в 07:39)   письмо автору
 
 

Здравствуйте!

На форме есть элемент select с 3 вариантами значений, кнопка, при нажатии на которую отправляется запрос на выполнение процедуры в MySQL по обновлению записи в таблице и возвращающему набор записей из обновляемой таблицы.

Принцип работы следующий. Выбираю значение в select, нажимаю кнопку на update, должен полуить получить эту же таблицу с выбранным значением.

Проблема состоит в следующем.
Выбирая каждый раз новое значение в select и нажимая кнопку все получается как надо. Если же тут же выбрать (4 раз) повторно любое из уже выбираемых ранее значений, обновление в таблице перестает происходить.
Если перезапустить IE, то все работает успешно, пока выбираю новое значение.

В чем проблема? Что происходит?

  Ответить  
 
 автор: Саня   (09.03.2009 в 10:08)   письмо автору
 
   для: kuf   (09.03.2009 в 07:39)
 

Код показать не хотите?

  Ответить  
 
 автор: kuf   (09.03.2009 в 10:26)   письмо автору
 
   для: Саня   (09.03.2009 в 10:08)
 

Элементы формы

<p id="division">        
<? division(1,'',0,'','','','','s'); ?>
           </p>
        <form id="Spis_division" name="Spis_division" enctype="multipart/form-data">
            <table name='new_division' border='0' cellspacing='1' cellpadding='1' class='sort'>
            <tr><td colspan=8 align='left'>Новое отделение</td></tr>
                <tr>
                    <td><input type='Text' name='new_division_id' id='div_division_id_0' value='' disabled="disabled"></td>
                    <td><input type='Text' name='new_division' id='div_division_0' value=''></td>
                    <td><input type='Text' name='new_index' id='div_index_0' value=''></td>
                    <td><input type='Text' name='new_town' id='div_town_0' value=''></td>
                    <td><select id='div_tipstreet_0'><option value='ул.'>ул.</option>
                                                        <option value='м/р.'>м/р.</option>
                                                        <option value='б/р.'>б/р.</option></select></td>
                    <td><input type='Text' name='new_street' id='div_street_0' value=''></td>
                    <td><input type='Text' name='new_home' id='div_home_0' value=''></td>
                    <td><input id="div_submit_0" type= 'submit' name='submit' onClick='javascript: Change_division();' value='Добавить'></td>
                </tr>
            </table>
        </form>


Процедура

CREATE DEFINER=`root`@`localhost` PROCEDURE `division`(
IN div_id INT,
IN div_division VARCHAR(255),
IN div_index INT,
IN div_town VARCHAR(45),
IN div_tipstreet VARCHAR(5),
IN div_street VARCHAR(255),
IN div_home VARCHAR(10),
IN div_par VARCHAR(10)
)
BEGIN

        if div_par='n' then
        INSERT INTO division (division, tipdiv, index_post, town, street, nh, tipstreet)
                       VALUES (div_division, 0, div_index, div_town, div_street, div_home, div_tipstreet);
        end if;

    if div_par='u' then
        UPDATE division SET division=div_division, tipdiv=0, index_post=div_index, town=div_town,
                                        tipstreet=div_tipstreet, street=div_street, nh=div_home
                                WHERE id=div_id;
                end if;

    if div_par='d' then
                DELETE from division WHERE id=div_id;
                end if;

    SELECT * FROM division where tipdiv=0 order by id;

END


Обработка через ajax при нажатии кнопки

function Change_division(id,pd)
    {
    if (document.getElementById('div_division_id_0').value!=="")
        {
        var id=document.getElementById('div_division_id_0').value;
        var pd="u";
        alert(id);
        alert(pd);
        }
    sendRequest('hello.php?t=Ch_div'+Param_Division(id)+'&div_par='+pd,'division', getRequest);
    }

function Param_Division(id)
    {
return '&div_id='+id+'&div_division='+document.getElementById('div_division_0').value+'&div_index='+document.getElementById('div_index_0').value+
            '&div_town='+document.getElementById('div_town_0').value+'&div_tipstreet='+document.getElementById('div_tipstreet_0').value+
            '&div_street='+document.getElementById('div_street_0').value+'&div_home='+document.getElementById('div_home_0').value;
    }


Получение параметров в hello.php

case "Ch_div":
            division($_GET['div_id'],$_GET['div_division'],$_GET['div_index'],$_GET['div_town'],$_GET['div_tipstreet'],$_GET['div_street'],$_GET['div_home'],
                    $_GET['div_par']);
        break;


Функция по обработке процедуры

function division ($div_id,$div_division,$div_index,$div_town,$div_tipstreet,$div_street,$div_home,$div_par)
    {
    $link=mysqli_connect('localhost', 'root', 'root','zuks');
    
    mysqli_query($link, "SET NAME character_set_results='UTF-8'");
    mysqli_query($link, "SET lc_time_names = 'ru_RU'");
    
    $query=mysqli_query($link, "CALL division ($div_id,'$div_division',$div_index,'$div_town','$div_tipstreet','$div_street','$div_home','$div_par')");
    echo(mysqli_error($link) . "\r\n");
    
    print "<table name='division' border='0' cellspacing='1' cellpadding='1' class='sort'>
                <tr>
                    <th>&nbsp;</th>
                    <th>id</th>
                    <th>Отделение</th>
                    <th>Индекс</th>
                    <th>Город</th>
                    <th>Тип</th>
                    <th>Мкр. / Улица</th>
                    <th>Дом</th>
                   </tr>";
    
    while ($myrow=mysqli_fetch_assoc($query))
        {
        print "<tr id='div_tr_$myrow[id]'>
                <td><input id='div_radio_$myrow[id]' name='div_radio' type='radio' onClick='javascript: aler($myrow[id]);'/></td>
                <td id='div_id_$myrow[id]'>$myrow[id]</td>
                <td id='div_division_$myrow[id]'>$myrow[division]</td>
                <td id='div_index_$myrow[id]'>$myrow[index_post]</td>
                <td id='div_town_$myrow[id]'>$myrow[town]</td>
                <td id='div_tipstreet_$myrow[id]'>$myrow[tipstreet]</td>
                <td id='div_street_$myrow[id]'>$myrow[street]</td>
                <td id='div_home_$myrow[id]'>$myrow[nh]</td>
                </tr>";
        }
    print "</table>";
    mysqli_free_result($query);
    }

  Ответить  
 
 автор: Саня   (09.03.2009 в 10:39)   письмо автору
 
   для: kuf   (09.03.2009 в 10:26)
 

Скорее всего AJAX кеширует ответы и не отправляет запрос по новой если он уже был отправлен ранее — он просто вернёт результат предыдущего запроса. Попробуйте добавлять заголовок "no-cache" при отправке AJAX-ответа. Или добавляйте случайную переменную в сроку запроса: sendRequest('hello.php?rand='+(new Date().getTime())+'...);

  Ответить  
 
 автор: kuf   (09.03.2009 в 10:43)   письмо автору
 
   для: Саня   (09.03.2009 в 10:39)
 

гениально...
попробовал с передачей доп. параметра.

  Ответить  
 
 автор: Zend72   (09.03.2009 в 11:20)   письмо автору
 
   для: kuf   (09.03.2009 в 07:39)
 

Браузер кэширует страницы...

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования