Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Управление данными таблицы БД (http://forum.oszone.net/showthread.php?t=117021)

FoXLee 12-09-2008 17:31 897343

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

vadimiron 14-09-2008 12:46 898745

Вопрос не очень понятен.... Выводите в обычной таблице данные, а в последнем столбце сделайте кнопочку, по которой перейдёте на страницу редактирования именно этой записи

Coutty 14-09-2008 13:36 898780

А то и вовсе воспользуйтесь скриптами phpMyAdmin для управления БД.

vadimiron 14-09-2008 15:07 898838

Цитата:

Цитата Coutty
А то и вовсе воспользуйтесь скриптами phpMyAdmin для управления БД. »

Ну или посмотрите, как там сделано

FoXLee 15-09-2008 18:02 900022

Я кнопочку сделал, но она просто открывает окно модификации/удаления, но не выбирает именно ту запись, под которой была эта кнопка.
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\">
<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 900496

Измените эту строчку вот так:
PHP код:

<FORM METHOD="post\" ACTION=\"show_modvac.php?id=".$vac_id."\"> 

Таким образом вы будете передавать в окно модификации ID той записи, которую необходимо модифицировать, ну а дальше по ID...

FoXLee 16-09-2008 09:40 900501

Спасибо, попробую.

timon4ik 16-09-2008 10:26 900532

FoXLee, исправил строчку, теперь правильно

FoXLee 16-09-2008 11:51 900585

Исправил на
PHP код:

<FORM METHOD="post\" ACTION=\"show_modvac.php".$vac_id."\"> 

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

timon4ik 16-09-2008 12:43 900624

Вы забыли вопросительный знак после show_modvac.php :
PHP код:

<FORM METHOD="post\" ACTION=\"show_modvac.php?".$vac_id."\"> 

И в файле show_modvac.php получаем id записи:
PHP код:

$id=$_SERVER['QUERY_STRING']; 


FoXLee 16-09-2008 13:07 900637

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

sel_byvac_id.php
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
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>



timon4ik 16-09-2008 13:30 900655

Я вас немного запутал))
Если
PHP код:

<FORM METHOD="post\" ACTION=\"show_modvac.php?vac_id=".$vac_id."\"> 

то
PHP код:

$vac_id=$_GET['vac_id']; 

А если
PHP код:

<FORM METHOD="post\" ACTION=\"show_modvac.php?".$vac_id."\"> 

то
PHP код:

$vac_id=$_SERVER['QUERY_STRING']; 

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

FoXLee 18-09-2008 17:25 902626

Да, спасибо, распутали меня )))

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

Coutty 18-09-2008 17:55 902652

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

FoXLee 18-09-2008 18:03 902656

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

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

timon4ik 18-09-2008 20:04 902735

Можно добавить в таблицу поле timestamp:
Код:

ADD COLUMN `dt` timestamp(6) NOT NULL DEFAULT 'YYMMDD';
Заполняться будет автоматически в формате YYMMDD

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

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

dima1981 18-09-2008 20:20 902749

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

timon4ik 19-09-2008 09:24 903090

dima1981,
Если нужно преобразовать дату полученную из MySQL-поля timestamp, то можно написать что-то типа этого:
PHP код:

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

А если нужно сгенерировать дату в момент формирования страницы - воспользуйтесь функцией date()

FoXLee 19-09-2008 12:27 903198

Спасибо!

dima1981 19-09-2008 17:24 903401

timon4ik вот такая ситуация к примеру выглядит так

PHP код:

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

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

timon4ik 19-09-2008 17:52 903429

dima1981, не понял, уточните вопрос.

dima1981 19-09-2008 18:10 903442

данные выводятся из базы в масив к примеру
PHP код:

while ($abc mysql_fetch_row($sql)){echo ("<tr><td> $abc[0]</td><td> $abc[1]</td><td> $abc[2]</td></tr>)";} 

, далее $abc[0] показывает поле timestamp, теперь хочу это поле перед тем как оно отобразится в браузере отформатировать дд/мм/гг например и как это сделать посредством того кода, который вы привели на второй странице, дошол только до того, что взять код в кавычки и прописать его перед $abc[0] , не работает

timon4ik 19-09-2008 22:17 903671

dima1981
Я привел примитивный скрипт, применение которого и разъяснять-то нечего, тем более я прокомментировал в нем каждую строчку.
Для лучшего понимания я бы советовал вам почитать какой-нибудь учебник по PHP.

Igor_I 20-09-2008 00:44 903794

$timestamp=$abc[0];


Время: 10:48.

Время: 10:48.
© OSzone.net 2001-