PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Страниц (1): [1]
Найдено сообщений: 9
shonny
Отправлено: 22 Декабря, 2016 - 21:56:04 • Тема: Удаление, редактирование, добавление БД через PHP • Форум: Работа с СУБД
Ответов: 0 Просмотров: 1231
Cобственно сам скрипт для добавления, удаления, редактирования конкретной таблицы работает. Вопрос как это сделать для таблицы, которую мы выбрали или ввели? Пытался через форму $_POST['name_table'] передать название таблицы, передает, но при нажатии на ссылку редактировать, поля пустые, также не работают функции удаления и добавления.
PHP:
скопировать код в буфер обмена
$GLOBALS [ 'link' ] = mysqli_connect ( "localhost" , "user" , "passwd" , "infoip" ) ; if ( ! isset ( $_GET [ "action" ] ) ) $_GET [ "action" ] = "showlist" ;
switch ( $_GET [ "action" ] )
{
case "showlist" : // Список всех записей в таблице БД
show_list( ) ; break ;
case "addform" : // Форма для добавления новой записи
get_add_item_form( ) ; break ;
case "add" : // Добавить новую запись в таблицу БД
add_item( ) ; break ;
case "editform" : // Форма для редактирования записи
get_edit_item_form( ) ; break ;
case "update" : // Обновить запись в таблице БД
update_item( ) ; break ;
case "delete" : // Удалить запись в таблице БД
delete_item( ) ; break ;
default :
show_list( ) ;
}
// Функция выводит список всех записей в таблице БД
function show_list( )
{
$query = "SELECT `id`, `IP`, `Hostname`, `Ports`, `Mac_address`, `Mac_vendor`, `date` FROM `" . $_POST [ 'name_table' ] . "`" ;
// echo $_POST['name_table'];
echo '<h2>Список IP & Mask</h2>' ;
echo '<table border="1" cellpadding="2" cellspacing="0">' ;
echo '<tr><th>ID</th><th>IP & Mask</th><th>Hostname</th><th>Ports</th><th>Mac_address</th><th>Mac_vendor</th><th>Date</th><th>Редактировать</th><th>Удалить</th></tr>' ;
{
echo '<tr>' ;
echo '<td>' . $item [ 'id' ] . '</td>' ;
echo '<td>' . $item [ 'IP' ] . '</td>' ;
echo '<td>' . $item [ 'Hostname' ] . '</td>' ;
echo '<td>' . $item [ 'Ports' ] . '</td>' ;
echo '<td>' . $item [ 'Mac_address' ] . '</td>' ;
echo '<td>' . $item [ 'Mac_vendor' ] . '</td>' ;
echo '<td>' . $item [ 'date' ] . '</td>' ;
echo '<td><a href="' . $_SERVER [ 'PHP_SELF' ] . '?action=editform&id=' . $item [ 'id' ] . '">Ред.</a></td>' ;
echo '<td><a href="' . $_SERVER [ 'PHP_SELF' ] . '?action=delete&id=' . $item [ 'id' ] . '">Удл.</a></td>' ;
echo '</tr>' ;
}
echo '</table>' ;
echo '<p><a href="' . $_SERVER [ 'PHP_SELF' ] . '?action=addform">Добавить</a></p>' ;
}
// Функция формирует форму для добавления записи в таблице БД
function get_add_item_form( )
{
echo '<h2>Добавить</h2>' ;
echo '<form name="addform" action="' . $_SERVER [ 'PHP_SELF' ] . '?action=add" method="POST">' ;
echo '<table>' ;
echo '<tr>' ;
echo '<td>IP</td>' ;
echo '<td><input type="text" name="IP" value="" /></td>' ;
echo '</tr>' ;
echo '<tr>' ;
echo '<td>Hostname</td>' ;
echo '<td><input type="text" name="Hostname" value="" /></td>' ;
echo '</tr>' ;
echo '<tr>' ;
echo '<td>Ports</td>' ;
echo '<td><input type="text" name="Ports" value="" /></td>' ;
echo '</tr>' ;
echo '<tr>' ;
echo '<td>Mac_address</td>' ;
echo '<td><input type="text" name="Ports" value="" /></td>' ;
echo '</tr>' ;
echo '<tr>' ;
echo '<td>Mac_vendor</td>' ;
echo '<td><input type="text" name="Ports" value="" /></td>' ;
echo '</tr>' ;
echo '<tr>' ;
echo '<td>date</td>' ;
echo '<td><input type="text" name="Ports" value="" /></td>' ;
echo '</tr>' ;
echo '<tr>' ;
echo '<td><input type="submit" value="Сохранить"></td>' ;
echo '<td><button type="button" onClick="history.back();">Отменить</button></td>' ;
echo '</tr>' ;
echo '</table>' ;
echo '</form>' ;
}
// Функция добавляет новую запись в таблицу БД
function add_item( )
{
$query = "INSERT INTO `" . $_POST [ 'name_table' ] . "` (IP, Hostname, Ports, Mac_address, Mac_vendor, date) VALUES ('" . $IP . "', '" . $Hostname . "', '" . $Ports . "', '" . $Mac_address . "', '" . $Mac_vendor . "', '" . $Date . "' );" ;
//header( 'Location: '.$_SERVER['PHP_SELF'] );
}
// Функция формирует форму для редактирования записи в таблице БД
function get_edit_item_form( )
{
echo '<h2>Редактировать</h2>' ;
$query = "SELECT `id`, `IP`, `Hostname`, `Ports`, `Mac_address`, `Mac_vendor`, `date` FROM `" . $_POST [ 'name_table' ] . "` WHERE id=" . $_GET [ 'id' ] ;
echo '<form name="editform" action="' . $_SERVER [ 'PHP_SELF' ] . '?action=update&id=' . $_GET [ 'id' ] . '" method="POST">' ;
echo '<table>' ;
echo '<tr>' ;
echo '<td>IP</td>' ;
echo '<td><input type="text" name="IP" value="' . $item [ 'IP' ] . '"></td>' ;
echo '</tr>' ;
echo '<tr>' ;
echo '<td>Hostname</td>' ;
echo '<td><input type="text" name="Hostname" value="' . $item [ 'Hostname' ] . '"></td>' ;
echo '</tr>' ;
echo '<tr>' ;
echo '<td>Ports</td>' ;
echo '<td><input type="text" name="Ports" value="' . $item [ 'Ports' ] . '"></td>' ;
echo '</tr>' ;
echo '<tr>' ;
echo '<td>Mac_address</td>' ;
echo '<td><input type="text" name="Mac_address" value="' . $item [ 'Mac_address' ] . '"></td>' ;
echo '</tr>' ;
echo '<tr>' ;
echo '<td>Mac_vendor</td>' ;
echo '<td><input type="text" name="Mac_address" value="' . $item [ 'Mac_vendor' ] . '"></td>' ;
echo '</tr>' ;
echo '<tr>' ;
echo '<td>date</td>' ;
echo '<td><input type="text" name="date" value="' . $item [ 'date' ] . '"></td>' ;
echo '</tr>' ;
echo '<tr>' ;
echo '<td><input type="submit" value="Сохранить"></td>' ;
echo '<td><button type="button" onClick="history.back();">Отменить</button></td>' ;
echo '</tr>' ;
echo '</table>' ;
echo '</form>' ;
}
// Функция обновляет запись в таблице БД
function update_item( )
{
$query = "UPDATE `" . $_POST [ 'name_table' ] . "` SET IP ='" . $IP . "', Hostname='" . $Hostname . "', Ports = '" . $Ports . "', Mac_address = '" . $Mac_address . "',
Mac_vendor = '" . $Mac_vendor . "', date = '" . $date . "' WHERE id=" . $_GET [ 'id' ] ;
header ( 'Location: ' . $_SERVER [ 'PHP_SELF' ] ) ; }
// Функция удаляет запись в таблице БД
function delete_item( )
{
$query = "DELETE FROM `" . $_GET [ 'name_table' ] . "` WHERE id=" . $_GET [ 'id' ] ;
header ( 'Location: ' . $_SERVER [ 'PHP_SELF' ] ) ; }
?>
shonny
Отправлено: 29 Ноября, 2016 - 12:56:54 • Тема: Обновление из CSV файла в базу данных MySQL • Форум: Работа с СУБД
Ответов: 0 Просмотров: 825
Здравствуйте. Вопрос такой, таблица в базе данных обновляется все хорошо, только как сделать так, чтобы обновлялись только те строки, которые были изменены? То есть, допустим если у меня изменились строки в поле MAC, то обновить все поля в таблице базы данных, где они были изменены.
PHP:
скопировать код в буфер обмена
$GLOBALS [ 'link' ] = mysqli_connect ( "localhost" , "user" , "passwd" , "infoip" ) ; $path = 'update' ;
$i = 0 ;
while ( false !== ( $file2 = readdir ( $dir2 ) ) ) { if ( $file2 != "." && $file2 != ".." ) {
if ( strpos ( $file2 , '.csv' , 1
) ) { $i ++;
}
$query2 = "SELECT net FROM `name_net`" ;
if ( ( $handle = fopen ( "update/" . $file2 , "r" ) ) !== FALSE ) { while ( ( $data = fgetcsv ( $handle , 1000 , "," ) ) !== FALSE ) { $row ++;
$query_up = "UPDATE `" . $res_str2 . "` SET Ping = '$data[1] ', Hostname = '$data[2] ', Ports = '$data[3] ', Mac = '$data[4] ', date = '" . date ( 'Y-m-d H:i' ) . "' WHERE IP = '$data[0] '" ; if ( $resaddnet2 ) {
echo "Описание сети " . str_replace ( "_" , "/" , $res_strup ) . " успешно добавлено! </br>" ; }
else { echo "Описание сети " . str_replace ( "_" , "/" , $res_strup ) . " не добавлено! </br>" ; } }
}
}
}
}
shonny
Отправлено: 15 Ноября, 2016 - 20:25:12 • Тема: Реализация запросов через циклы • Форум: Работа с СУБД
Ответов: 0 Просмотров: 807
Здравствуйте, проблема вот в чем. Сделал запросы для нескольких таблиц, в данном случае реализованы функции обновления для 3 таблиц 10.20.138.0/23, 10.20.139.0/24, 10.20.140.0/25, обновление происходит из файлов. Знаю, что так писать не нужно, поэтому хочу реализовать через циклы, только не знаю как.
PHP:
скопировать код в буфер обмена
$GLOBALS [ 'link' ] = mysqli_connect ( "localhost" , "user" , "pass" , "infoip" ) ; $filename = '10.20.139.0,24.csv' ;
echo "В последний раз файл $filename был изменен: " . date ( "F d Y H:i:s." , filemtime ( $filename ) ) ; }
$g = mysqli_query ( $GLOBALS [ 'link' ] , "SELECT * FROM `10.20.138.0/23`,`10.20.139.0/24`,`10.20.140.0/25` WHERE `10.20.138.0/23`.id = `10.20.139.0/24`.id = `10.20.140.0/25`.id " ) ; $fd = fopen ( '10.20.139.0,24.csv' , 'r+' ) ; // чтение и запись $buffer = fgets ( $fd , 4096
) ; list ( $IP , $Ping , $Hostname , $Ports , $Mac ) = explode ( "," , $buffer ) ; $sql_up = "UPDATE `10.20.139.0/24` SET Ping = '$Ping ', Hostname = '$Hostname ', Ports = '$Ports ', Mac = '$Mac ' WHERE IP = '$IP '" ;
}
$filename2 = '10.20.138.0,23.csv' ;
echo "В последний раз файл $filename2 был изменен: " . date ( "F d Y H:i:s." , filemtime ( $filename2 ) ) ; }
$g2 = mysqli_query ( $GLOBALS [ 'link' ] , "SELECT * FROM `10.20.138.0/23`,`10.20.139.0/24`,`10.20.140.0/25` WHERE `10.20.138.0/23`.id = `10.20.139.0/24`.id = `10.20.140.0/25`.id " ) ; $fd2 = fopen ( '10.20.138.0,23.csv' , 'r+' ) ; // чтение и запись $buffer2 = fgets ( $fd2 , 4096
) ; list ( $IP , $Ping , $Hostname , $Ports , $Mac ) = explode ( "," , $buffer2 ) ; $sql_up2 = "UPDATE `10.20.138.0/23` SET Ping = '$Ping ', Hostname = '$Hostname ', Ports = '$Ports ', Mac = '$Mac ' WHERE IP = '$IP '" ;
}
$filename3 = '10.20.140.0,25.csv' ;
echo "В последний раз файл $filename был изменен: " . date ( "F d Y H:i:s." , filemtime ( $filename ) ) ; }
$g3 = mysqli_query ( $GLOBALS [ 'link' ] , "SELECT * FROM `10.20.138.0/23`,`10.20.139.0/24`,`10.20.140.0/25` WHERE `10.20.138.0/23`.id = `10.20.139.0/24`.id = `10.20.140.0/25`.id " ) ; $fd3 = fopen ( '10.20.138.0,23.csv' , 'r+' ) ; // чтение и запись $buffer3 = fgets ( $fd3 , 4096
) ; list ( $IP , $Ping , $Hostname , $Ports , $Mac ) = explode ( "," , $buffer3 ) ; $sql_up3 = "UPDATE `10.20.138.0/23` SET Ping = '$Ping ', Hostname = '$Hostname ', Ports = '$Ports ', Mac = '$Mac ' WHERE IP = '$IP '" ;
}
Читал про такую команду scandir, может через нее можно получить список файлов и реализовать через циклы?
shonny
Отправлено: 08 Ноября, 2016 - 20:17:16 • Тема: Обновление строк в таблице БД • Форум: Вопросы новичков
Ответов: 20 Просмотров: 794
3d_killer пишет: shonny пишет: UPDATE FROM ip2 SET Ping=$Ping
данный запрос обновляет всю таблицу
(Добавление)
shonny пишет: UPDATE ip2 SET Ping
а если повнимательнее посмотреть на мой запрос, разве я так писал?
(Добавление)
если у вас данные разные и читаются от сюда ip2.csv, то обновлять надо не всю таблицу, а с каким либо условием
Да это я понял, что не нужно обновлять всю таблицу, а только конкретные строки, только как записать это условие, вот в чем вопрос . Если вам не трудно, не могли бы привести пример на mysql или mysqli, просто с PDO не особо знаком.
Сам файл ip2.csv ниже
shonny
Отправлено: 08 Ноября, 2016 - 15:06:41 • Тема: Обновление строк в таблице БД • Форум: Вопросы новичков
Ответов: 20 Просмотров: 794
Попытался сделать также как в функции insert
PHP:
скопировать код в буфер обмена
$fd = fopen ( 'ip2.csv' , 'r+' ) ; // чтение и запись $buffer = fgets ( $fd , 4096
) ; list ( $IP , $Ping , $Hostname , $Ports , $Mac ) = explode ( "," , $buffer ) ; $sql_up = "UPDATE ip2 SET Ping = '$Ping ', Hostname = '$Hostname ', Ports = '$Ports ', Mac = '$Mac ' WHERE IP = '$IP '" ;
}
Выводит такие ошибки:
Notice: Undefined offset: 4 in F:\xampp\htdocs\PhpProject1\update.php on line 6
Notice: Undefined offset: 3 in F:\xampp\htdocs\PhpProject1\update.php on line 6
Notice: Undefined offset: 2 in F:\xampp\htdocs\PhpProject1\update.php on line 6
Notice: Undefined offset: 1 in F:\xampp\htdocs\PhpProject1\update.php on line 6
Как их исправить?
shonny
Отправлено: 06 Ноября, 2016 - 16:22:27 • Тема: Обновление строк в таблице БД • Форум: Вопросы новичков
Ответов: 20 Просмотров: 794
3d_killer пишет: циклом
(Добавление)
или в запросе использовать IN или пересмотреть условие WHERE
Вот функция вставки, а через update можно как-то реализовать для всех строк?
PHP:
скопировать код в буфер обмена
$fp = fopen ( 'ip2.csv' , 'r+' ) ; // чтение и запись $buffer = fgets ( $fp , 4096
) ; list ( $IP , $Ping , $Hostname , $Ports , $Mac ) = explode ( "," , $buffer ) ; $sql = "INSERT INTO ip2 (IP, Ping, Hostname, Ports, Mac, date) VALUES('" . $IP . "','" . $Ping . "','" . $Hostname . "','" . $Ports . "','" . $Mac . "', NOW())" ;
echo fgets ( $fp ) . "<br />" ; }
}
shonny
Отправлено: 06 Ноября, 2016 - 15:38:28 • Тема: Обновление строк в таблице БД • Форум: Вопросы новичков
Ответов: 20 Просмотров: 794
Здравствуйте, у меня проблема такая. Есть таблица, куда я добавляю данные через файл insert-ом 1 раз, далее нужно просто обновлять строки, где поменялись значения. Структура таблицы ниже, надо обновить поля ip, ping, hostname, ports, mac. Я знаю как обновить одну строку, но как реализовать это для всех строк?
Страниц (1): [1]
Powered by ExBB FM 1.0 RC1. InvisionExBB