Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
2 / 2 / 1
Регистрация: 16.10.2009
Сообщений: 112
1

Добавление записи в любую таблицу любой базы MySQL из web-интерфейса

16.10.2014, 12:34. Показов 1747. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Не хватает компетенции для решения задачи. Времени на расширение компетенции -тоже.
Осваиваю PHP. Нарисовал код, который, делает следующее:
Соединяется с сервером MySQL,
Отображает список всех баз в виде ссылок,
Отображает таблицы каждой базы по ссылке,
Отображает структуру и содержимое таблицы по ссылке.

Теперь мне нужно реализовать следующее:
Возможность добавить запись в любую таблицу любой базы через форму, которая бы отображалась
при клике на ссылку определенной таблицы. То есть, форма ввода должна, создаваться "на лету",
так, чтобы элементы <input> соответствовали полям отображенной таблицы.

Собственно, код:
C
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
<?php
echo "<html><head><title>Работа с MySQL</title></head></html>";
@$link = mysql_connect('localhost', 'root', '')or die ("<br>ошибка подключения к бД");
mysql_set_charset(utf8,$link);
$res = mysql_query("SHOW DATABASES")or die ("ошибка обращения");
$num_db = mysql_num_rows($res);
echo "Информация о БД представлена ниже <br><br>";
echo "На сервере <b>Localhost</b> зарегистрировано -->> <b>$num_db</b> ДБ:<br><br>";
 
while ($row = mysql_fetch_array($res)) 
{
$name_db = ($row['Database']);
echo "Посмотрим <a href = http://localhost/index.php?db=$name_db>$name_db</a><br />";
}
 
if (isset($_GET['db']) and isset($_GET['tb'])) {
$tbname= ($_GET["tb"])or die ("ошибка базы");
$dbname= ($_GET["db"])or die ("ошибка таблицы");
$link_DB=mysql_connect("localhost","root","")or die ("ошибка");
mysql_select_DB($dbname,$link_DB);
$result=mysql_query("SELECT * FROM $dbname.$tbname");
@$fields=mysql_num_fields($result)or die ("<br>ошибка в имени Таблицы");
$rows=mysql_num_rows($result);
$table=mysql_field_table($result,0);
//echo "Таблица <b>$table</b> содержит <b>$fields</b> колонок и <b>$rows</b>строк<br>";
echo "<br>Таблица <b>$table</b> содержит следующие поля:<br>";
echo "<table border=''><tr align ='center'><td>Тип</td><td>Имя поля</td><td>Размерность</td><td>Атрибуты</td></tr>";
for($i=0; $i<$fields; $i++){
$type=mysql_field_type($result, $i);
$name=mysql_field_name($result, $i);
$len=mysql_field_len($result, $i);
$flags=mysql_field_flags($result, $i);
echo "<tr><td>$type</td><td>$name</td><td>$len</td><td>$flags</td></tr>";
}
echo "</table></html>";
}
?>
 
<?php
if (isset($_GET['db']) and isset($_GET['tb'])) {
//
$query_show = mysql_query('SHOW COLUMNS FROM '.$_GET['tb']);
$query_select = mysql_query('SELECT * FROM '.$_GET['tb']);
$rows_count = mysql_num_rows($query_select);
?> 
<h4>Содержимое таблицы <?php echo $_GET['tb']."<br>";?>
Всего записей: <?php echo mysql_num_rows($query_select)."<br>";?></h4><?php
?> <table border='2'><tr>
<?php $query_show = mysql_query('SHOW COLUMNS FROM '.$_GET['tb']);
if( isset($_GET['page'])) {
$query_select = mysql_query('SELECT * FROM '.$_GET['tb'].' LIMIT 10 OFFSET '.((int)$_GET['page']-1)*10);
} else {
$query_select = mysql_query('SELECT * FROM '.$_GET['tb'].' LIMIT 10');
}
while( $row = mysql_fetch_array($query_show) ) {
echo "<td>".$row['Field']."</td>";
}
?> </tr>
<?php while( $row = mysql_fetch_array($query_select) ) {
echo '<tr>';
for ($i = 0; $i < count($row); $i++) {
echo "<td>".$row[$i]."</td>";
}
echo '</tr>';
}
?></table>
 
<?php if( $rows_count > 10 and (!isset($_GET['page']) or $_GET['page'] == '1')) {
$page = 1;
?><a href='index.php?db=<?php echo $_GET['db'];?>&tb=<?php echo $_GET['tb'] ?>&page=2'>След. 10 записей</a>
<?php }
else if ($rows_count > 10 and isset($_GET['page']) and ((int)($_GET['page'])*10 < $rows_count)) {
?><a href='index.php?db=<?php echo $_GET['db'];?>&tb=<?php echo $_GET['tb'] ?>&page=<?php echo (int)($_GET['page'])-1 ?>'>Пред. 10 записей</a>
<a href='index.php?db=<?php echo $_GET['db'];?>&tb=<?php echo $_GET['tb'] ?>&page=<?php echo (int)($_GET['page'])+1 ?>'>След. 10 записей</a>
<?php }
else if ($rows_count > 10 and isset($_GET['page']) and ((int)($_GET['page'])*10 > $rows_count)) {
?><a href='index.php?db=<?php echo $_GET['db'];?>&tb=<?php echo $_GET['tb'] ?>&page=<?php echo (int)($_GET['page'])-1 ?>'>Пред. 10 записей</a>
<?php }
}
?>
 
 
<?php
if (isset($_GET['db'])) {
//Получаем переданное по ссылке имя базы
$dbname= ($_GET["db"]);
 
//Соединяемся с сервером
$link= mysql_connect("localhost","root","");
 
//Отбираем базу по полученному значению
mysql_select_db($dbname);
 
//Выполняем запрос
$query = "SHOW TABLES FROM $dbname";
$result=mysql_query($query);
 
//Получаем количество строк $res -то есть количество таблиц.
@$count = mysql_num_rows($result)or die ("<br>ошибка в имени БД");
//Выводим это значение...
echo "В базе данных <b>$dbname</b> содержится <b>$count</b> таблиц:<br><br>";
//...и имена таблиц
while ($row = mysql_fetch_row($result))
{
    echo "Таблица: <a href = http://localhost/homework/index.php?db=$dbname&tb={$row[0]}>{$row[0]}</a> <br />";
}
 
} else echo "";
?>
Тот же код я сделал еще в виде 4 *.php файлов (чтобы с открытием/закрытием сессий практиковаться, но это другая история), если нужно- пришлю.

Спасибо

Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.10.2014, 12:34
Ответы с готовыми решениями:

Добавление записи в таблицу при работе процедуры mysql
Есть скрипт 1, вызывающая mysql процедуру, которая полностью меняет значения ячеек таблицы ,...

Добавление новой записи в таблицу и осуществление запроса на добавление при загрузке формы
Здравствуйте. Есть одна просьба, подскажите как сделать или пример кода покажите на вот такую...

Автоматическое добавление записи в таблицу, после добавления записи в другой таблице
Привет всем! Подскажите, как Access 2010 сделать так, чтобы при добавлении записи в одной таблице,...

Добавление записи в таблицу на основе существующей записи
Здравствуйте! PHP и MySQL только начинаю изучать и естественно не все получается. У меня есть...

11
177 / 125 / 28
Регистрация: 30.10.2013
Сообщений: 686
16.10.2014, 14:09 2
я конечно боюсь спросить, но почему вы решили, что вам не подойдет phpmyadmin?
0
2 / 2 / 1
Регистрация: 16.10.2009
Сообщений: 112
16.10.2014, 14:17  [ТС] 3
Мне - подойдет, конечно. Но тому, кто ставит задачу- нет.
0
177 / 125 / 28
Регистрация: 30.10.2013
Сообщений: 686
16.10.2014, 14:21 4
И даже поговорить с этим человеком никак нельзя? показать ему phpmyadmin? рассказать о его возможностях? Вы пробовали?
0
2 / 2 / 1
Регистрация: 16.10.2009
Сообщений: 112
16.10.2014, 14:29  [ТС] 5
В общем виде, все по-моему так. Кнопка, которая еще раз сделает запрос и выведет все содержимое таблицы +1 пустая строка, с инпутом в каждом столбце, откуда insert(ом) все будет передано в таблицу.
Как это реализовать?

Добавлено через 1 минуту
AmsTaFFix, Я бы с великой радостью! Но дело в том что заказчик- преподаватель и это является допзаданием к сделанной работе.
0
177 / 125 / 28
Регистрация: 30.10.2013
Сообщений: 686
16.10.2014, 14:35 6
Цитата Сообщение от Дима Артёмов Посмотреть сообщение
AmsTaFFix, Я бы с великой радостью! Но дело в том что заказчик- преподаватель и это является допзаданием к сделанной работе.
все, вопросы все отппдают

1. вы умеет формы делать?
2. вам можно JS использоваться?
0
2 / 2 / 1
Регистрация: 16.10.2009
Сообщений: 112
16.10.2014, 14:44  [ТС] 7
1.Формы делать умею.
2.JS прикрутить думаю не возбраняется. Теоретически. Задача- чтобы работало. И с JS я знаком чуть лучше, чем с РНР.
0
177 / 125 / 28
Регистрация: 30.10.2013
Сообщений: 686
16.10.2014, 15:40 8
тогда какая проблема по клику отправить данные из полей на сервер?
0
2 / 2 / 1
Регистрация: 16.10.2009
Сообщений: 112
16.10.2014, 16:03  [ТС] 9
Отправить не проблема. Проблема написать. Код, который, здесь приведен я (к моему стыду) мучил почти 4 дня. Я не прошу все сделать за меня. Нужен просто тьюториал.
0
> /dev/null
286 / 119 / 86
Регистрация: 14.05.2014
Сообщений: 767
16.10.2014, 21:05 10
извините но то что вы написали полное извращение.
Если у вас нету времени на расширение своей компетенции, то зачем вообще браться за это дело?

А вообще для этого есть уже готовый скрипт клац

Установили в любую директорию и у вас даже больше чем нужно.
0
2 / 2 / 1
Регистрация: 16.10.2009
Сообщений: 112
16.10.2014, 21:42  [ТС] 11
Вы, видимо не все прочли. Это задание. Домашнее. Учебное по PHP/MySQL. Потому и взялся, потому и "компетенция". А что такое phpMyAdmin я знаю.
Спасибо
0
2 / 2 / 1
Регистрация: 16.10.2009
Сообщений: 112
10.11.2014, 09:12  [ТС] 12
Решение найдено. Весь код от стр 28 до стр. 38 заменяем на этот фрагмент:

PHP
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
//Собственно, процедура добавления:
if (isset($_GET['insert'])) {
        //В следующей переменной сразу сформулирован запрос:
        $sql = "Insert into $tbname Values (";
        for($i = 0; $i < $fields - 1; $i++)//счетчик будет перебирать все поля в базе, и пока они есть...
        //будет вставлять их имена в запрос...
        {
        $sql .= "'".$_POST[mysql_field_name($result, $i)]."', ";
        }
        $sql .= "'".$_POST[mysql_field_name($result, $fields - 1)]."')";
        //...который бкдет выполняться, пока счетчик не промотает все поля
        if (!mysql_query($sql)) 
            echo "<b>При добавлении записи возникла ошибка!</b>";
        else
            echo "<b>Добавлена новая запись!</b>";
    }
echo "Таблица <b>$table</b> содержит <b>$fields</b> колонок и <b>$rows</b>строк<br>";
echo "Структура таблицы <b>$table</b>:<br>";
echo "<table border='2' bordercolor= #5F9EA0><tr align ='center'><td>Тип</td><td>Имя поля</td><td>Размерность</td><td>Атрибуты</td></tr>";
    for($i=0; $i<$fields; $i++)
    {
    $type=mysql_field_type($result, $i);
    $name=mysql_field_name($result, $i);
    $len=mysql_field_len($result, $i);
    $flags=mysql_field_flags($result, $i);
    echo "<tr><td>$type</td><td>$name</td><td>$len</td><td>$flags</td></tr>";
    }
echo "</table></html>"
?>
0
10.11.2014, 09:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.11.2014, 09:12
Помогаю со студенческими работами здесь

MySql добавление в таблицу
Доброго времени суток. Есть приложение на C# , необходимо с помощью формы(при нажатии на кнопку)...

Добавление полей в таблицу MySQL
Подобно теме https://www.cyberforum.ru/php-database/thread113508.html#post3439785 А вот у меня...

Добавление записей в таблицу БД MySql
Не пойму почему не работает добавление записей в БД. Вот код метода: public void insert(String...

Добавление записи в БД MySQL
Доброго времени суток! Есть 2 элемента TextBox и 1 элемент Button. Как правильно будет выглядеть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru