Войти

Показать полную графическую версию : Управление данными таблицы БД


Страниц : [1] 2

FoXLee
12-09-2008, 17:31
Здравствуйте. Появилось желание переделать систему управления данных таблицы БД, дело в том, что у меня она сделана так, что приходится нажимать на ссылку "Изменить данные", затем из выползающего списка выбрать запись в таблице и далее можно обновлять нужные строчки... Хотелось бы сделать так, чтобы просто в списке записей таблицы были под каждой записей кнопки/ссылки "Изменить" и "Удалить" как это сделать?

vadimiron
14-09-2008, 12:46
Вопрос не очень понятен.... Выводите в обычной таблице данные, а в последнем столбце сделайте кнопочку, по которой перейдёте на страницу редактирования именно этой записи

Coutty
14-09-2008, 13:36
А то и вовсе воспользуйтесь скриптами phpMyAdmin для управления БД.

vadimiron
14-09-2008, 15:07
А то и вовсе воспользуйтесь скриптами phpMyAdmin для управления БД. »
Ну или посмотрите, как там сделано

FoXLee
15-09-2008, 18:02
Я кнопочку сделал, но она просто открывает окно модификации/удаления, но не выбирает именно ту запись, под которой была эта кнопка.
<?
$db_name = "GoDB";
$table_name = "vacansies";
$connection = @mysql_connect("localhost", "root", "qwerty")
or die("Невозможно подключиться MySQL.");
$db = @mysql_select_db ($db_name, $connection)
or die ("Невозможно выбрать базу данных.");
$sql = "SELECT vac_id, vac_name, age, formation, exp, duties, conditions, contacts, date
FROM $table_name
ORDER BY vac_id
";
$result = @mysql_query($sql, $connection)
or die("Невозможно выполнить запрос.");
$display_block = "";
while ($row = mysql_fetch_array($result)) {
$vac_id = $row['vac_id'];
$vac_name = $row['vac_name'];
$age = $row['age'];
$formation = $row['formation'];
$exp = $row['exp'];
$duties = $row['duties'];
$conditions = $row['conditions'];
$contacts = $row['contacts'];
$date = $row['date'];
$display_block .= "<p><strong>$vac_name</strong><br>
<strong>Требования: </strong> Возраст: $age $formation $exp<br>
<strong>Обязанности: </strong> $duties<br>
<strong>Условия: </strong> $conditions $contacts<br>
<strong>Дата добавления вакансии: </strong> $date
</p>
<FORM METHOD=\"post\" ACTION=\"show_modvac.php\">
<p><INPUT TYPE=\"SUBMIT\" NAME=\"submit\" VALUE=\"Изменить\"></P>
</form>"
;


}
?>
<html>
<head>
<title>Список Вакансий (сортировка по номеру)</title>
</head>
<body>
<h1>Список Вакансий</h1>
<?
echo "$display_block";
?>
<p><a href ="index.php">Назад</a></p>
</body>
</html>

timon4ik
16-09-2008, 09:30
Измените эту строчку вот так:
<FORM METHOD=\"post\" ACTION=\"show_modvac.php?id=".$vac_id."\">
Таким образом вы будете передавать в окно модификации ID той записи, которую необходимо модифицировать, ну а дальше по ID...

FoXLee
16-09-2008, 09:40
Спасибо, попробую.

timon4ik
16-09-2008, 10:26
FoXLee, исправил строчку, теперь правильно

FoXLee
16-09-2008, 11:51
Исправил на
<FORM METHOD=\"post\" ACTION=\"show_modvac.php".$vac_id."\">

Теперь нажатием на кнопку, переходит на страницу http://localhost/show_modvac.php1 где 1 - номер записи. Но файл модификации у меня называется просто show_modvac.php

timon4ik
16-09-2008, 12:43
Вы забыли вопросительный знак после show_modvac.php :
<FORM METHOD="post\" ACTION=\"show_modvac.php?".$vac_id."\">
И в файле show_modvac.php получаем id записи:
$id=$_SERVER['QUERY_STRING'];

FoXLee
16-09-2008, 13:07
Так, сделал, но почему-то поля ввода, которые автоматически должны заполняться данными из таблицы (в show_modvac.php), заполняются только в vac_id=1, в записи 2 и 4 поля ввода не заполняются, но если их заполнить самостоятельно новыми данными и нажать кнопку "обновить запись" - они обновляются успешно.

sel_byvac_id.php
<?
$db_name = "GoDB";
$table_name = "vacansies";
$connection = @mysql_connect("localhost", "root", "qwerty")
or die("Невозможно подключиться MySQL.");
$db = @mysql_select_db ($db_name, $connection)
or die ("Невозможно выбрать базу данных.");
$sql = "SELECT vac_id, vac_name, age, formation, exp, duties, conditions, contacts, date
FROM $table_name
ORDER BY vac_id
";
$result = @mysql_query($sql, $connection)
or die("Невозможно выполнить запрос.");
$display_block = "";
while ($row = mysql_fetch_array($result)) {
$vac_id = $row['vac_id'];
$vac_name = $row['vac_name'];
$age = $row['age'];
$formation = $row['formation'];
$exp = $row['exp'];
$duties = $row['duties'];
$conditions = $row['conditions'];
$contacts = $row['contacts'];
$date = $row['date'];
$display_block .= "<p><strong>$vac_name</strong><br>
<strong>Требования: </strong> Возраст: $age $formation $exp<br>
<strong>Обязанности: </strong> $duties<br>
<strong>Условия: </strong> $conditions $contacts<br>
<strong>Дата добавления вакансии: </strong> $date
</p>
<FORM METHOD=\"post\" ACTION=\"show_modvac.php?vac_id=".$vac_id."\">
<p><INPUT TYPE=\"SUBMIT\" NAME=\"submit\" VALUE=\"Изменить\"></P>
</form>
<FORM METHOD=\"post\" ACTION=\"show_delvac.php\">
<p><INPUT TYPE=\"SUBMIT\" NAME=\"submit\" VALUE=\"Удалить\"></P>
</form>"
;


}
?>
<html>
<head>
<title>Список Вакансий (сортировка по номеру)</title>
</head>
<body>
<h1>Список Вакансий</h1>
<?
echo "$display_block";
?>
<p><a href ="index.php">Назад</a></p>
</body>
</html>

http://localhost/show_modvac.php
<?
$vac_id=$_SERVER['QUERY_STRING'];
$db_name = "GoDB";
$table_name = "vacansies";
$connection = @mysql_connect("localhost", "root", "qwerty")
or die("Невозможно подключиться MySQL.");
$db = @mysql_select_db ($db_name, $connection)
or die ("Невозможно выбрать базу данных.");
$sql = "SELECT vac_id, vac_name, age, formation, exp, duties, conditions, contacts, date
FROM $table_name
WHERE vac_id = $vac_id
";
$result = @mysql_query($sql, $connection)
or die("Невозможно выполнить запрос.");
$row = mysql_fetch_array($result);
?>
<html>
<head>
<title>Управление вакансиями: Изменение вакансии</title>
</head>
<body>
<h1>Управление вакансиями</h1>
<h2><em>Изменение вакансии</em></h2>
<FORM METHOD="post" ACTION="do_modvac.php">
<INPUT TYPE="hidden" name="vac_id" value="<? echo $row['vac_id']; ?>">
<P><STRONG>Номер вакансии :</STRONG><BR>
<INPUT TYPE="text" NAME="vac_id" VALUE="<? echo $row['vac_id']; ?>" SIZE=5 MAXLENGHT=5></p>
<P><STRONG>Должность :</STRONG><BR>
<INPUT TYPE="text" NAME="vac_name" VALUE="<? echo $row['vac_name']; ?>" SIZE=100 MAXLENGHT=150></p>
<P><STRONG>Возраст :</STRONG><BR>
<INPUT TYPE="text" NAME="age" VALUE="<? echo $row['age']; ?>" SIZE=20 MAXLENGTH=100</p>
<P><STRONG>Образование :</STRONG><BR>
<INPUT TYPE="text" NAME="formation" VALUE="<? echo $row['formation']; ?>" SIZE=100 MAXLENGTH=150</p>
<P><STRONG>Опыт работы :</STRONG><BR>
<INPUT TYPE="text" NAME="exp" VALUE="<? echo $row['exp']; ?>" SIZE=100 MAXLENGTH=150</p>
<P><STRONG>Обязанности :</STRONG><BR>
<INPUT TYPE="text" NAME="duties" VALUE="<? echo $row['duties']; ?>" SIZE=100 MAXLENGTH=150</p>
<P><STRONG>Условия :</STRONG><BR>
<INPUT TYPE="text" NAME="conditions" VALUE="<? echo $row['conditions']; ?>" SIZE=100 MAXLENGTH=150</p>
<P><STRONG>Контакты :</STRONG><BR>
<INPUT TYPE="text" NAME="contacts" VALUE="<? echo $row['contacts']; ?>" SIZE=100 MAXLENGTH=150</p>
<P><STRONG>Дата добавления вакансии (ГГГГ-ММ-ДД) :</STRONG><BR>
<INPUT TYPE="text" NAME="date" VALUE="<? echo $row['date']; ?>" SIZE=10 MAXLENGTH=10</p>
<P><INPUT TYPE="SUBMIT" NAME="submit" VALUE="Обновить"></P>
<p><a href="pick_modvac.php">Назад</a></p>
<p><a href="index.php">Возврат к главному меню</a></p>
</FORM>
</BODY>
</HTML>

http://s43.radikal.ru/i100/0809/03/dd77661417bct.jpg (http://radikal.ru/F/s43.radikal.ru/i100/0809/03/dd77661417bc.jpg.html)
http://s54.radikal.ru/i145/0809/f4/e8a39a886996t.jpg (http://radikal.ru/F/s54.radikal.ru/i145/0809/f4/e8a39a886996.jpg.html)

timon4ik
16-09-2008, 13:30
Я вас немного запутал))
Если
<FORM METHOD=\"post\" ACTION=\"show_modvac.php?vac_id=".$vac_id."\">
то
$vac_id=$_GET['vac_id'];

А если
<FORM METHOD=\"post\" ACTION=\"show_modvac.php?".$vac_id."\">
то
$vac_id=$_SERVER['QUERY_STRING'];

А то получилось что в значении $vac_id у вас оказалась строка "vac_id=1", что есть неправильно :)

FoXLee
18-09-2008, 17:25
Да, спасибо, распутали меня )))

Все работает как надо, осталось только улучшить ))) Вопрос - как сделать, чтобы ID и дата добавлялись автоматически при добавлении записи в таблицу?

Coutty
18-09-2008, 17:55
ID будет автоматом добавляться, если в таблице столбец помечен как auto_increment
Насчёт даты... Я не уверен, но, кажется, нельзя автоматом. Разве только какой-нибудь sql-запрос специальный (в mysql наверняка есть функция вроде GET_DATE или что-то подобное).

FoXLee
18-09-2008, 18:03
Спасибо, я об этом знал, но когда пробовал, забыл все упоминания об vac_id убрать из add.php

Ладно, попробую сам с датой решить...

timon4ik
18-09-2008, 20:04
Можно добавить в таблицу поле timestamp:
ADD COLUMN `dt` timestamp(6) NOT NULL DEFAULT 'YYMMDD';
Заполняться будет автоматически в формате YYMMDD

Есть еще варианты:
YYYYMMDD
YYMMDDHHMMSS
YYYYMMDDHHMMSS

Не забывайте менять длину поля в зависимости от длины устанавливаемого дефолтного значения.

dima1981
18-09-2008, 20:20
timon4ik, вы не знаете случаем, как в браузере дату размещения информации отображать не год, месяц, день, время, но к примеру день, месяц, год мне что то не встречались решения таой задачи, так и оставил в соответствии со стандартом?
но все таки хорошо бы для отечественной аудитории понятный формат дат размещать )

timon4ik
19-09-2008, 09:24
dima1981,
Если нужно преобразовать дату полученную из MySQL-поля timestamp, то можно написать что-то типа этого:
<?
$timestamp="080919"; // дата, полученная из поля timestamp в формате YYMMDD
$timestamp=chunk_split($timestamp, 2, " "); // разбиваем строку timestamp на группы по 2 цифры с разделителями-пробелами
$timestamp=explode(" ", $timestamp); // режем строку по разделителю-пробелу и пары цифр загоняем в массив
echo $timestamp[2]."-".$timestamp[1]."-".$timestamp[0]; // выводим элементы массива в привычном для нас порядке "DD-MM-YY"
?>

А если нужно сгенерировать дату в момент формирования страницы - воспользуйтесь функцией date() (http://php.ru/manual/function.date.html)

FoXLee
19-09-2008, 12:27
Спасибо!

dima1981
19-09-2008, 17:24
timon4ik вот такая ситуация к примеру выглядит так

echo ("<tr><td>$abc[1]</td><td align='center'>$abc[2]// требуется разместить этот код <?
$timestamp="080919"; // дата, полученная из поля timestamp в формате YYMMDD
$timestamp=chunk_split($timestamp, 2, " "); // разбиваем строку timestamp на группы по 2 цифры с разделителями-пробелами
$timestamp=explode(" ", $timestamp); // режем строку по разделителю-пробелу и пары цифр загоняем в массив
echo $timestamp[2]."-".$timestamp[1]."-".$timestamp[0]; // выводим элементы массива в привычном для нас порядке "DD-MM-YY"
?> тут, как быть в подобной ситуации?</td><td align='center'>$abc[3]</td></tr>");

Для осуществления такого в природе способы существуют, как таковые?
Заранее благодарен )




© OSzone.net 2001-2012