Scripts

Maak tabel

Het komt vaak voor dat ik voor een klant een beheermodule moet maken. In zo'n beheermodule is er eigenlijk altijd vraag naar het beheren van de verschillende tabellen in de MySql database. Omdat ik klanten liever geen toegang geef tot PHP MyAdmin heb ik een functie gemaakt die automatisch HTML tabellen genereert van willekeurige MySql tabellen. In de HTML tabel kan de klant: 1) sorteren op kolom 2) records verwijderen 3) records bewerken Punt 2 en 3 zijn in dit voorbeeld uitgeschakeld.

maak-tabel

<?php
  # deze file maakt de connectie met de database
  require ('db_config.php');
  
  function display_table ($db_name, $tb_name) {
    # haal de namen en het aantal velden op
    $fields = mysql_list_fields ($db_name, $tb_name);
    $columns = mysql_num_fields ($fields);

    # als er op een kolomkop geklikt is, is de naam van die kolom
    # beschikbaar via $_GET
    if (isset ($_GET['order_by'])) {
      $order_by = $_GET['order_by'];
    }
    else {
      $order_by = 'id';
    }
    
    if (isset ($_GET['order_type']) && !isset ($_GET['action'])) {
      $order_type = $_GET['order_type'];
      
      if ($order_type == 'ASC') {
        $order_type = 'DESC';
      }
      else {
        $order_type = 'ASC';
      }
    }
    else {
      $order_type = 'ASC';
    }
    
    echo '<table>';
    echo '<tr>';
    echo '<th>edit</th>';
    echo '<th>delete</th>';

    # de titelrij van de tabel in elkaar zetten
    # zorgen dat de kolomkoppen aanklikbaar zijn
    for ($i = 0; $i < $columns; $i++) {
      echo "\n";
      echo '<th>';
      $fieldname = mysql_field_name ($fields, $i) ;
      echo "<a href=\"?order_by=$fieldname&order_type=$order_type\">$fieldname</a>";
      echo '</th>';
    }
    
    $sql = "SELECT *
      FROM $tb_name
      ORDER BY $order_by $order_type";
    $res = mysql_query ($sql) or die (mysql_error ());
    
    while ($row = mysql_fetch_array ($res)) {
      echo "\n";
      echo '<tr>';
      # via deze links kun je de pagina uitbreiden met een delete of een edit-mogelijkheid
      echo "<td><a href=\"?action=edit&id=$row[id]&order_by=$order_by\">edit</a></td>";
      echo "<td><a href=\"?action=delete&id=$row[id]&order_by=$order_by\">delete</a></td>";
      
      for ($i = 0; $i < $columns; $i++) {
        echo '<td>';
        echo $row[$i];
        echo '</td>';
      }

      echo '</tr>';
    }

    echo '</tr>';
    echo '</table>';
  }
?> 

Reacties

0
Nog geen reacties.