|
|
|
| Здравствуйте!
Помогите с записью в бд.
При записи записывает только один раз, а если ещё раз записать , то выдаёт ошибку error.
Как сделать так чтоб можно было записать множественное число раз, чтоб каждому новому комментарию задавалось своё id?
Вот кусок этого кода.
<?
echo "<form action=\"mnenie.php?mod=yes&ide=$ide&".session_name()."=".session_id()."\" method=\"post\">";
echo "Мнение:<br/>";
echo "<input name=\"text\" maxlength=\"300\" type=\"text\"/><br/>";
echo "<input class=\"ibutton\" type=\"submit\" value=\"Добавить\"/>";
echo "</form>";
mysql_query("insert into news_com set id='$ide',login='$login',date='$date',msg='$text'") or die ('Error!');
echo "Ваше мнение записано!!!<br/>";
?>
|
| |
|
|
|
|
|
|
|
для: Qbass
(28.04.2008 в 11:49)
| | А вот структура таблицы бд
CREATE TABLE `news_com` (
`id` int(11) NOT NULL auto_increment,
`login` text NOT NULL,
`date` varchar(255) NOT NULL default '',
`msg` text NOT NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1
|
| |
|
|
|
|
|
|
|
для: Qbass
(28.04.2008 в 11:51)
| | Добавьте в таблицу ещё одно поле id_msg например, которое и будете добавлять
mysql_query("insert into news_com set id_msg='$ide',login='$login',date='$date',msg='$text'") or die ('Error!');
|
А id будет уникальным. | |
|
|
|
|
|
|
|
для: Qbass
(28.04.2008 в 11:49)
| | У вас id - Примари кей? Скорее всего это так, и вы его пытаетесь добавить несколько раз, а оно по определению должно быть уникальным.
З.Ы. Второй пост подтвердил мою догадку)) | |
|
|
|
|
|
|
|
для: Valick
(28.04.2008 в 11:56)
| | т.е. что надо сделать? | |
|
|
|
|
|
|
|
для: Qbass
(28.04.2008 в 11:59)
| | убрать ide вообще отовсюду. Автоматом назначится.
<?
mysql_query("insert into news_com set login='$login',date='$date',msg='$text'") or die ('Error!');
?>
|
| |
|
|
|
|
|
|
|
для: Axxil
(28.04.2008 в 12:00)
| | Нет просто так убирать нельзя (ошибок не будет, согласен) но как вы будете производить выборку коментариев относящихся к определённой теме? | |
|
|
|
|
|
|
|
для: Valick
(28.04.2008 в 12:07)
| | мне вообще надо к новостям комментарии.
Определённая дата и новость, а в ней уже комментарии к этой новости. | |
|
|
|
|
|
|
|
для: Qbass
(28.04.2008 в 12:12)
| | Надо таблицу с коментариями переделать
CREATE TABLE `news_com` (
`com_id` int(11) NOT NULL auto_increment,
`news_id` int(11) NOT NULL
`login` text NOT NULL,
`date` varchar(255) NOT NULL default '',
`msg` text NOT NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1
|
Первое поле хранить уникальное id комментария, второе - id новости, к которой данный комментарий принадлежит. | |
|
|
|
|
|
|
|
для: Qbass
(28.04.2008 в 12:12)
| | Вот все коды:
news.php:
<?
session_start();
if(empty($startan)) $startan = 0;
$startan=intval($startan);
if($startan<0) $startan=0; $num_msgs_an=10;
$arr = mysql_query("select * from `news`");
$qi = mysql_query("select * from `news` order by `id` desc limit $startan,$num_msgs_an;;");
if (mysql_affected_rows()==0)
{
echo "Новостей пока нет...<br/>";
}
else
{
while($row=mysql_fetch_array($qi))
{
echo "<b>".$row['date']."</b><br/>".$row['msg']."<br/>";
$d=$row['id'];
$q=mysql_query("select * from `news_com` where `nid`='$d'");
$xx=mysql_num_rows($q);
echo '<a href="mnenie.php?ide='.$row['id'].'&'.session_name()."=".session_id().'">Комментарии</a> [';
echo $xx;
echo "]<br/>";
}
}
$i = @mysql_num_rows($arr);
if($startan!=0)
echo "<a href=\"news.php?".session_name()."=".session_id()."&startan=".($startan-$num_msgs_an)."\">".htmlspecialchars("<<-- Предыдущая")."</a><br/>";
if($i>$startan+$num_msgs_an)
echo "<a href=\"news.php?".session_name()."=".session_id()."&startan=".($startan+$num_msgs_an)."\">".htmlspecialchars("Следующая -->>")."</a><br/>";
?>
|
mnenie.php:
<?
session_start();
echo "<b>Комментировать</b>";
if (empty($mod)) $mod="all";
switch ($mod) {
case "all":
if ($autorize) {echo "<a href=\"mnenie.php?mod=form&ide=$ide&".session_name()."=".session_id()."\">Добавить мнение</a><br/>"; }
$q = mysql_query("select * from `news_com` where `nid`='$ide'");
if (mysql_affected_rows()==0)
{
echo "Нет мнений!";
}
else
{
while($row=mysql_fetch_array($q))
{
$c1=$row['login'];
$c2=$row['date'];
$c3=$row['text'];
echo "<b>$c1</b><br/>$c2<br/>$c3<hr/>";
}
}
break;
case "form":
echo "<form action=\"mnenie.php?mod=yes&ide=$ide&".session_name()."=".session_id()."\" method=\"post\">";
echo "Мнение:<br/>";
echo "<input name=\"text\" maxlength=\"300\" type=\"text\"/><br/>";
echo "<input class=\"ibutton\" type=\"submit\" value=\"Добавить\"/>";
echo "</form>";
break;
case "yes":
mysql_query("insert into news_com set login='$login',nid='$ide',text='$text',date='$date'") or die ('Error!');
echo "Ваше мнение записано!!!<br/>";
?>
|
| |
|
|
|
|
|
|
|
для: Valick
(28.04.2008 в 12:07)
| | Тут согласный.
На структуру базы толком не посмотрел. | |
|
|
|
|
|
|
|
для: Axxil
(28.04.2008 в 12:12)
| | а вот структура бд к новостям:
CREATE TABLE `news` (
`id` int(11) NOT NULL auto_increment,
`date` varchar(255) NOT NULL default '',
`msg` text NOT NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1;
|
Помогите сделать бд к комментариям, а то не получается... (( | |
|
|
|
|
|
|
|
для: Qbass
(28.04.2008 в 12:20)
| | поменяйте структуру таблицы с комментариями, как указано выше
и поменяйте этот кусок:
<?
// ....
echo "<form action=\"mnenie.php?mod=yes&".session_name()."=".session_id()."\" method=\"post\">";
echo "Мнение:<br/>";
echo "<input name=\"text\" maxlength=\"300\" type=\"text\"/><br/>";
echo "<input class=\"ibutton\" type=\"submit\" value=\"Добавить\"/>";
echo "</form>";
break;
case "yes":
mysql_query("insert into news_com set login='$login',text='$text',date='$date'") or die ('Error!');
echo "Ваше мнение записано!!!<br/>"; ?>
|
Только кривовато у вас построено приложение. Код обработки формы желательно в самом верху страницы размещать. | |
|
|
|
|
|
|
|
для: Axxil
(28.04.2008 в 12:26)
| |
CREATE TABLE `news_com` (
`com_id` int(11) NOT NULL auto_increment,
`news_id` int(11) NOT NULL ,
`login` text NOT NULL,
`date` varchar(255) NOT NULL default '',
`msg` text NOT NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1
|
фууух... что-то я вообще запутался... ((
откуда берётся PRIMARY KEY (`id`) ? | |
|
|
|
|
|
|
|
для: Qbass
(28.04.2008 в 12:39)
| | ну конечно тут ошибка :)
правильно так:
А вообще это стандартная задача. И тут по правилам надо-бы 3 таблицы.
первая - с новостями, вторая - с комментариями, третья - с пользователями. Тогда не будет избыточности. | |
|
|
|
|
|
|
|
для: Qbass
(28.04.2008 в 11:49)
| | Усли нет нужды явно указывать какой именно вам нужен id запишите это так
mysql_query("insert into news_com values (NULL , '$login', '$date', '$text')")
|
| |
|
|
|