对从MySQL提取的数据进行条件格式设置

时间:2020-08-15 作者:Mohit Singh

我不是PHP方面的专家,我正在尝试对从wpdb获取的数据应用条件格式。公平地说,我正在尝试为此创建短代码。我的座右铭是为$previous\\u marks&;获取价值$从数据库中删除current\\u标记,并根据if、else条件更改$current\\u标记的颜色。根据情况:

如果$当前标记$前一个\\u标记,则$current\\u标记的值应与pass一起以绿色显示。值旁边的png图像

  • 否则$current\\u标记的值应以红色和fail显示。值旁边的png图像
  • 我还需要帮助在$current\\u marks value&;旁边显示图像;我没有代码:

    下面是我的代码的样子:

        add_shortcode( \'marks_col\', function () {
        $subject = $_GET[\'subject\'];
        
        global $wpdb;
        $previous_marks = $wpdb->get_results( "SELECT prev FROM grade WHERE sub=\'" .$subject. "\'");
        $current_marks = $wpdb->get_results( "SELECT current FROM grade WHERE sub=\'" .$subject. "\'");
        if ($previous_marks < $current_marks) {
           echo "<p style="color:green">" .$current_marks. "</p>"; ##display pass.png next to $current_marks value
        } else {
           echo "<p style="color:red">" .$current_marks. "</p>"; ##display fail.png next to $current_marks value
        }
        } );
    
    $主题从网站的URL获取:www.domain.com/results?subject=biology. 当前,在使用快捷码时[marks_col] 在WP安装时,只需以红色打印“阵列”&;没有别的了。任何帮助都将不胜感激。

    2 个回复
    SO网友:Mathias De Beyser

    首先,请注意:

    短代码确实接受参数,因此您可以编写[标记主题=“生物学”](@参见https://codex.wordpress.org/Shortcode_API)https://developer.wordpress.org/reference/classes/wpdb/prepare/)使用get\\u结果将返回数组、对象或null(@请参阅https://developer.wordpress.org/reference/classes/wpdb/get_results/). 这里有很多方法。您可以选择$wpdb->;get\\u var(),以获取单个值。或$wpdb->;get\\u results()在一个查询中获取这两个结果。我认为我们缺少一些数据,如果您只想为一个用户指定一行,还可以使用$wpdb->;get\\u row()。假设数据库是Excel工作表。如果需要多个行和列,则需要使用$wpdb->;get\\u results()。如果只需要一行,可以使用$wpdb->;get\\u row()。如果只需要一列数据$wpdb->;get\\u column()。如果只需要一个特定单元格$wpdb->;get\\u var()https://fontawesome.com/)


    代码基于您给定的问题,尽管我认为您在查询中缺少了WHERE语句,无法根据自己的项目获取特定人员的“标记”。

    add_shortcode( "marks", function( $atts ) {
    
        //= defaults
        $args = shortcode_atts( array(
            \'subject\' => \'biology\',
        ), $atts );
    
        //= database query
        global $wpdb;
        $query  = $wpdb->prepare( "SELECT prev, current FROM grade WHERE sub = %s", $args[\'subject\'] );
        $result = $wpdb->get_row( $query );
    
        //= bail when no result
        if( is_null( $result ) ) return;
    
        //= conditional
        if( $result[ \'prev\' ] < $result[ \'current\' ] ) {
            echo "<p color=\\"color: green;\\">{$result[\'current\']}<i class=\\"far fa-check\\"></i></p>";
            
        } else {
            echo "<p color=\\"color: red;\\">{$result[\'current\']}<i class=\\"far fa-times\\"></i></p>";
            
        }
        
    } );
    
    如果需要,您可以使用以下代码在屏幕上轻松调试对象和数组:

    echo var_export( $array, true );
    
    希望这有帮助!

    SO网友:Mathias De Beyser

    我不完全理解,但您希望访问基于;“主题”;我想这就是;用户ID“;或者是那种顺序。并通过“a”;“列”;参数因此,您可以使用一个短代码请求以下内容之一。

    基于主题获取姓名,基于主题获取出勤,基于主题获取prev,基于主题获取current,如果是这样,我们确实需要更改代码。