|
|
|
| Вот недавно освоился в PHP с файлами, и хотелосьбы освоиться и с БД.
Как соедниться с БД и записать информацию из формы в БД?
Форма содержит два поля: Имя и Текст.
Буду не против если кто посоветует что почитать на эту тематику из электронных версий :) Учебник на этом сайте читал...
Я использую стандартный пакет Деневера. | |
|
|
|
|
|
|
|
|
для: cheops
(20.10.2006 в 22:53)
| | Итак, мои выводы. Поправьте пожалуйсто если я не прав...
Меня смущает 1 и 2 пункт. Нельзя ли создавать БД и таблицы через PHP скрипты?
Для того чтобы сделать Гостеву книгу:
1. Создать вручную БД(Например guest). Для этого(в Деневере) пишем http://localhost/Tools/phpMyAdmin/ и там создаём.
2. Опять же вручную нужно создать Таблицы в БД. Для этого в настройках БД - guest, выбираем SQL и пописываем:
CREATE TABLE `content` (
id int auto_increment primary key,
name text,
message text
);
|
3. Соединение с MySQL:
mysql_connect ("localhost", "root", ""); //Подключение к серверу БД
mysql_select_db ("guest"); // Выбор БД
|
4. Добавление в базу:
mysql_query ("INSERT INTO `content` VALUES ('', 'Имя', 'Сообщение')");
|
5. Чтение из базы:
$result = mysql_query ("SELECT `name`, `message` FROM `content`");
while ($row = mysql_fetch_assoc($result)) {
echo $row["name"];
echo $row["message"];
}
|
6. Вот вроде и всё. Вот скрипт Гесты:
<form method="post">
Имя:<br><input name="name" type="text" value=""><br>
Сообщение:<br><textarea name="message" rows=5 cols=20 wrap="on"></textarea><br>
<input type="submit" value="Добавить">
</form>
<?php
/* Открываем соединение с MySQL-сервером.
Сервер - localhost, Юзер - root, Пароль - "" */
mysql_connect ("localhost", "root", "");
/* Выбираем Созданную БД(guest). */
mysql_select_db ("guest");
if ($_POST) {
/* Записываем $_POST[mame] и $_POST[message] в созданную таблицу content */
mysql_query ("INSERT INTO `content` VALUES ('', '$_POST[name]', '$_POST[message]')");
}
/* Читаем из таблицы content: name и message */
$result = mysql_query ("SELECT `name`, `message` FROM `content`");
/* mysql_fetch_assoc - извлекает ряд результата как ассоциативный массив */
while ($row = mysql_fetch_assoc($result)) {
echo "Имя: ".$row["name"]."<br>";
echo "Сообщение: ".$row["message"]."<br><br>";
}
?>
|
| |
|
|
|
|
|
|
|
для: Fddd
(21.10.2006 в 16:23)
| | 1-2) Можно таблицу и автоматически создавать, для этого SQL-запрос CREATE TABLE скормить фукнции mysql_query().
<?php
$query = "CREATE TABLE `content` (
id int auto_increment primary key,
name text,
message text
);"
@mysql_query($query);
?>
|
Однако эту операцию следует выполнять лишь один раз за всё время существования гостевой книги и его часто осуществляют вручную. | |
|
|
|
|
|
|
|
для: cheops
(21.10.2006 в 16:31)
| | Спасибо...
А заменяют(редактируют) сообщения как? Как открыть только одно сообщение? И как записать его обратно? | |
|
|
|
|
|
|
|
для: Fddd
(21.10.2006 в 17:24)
| | Открыть сообщение и редактировать по ID
редактировать так...эм...я приведу привер из своей гостевой
Вот форма редактирования: editmsg.php
<?php
include_once('authfailed.php');
include_once("connect.php");
$id = ($_GET['id']);
$query = mysql_query("SELECT * FROM `messages` WHERE `id` = '$id'");
while($row=mysql_fetch_array($query))
{
$name = $row['name'];
$msg = $row['msg'];
}
?>
<h2 align="center"><span class="style1Отредактируйте выбраное вами сообщение и нажмите "Исправить".</span>
</h2>
<form action='edit_mysql.php' method='post'>
<table cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">
<tr>
<td width="245" height="29" background="images/b_top.gif" bgcolor="#CCCCCC"> Написал: <?php echo $name; ?></td>
</tr><tr><td bgcolor="#CCCCCC"><textarea name='msg_edited' cols='40' rows='10'><?php echo $msg; ?></textarea></td></tr><tr><td height="29" align="center" background="images/b_top.gif" bgcolor="#CCCCCC">
<input type="hidden" name="id_edited" value="<?php echo $id; ?>">
<input type='submit' name='submit' value='Исправить'/></td>
</tr></table>
</form>
|
А вот скрипт редактирования уже в БД: editmsgmysql.php
<?php
include_once("connect.php");
$id = ($_POST['id_edited']);
$msg_admin = ($_POST['msg_edited']);
$add_text = '<BR><BR><font style="font-size: 11px; color: red;"> Отредактировано администратором!</font>';
$msg = ("$msg_admin $add_text");
$query = mysql_query("UPDATE `messages` SET `msg` = '$msg' WHERE `id` = '$id'");
if($query)
{
echo "<center><table><META HTTP-EQUIV='Refresh' CONTENT='2; URL=index.php'><br><font class='ob'><H4>Сообщение успешно отредактировано. Вы автоматически перейдёте к просмотру сообщений.</H4></font><br><br><br><br></table></center>";
}
else
{
echo mysql_error();
}
?>
|
| |
|
|
|
|
|
|
|
для: LuxeMate
(21.10.2006 в 18:05)
| | Спасибо.
Основной скелет гостевой книги написан :). Действительно база намного удобнее чем файлы :)
Только вот я заметил: Если удалить все сообщения(к примеру их 5 было) то при добавление нового его ID будет к примеру 6. Никак с этим не борятся? | |
|
|
|
|
|
|
|
для: Fddd
(21.10.2006 в 21:34)
| | Никак с этим не борятся - это нормально, просто не привязывайтесь к первичному ключу, нумеруйте столбцы искусственно. Если сильно раздражает, то можете выставить начало инкрементного счётчика при помощи запроса
ALTER TABLE tbl AUTO_INCREMENT = 1
|
| |
|
|
|
|
|
|
|
для: Fddd
(21.10.2006 в 21:34)
| | Незнаю точно(у меня такая же штука с юзерами),но наверное это зделано для того чтобы не повторялся один ID дважды,если вы стёрли последнее сообщение то все нормально если вы добавите новое на ID старого,но а если из 5 удалить 3-ее,то при добавлении получится что оно встанет на место 3-его,а потом поди пойми где новые а где старые записи,вот наверное по этому,когда ID это integer со включенным auto inc. ID и не повторяются...хоть убейся =))) | |
|
|
|