PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 9
shonny Отправлено: 01 Марта, 2017 - 10:40:38 • Тема: Как узнать количество обновленных строк? • Форум: Работа с СУБД

Ответов: 1
Просмотров: 702
PHP:
скопировать код в буфер обмена
  1. $query_up = "UPDATE `" . $res_str2 . "` SET Hostname = '$data[1]', Ports = '$data[2]', Mac_address = '$data[3]', Mac_vendor = '$data[4]', date = '" . date('Y-m-d H:i') . "' WHERE IP = '$data[0]'";
  2. $resaddnet = mysqli_query($GLOBALS['link'], $query_up);
  3. printf("Затронутые строки (UPDATE): %d\n", mysqli_affected_rows($GLOBALS['link']));


В результате всегда выводит 1, как посчитать количество обновленных строк?
shonny Отправлено: 22 Декабря, 2016 - 21:56:04 • Тема: Удаление, редактирование, добавление БД через PHP • Форум: Работа с СУБД

Ответов: 0
Просмотров: 1231
Cобственно сам скрипт для добавления, удаления, редактирования конкретной таблицы работает. Вопрос как это сделать для таблицы, которую мы выбрали или ввели? Пытался через форму $_POST['name_table'] передать название таблицы, передает, но при нажатии на ссылку редактировать, поля пустые, также не работают функции удаления и добавления.
PHP:
скопировать код в буфер обмена
  1. $GLOBALS['link'] = mysqli_connect("localhost", "user", "passwd", "infoip");
  2. if ( !isset( $_GET["action"] ) ) $_GET["action"] = "showlist";  
  3.  
  4. switch ( $_GET["action"] )
  5. {
  6.   case "showlist":    // Список всех записей в таблице БД
  7.     show_list(); break;
  8.   case "addform":     // Форма для добавления новой записи
  9.     get_add_item_form(); break;
  10.   case "add":         // Добавить новую запись в таблицу БД
  11.     add_item(); break;
  12.   case "editform":    // Форма для редактирования записи
  13.     get_edit_item_form(); break;
  14.   case "update":      // Обновить запись в таблице БД
  15.     update_item(); break;
  16.   case "delete":      // Удалить запись в таблице БД
  17.     delete_item(); break;
  18.   default:
  19.     show_list();
  20. }
  21.  
  22. // Функция выводит список всех записей в таблице БД
  23. function show_list()
  24. {
  25.   $query = "SELECT `id`, `IP`, `Hostname`, `Ports`, `Mac_address`, `Mac_vendor`, `date` FROM `".$_POST['name_table']."`";
  26.   $res = mysqli_query($GLOBALS['link'],$query );
  27.  // echo $_POST['name_table'];
  28.   echo '<h2>Список IP & Mask</h2>';
  29.   echo '<table border="1" cellpadding="2" cellspacing="0">';
  30.   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>';
  31.   while ( $item = mysqli_fetch_array( $res ) )
  32.   {
  33.     echo '<tr>';
  34.     echo '<td>'.$item['id'].'</td>';
  35.     echo '<td>'.$item['IP'].'</td>';
  36.     echo '<td>'.$item['Hostname'].'</td>';
  37.     echo '<td>'.$item['Ports'].'</td>';
  38.     echo '<td>'.$item['Mac_address'].'</td>';
  39.     echo '<td>'.$item['Mac_vendor'].'</td>';
  40.     echo '<td>'.$item['date'].'</td>';
  41.     echo '<td><a href="'.$_SERVER['PHP_SELF'].'?action=editform&id='.$item['id'].'">Ред.</a></td>';
  42.     echo '<td><a href="'.$_SERVER['PHP_SELF'].'?action=delete&id='.$item['id'].'">Удл.</a></td>';
  43.     echo '</tr>';
  44.   }
  45.   echo '</table>';
  46.   echo '<p><a href="'.$_SERVER['PHP_SELF'].'?action=addform">Добавить</a></p>';  
  47. }
  48.  
  49. // Функция формирует форму для добавления записи в таблице БД
  50. function get_add_item_form()
  51. {
  52.   echo '<h2>Добавить</h2>';  
  53.   echo '<form name="addform" action="'.$_SERVER['PHP_SELF'].'?action=add" method="POST">';
  54.   echo '<table>';
  55.  
  56.   echo '<tr>';
  57.   echo '<td>IP</td>';
  58.   echo '<td><input type="text" name="IP" value="" /></td>';
  59.   echo '</tr>';
  60.  
  61.   echo '<tr>';
  62.   echo '<td>Hostname</td>';
  63.   echo '<td><input type="text" name="Hostname" value="" /></td>';
  64.   echo '</tr>';
  65.  
  66.   echo '<tr>';
  67.   echo '<td>Ports</td>';
  68.   echo '<td><input type="text" name="Ports" value="" /></td>';
  69.   echo '</tr>';
  70.  
  71.   echo '<tr>';
  72.   echo '<td>Mac_address</td>';
  73.   echo '<td><input type="text" name="Ports" value="" /></td>';
  74.   echo '</tr>';  
  75.  
  76.   echo '<tr>';
  77.   echo '<td>Mac_vendor</td>';
  78.   echo '<td><input type="text" name="Ports" value="" /></td>';
  79.   echo '</tr>';
  80.  
  81.   echo '<tr>';
  82.   echo '<td>date</td>';
  83.   echo '<td><input type="text" name="Ports" value="" /></td>';
  84.   echo '</tr>';
  85.  
  86.   echo '<tr>';
  87.   echo '<td><input type="submit" value="Сохранить"></td>';
  88.   echo '<td><button type="button" onClick="history.back();">Отменить</button></td>';
  89.   echo '</tr>';
  90.   echo '</table>';
  91.   echo '</form>';
  92. }
  93.  
  94. // Функция добавляет новую запись в таблицу БД  
  95. function add_item()
  96. {
  97.   $IP = mysqli_escape_string($GLOBALS['link'], $_POST['IP'] );
  98.   $Hostname = mysqli_escape_string($GLOBALS['link'], $_POST['Hostname'] );
  99.   $Ports = mysqli_escape_string($GLOBALS['link'], $_POST['Ports'] );
  100.   $Mac_address = mysqli_escape_string($GLOBALS['link'], $_POST['Mac_address'] );
  101.   $Mac_vendor = mysqli_escape_string($GLOBALS['link'], $_POST['Mac_vendor'] );
  102.   $date = mysqli_escape_string($GLOBALS['link'], $_POST['date'] );
  103.  
  104.   $query = "INSERT INTO `".$_POST['name_table']."` (IP, Hostname, Ports, Mac_address, Mac_vendor, date) VALUES ('".$IP."', '".$Hostname."', '".$Ports."', '".$Mac_address."', '".$Mac_vendor."', '".$Date."' );";
  105.   mysqli_query ($GLOBALS['link'],$query );
  106.   //header( 'Location: '.$_SERVER['PHP_SELF'] );
  107.   die();
  108. }
  109.  
  110. // Функция формирует форму для редактирования записи в таблице БД
  111. function get_edit_item_form()
  112. {
  113.   echo '<h2>Редактировать</h2>';
  114.   $query = "SELECT `id`, `IP`, `Hostname`, `Ports`, `Mac_address`, `Mac_vendor`, `date` FROM `".$_POST['name_table']."` WHERE id=".$_GET['id'];
  115.   $res = mysqli_query($GLOBALS['link'], $query );
  116.   $item = mysqli_fetch_array( $res );
  117.   echo '<form name="editform" action="'.$_SERVER['PHP_SELF'].'?action=update&id='.$_GET['id'].'" method="POST">';
  118.   echo '<table>';
  119.  
  120.   echo '<tr>';
  121.   echo '<td>IP</td>';
  122.   echo '<td><input type="text" name="IP" value="'.$item['IP'].'"></td>';
  123.   echo '</tr>';
  124.  
  125.   echo '<tr>';
  126.   echo '<td>Hostname</td>';
  127.   echo '<td><input type="text" name="Hostname" value="'.$item['Hostname'].'"></td>';
  128.   echo '</tr>';
  129.  
  130.   echo '<tr>';
  131.   echo '<td>Ports</td>';
  132.   echo '<td><input type="text" name="Ports" value="'.$item['Ports'].'"></td>';
  133.   echo '</tr>';  
  134.  
  135.   echo '<tr>';
  136.   echo '<td>Mac_address</td>';
  137.   echo '<td><input type="text" name="Mac_address" value="'.$item['Mac_address'].'"></td>';
  138.   echo '</tr>';  
  139.  
  140.   echo '<tr>';
  141.   echo '<td>Mac_vendor</td>';
  142.   echo '<td><input type="text" name="Mac_address" value="'.$item['Mac_vendor'].'"></td>';
  143.   echo '</tr>';  
  144.  
  145.   echo '<tr>';
  146.   echo '<td>date</td>';
  147.   echo '<td><input type="text" name="date" value="'.$item['date'].'"></td>';
  148.   echo '</tr>';  
  149.  
  150.   echo '<tr>';
  151.   echo '<td><input type="submit" value="Сохранить"></td>';
  152.   echo '<td><button type="button" onClick="history.back();">Отменить</button></td>';
  153.   echo '</tr>';
  154.   echo '</table>';
  155.   echo '</form>';
  156. }
  157.  
  158. // Функция обновляет запись в таблице БД  
  159. function update_item()
  160. {
  161.   $IP = mysqli_escape_string($GLOBALS['link'], $_POST['IP'] );
  162.   $Hostname = mysqli_escape_string($GLOBALS['link'], $_POST['Hostname'] );
  163.   $Ports = mysqli_escape_string($GLOBALS['link'], $_POST['Ports'] );
  164.   $Mac_address = mysqli_escape_string($GLOBALS['link'], $_POST['Mac_address'] );
  165.   $Mac_vendor = mysqli_escape_string($GLOBALS['link'], $_POST['Mac_vendor'] );
  166.   $date = mysqli_escape_string($GLOBALS['link'], $_POST['date'] );
  167.  
  168.   $query = "UPDATE `".$_POST['name_table']."` SET IP ='".$IP."', Hostname='".$Hostname."', Ports = '".$Ports."', Mac_address = '".$Mac_address."',
  169.      Mac_vendor = '".$Mac_vendor."', date = '".$date."' WHERE id=".$_GET['id'];
  170.   mysqli_query ($GLOBALS['link'], $query );
  171.   header( 'Location: '.$_SERVER['PHP_SELF'] );
  172.   die();
  173. }
  174.  
  175. // Функция удаляет запись в таблице БД
  176. function delete_item()
  177. {
  178.   $query = "DELETE FROM `".$_GET['name_table']."` WHERE id=".$_GET['id'];
  179.   mysqli_query ($GLOBALS['link'], $query );
  180.   header( 'Location: '.$_SERVER['PHP_SELF'] );
  181.   die();
  182. }
  183.  
  184. ?>
shonny Отправлено: 29 Ноября, 2016 - 12:56:54 • Тема: Обновление из CSV файла в базу данных MySQL • Форум: Работа с СУБД

Ответов: 0
Просмотров: 825
Здравствуйте. Вопрос такой, таблица в базе данных обновляется все хорошо, только как сделать так, чтобы обновлялись только те строки, которые были изменены? То есть, допустим если у меня изменились строки в поле MAC, то обновить все поля в таблице базы данных, где они были изменены.
PHP:
скопировать код в буфер обмена
  1. $GLOBALS['link'] = mysqli_connect("localhost", "user", "passwd", "infoip");
  2.     $path = 'update';
  3.     $dir2 = opendir ("$path");
  4.     $i = 0;
  5.         while (false !== ($file2 =  readdir($dir2))){
  6.             if($file2 != "." && $file2 != ".."){
  7.                 if (strpos($file2, '.csv',1) ) {  
  8.                 $i++;
  9.                 }
  10.                 if ( substr($file2, 0, strpos($file2, '.csv',1) ) ) {
  11.                     $res_strup = substr($file2, 0, strpos($file2, '.csv',1) );        
  12.                    $res_str2 = str_replace( "_" , "/" ,$res_strup);
  13.                    $query2 = "SELECT net FROM `name_net`";
  14.                    $resnet2 = mysqli_query( $GLOBALS['link'], $query2 );
  15.                 if (($handle = fopen("update/".$file2, "r")) !== FALSE){
  16.                    fgetcsv($handle, 1000, ",");
  17.                         while (($data = fgetcsv($handle, 1000, ",")) !== FALSE){
  18.                         $num = count($data);  
  19.                         $row++;
  20.                     $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]'";
  21.                         $resaddnet2 = mysqli_query($GLOBALS['link'], $query_up );
  22.                                 if ($resaddnet2) {
  23.                                     echo "Описание сети ".str_replace ( "_" , "/" , $res_strup )." успешно добавлено! </br>";
  24.                                 }
  25.                                 else {echo "Описание сети ".str_replace ( "_" , "/" , $res_strup )." не добавлено! </br>";}
  26.                         }
  27.                         fclose($handle);
  28.                 }
  29.                 }
  30.             }
  31.         }
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:
скопировать код в буфер обмена
  1.         $GLOBALS['link'] = mysqli_connect("localhost", "user", "pass", "infoip");
  2.             $filename = '10.20.139.0,24.csv';
  3. if (file_exists($filename)) {
  4.     echo "В последний раз файл $filename был изменен: " . date ("F d Y H:i:s.", filemtime($filename));
  5. }
  6.             $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 ");
  7.                         $fd = fopen('10.20.139.0,24.csv', 'r+'); // чтение и запись
  8.                             while(!feof($fd)) {
  9.                                 $buffer = fgets($fd, 4096);
  10.                                 list($IP,$Ping,$Hostname,$Ports,$Mac)=explode(",",$buffer);
  11.                                  $sql_up = "UPDATE `10.20.139.0/24` SET Ping = '$Ping', Hostname = '$Hostname', Ports = '$Ports', Mac = '$Mac' WHERE IP = '$IP'";
  12.                                  mysqli_query($GLOBALS['link'],$sql_up) or die(mysqli_error());
  13.  
  14.                                 }
  15.          
  16.                          fclose($fd);
  17.                          
  18.                                      $filename2 = '10.20.138.0,23.csv';
  19. if (file_exists($filename2)) {
  20.     echo "В последний раз файл $filename2 был изменен: " . date ("F d Y H:i:s.", filemtime($filename2));
  21. }
  22.             $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 ");
  23.                         $fd2 = fopen('10.20.138.0,23.csv', 'r+'); // чтение и запись
  24.                             while(!feof($fd2)) {
  25.                                 $buffer2 = fgets($fd2, 4096);
  26.                                 list($IP,$Ping,$Hostname,$Ports,$Mac)=explode(",",$buffer2);
  27.                                  $sql_up2 = "UPDATE `10.20.138.0/23` SET Ping = '$Ping', Hostname = '$Hostname', Ports = '$Ports', Mac = '$Mac' WHERE IP = '$IP'";
  28.                                  mysqli_query($GLOBALS['link'],$sql_up2) or die(mysqli_error());
  29.                                  
  30.                                 }
  31.                          fclose($fd2);
  32.                          
  33.                                     $filename3 = '10.20.140.0,25.csv';
  34. if (file_exists($filename)) {
  35.     echo "В последний раз файл $filename был изменен: " . date ("F d Y H:i:s.", filemtime($filename));
  36. }
  37.             $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 ");
  38.                         $fd3 = fopen('10.20.138.0,23.csv', 'r+'); // чтение и запись
  39.                             while(!feof($fd3)) {
  40.                                 $buffer3 = fgets($fd3, 4096);
  41.                                 list($IP,$Ping,$Hostname,$Ports,$Mac)=explode(",",$buffer3);
  42.                                  $sql_up3 = "UPDATE `10.20.138.0/23` SET Ping = '$Ping', Hostname = '$Hostname', Ports = '$Ports', Mac = '$Mac' WHERE IP = '$IP'";
  43.                                  mysqli_query($GLOBALS['link'],$sql_up3) or die(mysqli_error());
  44.                                  
  45.                                 }
  46.                          fclose($fd3);

Читал про такую команду scandir, может через нее можно получить список файлов и реализовать через циклы?
PHP:
скопировать код в буфер обмена
  1. $dir = 'Z:\xampp\htdocs\PhpProject\update';
  2.             $files = array_diff( scandir( $dir), array('..', '.'));  
  3.                 for ($i = 0; $i < count($files); $i++){
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:
скопировать код в буфер обмена
  1.             $g= mysql_query ("SELECT * FROM `ip2`");
  2.                         $fd = fopen('ip2.csv', 'r+'); // чтение и запись
  3.                             while(!feof($fd)) {
  4.                                 $buffer = fgets($fd, 4096);
  5.                                 list($IP,$Ping,$Hostname,$Ports,$Mac)=explode(",",$buffer);
  6.                                  $sql_up = "UPDATE ip2 SET Ping = '$Ping', Hostname = '$Hostname', Ports = '$Ports', Mac = '$Mac' WHERE IP = '$IP'";
  7.  
  8.                                  mysql_query($sql_up) or die(mysql_error());
  9.                          }
  10.                          fclose($fd);

Выводит такие ошибки:
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 Отправлено: 08 Ноября, 2016 - 09:34:56 • Тема: Обновление строк в таблице БД • Форум: Вопросы новичков

Ответов: 20
Просмотров: 794
3d_killer пишет:
CODE (SQL):
скопировать код в буфер обмена
  1. UPDATE FROM ip2 SET Ping=$Ping

Данный запрос обновляет один столбец в таблице разве нет?
shonny Отправлено: 06 Ноября, 2016 - 16:22:27 • Тема: Обновление строк в таблице БД • Форум: Вопросы новичков

Ответов: 20
Просмотров: 794
3d_killer пишет:
циклом
(Добавление)
или в запросе использовать IN или пересмотреть условие WHERE

Вот функция вставки, а через update можно как-то реализовать для всех строк?
PHP:
скопировать код в буфер обмена
  1.         mysql_select_db("infoip") or die(mysql_error());
  2.        
  3.             $q= mysql_query ("SELECT * FROM `ip2`");
  4.                     if (mysql_num_rows($q) == 0){
  5.                         $fp = fopen('ip2.csv', 'r+'); // чтение и запись
  6.                             while(!feof($fp)) {
  7.                                 $buffer = fgets($fp, 4096);
  8.                                 list($IP,$Ping,$Hostname,$Ports,$Mac)=explode(",",$buffer);
  9.                                  $sql = "INSERT INTO ip2 (IP, Ping, Hostname, Ports, Mac, date) VALUES('".$IP."','".$Ping."','".$Hostname."','".$Ports."','".$Mac."', NOW())";
  10.                                  mysql_query($sql,$conn) or die(mysql_error());
  11.                                  echo fgets($fp) . "<br />";
  12.                          }
  13.                          fclose($fp);    
  14.                     }
shonny Отправлено: 06 Ноября, 2016 - 15:38:28 • Тема: Обновление строк в таблице БД • Форум: Вопросы новичков

Ответов: 20
Просмотров: 794
Здравствуйте, у меня проблема такая. Есть таблица, куда я добавляю данные через файл insert-ом 1 раз, далее нужно просто обновлять строки, где поменялись значения. Структура таблицы ниже, надо обновить поля ip, ping, hostname, ports, mac. Я знаю как обновить одну строку, но как реализовать это для всех строк?

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB