Как исключить повторное внесение данных в базу mysql? Есть такой код: Код (PHP): <?php if ($_POST) { $kan = isset($_POST['kandidat']) ? (int)$_POST['kandidat'] : null; $vak = isset($_POST['firm']) ? (int)$_POST['firm'] : null; if ( $vak && $kan ) { mysql_query("INSERT INTO `vak_kan`(id_vak, id_candidat) VALUES ('$vak', '$kan')"); } } ?> <form action="<?php $_SERVER['PHP_SELF']?>" method="post"> <select name="firm"> <?php $selct = mysql_query("SELECT vakans.id_vak, vakans.koment, vakans.id_firm, vakans.id_dol, firm.id_firm, firm.name_firm, dolzgnost.id_dol, dolzgnost.name_dol FROM vakans, firm, dolzgnost WHERE vakans.id_firm = firm.id_firm AND vakans.id_dol = dolzgnost.id_dol ORDER BY name_firm"); while($res = mysql_fetch_array($selct)){ echo "<option value='".$res['id_vak']."'>".$res['name_firm']." , ".$res['name_dol']."</option>"; } ?> </select> Фирма, вакансия<br><br> <select name="kandidat"> <?php $selct2 = mysql_query("SELECT id_candidat, rezum_txt FROM kandidat"); while($res2 = mysql_fetch_array($selct2)){ echo "<option value='".$res2['id_candidat']."'>".$res2['rezum_txt']."</option>"; } ?> </select> Кандидат<br> <p><input type="submit" name="send" value="Прикрепить кандидата к вакансии "></p> </form> PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
таблица vak_can выглядит так: id_vak unsigned id_candidat unsigned в данную аблицу вносится запись. она связана с двумы другими таблица "vak" и "candidat" из них подтягиваются значения а вносится в таблицу vak_can . но все равно вносятся с одинаковыми значениями id_vak unsigned 1 1 1 1 1 id_candidat unsigned 2 2 2 2 2
уникальный ключ не даст появиться дубликатам Код (Text): ALTER TABLE vak_can ADD UNIQUE KEY(id_vak, id_candidat) перед этим необходимо удалить уже существующие повторы. Добавлено спустя 3 минуты 26 секунд: Кстати, у таблицы есть первичный ключ? Может быть стоит удалить его, а эту парочку объявить первичным ключем.
Получилось ! Но есть проблема - когда хочу удалить на странице одну запись , скажем - id_vak 1, id_candidat 10 , удаляются в таблице все записи id_candidat 1 . хочу сделать чтоб удалялась одна запись. Как сделать?
рассказываю всё: таблицы: vak_kan id_vak int(5) unsigned id_candidat int(10) unsigned оба поля сделал уникальными вместе таблица vak (связана с таблицей vak_kan внешним ключом) id_vak int(5) unsigned auto_increment koment varchar (250) таблица candidat (связана с таблицей vak_kan внешним ключом) id_candidat int(10) unsigned auto_increment rezum_txt varchar (250) страница с кнопкой удалить: Код (PHP): <?php echo 'Подобранные кандидаты:'; $selct2 = mysql_query("SELECT vak_kan.id_vak, vak_kan.id_candidat, kandidat.id_candidat, kandidat.rezum_txt, vakans.id_vak FROM vak_kan, kandidat, vakans WHERE vak_kan.id_vak=vakans.id_vak AND vak_kan.id_candidat=kandidat.id_candidat AND vakans.id_vak = '$id_firm'"); echo '<table border="1" cellspacing="0" cellpadding="5">'; while($res2 = mysql_fetch_assoc($selct2)) { echo '<tr>'; echo '<td>'; echo $res2['rezum_txt']; echo '</td>'; echo "<td><a href='delit/delvk.php?del=".$res2[id_candidat].", ".$res2[id_vak]."'>удалить</a></td>"; echo '</tr>'; } echo '</table>'; ?> страница обработки удаления: Код (PHP): $del = $_GET['del']; if (isset($del)) { $del2 = mysql_query('DELETE FROM vak_kan WHERE id_vak AND id_candidat = "'.$_GET['del'].'"'); if ($del2) { echo "<p>Кандидат удален</p>"; } else { echo "<p>Произошла ошибка.</p>"; } } PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
убрал - vak_kan.id_vak, не помогло. проблема в этой строке - Код (Text): echo "<td><a href='delit/delvk.php?del=".$res2[id_candidat].", ".$res2[id_vak]."'>удалить</a></td>"; а может ещё глубже
да, в саму таблицу я могу добавить id и тогда будет без проблем удалятся, но как тогда сделать чтоб не вносить случайно повторяющюся информацию?
Ты в запросе должен указать второе условие, если хочешь чтобы не удалялись все строки где первое условие сработало