Почему дублируются

BrainWork

Guest
Почему дублируются

делаю типа форум, када заношу имя топика и сообщение в базу оно потом дублируется, почему, ведь у меня стоит первичный ключ а топики если повторяются начинают отсчет заново ( например было 3 топика было:
id:1
id:2
id:3
после дублежа:
id:1
id:2
id:3
id:1
id:2
id:3
Че за фигня, причем база разрастается а выбор топика и сообщение к нему совпадают
 

Фанат

oncle terrible
Команда форума
потому, что ты написал код, который делает дублирование
 

BrainWork

Guest
PHP:
$topic = mysql_query("INSERT INTO $table1 (topic_name) VALUES('$name')");
$num = mysql_query("SELECT id FROM $table1 WHERE topic_name='$name'");
while ($id = mysql_fetch_assoc($num)) {
    foreach ($id as $value) {



$message = mysql_query("INSERT INTO $table2 (topic_id,mess) VALUES($value,'$mess')");
$row = mysql_query("SELECT * FROM $table1");
$row2 = mysql_query("SELECT * FROM $table2");
echo "<table border=1 width=500 style=\"border:1px d0d0d0\">";
echo "<tr>";
while ($field = mysql_fetch_field($row)) {
        echo "<td width=250 style=\"border:1px d0d0d0 solid\"><b>$field->name</b></td>";
                                           }
        echo "</tr>";
while ($rows = mysql_fetch_assoc($row)) {
        echo "<tr>";
        foreach ($rows as $value) {
        echo "<td width=250 style=\"border:1px d0d0d0 solid\">$value</td>";
                                  }
        echo "</tr>";
                                          }
                             }
                                      }
echo "</table>";
echo "<table border=1 width=500 style=\"border:1px d0d0d0\">";
echo "<tr>";
while ($fields = mysql_fetch_field($row2)) {
        echo "<td style=\"border:1px d0d0d0 solid\"><b>$fields->name</b></td>";
                                           }
        echo "</tr>";
while ($ro = mysql_fetch_assoc($row2)) {
        echo "<tr>";
        foreach ($ro as $value) {
        echo "<td style=\"border:1px d0d0d0 solid\">$value</td>";
                                  }
        echo "</tr>";
                                          }
echo "</table>";
[/PHP
Извините что так много кода, но где тут дублирование
 

Lews

Новичок
что такое $table1 и $table2 ? и в какой из них у тебя дублируются записи?
 

Shurik

Guest
BrainWork
А тебе не кажется, что в твоем первом же селекте ошибка?
WHERE topic_name='$name' не сработает, т.к. $name и останется
Ты бы написал
PHP:
$num = mysql_query("SELECT id FROM $table1 WHERE topic_name='".$name."'");
 

confguru

ExAdmin
Команда форума
Shurik

Если уж даешь код, давай его правильно. Где экранирование?
 

Shurik

Guest
admin
А что конкретно вы имеете ввиду, уважаемый?
 

master_x

Pitavale XXI wieku
Шурик, с чего ты взял, что так не будет работать, весь запрос в дубль-кавычках и по сему он спокойно отработает (если не веришь, то читай мануал по строкам). А вопрос был изначально про дублирование. Но еще одно замечание есть, извини меня, BrainWork, но вот это ...while ($id = mysql_fetch_assoc($num)) {
foreach ($id as $value) {...
есть полнейшая хрень! Лучше и Легче так: while(list($id)=mysql_fetch_row()). Насчет дублирования: у тебя оно происходит в базе? Если да, то ищи ошибки в инсертах. А еще меня интересует тим поля topic_id из второго инсерта.
 

Shurik

Guest
А тебе не кажется, что в твоем первом же селекте ошибка?
WHERE topic_name='$name' не сработает, т.к. $name и останется
Ты бы написал

$num = mysql_query("SELECT id FROM $table1 WHERE topic_name='".$name."'");
Прошу прощения, заработался!
 
Сверху