Files
ITL-Huge/application/view/_templates/dbmanager_footer.php
2026-01-14 23:04:53 +01:00

106 lines
5.6 KiB
PHP

</main>
</div><!-- end dbm-main -->
<!-- SQL Console (Full Width at Bottom) -->
<div class="dbm-console expanded">
<div class="dbm-console-header">
<div class="dbm-console-title">
<i data-lucide="terminal" class="icon"></i>
SQL Console
</div>
<i data-lucide="chevron-up" class="dbm-console-toggle"></i>
</div>
<div class="dbm-console-body">
<form id="sql-form" method="post" action="<?php echo Config::get('URL'); ?>sql/execute">
<?php $current_database = isset($this->database_name) ? $this->database_name : Config::get('DB_NAME'); ?>
<input type="hidden" name="database_name" value="<?php echo htmlspecialchars($current_database); ?>">
<div class="dbm-sql-editor">
<div id="sql-highlight" class="dbm-sql-highlight"></div>
<textarea name="sql_query" id="sql_query" placeholder="SELECT * FROM table_name LIMIT 10;
-- Write your SQL query here
-- Press Execute or Ctrl+Enter to run"></textarea>
</div>
<div class="dbm-sql-actions">
<button type="submit" class="dbm-btn dbm-btn-success">
<i data-lucide="play"></i>
Execute
</button>
<button type="button" class="dbm-btn dbm-btn-secondary" onclick="document.getElementById('sql_query').value = ''; document.getElementById('sql-highlight').innerHTML = '';">
Clear
</button>
<select class="db-select" onchange="document.querySelector('input[name=database_name]').value = this.value;">
<?php foreach (DatabaseModel::getAllDatabases() as $db): ?>
<option value="<?php echo htmlspecialchars($db); ?>" <?php echo $db === $current_database ? 'selected' : ''; ?>>
<?php echo htmlspecialchars($db); ?>
</option>
<?php endforeach; ?>
</select>
</div>
</form>
<div id="sql-result" class="dbm-sql-result">
<?php
// Check for session result
$result = Session::get('sql_result');
if ($result) {
Session::set('sql_result', null);
if ($result['success']) {
echo '<div class="dbm-sql-result success">';
echo '<div class="dbm-sql-result-header">';
echo '<i data-lucide="check-circle"></i>';
echo htmlspecialchars($result['message']);
echo '<span style="margin-left: auto; color: var(--text-muted); font-size: 12px;">' . $result['execution_time'] . 'ms</span>';
echo '</div>';
if (!empty($result['result'])) {
echo '<div class="dbm-sql-result-body"><div class="dbm-table-wrapper"><table class="dbm-table"><thead><tr>';
foreach (array_keys($result['result'][0]) as $col) {
echo '<th>' . htmlspecialchars($col) . '</th>';
}
echo '</tr></thead><tbody>';
foreach ($result['result'] as $row) {
echo '<tr>';
foreach ($row as $value) {
echo '<td>' . ($value === null ? '<span class="null-value">NULL</span>' : htmlspecialchars(substr($value, 0, 100))) . '</td>';
}
echo '</tr>';
}
echo '</tbody></table></div></div>';
}
echo '</div>';
} else {
echo '<div class="dbm-sql-result error">';
echo '<div class="dbm-sql-result-header">';
echo '<i data-lucide="x-circle"></i>';
echo htmlspecialchars($result['message']);
echo '</div>';
if (!empty($result['error'])) {
echo '<div class="dbm-sql-result-body" style="padding: 16px; font-family: monospace; font-size: 13px; color: var(--accent-red);">' . htmlspecialchars($result['error']) . '</div>';
}
echo '</div>';
}
}
?>
</div>
</div>
</div>
</div><!-- end dbm-wrapper -->
</div><!-- end wrapper -->
<script src="<?php echo Config::get('URL'); ?>js/dbmanager.js"></script>
<script>
document.addEventListener('DOMContentLoaded', function() {
lucide.createIcons();
DBManager.init('<?php echo Config::get('URL'); ?>');
});
</script>
</body>
</html>