Hab ein Modul gemacht, zum auslesen aller Tabellen einer Datenbank, sowie der Spaltennamen, bei dem dann die gewünschte Tabelle und Spalten angekreuzt werden können.
Erlaubt nicht das kombinieren mehrer Tabellen oder so sondern simpel eine beliebige Tabelle der DB ausgeben
Muss dann noch an die entsprechende Datenbank bzw. DBMS angepasst werden, habe in meinem Fall ne Sybase Datenbank.
Habe ein
include_db_conn Modul in der ich die Datenverbindung mache, um darauf über die Contenido oberfläche zugreifen zu können, und es in mehreren Modulen verwenden zu können.
Im Input Teil wird durch die Checkboxen ein hidden field gefüllt ...
die gefahr das dabei anderer SQL code übertragen wird ist, da es ja der Backend teil ist denke ich nicht so hoch, da kann man ja gleich eh in modul code schauen ...
include_db_conn - OUTPUT
Code: Alles auswählen
$my_db_vars['server'] = 'SYBASE_bla';
$my_db_vars['name'] = 'user';
$my_db_vars['pw'] = 'pw';
$my_db_vars['db'] = 'db';
$my_db_vars['conn'] = sybase_connect($my_db_vars['server'],$my_db_vars['name'],$my_db_vars['pw']);
sybase_select_db($my_db_vars['db']);
list_db_table - INPUT
Code: Alles auswählen
/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname : List_db_table v1.0
* Author : Chopper
* Created : 25-02-2005
************************************************/
?>
<script type="text/javascript">
actualDiv = 'CMS_VALUE[0]';
function switchDiv(visibleDiv) {
document.forms[0].elements['CMS_VAR[2]'].value = '';
if (actualDiv != '')
document.getElementById(actualDiv).style.display ='none';
document.getElementById(visibleDiv).style.display ='block';
actualDiv = visibleDiv;
for (i = 0; i < document.forms[0].elements['CMS_VAR[1]'].length; i++)
{
document.forms[0].elements['CMS_VAR[1]'][i].checked = false;
}
}
function changeHidden(wert,status) {
if (status == true)
{
document.forms[0].elements['CMS_VAR[2]'].value = document.forms[0].elements['CMS_VAR[2]'].value + wert + ',';
}
else
{
var child = new RegExp(wert+",");
oldvar = document.forms[0].elements['CMS_VAR[2]'].value;
newvar = oldvar.replace(child,"");
document.forms[0].elements['CMS_VAR[2]'].value = newvar;
}
}
</script>
<table cellspacing="0" cellpadding="0">
<tr>
<td class="text">
Tabelle wählen:
</td>
<td>
<select name="CMS_VAR[0]" size=1 onChange="switchDiv(this.value)">
<?php
// Einbinden der Datenbankverbindung aus einem anderen Contenido Modul
$my_local_vars['mod_name'] = 'include_db_conn';
$my_local_vars['sql'] = 'SELECT output FROM ' . $cfg["tab"]["mod"] . " WHERE name= '" . $my_local_vars['mod_name'] . "'";
$db->query($my_local_vars['sql']);
$db->next_record();
eval($db->f("output"));
// Abrufen von Tabellen und Spalten der vorher erstellten Sybase Datenbankverbindung
// Format: Tabellenname;Spaltenname
$my_local_vars['sql'] = " SELECT sysobjects.name, syscolumns.name
FROM sysobjects, syscolumns
WHERE sysobjects.id = syscolumns.id
AND sysobjects.type = 'U' ";
$my_local_vars['resID'] = sybase_query($my_local_vars['sql'], $my_db_vars['conn']);
if (!$my_local_vars['resID']) die ("Fehler in der Abfrage");
// Speichert in $my_db_data['Tabellen']['Spalten'] die Tabellen als key und die Spalten darin als Array
while ($my_local_vars['zeile'] = sybase_fetch_array($my_local_vars['resID']))
{
$my_table = $my_local_vars['zeile'][0];
if (!is_array($my_db_data[$my_table]))
{
$my_db_data[$my_table] = array();
}
$my_db_data[$my_table][] = $my_local_vars['zeile'][1];
}
// Tabellennamen DropDownList erzeugen
foreach (array_keys($my_db_data) as $my_local_vars['tmp'])
{
echo '<option value="' . $my_local_vars['tmp'] .'" ';
if ("CMS_VALUE[0]" == $my_local_vars['tmp'])
{
echo 'selected';
}
echo '>' . $my_local_vars['tmp'] . '</option>';
}
?>
</select>
</td>
</tr>
<tr>
<td>
Spalten wählen:<br>
<font size="-2">Werden in angeklickter Reihenfolge ausgegeben</font>
</td>
<td>
</td>
</tr>
<td>
</td>
<td>
<input type="hidden" name="CMS_VAR[2]" value="CMS_VALUE[2]">
<?php
// Hidden Field mit den checked Spalten zu einem Array machen
$my_local_vars['checkbox'] = explode(',','CMS_VALUE[2]');
foreach (array_keys($my_db_data) as $my_tmp_table)
{
echo '<div id="'.$my_tmp_table .'" style="display:';
if ($my_tmp_table == 'CMS_VALUE[0]') {echo 'block';}
else {echo 'none';}
echo ';">';
foreach ($my_db_data[$my_tmp_table] as $my_tmp_column)
{
echo '<input type="checkbox" name="CMS_VAR[1]" value="'.$my_tmp_column.'"';
foreach ($my_local_vars['checkbox'] as $my_tmp_checked)
{
if ($my_tmp_checked == $my_tmp_column)
{
echo 'checked';
}
}
echo ' onChange="changeHidden(this.value,this.checked)">'.$my_tmp_column.'<br>';
}
echo '</div>';
}
?>
</td>
</tr>
</table>
<?php
Code: Alles auswählen
<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : List_db_table v1.0
* Author : Chopper
* Created : 25-02-2005
************************************************/
// Einbinden der Datenbankverbindung aus einem anderen Contenido Modul
$my_local_vars['mod_name'] = 'include_db_conn';
$my_local_vars['sql'] = 'SELECT output FROM ' . $cfg["tab"]["mod"] . " WHERE name= '" . $my_local_vars['mod_name'] . "'";
$db->query($my_local_vars['sql']);
$db->next_record();
eval($db->f("output"));
// Entgegen nehmen und verarbeiten der Spaltennamen
$my_local_vars['sql_tables'] = 'CMS_VALUE[2]';
if ($my_local_vars['sql_tables'] == ''){$my_local_vars['sql_tables'] = '*';}
else{$my_local_vars['sql_tables'] = preg_replace('/,$/','',$my_local_vars['sql_tables']);}
$my_local_vars['sql'] = 'SELECT ' . $my_local_vars['sql_tables'] . ' FROM CMS_VALUE[0] ';
$my_local_vars['resID'] = sybase_query($my_local_vars['sql'], $my_db_vars['conn']);
if (!$my_local_vars['resID']) die ("Fehler in der Abfrage");
// Ausgeben der Spalten in Tabellenform
echo '<table border="1" cellpadding=0" cellspacing="0">';
while ($my_local_vars['zeile'] = sybase_fetch_row($my_local_vars['resID']))
{
echo '<tr>';
foreach ($my_local_vars['zeile'] as $my_local_vars['tmp'])
{
echo '<td>' . $my_local_vars['tmp'] . '</td>';
}
echo '</tr>';
}
echo '</table>';
?>
MfG
Chopper