Spaces:
Sleeping
Sleeping
File size: 6,691 Bytes
21fefa5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | <!DOCTYPE html>
<html lang="uk">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Таблиця {{ table_name }}</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
</head>
<body>
<div class="container mt-4">
<div class="d-flex justify-content-between align-items-center mb-4">
<h1>Таблиця: {{ table_name }}</h1>
<a href="/" class="btn btn-primary">Назад</a>
</div>
<!-- Структура таблиці -->
<div class="card mb-4">
<div class="card-header bg-info text-white">
<h5>Структура таблиці</h5>
</div>
<div class="card-body p-0">
<div class="table-responsive">
<table class="table table-striped table-bordered mb-0">
<thead class="table-dark">
<tr>
<th>Поле</th>
<th>Тип</th>
<th>Null</th>
<th>Ключ</th>
<th>За замовчуванням</th>
<th>Додатково</th>
</tr>
</thead>
<tbody>
{% for column in columns %}
<tr>
<td>{{ column.Field }}</td>
<td>{{ column.Type }}</td>
<td>{{ column.Null }}</td>
<td>{{ column.Key }}</td>
<td>{{ column.Default }}</td>
<td>{{ column.Extra }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
<!-- Дані таблиці -->
<div class="card">
<div class="card-header bg-success text-white">
<h5>Дані таблиці (перші 100 рядків)</h5>
</div>
<div class="card-body p-0">
<div class="table-responsive">
<table class="table table-striped table-bordered mb-0">
<thead class="table-dark">
<tr>
{% for column in columns %}
<th>{{ column.Field }}</th>
{% endfor %}
</tr>
</thead>
<tbody>
{% for row in data %}
<tr>
{% for column in columns %}
<td>{{ row[column.Field] }}</td>
{% endfor %}
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
<div class="card-footer">
<p class="mb-0">Показано записів: {{ data|length }} (максимум 100)</p>
</div>
</div>
<!-- SQL генератор -->
<div class="card mt-4">
<div class="card-header bg-primary text-white">
<h5>SQL запити для таблиці {{ table_name }}</h5>
</div>
<div class="card-body">
<div class="mb-3">
<h6>SELECT всіх даних</h6>
<div class="input-group">
<input type="text" class="form-control" value="SELECT * FROM {{ table_name }}" readonly id="select-query">
<button class="btn btn-outline-secondary" type="button" onclick="copyToClipboard('select-query')">Копіювати</button>
<a href="/execute?query=SELECT * FROM {{ table_name }}" class="btn btn-primary" target="_blank">Виконати</a>
</div>
</div>
<div class="mb-3">
<h6>INSERT новий запис</h6>
<div class="input-group">
<input type="text" class="form-control" value="INSERT INTO {{ table_name }} ({% for column in columns %}{{ column.Field }}{% if not loop.last %}, {% endif %}{% endfor %}) VALUES (/* значення */);" readonly id="insert-query">
<button class="btn btn-outline-secondary" type="button" onclick="copyToClipboard('insert-query')">Копіювати</button>
</div>
</div>
<div class="mb-3">
<h6>UPDATE запис</h6>
<div class="input-group">
<input type="text" class="form-control" value="UPDATE {{ table_name }} SET /* поле = значення */ WHERE /* умова */" readonly id="update-query">
<button class="btn btn-outline-secondary" type="button" onclick="copyToClipboard('update-query')">Копіювати</button>
</div>
</div>
<div>
<h6>DELETE запис</h6>
<div class="input-group">
<input type="text" class="form-control" value="DELETE FROM {{ table_name }} WHERE /* умова */" readonly id="delete-query">
<button class="btn btn-outline-secondary" type="button" onclick="copyToClipboard('delete-query')">Копіювати</button>
</div>
</div>
</div>
</div>
</div>
<script>
function copyToClipboard(elementId) {
const element = document.getElementById(elementId);
element.select();
document.execCommand('copy');
// Додати підсвічування для зворотного зв'язку
element.classList.add('bg-success', 'text-white');
setTimeout(() => {
element.classList.remove('bg-success', 'text-white');
}, 500);
}
</script>
</body>
</html> |