Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Ввод из формы в базу данных неповторяющихся значений
 
 автор: fsn   (24.01.2008 в 07:31)   письмо автору
 
 

Подскажите пожалуйста!
Есть в БД таблица с 9 текстовыми полями, в них должны быть неповторяющиеся значения. Как лучше написать скрипт, чтобы перед вводом данных из формы, они проверялись на неповторяющиеся значения, в каждом из полей.
Заранее благодарен.

   
 
 автор: Петр   (24.01.2008 в 09:29)   письмо автору
 
   для: fsn   (24.01.2008 в 07:31)
 

Что-то типа того:
В ыорме надо указать массив полей, text[1], text[2] и т.д.

<?php
// Получаем от формы массив;
if ($text $_POST['text']) {
 
// Обходим массив текстовых полей;
 
foreach ($text as $item) {
  if (
in_array($item,$text)) {
   
// Ошибка (обработка ошибки, вывод сообщения или замена...);
   // Например;
   
$error 1;
  }
 }
 
// ;
 
if ($error!=1) {
  
$sql 'INSERT...';
  ...
 }
}
?>

Можно еще перед вводом в БД, сделать SELECT и проверить нет ли такой записи уже, защита от повторной записи...

   
 
 автор: fsn   (01.02.2008 в 15:32)   письмо автору
 
   для: Петр   (24.01.2008 в 09:29)
 

Спасибо, нашел выход. Код работатет. Получилось что-то типа:
<?php
//Создаем два массива
//Перечисляем имена столбцов БД по которым необходимо провести проверку
$a = array("field1""field2", ...);
//Перечисляем поля формы $text1=$_POST['text1'], $text2=$_POST['text2'], ...
$b = array("text1""text2");
//Далее два вложенных цикла переборки массивов
foreach($a as $k)
{
       foreach(
$b as $v)
       {
             
$query "SELECT * FROM table WHERE $k='$v'";
             if(
mysql_num_query($query)>0)
             {
                  
$tmp 1//Временная переменная
                  //Вызываем пользователскую функцию, например:
                  
links(".$_POST['id_razdel'].""Введенные данные ".$k $v." уже существуют в поле ".$k);
             }
        }
}
if(empty(
$v) and !isset($tmp))
{
     
$sql " INSERT INTO ...."
}

Правда такой код только на добавление данных. А на редактирование уже надо другой код, в котором надо будет применить разность массивов.

   
 
 автор: KPETuH   (24.01.2008 в 09:43)   письмо автору
 
   для: fsn   (24.01.2008 в 07:31)
 

например

<?
$login
=$_POST['login'];
$pass=$_POST['pass'];
if (
$sql=mysql_query("select id from users where login='".$login."' and pass='".$pass."'"))
{
        if (
mysql_num_rows($sql)>0)
        {
               echo 
"Такой пользователь уже существует";
        }
        else
        {
        
//то что должно быть если нет таких значений в базе...
        
}
}


в запросе указываете через and или or то что вам нужно

   
 
 автор: Петр   (24.01.2008 в 09:47)   письмо автору
 
   для: KPETuH   (24.01.2008 в 09:43)
 

Неправильно понял вопрос... неповторяющиеся столбцы, а не строки

   
 
 автор: fsn   (24.01.2008 в 16:32)   письмо автору
 
   для: Петр   (24.01.2008 в 09:47)
 

База данных вкратце такая:
Столбцы: Номер телефона; АТС:Станция; АТС:Линия-1; АТС:Линия-2
Строка1: 22-11; 3/187; 10/156; 2/125
Строка2: 23-09; 6/387; 11/345; 10/234
и т.д. Все поля текстовые.
Номер телефона надо проверить, от неповторяющихся значений только в своем столбце.
Вводимые данные АТС:Станция,проверить в своем столбце, в столбце АТС:Линия-1 и в АТС:Линия-2
Вводимые данные АТС:Линия-1,проверить в своем столбце, в столбце АТС:Линия-2 и в АТС:Станция
Вводимые данные АТС:Линия-2,проверить в своем столбце и в столбце АТС:Линия-1 и в АТС:Станция
Заранее благодарен

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования