Retrieve data from sql database and display in tables - Display certain data according to checkboxes checked

后端 未结 2 2053
[愿得一人]
[愿得一人] 2020-12-21 13:15

I have created an sql database(with phpmyadmin) filled with measurements from which I want to call data between two dates( the user selects the DATE by entering in the HTML

相关标签:
2条回答
  • 2020-12-21 13:42

    Solution for your problem : Change the mysql_fetch_assoc with mysql_fetch_array If you have the same problem try to print your result with print_r

    Answer : Use the bit datatype in mysql for store and read your checkboxes. When you're receiving thr value from the database then you can use

    in the parameter checked you can use the php code as exist :

       $value = ...get the value from db ( 1 or 0 )
       echo '<input type="checkbox" name="thename" value="thevalue" '.($value==1?'checked=checked'.'').'/>';
    
    0 讨论(0)
  • 2020-12-21 13:46

    Try to create your checkbox like below:

    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'> 
    

    And try to hange your PHP code to this:

    <?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();?>
    

    This solution consider your particular table columns but if your wish a generic solution you can try to use this SQL too:

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

    and use the result to construct the $column_names array.

    0 讨论(0)
提交回复
热议问题