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

Форум MySQL

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

 

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

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

тема: Помогите составить сложное условие
 
 автор: kis-kis   (15.11.2006 в 08:31)   письмо автору
 
 

Есть две таблицы: users и j_vacancy:

CREATE TABLE `j_vacancy` (
  `id` int(11) NOT NULL auto_increment,
  `job_title` text NOT NULL,
  `cat` int(1) NOT NULL default '0',
  `gorod` int(1) NOT NULL default '0',
  `sex` int(1) NOT NULL default '0',
  `study` int(1) NOT NULL default '0',
  `expwork` int(1) NOT NULL default '0',
  `age_from` text NOT NULL,
  `age_before` text NOT NULL,
  `zp` text NOT NULL,
  `graf` int(1) NOT NULL default '0',
  `zan` int(1) NOT NULL default '0',
  `text_vacancy` text NOT NULL,
`user` text NOT NULL,
  `org` text NOT NULL,
  `name` text NOT NULL,
  `tel` text NOT NULL,
  `email` text NOT NULL,
  `show_email` int(1) default '0',
  `who` int(1) NOT NULL default '0',
  `period` text NOT NULL,
  `status` int(1) default '0',
  KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;



CREATE TABLE `users` (
  `id` int(11) NOT NULL auto_increment,
  `uname` text NOT NULL,
  `email` text NOT NULL,
  `pass` varchar(50) NOT NULL default '',
  `level` tinyint(4) NOT NULL default '3',
  `subs` int(1) NOT NULL default '1',
  `last_login` text NOT NULL,
  `last_ip` text NOT NULL,
  `bill_job` int(1) default '0',
  `billexpdate` date NOT NULL default '0000-00-00',
  KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 PACK_KEYS=0;


Нужно при добавлении новой вакансии пользователем, посчитать сумму уже доваленных вакансий данным пользователем (колонка user).
Потом сравнить данную сумму с цифрой (допустим 5), если сумма вакансий > либо = 5, то вывести ошибку, но если у данного пользователя ячейка bill_job = 1 и CURRENT_DATE < billexpdate, то добавить еще одну вакансию.

Кратко: Если пользователь уже добавил 5 вакансий, то больше не добавлять, но если у него колонки bill_job и billexpdate удовлетворяют условиям (они сверху описаны), то добавить еще вакансию.

   
 
 автор: kis-kis   (15.11.2006 в 12:58)   письмо автору
 
   для: kis-kis   (15.11.2006 в 08:31)
 

Никто ничего не посоветует?

   
 
 автор: Trianon   (15.11.2006 в 13:03)   письмо автору
 
   для: kis-kis   (15.11.2006 в 12:58)
 

Посоветую. Для начала - связать таблицы. А то как-то непонятно. Вроде и первичный ключ в таблице пользователей есть. И ссылок на него нету.

   
 
 автор: kis-kis   (15.11.2006 в 13:29)   письмо автору
 
   для: Trianon   (15.11.2006 в 13:03)
 

Приблизительно так:


<?
        
if (!$bill)
        {
    
$user_id $s_userid;
    
$query "SELECT * FROM j_vacancy WHERE user = '$user_id'";
    
$req mysql_query($query) or die("<B>Error ".mysql_errno()." :</B> ".mysql_error()."");
  
  
$resultc=mysql_query("SELECT SUM(user) AS sum FROM j_vacancy where user = '$row[id]' group by user") or die("<B>Error ".mysql_errno()." :</B> ".mysql_error().""); 
  
$rowcatmysql_fetch_array($resultc); 
 if (
mysql_num_rows($resultc)==0){
 print 
"0";
 }
 else
 {
echo 
$rowcat['sum']; // Получаем сумму

Сравниваем с цифрой 5 (Как это сделать?). Если в колонки  bill_job и billexpdate не удовлетворяют условиямто выводим ошибку.

                
$err=1;
                
$err_txt.="<li class=textBR>вы уже добавили 5 вакансий";
                } 
else
{
Добавляем вакансию
}
?>


Примерно так?

   
 
 автор: Trianon   (15.11.2006 в 13:44)   письмо автору
 
   для: kis-kis   (15.11.2006 в 13:29)
 

то есть user.id заносится у Вас в j_vacancy.user
тогда почему j_vacancy.user описано как text а не как int(11) ?

   
 
 автор: kis-kis   (15.11.2006 в 14:00)   письмо автору
 
   для: Trianon   (15.11.2006 в 13:44)
 

Моя оплошность. Не посмотрел...

   
 
 автор: kis-kis   (15.11.2006 в 14:29)   письмо автору
 
   для: kis-kis   (15.11.2006 в 14:00)
 

Хорошо это исправили, а как сравнить?

   
 
 автор: Trianon   (15.11.2006 в 14:38)   письмо автору
 
   для: kis-kis   (15.11.2006 в 14:00)
 

запрос, выбирающий число вакансий для указанного пользователя:
$sql = "SELECT COUNT(id) as vacs FROM j_vacancy WHERE user = $user_id ";

   
 
 автор: kis-kis   (15.11.2006 в 16:44)   письмо автору
 
   для: Trianon   (15.11.2006 в 14:38)
 

А сравнить с числом 5?

   
 
 автор: Trianon   (15.11.2006 в 17:09)   письмо автору
 
   для: kis-kis   (15.11.2006 в 16:44)
 


<? 
if (!$bill

    
$user_id $s_userid
    
$query "SELECT COUNT(id) as vacs FROM j_vacancy WHERE user = $user_id"
    
$res mysql_query($query) or die("<B>Error ".mysql_errno()." :</B> ".mysql_error().""); 
    
$vacs mysql_result($res0);

    
$query "SELECT (bill_job = 1 AND billexpdate < NOW()) as ok
               FROM users WHERE user = 
$user_id " 
    
$res mysql_query($query) or die("<B>Error ".mysql_errno()." :</B> ".mysql_error().""); 
    if(!
mysql_num_rows($res))
             echo 
"нет такого пользователя";
   else
   {
        
$ok mysql_result($res0);
        if(!
$ok && intval($vacs) < 5)
             echo 
"Лимит вакансий исчерапн";
       else
       {
             
/// добавить вакансию.
       
}
    }
}
?> 
 

   
 
 автор: kis-kis   (15.11.2006 в 17:34)   письмо автору
 
   для: Trianon   (15.11.2006 в 17:09)
 

Огромное спасибо. ;-)
Сейчас попробую...

   
 
 автор: kis-kis   (15.11.2006 в 18:13)   письмо автору
 
   для: kis-kis   (15.11.2006 в 17:34)
 

Что-то не работает, все равно все добавляет не смотря ни на какие условия... :(

И вот здесь наверное ошибка:

$query = "SELECT (bill_job = 1 AND billexpdate < NOW()) as ok 
               FROM users WHERE user = $user_id " ;


Должно быть так:

$query = "SELECT (bill_job = 1 AND billexpdate < NOW()) as ok 
               FROM users WHERE id = $user_id " ;


Правильно?

   
 
 автор: Trianon   (15.11.2006 в 18:21)   письмо автору
 
   для: kis-kis   (15.11.2006 в 18:13)
 

в таблице users идентификатор пользователя лежит в каком поле?

   
 
 автор: kis-kis   (15.11.2006 в 19:29)   письмо автору
 
   для: Trianon   (15.11.2006 в 18:21)
 

Поле id

   
 
 автор: Trianon   (16.11.2006 в 09:49)   письмо автору
 
   для: kis-kis   (15.11.2006 в 19:29)
 

Да. Тут Вы правы.
В условии проверки времени устаревания я тоже наврал.

$query = "SELECT (bill_job = 1 AND billexpdate >= CURDATE()) as ok  
               FROM users WHERE id = $user_id " ; 

   
 
 автор: kis-kis   (16.11.2006 в 10:27)   письмо автору
 
   для: Trianon   (16.11.2006 в 09:49)
 

Вот фрагмент кода, который есть, но он почему-то не работает:


<?
if (!$email)
                {
                
$err=1;
                
$err_txt.="<li class=textBR>Вы не ввели e-mail";
                }
                if ((!
ereg("^[a-z0-9_\.-]+@([a-z0-9][a-z0-9-]+\.)+[a-z]{2,4}$"$GLOBALS["email"])) && (trim($GLOBALS["email"]) != ''))
    {
        
$err=1
        
$err_txt.="<li class=textBR>Некорректный email";
    }
if (
$bill=="yes")
{  
    
$user_id $s_userid;  
    
$query "SELECT COUNT(id) as vacs FROM j_vacancy WHERE user = $user_id";  
    
$res mysql_query($query) or die("<B>Error ".mysql_errno()." :</B> ".mysql_error()."");  
    
$vacs mysql_result($res0); 
    
$query "SELECT (bill_job = 1 AND billexpdate >= CURRENT_DATE()) as ok 
               FROM users WHERE id = 
$user_id " ;  
    
$res mysql_query($query) or die("<B>Error ".mysql_errno()." :</B> ".mysql_error()."");  
    if(!
mysql_num_rows($res)) 
    {
        
$err=1
        
$err_txt.="<li class=textBR>Пользователь не найден";
    }
   else 
   { 
        
$ok mysql_result($res0); 
        if(!
$ok && intval($vacs) < 5
{
        
$err=1
        
$err_txt.="<li class=textBR>Лимит исчерпан";
}
       else 
       { 
if (
$err==1)
                {
                print 
"<table width='100%' border='0' cellspacing='0' cellpadding='5'><tr>
<td><span class=textB>Ошибки: </span><br><br>
$err_txt<br></td></tr></table>";
                }
                else
                {
                   
$query "SELECT * FROM users WHERE id = '$user_id'";
                
$req mysql_query($query) or die("<B>Error ".mysql_errno()." :</B> ".mysql_error()."");
                
$query "INSERT INTO j_vacancy (user, email) VALUES ('$user_id', '$email')";
                
$req mysql_query($query) or die("<B>Error ".mysql_errno()." :</B> ".mysql_error()."");
                print 
"<br><center><span class=textB>Вакансия добавлена</span><br><br>";
                }
                }
                }
                }
                
?>

   
 
 автор: Trianon   (16.11.2006 в 10:33)   письмо автору
 
   для: kis-kis   (16.11.2006 в 10:27)
 

И каков отклик?
И, кстати, при каких исходных данных?

   
 
 автор: kis-kis   (16.11.2006 в 10:54)   письмо автору
 
   для: Trianon   (16.11.2006 в 10:33)
 

>>И, кстати, при каких исходных данных?
Не понял вас?

Все работает, кроме данных условий, даже если у пользователя уже 5 вакансий, то добавляется 6, 7 и т.д. :(

   
 
 автор: Trianon   (16.11.2006 в 11:23)   письмо автору
 
   для: kis-kis   (16.11.2006 в 10:54)
 

Что лежит в переменной $vacs?

   
 
 автор: kis-kis   (16.11.2006 в 11:28)   письмо автору
 
   для: Trianon   (16.11.2006 в 11:23)
 

Очевидно, там должна быть сумма уже добавленных вакансий? Я правельно понял?

   
 
 автор: Trianon   (16.11.2006 в 11:34)   письмо автору
 
   для: kis-kis   (16.11.2006 в 11:28)
 

Очевидно, там должно быть число уже имеющихся вакансий, если конечно в запросе нет ошибок.

Что такое сумма вакансий?
Вакансии это что - числа, чтобы их можно было суммировать?

   
 
 автор: kis-kis   (16.11.2006 в 11:55)   письмо автору
 
   для: Trianon   (16.11.2006 в 11:34)
 

Сумма вакансий это - cумма всех вакансий, в которых поле [user] таблица "j_vacancy" соответствует [$user_id] пользователя.

   
 
 автор: Trianon   (16.11.2006 в 12:02)   письмо автору
 
   для: kis-kis   (16.11.2006 в 11:55)
 

Когда я спросил, "Что лежит в переменной $vacs?"
то имел в виду написать

print "<br><center><span class=textB>Вакансия добавлена</span><br><br>"; 
print "Уже вакансий: $vacs<br>"; 
и посмотреть, что получится.

Кроме того, неплохо было бы взглянуть на дамп таблиц.
Если уж не получается разобраться на месте.

   
 
 автор: kis-kis   (16.11.2006 в 12:42)   письмо автору
 
   для: Trianon   (16.11.2006 в 12:02)
 

Да, count действительно считает правильно.

Вот дамп таблиц:


-- Дамп данных таблицы `j_vacancy`
INSERT INTO `j_vacancy` VALUES (12, 4, 'eee', 37, 1, 1, 1, 1, '23', '34', '2222', 0, 0, '2222', '222', '222', '222 222', 'ee@ee.ty', 1, 1, '31', 0);
INSERT INTO `j_vacancy` VALUES (13, 4, 'www', 37, 1, 1, 1, 1, '22', '22', '2333', 0, 0, 'www', '22', '22', '22', '22@22.ry', 1, 1, '31', 0);
INSERT INTO `j_vacancy` VALUES (14, 4, 'www', 37, 1, 1, 1, 1, '22', '22', '2333', 0, 0, 'www', '22', '22', '22', '22@22.ry', 1, 1, '31', 0);
INSERT INTO `j_vacancy` VALUES (15, 4, 'fff', 37, 1, 1, 1, 1, '45', '54', '4444', 0, 0, '4444', '44', '44', '44', '44@ss.df', 1, 2, '31', 0);
INSERT INTO `j_vacancy` VALUES (16, 4, 'fff', 37, 1, 1, 1, 1, '45', '54', '4444', 0, 0, '4444', '44', '44', '44', '44@ss.df', 1, 2, '31', 0);
INSERT INTO `j_vacancy` VALUES (17, 4, 'fff', 37, 1, 1, 1, 1, '45', '54', '4444', 0, 0, '4444', '44', '44', '44', '44@ss.df', 1, 2, '31', 0);
INSERT INTO `j_vacancy` VALUES (18, 4, '222', 37, 1, 1, 1, 1, '22', '34', '333', 0, 0, '3333', '333', '333', '333', 'test2@test.com', 1, 1, '7', 0);
INSERT INTO `j_vacancy` VALUES (19, 4, 'www', 37, 1, 1, 1, 1, '24', '45', '2222', 0, 0, '2222', '222', '222', '2222', 'test2@test.com', 0, 1, '7', 0);


-- Дамп данных таблицы `users`

INSERT INTO `users` VALUES (4, 'test', 'test2@test.com', '6950aac2d7932e1f1a4c3cf6ada1316e', 3, 1, '16.11.2006 12:35:33', '127.0.0.1', 0, '2006-11-10', '', '', '');

   
 
 автор: Trianon   (16.11.2006 в 12:49)   письмо автору
 
   для: kis-kis   (16.11.2006 в 12:42)
 

эти строки явно не соответствуют структуре таблиц

   
 
 автор: kis-kis   (16.11.2006 в 12:56)   письмо автору
 
   для: Trianon   (16.11.2006 в 12:49)
 

Структуру я немного поменял:

Вот:


CREATE TABLE `users` (
  `id` int(11) NOT NULL auto_increment,
  `uname` text NOT NULL,
  `email` text NOT NULL,
  `pass` varchar(50) NOT NULL default '',
  `level` tinyint(4) NOT NULL default '3',
  `subs` int(1) NOT NULL default '1',
  `last_login` text NOT NULL,
  `last_ip` text NOT NULL,
  `bill_job` int(1) default '0',
  `billexpdate` date NOT NULL default '0000-00-00',
  `billorgname` text NOT NULL,
  `billcontname` text NOT NULL,
  `billtel` text NOT NULL,
  KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 PACK_KEYS=0;


и вот:


CREATE TABLE `j_vacancy` (
  `id` int(11) NOT NULL auto_increment,
  `user` int(11) default '0',
  `job_title` text NOT NULL,
  `cat` int(1) NOT NULL default '0',
  `gorod` int(1) NOT NULL default '0',
  `sex` int(1) NOT NULL default '0',
  `study` int(1) NOT NULL default '0',
  `expwork` int(1) NOT NULL default '0',
  `age_from` text NOT NULL,
  `age_before` text NOT NULL,
  `zp` text NOT NULL,
  `graf` int(1) NOT NULL default '0',
  `zan` int(1) NOT NULL default '0',
  `text_vacancy` text NOT NULL,
  `org` text NOT NULL,
  `name` text NOT NULL,
  `tel` text NOT NULL,
  `email` text NOT NULL,
  `show_email` int(1) default '0',
  `who` int(1) NOT NULL default '0',
  `period` text NOT NULL,
  `status` int(1) default '0',
  KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

   
 
 автор: Trianon   (16.11.2006 в 13:11)   письмо автору
 
   для: kis-kis   (16.11.2006 в 12:56)
 

Похоже, ошибка в проверке условия.

if(!($ok && intval($vacs) < 5))

   
 
 автор: kis-kis   (16.11.2006 в 13:55)   письмо автору
 
   для: Trianon   (16.11.2006 в 13:11)
 

Да, так работает.
Вакансия не добавляется, но текст ошибки не отображается... Просто экран обновляется и все.
А хотелось бы чтобы было написано: Лимит исчерпан :-(

   
 
 автор: Trianon   (16.11.2006 в 14:04)   письмо автору
 
   для: kis-kis   (16.11.2006 в 13:55)
 

В моем варианте - печатается.

А где Вы печатаете содержимое $err_txt? Я не нашел соответствующей строки.

   
 
 автор: kis-kis   (16.11.2006 в 14:12)   письмо автору
 
   для: Trianon   (16.11.2006 в 14:04)
 

Посмотрите посто №160841, я там код писал еще с проверкой email...

Есть строка:


print "<table width='100%' border='0' cellspacing='0' cellpadding='5'><tr>
<td><span class=textB>Ошибки: </span><br><br>$err_txt<br></td></tr></table>";

   
 
 автор: kis-kis   (16.11.2006 в 14:12)   письмо автору
 
   для: Trianon   (16.11.2006 в 14:04)
 

Посмотрите посто №160841, я там код писал еще с проверкой email...

Есть строка:


print "<table width='100%' border='0' cellspacing='0' cellpadding='5'><tr>
<td><span class=textB>Ошибки: </span><br><br>$err_txt<br></td></tr></table>";

   
 
 автор: kis-kis   (16.11.2006 в 14:18)   письмо автору
 
   для: Trianon   (16.11.2006 в 14:04)
 

Opera повисла, получилось дублирование постов.

   
 
 автор: Trianon   (16.11.2006 в 14:22)   письмо автору
 
   для: kis-kis   (16.11.2006 в 14:18)
 

Он находится в ветви else условного оператора, определяющего ошибку. И поэтому не выполняется.

   
 
 автор: kis-kis   (16.11.2006 в 14:27)   письмо автору
 
   для: Trianon   (16.11.2006 в 14:22)
 

Все исправил, теперь работает

   
 
 автор: kis-kis   (16.11.2006 в 15:35)   письмо автору
 
   для: Trianon   (16.11.2006 в 14:22)
 

Хорошо условие проверки кол-ва вакансий - если больше 5, то не добавлять - работает.

А вот условие что если у пользователя bill_job =1 и billexpdate >= CURRENT_DATE() - если у него уже есть 5 вакансий, то все равно добавить еще - не работает. :-(
Всегда пишет, что уже есть 5 вакансий и все, несмотря ни на какие bill_job и billexpdate

   
 
 автор: Trianon   (16.11.2006 в 15:54)   письмо автору
 
   для: kis-kis   (16.11.2006 в 15:35)
 

Значит так:

if(!($ok || intval($vacs) < 5)) 

   
 
 автор: kis-kis   (16.11.2006 в 16:06)   письмо автору
 
   для: Trianon   (16.11.2006 в 15:54)
 

Непомогло, тоже самое... :(

   
 
 автор: Trianon   (16.11.2006 в 16:16)   письмо автору
 
   для: kis-kis   (16.11.2006 в 16:06)
 

опять же, давайте пример строк таблицы.

   
 
 автор: kis-kis   (16.11.2006 в 16:24)   письмо автору
 
   для: Trianon   (16.11.2006 в 16:16)
 

Вы имеете ввиду дамп или структуру таблицы (она не изменилась)?

-- Дамп данных таблицы `j_vacancy`


INSERT INTO `j_vacancy` VALUES (12, 4, 'eee', 37, 1, 1, 1, 1, '23', '34', '2222', 0, 0, '2222', '222', '222', '222 222', 'ee@ee.ty', 1, 1, '31', 0);
INSERT INTO `j_vacancy` VALUES (13, 4, 'www', 37, 1, 1, 1, 1, '22', '22', '2333', 0, 0, 'www', '22', '22', '22', '22@22.ry', 1, 1, '31', 0);
INSERT INTO `j_vacancy` VALUES (14, 4, 'www', 37, 1, 1, 1, 1, '22', '22', '2333', 0, 0, 'www', '22', '22', '22', '22@22.ry', 1, 1, '31', 0);
INSERT INTO `j_vacancy` VALUES (15, 4, 'fff', 37, 1, 1, 1, 1, '45', '54', '4444', 0, 0, '4444', '44', '44', '44', '44@ss.df', 1, 2, '31', 0);
INSERT INTO `j_vacancy` VALUES (16, 4, 'fff', 37, 1, 1, 1, 1, '45', '54', '4444', 0, 0, '4444', '44', '44', '44', '44@ss.df', 1, 2, '31', 0);


-- Дамп данных таблицы `users`

INSERT INTO `users` VALUES (4, 'test', 'test2@test.com', '6950aac2d7932e1f1a4c3cf6ada1316e', 3, 1, '16.11.2006 15:25:12', '127.0.0.1', 1, '2006-12-20', '', '', '');

   
 
 автор: Trianon   (16.11.2006 в 16:42)   письмо автору
 
   для: kis-kis   (16.11.2006 в 16:24)
 

Вы меня запутали окончательно.
Исходный вариант был правильным.
if(!$ok && intval($vacs) < 5)

   
 
 автор: kis-kis   (16.11.2006 в 16:58)   письмо автору
 
   для: Trianon   (16.11.2006 в 16:42)
 

Прошу прощения... ;-)

С этим условием не добавляет, пишет что лимит 5 и все...
Давайте сверим код:


<?
    
if ($bill=="yes"
{   
    
$user_id $s_userid;   
    
$query "SELECT COUNT(id) as vacs FROM j_vacancy WHERE user = $user_id";   
    
$res mysql_query($query) or die("<B>Error ".mysql_errno()." :</B> ".mysql_error()."");   
    
$vacs mysql_result($res0);  
    
$query "SELECT (bill_job = 1 AND billexpdate >= CURRENT_DATE()) as ok  
               FROM users WHERE id = 
$s_userid;   
    
$res mysql_query($query) or die("<B>Error ".mysql_errno()." :</B> ".mysql_error()."");   
    if(!
mysql_num_rows($res))  
    { 
        
$err=1;  
        
$err_txt.="<li class=textBR>Пользователь не найден"
    } 
   else  
     
       
$ok mysql_result($res0); 
        if(!
$ok && intval($vacs) < 5)
          
        
$err=1;  
        echo 
"$err_txt<li class=textBR>Лимит исчерпан</a>"

       else 
       { 
        if (
$err==1)
                {
                print 
"<table width='100%' border='0' cellspacing='0' cellpadding='5'><tr>
<td><span class=textB>Обнаружены ошибки: </span><br><br>
$err_txt<br></td></tr></table>";
                }
                else
                {
                
$user_id $s_userid;
                   
$query "SELECT * FROM users WHERE id = '$user_id'";
                
$req mysql_query($query) or die("<B>Error ".mysql_errno()." :</B> ".mysql_error()."");
                
$query "INSERT INTO j_vacancy (job_title, user, cat, gorod, sex, study, expwork, age_from, age_before, zp, graf, zan, text_vacancy, 
org, name, tel, email, show_email, who, period) 
VALUES ('
$job_title', '$user_id', '$cat_job', '$gorod', '$sex', '$study', '$expwork', '$age_from', 
'
$age_before', '$zp', '$graf', '$zan', '$vacancy', '$org', '$name', '$tel', '$email', '$show_email', '$who', '$period')";
                
$req mysql_query($query) or die("<B>Error ".mysql_errno()." :</B> ".mysql_error()."");
                print 
"<br><center><span class=textB>Вакансия № $vacs добавлена.</span>";
}
}
}
?>


Все правильно?

   
 
 автор: kis-kis   (17.11.2006 в 11:42)   письмо автору
 
   для: Trianon   (16.11.2006 в 16:42)
 

До конца не будем доделывать?
Но, все равно спасибо хоть за это! :-)

   
 
 автор: Trianon   (17.11.2006 в 20:52)   письмо автору
 
   для: kis-kis   (17.11.2006 в 11:42)
 


<?
    $err_txt 
'';
    if(!
$email)
        
$err_txt.="<li class=textBR>Вы не ввели e-mail";
    else if ((!
ereg("^[a-z0-9_\.-]+@([a-z0-9][a-z0-9-]+\.)+[a-z]{2,4}$"$GLOBALS["email"])) && (trim($GLOBALS["email"]) != ''))
        
$err_txt.="<li class=textBR>Некорректный email";
    if(
$bill=="yes")
    {
        
$user_id $s_userid;
        
$query "SELECT COUNT(id) as vacs FROM j_vacancy WHERE user = $user_id";
        
$res mysql_query($query) or die("<B>Error ".mysql_errno()." :</B> ".mysql_error()."");
        
$vacs mysql_result($res0);
        
$query "SELECT (bill_job = 1 AND billexpdate >= CURRENT_DATE()) as ok
               FROM users WHERE id = 
$user_id;
        
$res mysql_query($query) or die("<B>Error ".mysql_errno()." :</B> ".mysql_error()."");
        if(!
mysql_num_rows($res))
            
$err_txt.="<li class=textBR>Пользователь не найден";
        else
        {
            
$ok mysql_result($res0);
            if(!
$ok && intval($vacs) >= 5)
                
$err_txt.="<li class=textBR>Лимит исчерпан</a>";
        }
    }
    if (
$err_txt != '')
        print 
"<table width='100%' border='0' cellspacing='0' cellpadding='5'><tr>
                <td><span class=textB>Обнаружены ошибки: </span><br><br>
$err_txt<br></td></tr></table>";
    else
    {
        
$user_id $s_userid;
        
$query "SELECT * FROM users WHERE id = '$user_id'";
        
$req mysql_query($query) or die("<B>Error ".mysql_errno()." :</B> ".mysql_error()."");
        
$query "INSERT INTO j_vacancy (job_title, user, cat, gorod, sex, study, expwork, age_from, age_before, zp, graf, zan, text_vacancy,
        org, name, tel, email, show_email, who, period)
        VALUES ('
$job_title', '$user_id', '$cat_job', '$gorod', '$sex', '$study', '$expwork', '$age_from',
        '
$age_before', '$zp', '$graf', '$zan', '$vacancy', '$org', '$name', '$tel', '$email', '$show_email', '$who', '$period')";
        
$req mysql_query($query) or die("<B>Error ".mysql_errno()." :</B> ".mysql_error()."");
        print 
"<br><center><span class=textB>Вакансия № $vacs добавлена.</span>";
    }
?>

   
 
 автор: kis-kis   (19.11.2006 в 16:20)   письмо автору
 
   для: Trianon   (17.11.2006 в 20:52)
 

Можно еще один вопрос?

Как добавить к данным условиям еще одно, что если они выполняются, то в ячейку style таблицы j_vacancy мы добавляем, например - vacbillstyle, иначе добавляем vacstyle.
Спасибо.

   
 
 автор: Trianon   (20.11.2006 в 10:41)   письмо автору
 
   для: kis-kis   (19.11.2006 в 16:20)
 

Что значит "добавить в ячейку"?
Добавить можно строку целиком. Но тогда нужно знать всю строку.
Или ячейку можно изменить. Но тогда нужно знать, в какой строке.

   
 
 автор: kis-kis   (20.11.2006 в 12:21)   письмо автору
 
   для: Trianon   (20.11.2006 в 10:41)
 

Таблица j_vacancy


CREATE TABLE `j_vacancy` (
  `id` int(11) NOT NULL auto_increment,
  `user` int(11) default '0',
  `job_title` text NOT NULL,
  `cat` int(1) NOT NULL default '0',
  `gorod` int(1) NOT NULL default '0',
  `sex` int(1) NOT NULL default '0',
  `study` int(1) NOT NULL default '0',
  `expwork` int(1) NOT NULL default '0',
  `age_from` text NOT NULL,
  `age_before` text NOT NULL,
  `zp` text NOT NULL,
  `graf` int(1) NOT NULL default '0',
  `zan` int(1) NOT NULL default '0',
  `text_vacancy` text NOT NULL,
  `org` text NOT NULL,
  `name` text NOT NULL,
  `tel` text NOT NULL,
  `email` text NOT NULL,
  `show_email` int(1) default '0',
  `who` int(1) NOT NULL default '0',
  `period` text NOT NULL,
  `date` text NOT NULL,
  `style` text NOT NULL,
  `status` int(1) default '0',
  PRIMARY KEY  (`id`),
  KEY `cat` (`cat`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=90 ;


Мы и будем добавлять строку, просто в таблицу я еще одно поле добавил.
Если условия выполняются то в style добавляем vacbillstyle, если нет то vacstyle.

   
 
 автор: Trianon   (20.11.2006 в 13:02)   письмо автору
 
   для: kis-kis   (20.11.2006 в 12:21)
 

какие условия-то?

   
 
 автор: kis-kis   (20.11.2006 в 13:45)   письмо автору
 
   для: Trianon   (20.11.2006 в 13:02)
 


$query = "SELECT (bill_job = 1 AND billexpdate >= CURRENT_DATE()) as ok 
               FROM users WHERE id = $user_id" ;

   
 
 автор: Trianon   (20.11.2006 в 13:57)   письмо автору
 
   для: kis-kis   (20.11.2006 в 13:45)
 


$style = $ok ? 'vacbillstyle', если нет то 'vacstyle';
 $query = "INSERT INTO j_vacancy (job_title,...., style, ....
VALUES ('$job_title',....., '$style', ....

   
 
 автор: kis-kis   (20.11.2006 в 14:25)   письмо автору
 
   для: Trianon   (20.11.2006 в 13:57)
 

Должно быть так?


$style = $ok ? 'vacbillstyle' : $style = "vacstyle";


Если да, то после этого все правильно, style добавляется какой нужен.
Спасибо.

   
 
 автор: kis-kis   (19.11.2006 в 16:20)   письмо автору
 
   для: Trianon   (17.11.2006 в 20:52)
 

Можно еще один вопрос?

Как добавить к данным условиям еще одно, что если они выполняются, то в ячейку style таблицы j_vacancy мы добавляем, например - vacbillstyle, иначе добавляем vacstyle.
Спасибо.

   
 
 автор: kis-kis   (18.11.2006 в 15:16)   письмо автору
 
   для: Trianon   (16.11.2006 в 16:42)
 

Все работает. Спасибо, даже и не знаю как Вас отблагодарить! :-)

   
Rambler's Top100
вверх

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