Скрипт для БД

Discussion in 'PHP' started by Zmii666, 13 Sep 2018.

  1. Zmii666

    Zmii666 New Member

    Joined:
    4 Sep 2012
    Messages:
    42
    Likes Received:
    0
    Reputations:
    0
    народ как реализовать вывод из бд только определенной инфы!
    Есть база baza
    Есть таблица items
    есть 2 столбца item_type , amount
    как на php правильно вывести и посчитать определенные числа из item_type тип итема нужен (57) а в amount его колличество, вот меня интересует посчитать все строчки с типом 57 и общее колиичество! помогите плиз)))
     
  2. Zmii666

    Zmii666 New Member

    Joined:
    4 Sep 2012
    Messages:
    42
    Likes Received:
    0
    Reputations:
    0
    Code:
    <html>
    <body>
    <?
    
    //ПОДКЛЮЧЕНИЕ К БАЗЕ ДАННЫХ (БД)
    $nameDB = "";//Название БД
    $nameSERVER = "";//Сервер
    $nameUSER = "";//Имя пользователя БД
    $passUSER = "";//Пароль пользователя БД
    mysql_select_db($nameDB, mysql_connect($nameSERVER,$nameUSER,$passUSER));   
    //ПОДКЛЮЧЕНИЕ К БАЗЕ ДАННЫХ (БД)
    $result = mysql_query("SELECT * FROM items WHERE item_type = '57' AND amount > 1");
    $myrow = mysql_fetch_array($result);
    
    do
    {
        echo $myrow[amount]."</a><br>";
    }
    while ($myrow = mysql_fetch_array($result));
    
    ?>
    </body>
    </html>
    Сделал так, но не суммирует значения а выводит все значения amount равные item_type = 57
    как сделать чтоб суммировал и выводил сумму?
     
  3. Zmii666

    Zmii666 New Member

    Joined:
    4 Sep 2012
    Messages:
    42
    Likes Received:
    0
    Reputations:
    0
    Решил так
    Code:
    $result = mysql_query("select sum(amount) as `total_amount` from `items` where `amount`>1");
    Вопрос как красиво вывести чтоб с точками было примерно так "567.354.565.677"
     
  4. miketomlin

    miketomlin New Member

    Joined:
    2 Dec 2013
    Messages:
    15
    Likes Received:
    3
    Reputations:
    0
    См. MySQL-ф-цию COUNT.
    См. РНР-ф-цию number_format.
     
    Zmii666 likes this.
  5. Zmii666

    Zmii666 New Member

    Joined:
    4 Sep 2012
    Messages:
    42
    Likes Received:
    0
    Reputations:
    0
    Code:
    $dbc = @mysql_connect($host, $login, $passwd);
    if (!$dbc)
    {
      echo( "<P>В настоящий момент СЕРВЕР БЫЗЫ данных не доступен, поэтому
                корректное отображение страницы невозможно.</P>" );
      exit();
    }
    
    if (!@mysql_select_db($dbname, $dbc))
    
    {
      echo( "<P>В настоящий момент БАЗА ДАННЫХ не доступна, поэтому
                корректное отображение страницы невозможно.</P>" );
      exit();
     
    }
    $tableIP = mysql_query("SELECT t1.account_name, t1.char_name, t1.lastAccess, t1.online, t1.title, items.item_type, items.amount FROM characters as t1, items WHERE t1.obj_id = items.owner_id AND t1.online = 0");
    
    if($tableIP)
    
    {
      // Определяем таблицу и заголовок
      echo "<center><table border=3>";
      echo "<tr><td>____Account____</td><td>___Имя чара___</td><td>___последнее посещение___</td><td>___Online?___</td><td>___Титул___</td><td>___Предмет___</td><td>___Количество___</td></tr>";
     
      $accounts = array();
      while ($acc = mysql_fetch_assoc($tableIP))
      {
          if (empty($accounts[$acc['char_name']]))
          {
              $accounts[$acc['char_name']]['account_name'] = $acc['account_name'];
              $accounts[$acc['char_name']]['char_name'] = $acc['char_name'];
              $accounts[$acc['char_name']]['lastAccess'] = date("d.F.y H:i:s", (int)$acc['lastAccess']);
              $accounts[$acc['char_name']]['online'] = $acc['online'];
              $accounts[$acc['char_name']]['title'] = $acc['title'];
              $accounts[$acc['char_name']]['items'] = array();
          }
          if (empty($accounts[$acc['char_name']]['items'][$acc['item_type']]))
              $accounts[$acc['char_name']]['items'][$acc['item_type']] = 0;
          $accounts[$acc['char_name']]['items'][$acc['item_type']] += (int)$acc['amount'];
         
      }
      foreach ($accounts as $account)
      {
    ?>
        <tr class="non-hidden" id="<?php echo $account['account_name']; ?>" data-rowspan="<?php echo (count($account['items'])+1); ?>">
            <td class="rowspan"><?php echo $account['account_name']; ?></td>
            <td class="rowspan"><?php echo $account['char_name']; ?></td>
            <td class="rowspan"><?php echo $account['lastAccess']; ?></td>
            <td class="rowspan"><?php echo $account['online']; ?></td>
            <td class="rowspan"><?php echo $account['title']; ?></td>
            <?php reset($account['items']); $firstItem = key($account['items']); ?>
            <?php $all = 0; foreach ($account['items'] as $amount) $all += $amount; ?>
            <td>Всего</td>
            <td><?php echo $all; ?></td>
        </tr>
        <?php foreach ($account['items'] as $item=>$amount) { ?>
        <tr class="hidden <?php echo $account['account_name']; ?>">
            <td><img src="path_to_images/<?php echo $item; ?>.gif"><?php echo $item; ?></td>
            <td><?php echo $amount; ?></td>
        </tr>
        <?php } ?>
    <?php
      }
    }
    else
    {
    
     echo "<p><b>Error: ".mysql_error()."</b><p>";
      exit();
    }
    
    ?>
    <script type="text/javascript">
    $(document).ready(function(){
        $('.non-hidden').click(function(){
            if ($(this).hasClass('open'))
            {
                $(this).removeClass('open');
                $(this).parent().find('.' + $(this).attr('id')).addClass('hidden');
                $(this).find('td.rowspan').attr('rowspan', '0');
            }
            else
            {
                $(this).addClass('open');
                $(this).parent().find('.' + $(this).attr('id')).removeClass('hidden');
                $(this).find('td.rowspan').attr('rowspan', $(this).attr('data-rowspan'));
            }
        });
    });
    </script>
    </body>
    </html>
    Подскажи пожалуйста как сделать, чтоб при выводи в таблицу items сделать удаление этого айтема из БД именно у этого "чара" ?
     
  6. miketomlin

    miketomlin New Member

    Joined:
    2 Dec 2013
    Messages:
    15
    Likes Received:
    3
    Reputations:
    0
    В коде копаться лень, сорри. Переформулируйте ваш вопрос.
     
  7. mail156

    mail156 Banned

    Joined:
    28 Sep 2018
    Messages:
    467
    Likes Received:
    357
    Reputations:
    0
    Старайся разбить задачу на более мелкие.
     
  8. Zmii666

    Zmii666 New Member

    Joined:
    4 Sep 2012
    Messages:
    42
    Likes Received:
    0
    Reputations:
    0
    Скрипт выводит таблицу:
    Логин, имя чара, дата последнего посещения,ид итема, колличество итемов.
    Мне интересно как можно реализовать удаление определенный ид_итема именно у этого чара, конечно можно просто запросом, но хотелось бы через веб интерфейс с челевекопонтный интерфейс в связке с этим скриптом, чтоб при формировании таблицы с информацией об аккаунте можно было взаимодействовать с ним.
     
  9. Zmii666

    Zmii666 New Member

    Joined:
    4 Sep 2012
    Messages:
    42
    Likes Received:
    0
    Reputations:
    0
    Спасибо за совет, я начинающий, пока эксперементирую, изучаю чужие примеры.
     
  10. miketomlin

    miketomlin New Member

    Joined:
    2 Dec 2013
    Messages:
    15
    Likes Received:
    3
    Reputations:
    0
    Делайте из списка форму, например добавьте к каждому пункту именованный чекбокс и кнопку «Удалить» внизу, добавляйте POST-обработчик, в котором и выполняйте удаление соотв. запросом к БД. Если «ид_итема» уникальный для всех итемов, то для удаления достаточно передавать только этот (или эти при множественном удалении) id, иначе передавайте вместе с «ид_итема» и идентификатор владельца.

    У вас в коде выше запрос плохо оптимизирован. Используйте присоединение (LEFT JOIN) к итемам данных их владельцев.
     
    #10 miketomlin, 2 Oct 2018
    Last edited: 2 Oct 2018
  11. miketomlin

    miketomlin New Member

    Joined:
    2 Dec 2013
    Messages:
    15
    Likes Received:
    3
    Reputations:
    0
    Или вам нужно было прежде всего отобразить всех активных пользователей?