sql >> データベース >  >> RDS >> Mysql

SQLデータベースからデータを取得してテーブルに表示する-チェックボックスをオンにして特定のデータを表示する

    以下のようにチェックボックスを作成してみてください:

    Solar_Time_Decimal<checkbox name='columns[]' value='1'>
    GHI<checkbox name='columns[]' value='2'>
    DiffuseHI<checkbox name='columns[]' value='3'>
    Zenith_Angle<checkbox name='columns[]' value='4'>
    DNI<checkbox name='columns[]' value='5'> 
    

    そして、PHPコードをこれにぶら下げてみてください:

    <?php
    //HTML forms -> variables
    $fromdate = isset($_POST['fyear']) ? $_POST['fyear'] : data("d/m/Y");
    $todate = isset($_POST['toyear']) ? $_POST['toyear'] : data("d/m/Y");
    $all = false;
    $column_names = array('1' => 'Solar_Time_Decimal', '2'=>'GHI', '3'=>'DiffuseHI', '4'=>'Zenith_Angle','5'=>'DNI');
    $column_entries = isset($_POST['columns']) ? $_POST['columns'] : array();
    $sql_columns = array();
    foreach($column_entries as $i) {
       if(array_key_exists($i, $column_names)) {
        $sql_columns[] = $column_names[$i];
       }
    }
    if (empty($sql_columns)) {
     $all = true;
     $sql_columns[] = "*";
    } else {
     $sql_columns[] = "DATE,Local_Time_Decimal";
    }
    
    //DNI CHECKBOX + ALL
    $tmp ="SELECT ".implode(",", $sql_columns)." FROM $database_Database_Test.$table_name where DATE>=\"$fromdate\" AND DATE<=\"$todate\""; 
    
    $result = mysql_query($tmp);
    echo "<table border='1' style='width:300px'>
    <tr>
    <th>DATE</th>
    <th>Local_Time_Decimal</th>";
    foreach($column_names as $k => $v) { 
      if($all || (is_array($column_entries) && in_array($k, $column_entries)))
         echo "<th>$v</th>";
    }
    echo "</tr>";
    while( $row = mysql_fetch_assoc($result))
    {
        echo "<tr>";  
        echo "<td>" . $row['DATE'] . "</td>";   
        echo "<td>" . $row['Local_Time_Decimal'] . "</td>";  
        foreach($column_names as $k => $v) { 
          if($all || (is_array($column_entries) && in_array($k, $column_entries))) {
             echo "<th>".$row[$v]."</th>";
           }
        }
        echo "</tr>";
    }
    echo '</table>';
    
    if($result){
            echo "Successful";
        }
        else{
        echo "Enter correct dates";
        }
    ?>
    <?php
    mysql_close();?>
    

    このソリューションは特定のテーブル列を考慮しますが、一般的なソリューションが必要な場合は、このSQLを使用することもできます。

    $sql_names = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '$database_Database_Test' AND TABLE_NAME = '$table_name'";
    

    結果を使用して$column_namesを作成します 配列。




    1. HTMLフォームから入力を取得し、Flaskを介してmysqlに保存します

    2. TypeORM PostgreSQLは、JSONフィールドがある値と等しい場所を選択します

    3. datetime2データ型をdatetimeデータ型に変換すると、値が範囲外になります

    4. Dynamic Select ステートメントのレコードを表示しないですぐに実行する