|
|
|
| У меня есть таблица с данными в БД. Я ее с помощью PXP вывела на html страничку. Я могу удалять и добовлять строки. И мне еще нужно редоктировать строку т.е. при нажатии на строку мне нужно чтобы я в ней смогла изменить данные. Подскажите, как это сделать? Заранее спасибо. | |
|
|
|
|
|
|
|
для: Сквиртел13
(03.07.2006 в 17:36)
| | А приведите код который добавляет таблицу? По сути задача сводится в подстановке в HTML-форму в базу данных, а затем обновлении редактируемой записи при помощи оператора UPDATE. | |
|
|
|
|
|
|
|
для: cheops
(03.07.2006 в 20:14)
| | Вот код который выводит таблицу из БД:
<?
$link = mysql_connect("localhost", "Irina13", "pdtplf")
or die("Не соединилось!!!");
print "Соединение успешно";
mysql_query("SET NAMES 'cp1251'");
mysql_select_db("books") or die("Не найдена БД");
echo "<table border='1' width=10% bgcolor=gold>";
echo "<td>isbn</td>";
echo "<td>author</td>";
echo "<td>title</td>";
echo "<td>price</td>";
$r=mysql_query("select * from books");
for ($i=0; $i<mysql_num_rows($r); $i++)
{ echo "<tr>";
$f=mysql_fetch_array($r);
echo "<td>$f[isbn]</td>";
echo "<td>$f[author]</td>";
echo "<td>$f[title]</td>";
echo "<td>$f[price]</td>";
echo "</tr>";
}
echo "</table>"; | |
|
|
|
|
|
|
|
для: Сквиртел13
(03.07.2006 в 17:36)
| | Вам нужно:
1. при выводе строк формировать тэги (a href ) со ссылкой на скрипт, отображающий форму редактирования данных строки. При этом в ссылке нужно передать параметр первичного ключа редактируемой строки.
2. Написать скрипт, отображающий форму. В его задачу войдет вывести форму с полями, в которых разместить текущие значения строки, ключ которой передан GET-параметром. Значение ключа нужно передать в поле nput type=hidden. Форма должна вызывать скрипт-обработчик.
3. Написать скрипт-обработчик, который изменял бы данные строки таблицы на те, которые передаются ему в виде POST-параметров, после чего делал бы переход назад на страницу с таблицей строк. | |
|
|
|
|
|
|
|
для: Trianon
(03.07.2006 в 20:33)
| | Это я примерно знаю. Я не знаю как составить код на php. Как связать фому и php. | |
|
|
|
|
|
|
|
для: Сквиртел13
(04.07.2006 в 11:12)
| | возьмите форму, в которой вы делаете добавление записей в базу.
перед выводом формы сделайте запрос на вывод (как приведен выше)
с конкретным id записи (id записи передается по ссылке после ?id=$id).
а потом в поля формы подставляете полученные из базы значения:
value=<?=$f['isbn']?> и т.д. /// там в коде без кавычек - это опечатка? | |
|
|
|
|
|
|
|
для: elenaki
(04.07.2006 в 11:22)
| | Не, то не опечатка. Есть такой (крайне легкомысленный, на мой взгляд) способ подстановки значений элементов ассоциативного массива в строки, ограниченные кавычками. При этом сами ключи массива ничем, кроме квадратных скобок, не обрамляются. Формально корректный способ "<td>{$f['isbn']}</td>"выглядит еще уродливей. | |
|
|
|
|
|
|
|
для: Trianon
(04.07.2006 в 11:30)
| | А почему легкомысленный? | |
|
|
|
|
|
|
|
для: Сквиртел13
(04.07.2006 в 11:37)
| | потому что зависит от того, что за ключ. Попробуйте продолжить:
$arr['key'] = 'good'; echo "<b>$arr[key]</b>";
$arr[']['] = 'bad'; echo
|
| |
|
|
|
|
|
|
|
для: Trianon
(04.07.2006 в 11:53)
| | Т.е. мои ключи плохие? | |
|
|
|
|
|
|
|
для: Сквиртел13
(04.07.2006 в 11:58)
| | не плохой, а неудобный.
Дамп таблицы с доп.полем номера строки в аттаче. | |
|
|
|
|
|
|
|
для: Сквиртел13
(04.07.2006 в 11:12)
| | а формат таблицы можно глянуть? | |
|
|
|
|
|
|
|
для: Trianon
(04.07.2006 в 11:23)
| | Саму таблицу посмотреть? | |
|
|
|
|
|
|
|
для: Сквиртел13
(04.07.2006 в 11:26)
| | да. дамп её структуры. | |
|
|
|
|
|
|
|
для: Trianon
(04.07.2006 в 11:29)
| | Вот ее структура. | |
|
|
|
|
|
|
|
для: Сквиртел13
(04.07.2006 в 11:36)
| | Дамп таблицы - это то, что можно получить в phpMyAdmin в разделе "экспорт".
Если таблица и вправду ничего кроме этих полей не содержит, то это плохо.
По идее, необходимо еще одно поле - номер строки, которое позволило бы на строки таблицы однозначно ссылаться. Так называемый первичный ключ.
Потому что если ссылаться на строки через ISBN (который формально подходит под требавания к первичному ключу), то будет неудобно работать с такой таблицей.
Исправить ошибку в самом ISBN будет уже никак. Придется удалять всю запись, а потом заносить заново. Так что, по-моему, лучше добавить еще одно поле с номером. | |
|
|
|
|
|
|
|
для: Trianon
(04.07.2006 в 11:45)
| | to Trianon - я не предлагала ссылаться на строки по полю isbn (я предлагала по id)
to Сквиртел13 - см. скриншот. добавьте к каждой строке (мне лениво было резать картинку) по
две кнопки/ссылки - edit и delete. у них должны быть ссылки на файлы-обработчики:
<a href="delete.php?id=$id">Delete</a>
<a href="edit.php?id=$id">Edit</a>
|
файлы обрабатывают нужную строку и возвращают управление на админский файл. можно
сообщение приписать - успешно или нет выполнена операция. | |
|
|
|
|
|
|
|
для: elenaki
(04.07.2006 в 11:54)
| | Пардон, действительно, это я через слово прочел. | |
|
|
|
|
|
|
|
для: elenaki
(04.07.2006 в 11:54)
| | Вот тут небольшая проблема. Я синтаксиса не знаю как добовлять. Просто дабавить над строкой. Либо в кавычках? | |
|
|
|
|
|
|
|
для: elenaki
(04.07.2006 в 11:54)
| | Он у меня все время пишет синтаксическую ошибку. Покажите пожалуйста как добавить. Заранее спасибо. | |
|
|
|
|
|
|
|
для: Сквиртел13
(04.07.2006 в 12:27)
| | добавить ЧТО? | |
|
|
|
|
|
|
|
для: elenaki
(04.07.2006 в 12:56)
| | Дбавить Ваши кнопки/ссылки? | |
|
|
|
|
|
|
|
для: Сквиртел13
(04.07.2006 в 12:58)
| |
echo "<table border='1' width=10% bgcolor=gold>";
echo "<td>isbn</td>";
echo "<td>author</td>";
echo "<td>title</td>";
echo "<td>price</td>";
echo "<td>action</td>";
$r=mysql_query("select * from books");
for ($i=0; $i<mysql_num_rows($r); $i++)
{ echo "<tr>";
$f=mysql_fetch_array($r);
echo "<td>$f[isbn]</td>";
echo "<td>$f[author]</td>";
echo "<td>$f[title]</td>";
echo "<td>$f[price]</td>";
echo "<td><a href='edit.php?id=".$id."'>edit</a> <a href='delete.php?id=".$id."'>delete</a></td>";
echo "</tr>";
}
|
если ругается РHР, надо присылать текст ошибки, которую он выдает, иначе трудно вам
помогать. скорее всего, вы запутались в кавычках. я обычно вывод HTML - тэгов делаю
вне РHР, а подставляю только переменные в скобках <??>
вы поле id вставили в таблицу? без него ссылки не заработают. | |
|
|
|
|
|
|
|
для: elenaki
(04.07.2006 в 13:32)
| | Нет не вставила. Сейчас встывлю. А ошибка следующая:
Parse error: syntax error, unexpected '>' in z:\home\localhost\www\php and mysql\kod\soedinenie-10.php on line 37 | |
|
|
|
|
|
|
|
для: Сквиртел13
(04.07.2006 в 14:44)
| | и где, как вы думаете, му будем искать 37-ю строку? проверьте кавычки до 37-й строки | |
|
|
|
|
|
|
|
для: elenaki
(04.07.2006 в 15:05)
| | Ой глупость сморозила. Извени.)))
<?
$link = mysql_connect("localhost", "Irina13", "pdtplf")
or die("Не соединилось!!!");
print "Соединение успешно";
mysql_query("SET NAMES 'cp1251'");
mysql_select_db("books") or die("Не найдена БД");
echo "<table border='1' width=10% bgcolor=gold>";
echo "<td>isbn</td>";
echo "<td>author</td>";
echo "<td>title</td>";
echo "<td>price</td>";
$r=mysql_query("select * from books");
for ($i=0; $i<mysql_num_rows($r); $i++)
{ echo "<tr>";
$f=mysql_fetch_array($r);
echo "<td>$f[isbn]";
echo "<td>$f[author]</td>";
echo "<td>$f[title]</td>";
echo "<td>$f[price]</td>
echo "<td><a href='insert_book.php?id=".$id."'>edit</a> <a href='delete_book.php?id=".$id."'>delete</a></td>";
echo "</tr>";
}
echo "</table>";
?>
echo "<td><a href='insert_book.php?id=".$id."'>edit</a> <a href='delete_book.php?id=".$id."'>delete</a></td>"; -строка 37 | |
|
|
|
|
|
|
|
для: elenaki
(04.07.2006 в 15:05)
| | Ошибку нашла, но он пишет:
Notice: Undefined variable: id in z:\home\localhost\www\php and mysql\kod\soedinenie-10.php on line 37
Как мне указать id? | |
|
|
|
|
|
|
|
для: Сквиртел13
(04.07.2006 в 15:48)
| |
echo "<td><a href='edit_row.php?id=$f[id]' >edit</a></td>";
|
| |
|
|
|
|
|
|
|
для: Trianon
(04.07.2006 в 15:55)
| | Кодировку все время надо вручную извенять на страничке | |
|
|
|
|
|
|
|
для: Сквиртел13
(04.07.2006 в 16:16)
| | Запрос SET NAMES пропустили? | |
|
|
|
|
|
|
|
для: Trianon
(04.07.2006 в 16:34)
| | Нет не пропустила он есть | |
|
|
|
|
|
|
|
для: Trianon
(04.07.2006 в 16:34)
| | А у меня такой вопрос. Я в таблицу столбец id добавила. Но теперь мне его и код php надо дабавлять иначе он строку дабавлять не хочет, только удаляет вот код для дабавления строки:
<html>
<head>
<title>Магазин "Буквофил" - Результаты вводы новой книги</title>
</head>
<body>
<h1>Магазин "Буквофил" - Результаты ввода новой киги</h1>
<?php
$isbn=$_POST['isbn'];
$author=$_POST['author'];
$title=$_POST['title'];
$price=$_POST['price'];
if (!$isbn || !$author || !$title || !$price)
{
echo 'Вы ввели не все необходимые сведенья.<br/>'
.'Пожалуйста, вернитесь на предыдущую страницу и повторите ввод';
exit;
}
if (!get_magic_quotes_gpc())
{
$isbn=addslashes($isbn);
$author=addslashes($author);
$title = addslashes($title);
$price = doubleval($price);
}
$link= mysql_connect('localhost', 'Irina13','pdtplf', 'books')
or die("Не соединилось!!!");
print ("Соединение успешно");
mysql_query("SET NAMES 'cp1251'");
$query="insert into books values ('".$isbn."','".$author."', '".$title."', '".$price."')";
mysql_select_db("books") or die("Не найдена БД");
$result=mysql_query ("$query");
if ($result)
echo "Книга добавленна в базу данных";
?>
<a href="soedinenie-10.php">Посмотреть изменение</a>
</body>
</html>
Но мне же не надо чтобы он туда что-то дабавлял. Как быть? | |
|
|
|
|
|
|
|
для: Сквиртел13
(04.07.2006 в 16:48)
| |
$query="insert into books (isbn,author,title,price) values ('$isbn','$author','$title',$price)";
|
Поле id (у которого должен стоять признак AUTO_INCREMENT) будет наращиваться само.
И еще. Защитную обработку $price нужно вынести из-под условия.
$price = doubleval($price);
if (!get_magic_quotes_gpc())
{
$isbn=addslashes($isbn);
$author=addslashes($author);
$title = addslashes($title);
}
|
| |
|
|
|
|
|
|
|
для: Trianon
(04.07.2006 в 16:53)
| | AUTO_INCREMENT должно стоять вместо NULL? | |
|
|
|
|
|
|
|
для: Сквиртел13
(04.07.2006 в 17:01)
| | AUTO_INCREMENT должно стоять в операторе создания таблицы. Я же показал Вам дамп.
CREATE TABLE books (
id int(11) NOT NULL auto_increment,
isbn char(13) NOT NULL default '',
author char(50) default NULL,
title char(100) default NULL,
price float(4,2) default NULL,
PRIMARY KEY (id)
);
|
| |
|
|
|
|
|
|
|
для: Trianon
(04.07.2006 в 17:08)
| | Хорошо таблица у меня теперь такая но он все равно не дабавляет!)) | |
|
|
|
|
|
|
|
для: Trianon
(04.07.2006 в 17:08)
| | И в html таблица выглядит так:
isbn author title price id
ппп ппп 89 0.00 добавить удалить
А в консоле
id идет первым столбцом а за ним все остальные
Почему? | |
|
|
|
|
|
|
|
для: Сквиртел13
(04.07.2006 в 17:25)
| | Только что взял Ваш скрипт, добавил предоженные изменения, и несколько изменив подключение к БД, проверил. Всё замечательно добавляется.
Правда, цена искажается - я пробовал на книге за 191 р. Но в целом всё идет.
Так что показывайте скрипт, который не идет. И дамп структуры таблицы. Ошибки где-то там.
А чем Вы в html таблицу смотрите? | |
|
|
|
|
|
|
|
для: Trianon
(04.07.2006 в 17:53)
| | Значит так пишу все по порядку:
У меня есть код:
<?
$link = mysql_connect("localhost", "Irina13", "pdtplf")
or die("Не соединилось!!!");
print "Соединение успешно";
mysql_query("SET NAMES 'cp1251'");
mysql_select_db("books") or die("Не найдена БД");
echo "<table border='1' width=10% bgcolor=gold>";
echo "<td>isbn</td>";
echo "<td>author</td>";
echo "<td>title</td>";
echo "<td>price</td>";
echo "<td>id</td>";
$r=mysql_query("select * from books");
for ($i=0; $i<mysql_num_rows($r); $i++)
{ echo "<tr>";
$f=mysql_fetch_array($r);
echo "<td>$f[isbn]";
echo "<td>$f[author]</td>";
echo "<td>$f[title]</td>";
echo "<td>$f[price]</td>";
echo "<td><a href='newbook.html?id=$f[id]'>добавить</a> <a href='delete.html ?id=$f[id]'>удалить</a></td>";
echo "</tr>";
}
echo "</table>";
?>
<a href="delete.html">Изменить</a>
<a href="connect.html">Вернуться</a>
Он выводит таблицу на экран.
когда я добавила:
echo "<td><a href='newbook.html?id=$f[id]'>добавить</a> <a href='delete.html ?id=$f[id]'>удалить</a></td>";
у меня появился столбик id и в нем соответственно удалить добавить. Я щелкаю дабавить и появляется форма:
<html>
<head>
<title>Магазин "Буквофил" - Форма ввода новой
книги</title>
</head>
<body>
<h1>Магазин "Буквофил" - Форма ввода новой
книги</h1>
<form action="insert_book.php" method="post">
<table border="0">
<tr>
<td>ISBN</td>
<td><input type="text" name="isbn" maxlength="13"
size="13"></td>
</tr>
<tr>
<td>Автор</td>
<td><input type="text" name="author"
maxlength="30" size="30"></td>
</tr>
<tr>
<td>Название</td>
<td><input type="text" name="title"
maxlength="60" size="30"></td>
</tr>
<tr>
<td>Цена</td>
<td><input type="text" name="price" maxlength="7"
size="7"></td>
</tr>
<tr>
<td colspan="2"><input type="submit"
value="Зарегистрировать"></td>
</tr>
</table>
</form>
</body>
</html>
И почему то не добовляется.
Хотя раньше работало, без столбика id. | |
|
|
|
|
|
|
|
для: Сквиртел13
(04.07.2006 в 18:03)
| | Не идет у Вас другой скрипт.
Тот, который называется insert_book.php
Его то Вы и не показали. А зря. Т.к. ошибка, вероятно, там. Либо в структуре таблицы.
А из того, что показали, я могу ответить, почему в базе в таблице колонка id первая, а в html (как Вы выразились) последняя.
Первая она там потому что так вставлена. И это правильно. Вполне естественно, когда первичный ключ идет первым.
А html-таблицу (которая в общем случае может не иметь ничего общего с таблицей из БД) Вы рисуете сами. Вот этим кодом:
echo "<table border='1' width=10% bgcolor=gold>";
echo "<td>isbn</td>";
echo "<td>author</td>";
echo "<td>title</td>";
echo "<td>price</td>";
echo "<td>id</td>";
И здесь видно вполне отчетливо, что id надписан над пятым столбцом. | |
|
|
|
|
|
|
|
для: Trianon
(04.07.2006 в 18:16)
| | Вот он этот код:
<html>
<head>
<title>Магазин "Буквофил" - Результаты вводы
новой книги</title>
</head>
<body>
<h1>Магазин "Буквофил" - Результаты ввода новой
киги</h1>
<?php
$isbn=$_POST['isbn'];
$author=$_POST['author'];
$title=$_POST['title'];
$price=$_POST['price'];
if (!$isbn || !$author || !$title || !$price)
{
echo 'Вы ввели не все необходимые сведенья.<br/>'
.'Пожалуйста, вернитесь на предыдущую
страницу и повторите ввод';
exit;
}
$price = doubleval($price);
if (!get_magic_quotes_gpc())
{
$isbn=addslashes($isbn);
$author=addslashes($author);
$title = addslashes($title);
$id=addslashes($id);
}
$link= mysql_connect('localhost',
'Irina13','pdtplf', 'books')
or die("Не соединилось!!!");
print ("Соединение успешно");
mysql_query("SET NAMES 'cp1251'");
$query="insert into books values
('".$isbn."','".$author."', '".$title."',
'".$price."')";
mysql_select_db("books") or die("Не найдена БД");
$result=mysql_query ("$query");
if ($result)
echo "Книга добавленна в базу данных";
?>
<a href="soedinenie-10.php">Посмотреть
изменение</a>
</body>
</html>
Но он правильный. Просто понимаете в чем дело. Мне нужно как я уже говорила изменять содержание строки таблицы щелкнув на нее. А у меня это не получается. В книги как это сделать не написанно. А я пока новечек в этом деле и не все знаю. Но сделать мне это нужно. | |
|
|
|
|
|
|
|
для: Сквиртел13
(04.07.2006 в 18:27)
| | Он неправильный. Где именно - я показал в (04.07.2006 в 16:53)
Вместо
$query="insert into books values
('".$isbn."','".$author."', '".$title."',
'".$price."')";
|
должно быть написано
$query="insert into books (isbn, author, title, price)
values ('$isbn','$author', '$title', $price)";
|
А изменять содержание можно будет.
Вы сначала добейтесь , чтоб добавление книг опять заработало. | |
|
|
|
|
|
|
|
для: Trianon
(04.07.2006 в 18:46)
| | И создайте новую тему. Эта выросла так, что открывать её уже невозможно. | |
|
|
|
|
|
|
|
для: Trianon
(04.07.2006 в 18:46)
| | Да спасибо. Я уже это исправила. А почему именно так? Дабовление заработало. | |
|
|
|
|
|
|
|
для: Сквиртел13
(04.07.2006 в 15:48)
| | $f[id] - в вашем стиле | |
|
|
|
|
|
|
|
для: elenaki
(04.07.2006 в 16:00)
| | Да спасибо это я уже поняла. Но он теперь иероглифы выводит | |
|
|
|
|
|
|
|
для: Trianon
(04.07.2006 в 11:45)
| | Понятно. Спасибо за разъяснение. Вот ее дамп:
-- phpMyAdmin SQL Dump
-- version 2.6.1
-- http://www.phpmyadmin.net
--
-- Хост: localhost
-- Время создания: Июл 04 2006 г., 11:55
-- Версия сервера: 4.1.16
-- Версия PHP: 5.1.2
--
-- БД: 'books'
--
-- --------------------------------------------------------
--
-- Структура таблицы 'books'
--
CREATE TABLE 'books' (
'isbn' char(13) NOT NULL default '',
'author' char(50) default NULL,
'title' char(100) default NULL,
'price' float(4,2) default NULL,
PRIMARY KEY ('isbn')
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
--
-- Дамп данных таблицы 'books'
--
INSERT INTO 'books' VALUES ('965', 'плзлвв', 'аааа', 89.00);
INSERT INTO 'books' VALUES ('884', 'название', 'Автор', 88.00);
INSERT INTO 'books' VALUES ('888', 'автор', 'ира', 88.00);
INSERT INTO 'books' VALUES ('956', 'Автор', 'Название', 88.00);
INSERT INTO 'books' VALUES ('569', 'hhhhh', 'Java', 88.00);
INSERT INTO 'books' VALUES ('0-672-31697-8', 'gh', 'Java', 88.00); | |
|
|
|