[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Работа с базой
Гость_andre
Добрый день. Очень нужна помощь с БД, вернее с работой с ей записями. Ситуация такая: имеется база данных и на страничке выводятся записи в виде таблицы:
Запись1.Поле1 Запись1.Поле 2 Запись1.Поле3
Запись2.Поле1 Запись2.Поле 2 Запись2.Поле3
итд.

С этим проблем, естественно, нет. Мне нужно сделать, чтобы выбранную запись можно было редактировать или удалять. Функции удаления/редактирования конечно же знаю. Только не представляю, как организовать кнопки на форме для выполнения этих функций, и как вообще выбирать запись таблицы... Задачка то вроде простенькая, на каком нибудь FoxPro делал такое не раз, но вот с php/mysql никак не могу понять... Заранее спасибо за помощь!



Спустя 22 минуты, 54 секунды (30.03.2010 - 14:01) ApuktaChehov написал(а):
Есть обычным способом:

Каждая запись - форма. В форме можно сделать скрытое поле, куда загнать id записи. При нажатии на кнопку этот id отправить на сервер, где его примет скрипт и обработает. Там же можно редактировать данные в MySQL с помощью оператора UPDATE.
Подробности в гугле.

Спустя 26 минут, 35 секунд (30.03.2010 - 14:27) Гость_andre написал(а):
Спасибо большое, я б сам не додумался:) Id возвращает, это самое главное, что было нужно. Ураааа:)

Спустя 13 часов, 19 минут, 51 секунда (31.03.2010 - 03:47) Гость_andre написал(а):
Ещё столкнулся с одной трудностью. База у меня выводится полностью в виде таблицы на одной странице. В скором будущем накопится у меня в базе несколько сотен записей и выводить всё это сразу будет как-то не очень рационально. Можно ли как-то сделать, чтобы выводились не все записи, а например, по 20 штук на страничку и были переходы на следующие. Ну как это обычно бывает, например,на сайтах объявлений.
Спасибо.

Спустя 12 минут, 53 секунды (31.03.2010 - 04:00) Adil написал(а):

Спустя 4 часа, 46 минут, 26 секунд (31.03.2010 - 08:47) Guest написал(а):
Спасибо за ссылку, всё работает. Единственная проблема, некорректно работает после выполнения запроса поиска. Организую поиск по одному из полей (задается в элементе text на форме), выводит на первой странице всё как надо и количество страниц пишет правильное. А вот при переходе на 2-ю и последующие страницы заданное значение для поиска куда-то теряется и база выдаётся полностью (те без запроса). Что надо дописать?
Код прилагается:

<?php
include ("info.inc");
echo "<html>
<head><link rel='stylesheet' type='text/css' href='stb.css'><title>Электронный журнал</title></head>
<body background='fon.jpg'>"
;

$link = mysql_connect($host, $user, $pass)
or die ("Невозможно подключиться к MySQL ");
mysql_query('SET NAMES cp1251');
mysql_select_db ($bd_name)
or die ("Невозможно выбрать БД ");
mysql_query('SET NAMES cp1251');
echo "<h2 align='center'>Электронный журнал</h2>";
echo "<center><a href='index.html' class='button' align='center'>На главную<a></center><br>";
$fkl = $_POST['f_klient'];
$fsp = $_POST['f_spez'];

echo '<table border width="100% bgcolor="#ffffff">';
echo "<form action='see.php', method='POST'>";
echo "<tr bgcolor='#9999FF'>
<th>Номер</th>
<th>Дата</th>
<th>Клиент <input type='text' align=center size=10 name='f_klient' value=
$fkl>
<input name='findk' class='button' type='submit' value='Найти'</th>
<th>Консультант <input type='text' align=center size=10 name='f_spez' value=
$fsp>
<input name='finds' class='button' type='submit' value='Найти' </th>
<th>Основная проблема</th>
<th>Методы и приёмы</th>
<th>Результат</th>
<th>Примечания</th>
</tr>"
;
echo "</form>";


$nums = 10;

if (isset($_GET['page'])) {
$page = intval($_GET['page']);
}
else {
$page = 1;
}

$query = "SELECT COUNT(*) AS `counter`
FROM `"
.$table_name."` WHERE klient LIKE '%".$fkl."%' AND spez LIKE '%".$fsp."%'";
$sql = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_assoc($sql);

$elements = $row['counter'];

$pages = ceil($elements/$nums);


if ($page < 1) {
$page = 1;
}
elseif ($page > $pages) {
$page = $pages;
}


$start = ($page-1)*$nums;

// когда у нас в таблице нет записей
if ($start < 0) $start = 0;

$query = "SELECT*FROM ".$table_name." WHERE klient LIKE '%".$fkl."%' AND spez LIKE '%".$fsp."%'
LIMIT
{$start}, {$nums}";
$sql = mysql_query($query) or die(mysql_error());

while ($row = mysql_fetch_assoc($sql)) {
// здесь выводим наши записи из базы

echo "<form action='look.php', method='POST'>";
echo "<tr bgcolor='#ffffff' style='vertical-align: top;'>
<td align=center><input type='text' align=center size=5 readonly name='numm' value='"
.$row[num]."'>
<input class='button' name='red' type='submit' value='Изменить'>
<input name='del' class='button' type='submit' value='Удалить'>
</td>
<td>
<input type='text' size=9 align=center readonly value='"
.$row[dat]."'>
</td>
<td>
<textarea rows=10 cols=10 readonly>"
.$row[klient]."</textarea></td>
<td>
<textarea rows=10 cols=10 readonly>"
.$row[spez]."</textarea></td>
<td><textarea rows=10 cols=30 readonly>"
.$row[prob]."</textarea></td>
<td><textarea rows=10 cols=30 readonly>"
.$row[met]."</textarea></td>
<td><textarea rows=10 cols=30 readonly>"
.$row[rez]."</textarea></td>
<td><textarea rows=10 cols=30 readonly>"
.$row[prim]."</textarea></td>
</tr>"
;
echo "</form>";


}



// далее нам надо прицепить листалку

$neighbours = 3;
$left_neighbour = $page - $neighbours;
if ($left_neighbour < 1) $left_neighbour = 1;

$right_neighbour = $page + $neighbours;
if ($right_neighbour > $pages) $right_neighbour = $pages;

if ($page > 1) {
print ' <a href="?page=1">В начало</a> ... <a href="?page=' . ($page-1) . '">←Назад </a> ';
}

for ($i=$left_neighbour; $i<=$right_neighbour; $i++) {
if ($i != $page) {
print ' -<a href="?page=' . $i . '">' . $i . '</a>-';
}
else {
// выбранная страница
print ' -<b>' . $i . '</b> -';
}
}


if ($page < $pages) {
print ' <a href="?page=' . ($page+1) . '"> Вперёд→</a> ... <a href="?page=' . $pages . '">В конец</a> ';
}

?>

</body></html>

Спустя 1 час, 24 минуты, 56 секунд (31.03.2010 - 10:11) Гость_andre написал(а):
Проблема в общем в том, что переменные для поиска при переходе между страницами методом post не передаются:
$fkl = $_POST['f_klient'];
$fsp = $_POST['f_spez'];

Таким образом, просто теряются и записи базы выводятся все, как если бы поиска не было. Как сделать, чтобы переменные всё-же не терялись? Подскажите, пожалуйста.

Спустя 2 минуты, 8 секунд (31.03.2010 - 10:14) Kuliev написал(а):
Цитата (Гость_andre @ 31.03.2010 - 12:11)
Проблема в общем в том, что переменные для поиска при переходе между страницами методом post не передаются:
$fkl = $_POST['f_klient'];
$fsp = $_POST['f_spez'];

Таким образом, просто теряются и записи базы выводятся все, как если бы поиска не было. Как сделать, чтобы переменные всё-же не терялись? Подскажите, пожалуйста.

Используйте механизм сессий!

Спустя 26 минут, 45 секунд (31.03.2010 - 10:40) Guest написал(а):
Да я уж думал об этом... Но не знаю, как конкретно это реализовать. Как значение из поля text сохранить в сессии, подскажите?

Спустя 13 минут, 14 секунд (31.03.2010 - 10:54) Kuliev написал(а):
Цитата (Guest @ 31.03.2010 - 12:40)
Да я уж думал об этом... Но не знаю, как конкретно это реализовать. Как значение из поля text сохранить в сессии, подскажите?


$_SESSION['text'] = $_POST['text'];

Спустя 39 минут, 37 секунд (31.03.2010 - 11:33) Guest написал(а):
Наконец-то всё доделал, большое спасибо за помощь:))
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.