2010-04-22 4 views
2

Je construis une partie d'un système où l'utilisateur peut définir des "vues" à partir d'une base de données mysql. Je veux un moyen de générer des tableaux/rapports HTML simples à partir des données, mais pas simplement une sortie simple des requêtes sql - les jointures simples ne sont probablement pas suffisantes.Comment créer des tables HTML à partir de MySQL?

Des idées?


Pour être clair: Je sais très bien comment créer une table HTML avec PHP/MySQL - qui est la partie simple. Ce que je veux faire est de permettre à mes UTILISATEURS de créer leurs propres tables sans être exposés au processus!


Bon, je vais vous donner quelques remerciements plus Détails- pour toutes les réponses:

utilisateurs Actuellement peuvent créer des tables à l'aide d'un assistant, puis visualiser/modifier/supprimer des enregistrements dans ces tableaux. Cela rend difficile de donner un exemple car les tables peuvent changer. Les données que j'attends de la part du client sont la location de maisons - une table de maisons, des locataires, des chambres, des problèmes de maintenance, etc.

Ce que je vise à permettre à l'utilisateur de faire est de créer une sortie formatée de base d'une vue particulière , par exemple "afficher le chiffre d'affaires des loyers dans le mois en cours pour toutes les maisons" ou "montrer les locataires en retard" ou "montrer les chambres sans locataires". Une fois configurés, ceux-ci ne seront visualisés, pas édités, donc le processus doit juste être supportable pour être installé.

Est-ce que cela a du sens? Si ce n'est pas possible, je vais juste coder en dur les vues - rend le système moins flexible!

+0

Eh bien, votre souci ne devrait pas être la sortie, mais la saisie. Assistant de création de requête. Alors que la sortie est la partie la plus simple. Il suffit d'obtenir les noms de champs du tableau associatif ou du schéma de la table, puis de dessiner une table. –

+0

Un exemple serait grandement apprécié. –

+0

@Chris: Créer leurs propres tables, ou combiner des tables préexistantes? – outis

Répondre

0

Vous devez définir la manière dont les utilisateurs créeront ces tables HTML. Est-ce qu'ils configurent un certain nombre de lignes et de colonnes, puis alimentent la table manuellement? Une fois que nous devions faire un système de modèle où toutes les images, propriétés css, positionnement de divers blocs html, etc Le système entier était de 5 ou 6 tables mysql juste pour stocker les propriétés des modèles, mais si c'est juste un tableau peut faciliter le processus. Imaginez une table mysql pour le format de table et les propriétés (nombre de lignes, nombre de colonnes, largeur de col, couleurs, etc.) et une autre table mysql pour les données à mettre à l'intérieur. Cette deuxième table devrait avoir des colonnes pour stocker les positions de date, de rangée et de col.

Le reste est tout ce qui rend une forme accessible aux utilisateurs non-tech pour configurer et alimenter la table, et rendre la table avec quelques boucles et requêtes PHP.

+0

Ca y est, j'ai déjà beaucoup de méta-tables qui stockent des informations pour d'autres tables de bases de données générées par les utilisateurs etc, donc sûrement la même chose peut être faite pour les tables html. L'utilisateur doit spécifier le nombre de colonnes et de lignes, puis les données qui vont dans chacune d'entre elles en utilisant un type de SQL simplifié. Agréable. Merci! – Chris

+0

vos utilisateurs auront besoin de rechercher des données eux-mêmes? – Benoit

3

Vous pouvez utiliser phpMyAdmin pour afficher MySQL belles tables ou si vous voulez le code vous-même, vous pouvez utiliser PHP et HTML pour faire le travail:

<table> 
<?php 
mysql_connect("localhost", "mysql_user", "mysql_password") or 
    die("Could not connect: " . mysql_error()); 
mysql_select_db("mydb"); 

$result = mysql_query("SELECT id, name FROM mytable"); 

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
    ?> 
<tr> 
    <td><?=$row['id']; ?></td> 
    <td><?=$row['name']; ?></td> 
</tr>  
<? 
} 

mysql_free_result($result); 
?> 
</table> 

Edit: Après avoir lu vos modifications, il ne peut pas être la meilleure idée pour que les utilisateurs "créent leurs propres tables", mais plutôt leur donner un certain nombre d'options et de trier les commandes pour créer une meilleure expérience utilisateur. Sinon, il s'agit simplement d'un formulaire avec des éléments d'entrée et des instructions if.

+0

Le point est que je ne veux pas exposer l'utilisateur à ce processus si! – Chris

+0

Vous n'êtes pas, après cela exécuté tout ce que l'utilisateur peut voir est le code HTML. Et il n'y a aucun moyen de cacher le code HTML de l'utilisateur. – Sam152

+0

Oui, mais je veux que l'utilisateur soit capable de CREER les vues pour ces tables, pas seulement voir la sortie! Je peux le faire manuellement moi-même, mais ce n'est pas ce que je suis en train de faire. – Chris

0

Environ 100% des sites exécutent la même tâche: créer des tables HTML à partir d'une base de données SQL.
Donc, vous pouvez vous procurer un livre PHP/Mysql pour avoir une idée. Bien que toutes les tables soient codées en dur par un programmeur. En ce qui concerne les vues définies par l'utilisateur, cela peut être un peu plus compliqué. Mais aussi possible

+0

Les vues définies par l'utilisateur est le bit que je suis après-je reçois le premier bit! – Chris

1

Vous devrez exposer les utilisateurs à une partie du processus, car ils doivent décrire les tables et les relations de table. Vous pouvez prendre une page de Crystal Reports, Visual Studio et phpMyAdmin et créer un concepteur de table visuel. Une table est représentée par un rectangle avec une barre de titre affichant le nom de la table et une liste de champs. Les tableaux sont sur un canevas et peuvent être placés n'importe où sur ce canevas. Les clés étrangères sont représentées par des lignes reliant des champs.

Vous pouvez utiliser la même interface en tant que créateur de requête: l'utilisateur spécifie les tables à interroger en les faisant glisser d'une liste de tableaux vers le canevas, champs qui les intéressent (éventuellement en cochant chaque colonne) et sur quels champs se connecter en connectant des champs avec des lignes. Pour joindre une table à elle-même, vous pouvez autoriser l'ajout d'une table à une requête plusieurs fois ou autoriser les champs d'une table à être connectés à d'autres champs de la même table.

Si vous ne l'avez pas, saisissez phpMyAdmin, installez-le, ouvrez une base de données et allez dans l'onglet "Designer" pour voir comment cela fonctionne. Vous pouvez également jeter un oeil à certains screenshots

4

Est-ce ce que vous cherchez? Il va générer dynamiquement une table html à partir d'un résultat mysql quel que soit le résultat.

//this function dynamically outputs a basic HTML table from any mysql result 
function createTable($result) { 
    $table = '<table><tr>'; 
    for ($x=0;$x<mysql_num_fields($result);$x++) $table .= '<th>'.mysql_field_name($result,$x).'</th>'; 
    $table .= '</tr>'; 
    while ($rows = mysql_fetch_assoc($result)) { 
    $table .= '<tr>'; 
    foreach ($rows as $row) $table .= '<td>'.$row.'</td>'; 
    $table .= '</tr>'; 
    } 
    $table .= '<table>'; 
    //mysql_data_seek($result,0); //if we need to reset the mysql result pointer to 0 
    return $table; 
} 

Voici comment vous imprimez la table:

echo createTable($result); 
0
<?php 
    $query="SELECT * FROM table_name"; 
    $result=mysql_query($query); 
    $numfields = mysql_num_fields($result); 
    echo "<table border=1><tr>"; 

    for ($i=0; $i < $numfields; $i++) // Header 
    { echo '<th>'.mysql_field_name($result, $i).'</th>'; } 

    echo "</tr>"; 

    while 
    ($res=mysql_fetch_row($result)) //you may use mysql_fatch_array($result) which can hendel both $res[name] and $res[1] 
    { 
    echo" 
    <tr> 
    <td> $res[0]</td> 
    <td> $res[1]</td> 
    <td> $res[2]</td> 
    . 
    . 
    . 
    </tr>"; 
    } 

    echo"</table>"; 
?> 

100% de travail vient de changer. $ variable de requête en fonction de votre table

Questions connexes