1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Код php(Пых)

Тема в разделе "Оффтопик", создана пользователем GHOST-MEN, 23 авг 2016.

  1. Автор темы
    GHOST-MEN

    GHOST-MEN Активный участник Пользователь

    Баллы:
    76
    Ребят, кто хорошо шарит в php, прошу посмотреть на код, что тут не так?
    Этот код, по какой-то причине не выполняется, не могу понять почему.
    Очень большая просьба, не писать "ГАмнАкод!" и т.п. Как умею, так и пишу
    PHP:
    <?php
        define
    ("DATALIFEENGINE"true);
        include(
    "/engine/classes/mysqli.class.php");
        include(
    "/engine/data/dbconfig.php");
        
    #Получаем всех не подтвержденных игроков.
        
    $results mysql_query("SELECT * FROM `dle_users` WHERE `confirm` = 'FALSE'");
       
        
    #Получаем время игрока на сервере.
        
    while($rows mysql_fetch_array($results)) {
        
    $byurls $rows['byurl'];
        
    $rowsname $rows['byurl'];
        if(
    $byurls != ''){ 
        
    $resulttime mysql_query("SELECT * FROM `playTime` WHERE `username` = '".$rows['name']."'");   
        
    $row1 mysql_fetch_array($resulttime);
        
    $playedTime $row1['playtime'];
       
        
    #Проверка и выдача денег.
        
    if($playedTime 480 || $playedTime 1439){
                
    mysql_query("UPDATE `dle_users` SET `confirm` = 'TRUE' WHERE `name` = '".$rowsname."'");
                
    mysql_query("UPDATE `dle_users` SET `money` = `money`+10 WHERE `name` = '".$rowsname."'");
                
    mysql_query("UPDATE `dle_users` SET `returnmoney` = 'returnmoney'+10 WHERE `name` = '".$rowsname."'");
                echo 
    "1";
                
    //SaveLog("'".$rows['byurl']."'", "<i class='uk-icon-user-plus'></i> Игрок <b>".$rows['byurl']."</b> прогласил игрока <b>".$rows['name']."</b>");
            
    } elseif($playedTime 1440 || $playedTime 2879) {
                
    mysql_query("UPDATE `dle_users` SET `confirm` = 'TRUE' WHERE `name` = '".$rowsname."'");
                
    mysql_query("UPDATE `dle_users` SET `money` = `money`+20 WHERE `name` = '".$rowsname."'");
                
    mysql_query("UPDATE `dle_users` SET `returnmoney` = 'returnmoney'+20 WHERE `name` = '".$rowsname."'");
                echo 
    "2";
                 
    //SaveLog("'".$rows['byurl']."'", "<i class='uk-icon-user-plus'></i> Игрок <b>".$rows['byurl']."</b> отыграл 24 часа, его пригласил <b>".$rows['name']."</b> и он получил '".$money1440."'");
            
    } elseif($playedTime 2880) {
                
    mysql_query("UPDATE `dle_users` SET `confirm` = 'TRUE' WHERE `name` = '".$rowsname."'");
                
    mysql_query("UPDATE `dle_users` SET `money` = `money`+30 WHERE `name` = '".$rowsname."'");
                
    mysql_query("UPDATE `dle_users` SET `returnmoney` = 'returnmoney'+30 WHERE `name` = '".$rowsname."'");
                echo 
    "3";
                
    //SaveLog("'".$rows['byurl']."'", "<i class='uk-icon-user-plus'></i> Игрок <b>".$rows['byurl']."</b> отыграл 48 часов, его пригласил <b>".$rows['name']."</b> и он получил '".$money2880."'");
            
    }
        } else {
              
    mysql_query("UPDATE `dle_users` SET `confirm` = 'TRUE'  WHERE `name` = '".$rowsname."'");
        }
        echo 
    "Cron success";
        }
        
    ?>
     
  2. Krutius

    Krutius Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    MrPencilBox
    Комментов много! Уберёшь их и заробит. ИНФА СОТКА
     
  3. _MediaNik_

    _MediaNik_ Активный участник Пользователь

    Баллы:
    76
    Skype:
    Medianik5
    Имя в Minecraft:
    _MediaNik_
    Разве не mysql.class.php?
     
  4. Dereku

    Dereku Старожил Пользователь

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    > mysql_*
    > 2016
    Вскройся
     
  5. SimMiMo

    SimMiMo Активный участник Пользователь

    Баллы:
    76
    Сделай вывод ошибок да и се
     
  6. TAB_mk

    TAB_mk Старожил Пользователь

    Баллы:
    173
    Дерек подсказал уже.
    5-й пых использует mysqli_, вместо mysql_ .
     
  7. Alexey123

    Alexey123 Старожил Пользователь

    Баллы:
    153
    Сейчас сюда прибежит @Negezor и заорётзакричит про то, что не используются сложные запросы, да и вообще используются циклы.
     
  8. max--2

    max--2 Старожил Пользователь

    Баллы:
    173
    Код использует библиотеку базы DLE, так че не используются его функции. Что-то мне подсказывает проблема в этом. И в одном запросе UPDATE можно задавать сразу несколько изменений колонок
    UPDATE `dle_users` SET `confirm` = 'TRUE', `money` = `money`+10 , `returnmoney` = 'returnmoney'+10 WHERE `name` = '".$rowsname."'
     
  9. TAB_mk

    TAB_mk Старожил Пользователь

    Баллы:
    173
    А как выводить все строки из бд?
    mysqli_fetch_array по одной же строке отдает.
     
  10. Alexey123

    Alexey123 Старожил Пользователь

    Баллы:
    153
    Ну, он бы сказал, что для каждой строки выполняется ещё один запрос(чтобы снова получить данные), когда можно было бы те "конечные" данные получить как результат выполнения сложного запроса.
     
  11. max--2

    max--2 Старожил Пользователь

    Баллы:
    173
    Так же можно объединить запрос выборки из DLE и выборку времени. LEFT OUTER JOIN в помощь, и вместо сотни и тысяч запросов, будет всего один
     
  12. Negezor

    Negezor Активный участник Пользователь

    Баллы:
    78
    Леха ну я не такой( АААААААААААААА ГОВНОКОД!!!! НЕ ИСПОЛЬЗУЮТСЯ СЛОЖНЫЕ ЗАПРОСЫ!!!
    А по делу я бы переделал это так: http://pastebin.com/HQrJ7wfK
    И судя по ошибка что ты показывал, там точно как модуль у тебя CRON.
    PHP:
    <?php

        $notConfirmed 
    $db->super_row('
            SELECT
                u.name AS login,
                u.byurl,
                pt.playtime
            FROM
                dle_users u
            INNER JOIN
                playTime pt
            ON
                pt.username=u.name
            WHERE
                confirm="FALSE"
        '
    );

        
    $updateSql '
            UPDATE
                dle_users
            SET
                confirm="TRUE",
                money=money+%d,
                returnmoney=returnmoney+%d
            WHERE
                name="%s"
        '
    ;

        foreach (
    $notConfirmed as $user) {
            if (empty(
    $user['byurl'])) {
                
    $db->query('UPDATE dle_users SET confirm="TRUE" WHERE name="'.$user['login'].'"');

                continue;
            }

            
    $time $user['playtime'];

            if (
    $time 480) {
                continue;
            } else if (
    $time 1439) {
                
    $sum 10;
            } else if (
    $time 2879) {
                
    $sum 20;
            } else if (
    $time 2880) {
                
    $sum 30;
            }

            
    $db->query(sprintf($updateSql,$sum,$sum,$user['login']));
        }


     
  13. _MediaNik_

    _MediaNik_ Активный участник Пользователь

    Баллы:
    76
    Skype:
    Medianik5
    Имя в Minecraft:
    _MediaNik_
    А я?
     
  14. TAB_mk

    TAB_mk Старожил Пользователь

    Баллы:
    173
    Лучше же поменять функции на mysqli, чем подключать более старый класс, разве нет?
     
  15. _MediaNik_

    _MediaNik_ Активный участник Пользователь

    Баллы:
    76
    Skype:
    Medianik5
    Имя в Minecraft:
    _MediaNik_
    Я предположил, что в mysqli ошибка.
     
  16. TAB_mk

    TAB_mk Старожил Пользователь

    Баллы:
    173
     
  17. Negezor

    Negezor Активный участник Пользователь

    Баллы:
    78
    Вариант с PDO, возможно там не как модуль конектится: http://pastebin.com/zX0dRaGk
    PHP:
    <?php

        $pdo 
    = new PDO('mysql:host=YOU_HOST;dbname=YOU_DB','YOU_USER','YOU_PASSWORD');

        
    $stmt $pdo->prepare('
            SELECT
                u.name AS login,
                u.byurl,
                pt.playtime
            FROM
                dle_users u
            INNER JOIN
                playTime pt
            ON
                pt.username=u.name
            WHERE
                confirm=?
        '
    );
        
    $stmt->execute(['FALSE']);

        
    $notConfirmed $stmt->fetchAll();

        
    $updateSql '
            UPDATE
                dle_users
            SET
                confirm=:confirm,
                money=money+:money,
                returnmoney=:return
            WHERE
                name=:login
        '
    ;

        foreach (
    $notConfirmed as $user) {
            if (empty(
    $user['byurl'])) {
                
    $stmt $pdo->prepare('UPDATE dle_users SET confirm=:confirm WHERE name=:login');
                
    $stmt->execute([
                    
    'confirm' => 'TRUE',
                    
    'login' => $user['login']
                ]);

                continue;
            }

            
    $time $user['playtime'];

            if (
    $time 480) {
                continue;
            } else if (
    $time 1439) {
                
    $sum 10;
            } else if (
    $time 2879) {
                
    $sum 20;
            } else if (
    $time 2880) {
                
    $sum 30;
            }

            
    $pdo->prepare($updateSql);
            
    $stmt->execute([
                
    'confirm' => 'TRUE',
                
    'money' => $sum,
                
    'return' => $sum,
                
    'login' => $user['login']
            ]);
        }
     
  18. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Ну вы и костыльщики, есть же куча плагинов, которые сами начисляют баланс по времени.
     

Поделиться этой страницей