Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Редактирование (UPDATE) строки через одну кнопку 
:(
    Опции темы
LexzCQ
Дата 24.11.2014, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 19.11.2014

Репутация: нет
Всего: нет



Продолжаю я ковырять  изучать БД и PHP и встала проблема редактирования данных. Я понимаю что это делается с помощью UPDATE запроса, но не представляю как это можно сделать с помощью PHP. Набросал код, который делает выборку и полученную инфу вставляет в текстовое поле. Дальше можно редактировать полученную инфу в браузере и, по задумке, при нажатии на кнопку "Редактировать", которая возле каждой строки, информация бы обновлялась в БД, но это не происходит. Посоветуйте, как лучше реализовать такую функцию. Сам код:
Код

<?php      
    $db =  mysql_connect('127.0.0.1', 'root', '1234') or die("Could not connect: " . mysql_error());
    mysql_select_db("test", $db) or die("Could not connect: " . mysql_error()); 
        //Делаем выборку всего и вся в БД    
        if (isset($_GET['update'])){
            $select = mysql_query("SELECT * FROM clients INNER JOIN agreements ON clients.Agreement_number = agreements.Agreement_number INNER JOIN price ON clients.Agreement_number = price.Agreement_number");
                
            // выводим на страницу сайта заголовки HTML-таблицы
                
                echo '<table border="1" align="center">';
                echo '<thead>';
                echo '<tr>';
                echo '<th>№</th>';
                echo '<th>Название клиента</th>';
                echo '<th>Номер договора</th>';
                echo '<th>Дата подписания договора</th>';
                echo '<th>Дата окончания договора</th>';
                echo '<th>Цена</th>';
                echo '<th>Редактировать</th>';
                echo '</tr>';
                echo '</thead>';
                // выводим в HTML-таблицу все данные из БД
                echo '<tbody>';    
                        while($data = mysql_fetch_array($select)){
                        echo '<tr align="center">';
                        echo '<td>' . $data['idAgreements'] . '</td>'; 
                        echo '<td> <form>
                        <input type="text" name="Name" method="get" value="' . $data['Name'] . '">
                        <input type="hidden" name="update_name" value="'.$data['Name'].'">
                        </form></td>'; //Вставляем значение из массива в тег input
                        echo '<td> <input type="text" name="Agreement_number" method="get" value="' . $data['Agreement_number'] . '">'. '</td>';
                        echo '<td> <input type="date" name="Start_date" method="get" value="' . $data['Start_date'] . '">'. '</td>';
                        echo '<td> <input type="date" name="End_date" method="get"  value="' . $data['End_date'] . '">'. '</td>';
                        echo '<td> <input type="text" name="Price" method="get" value="' . $data['Price'] . '">'. ' $</td>';
                        echo '<td> 
                             <form>
                                 <input name="update_button" type="submit" value="Редактировать"> <?-- //Кнопка редактирования для каждой строки -->
                                    <input type="hidden" name="update_row" value="'.$data['Name'].$data['Agreement_number'].$data['Start_date'].$data['End_date'].$data['Price'].'">
                                </form>
                            </td>';
                        echo '</tr>';
                        }
                echo '</tbody>';
                echo '</table>';
                
                echo('<a href="sql.html"> Назад</a>');

                        
                } //update содержимого
                    elseif($_GET['update_row']){
                    mysql_query("UPDATE clients SET Name =" .intval($_GET['Name'])." ",$db) or die("Could not connect: " . mysql_error()); //Вносим изменения в таблицу clients
                    
                    echo ("Строка изменена");
                    echo('<a href="sql.html"> Назад</a>');
            }
        

?>

PM MAIL   Вверх
Aliance
Дата 8.12.2014, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 3
Всего: 137



Зачем вы передаете в $_GET['update_row'] конкатенацию?
Цитата

<input type="hidden" name="update_row" value="'.$data['Name'].$data['Agreement_number'].$data['Start_date'].$data['End_date'].$data['Price'].'">


Кроме того, зачем вы обращаетесь к несуществующему $_GET['Name']?
Сделайте дамп того, что приходит в GET и убедитесь - что там нет этого поля. В массив гет данных помещаются значения из полей формы, шде атрибут name является ключом массива, а value - значением. В варианте выше у вас будет всего два ключа в гет массиве - это кнопка update_button и поле update_row. 

Вы хотите сделать редактирование - значит нужно отправлять ID записи (некий первичный ключ, для условия WHERE в запросе, к слову оно у вас отсутствует вовсе - изменения будут затрагивать все строчки, а это явно не то, что вы хотели) и данные, которые меняются (для условия SET в запросе). При таком варианте, предложенной мною вариант с помещением тега form внутри td не сработает - остальная-то форма находится в других td. Тут нужно делать по-другому.
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0387 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.