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

Форум MySQL

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

 

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

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

тема: Запрос с исключениями
 
 автор: chexov   (22.08.2008 в 04:19)   письмо автору
 
 

Есть 2 таблицы:
1) Хранятся данные по статистике: id, test
2)таблица тестов id, nametest, number
Авторизированый по ID пользователь, выбирает тест и пройдя его данные с id юзером и номером теста заносятся в первую таблицу статистики
Как сделать чтобы при выборе теста, список тестов сравнивался с уже пройдеными этим юзером тестами и совпадающие не отображались в списке?

Так не выходит, убирает только первое совпадение:(

$q = mysql_fetch_array(mysql_query("select `test` from table1 where `id`='$id_user'"));

$q1 = mysql_query("select * from table2 where `number` != '$q['test']'");

echo "<select name='t'>";
while ($arr = mysql_fetch_array($q1))
  {
  echo "<option value='$arr['number']'>$arr['nametest']</option>";
  }
echo "</select>";

  Ответить  
 
 автор: ronin   (22.08.2008 в 10:15)   письмо автору
 
   для: chexov   (22.08.2008 в 04:19)
 

Попробуйте через массив:

$q =mysql_query("select `test` from table1 where `id`='$id_user'"); 
while ($p=mysql_fetch_array($q))
{
$q1 = mysql_query("select * from table2 where `number` != '$p['test']'"); 

echo "<select name='t'>"; 
while ($arr = mysql_fetch_array($q1)) 
  { 
  echo "<option value='$arr['number']'>$arr['nametest']</option>"; 
  } 
}
echo "</select>"; 

  Ответить  
 
 автор: chexov   (22.08.2008 в 11:40)   письмо автору
 
   для: ronin   (22.08.2008 в 10:15)
 

не получается так, выводит оба варианта:(

  Ответить  
 
 автор: chexov   (23.08.2008 в 06:01)   письмо автору
 
   для: chexov   (22.08.2008 в 11:40)
 

Есть еще какие нибудь соображения?

  Ответить  
 
 автор: а-я   (23.08.2008 в 07:35)   письмо автору
 
   для: chexov   (22.08.2008 в 04:19)
 

может так:

<?
$_MS 
mysql_query('SELECT `table2`.* FROM `test`,`table2` WHERE `test`.`id`='.intval($id_user).' AND `table2`.`number` != `test`.`test`'); 
?>
<select name='t'>
 <? while ($_R mysql_fetch_array($_MS)): ?>
 <option value="<?=$_R['number']?>"><?=$_R['nametest']?></option>
 <? endwhile; ?>
</select>

  Ответить  
 
 автор: chexov   (24.08.2008 в 02:54)   письмо автору
 
   для: а-я   (23.08.2008 в 07:35)
 

так поле test у меня из table1

  Ответить  
 
 автор: а-я   (24.08.2008 в 07:38)   письмо автору
 
   для: chexov   (24.08.2008 в 02:54)
 

так?

<? 
$_MS 
mysql_query('SELECT `table2`.* FROM `table1`,`table2` WHERE `table1`.`id`='.intval($id_user).' AND `table2`.`number` != `table1`.`test`');  
?> 
<select name="t"> 
 <? while ($_R mysql_fetch_array($_MS)): ?> 
 <option value="<?=$_R['number']?>"><?=$_R['nametest']?></option> 
 <? endwhile; ?> 
</select>

  Ответить  
 
 автор: chexov   (24.08.2008 в 13:10)   письмо автору
 
   для: а-я   (24.08.2008 в 07:38)
 

вообще не выводит не одного значения, хотя в таблице 1 совпадений нет

  Ответить  
 
 автор: Саня   (24.08.2008 в 16:01)   письмо автору
 
   для: chexov   (22.08.2008 в 04:19)
 

SELECT * FROM `table2` WHERE `number` NOT IN(SELECT `test` FROM `table1` WHERE `id`=".$id_user.");

  Ответить  
Rambler's Top100
вверх

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