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

Форум MySQL

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Сравнение значений

Сообщения:  [1-10]   [11-20] 

 
 автор: Trianon   (18.08.2008 в 12:13)   письмо автору
 
   для: [ANTI]CheateR   (18.08.2008 в 10:49)
 

Я там же и ответил. Поменьше, правда.

  Ответить  
 
 автор: [ANTI]CheateR   (18.08.2008 в 10:49)   письмо автору
 
   для: Trianon   (15.08.2008 в 22:30)
 

В аську зайдите, пожалуйста. Я вам там много чего написал

  Ответить  
 
 автор: Trianon   (15.08.2008 в 22:30)   письмо автору
 
   для: [ANTI]CheateR   (15.08.2008 в 21:43)
 

while($row = mysql_fetch_assoc($res))
{
    $points = 0;

    for($i = 1; $i <=7 ; ++$i)
      if($etalon["a$i"] == $row["a$i"] && $etalon["b$i"] == $row["b$i"]) 
        $points += 10;
      else if($etalon["a$i"]-$etalon["b$i"] == $row["a$i"] - $row["b$i"])
        $points += 5;
      else if($etalon["a$i"] == $row["a$i"] || $etalon["b$i"] == $row["b$i"]) 
        $points ++;

    if($points)....

  Ответить  
 
 автор: [ANTI]CheateR   (15.08.2008 в 21:43)   письмо автору
 
   для: [ANTI]CheateR   (14.08.2008 в 19:05)
 

И снова здравствуйте.

Что-то я никак с циклом разобраться не могу. Подставил я вместо предложенного while цикл for(ну не хочу я чтоб в скрипте 8 раз повторялись одни и те же строки).
Не идет. Вот что у меня вышло:
$sql = "SELECT * FROM tur1 WHERE name='ETALON'";
$res = mysql_query($sql) or die("ERROR");
$etalon = mysql_fetch_assoc($res);

$sql2 = "SELECT * FROM tur1";
$res2 = mysql_query($sql2) or die("ERROR 2");

for($row = mysql_fetch_assoc($res2),$x=1;$x<=8;$x++)
 { $points = "0";
 if($etalon['a$x']==$row['a$x'] && $etalon['b$x']==$row['b$x']) $points += 10;
 else if ($etalon['a$x']-$etalon['a$x'] == $row['a$x'] - $row['a$x'] OR $etalon['a$x']-$etalon['a$x'] == $row['a$x'] - $row['a$x']) $points += 5;
 else if($etalon['a$x']== $row['a$x'] OR $etalon['b$x']==$row['b$x']) $points+=1;
 
 if($points) {mysql_query("UPDATE tur1 SET points = $points WHERE id=".$row[id]) or die(ERROR);}
 } 
 ; 

Вообще голова не соображает уже, у меня заносит в поле etalon очки.
Подскажите, пожалуйста, что изменить.

  Ответить  
 
 автор: [ANTI]CheateR   (14.08.2008 в 19:05)   письмо автору
 
   для: Trianon   (12.08.2008 в 17:08)
 

Здравствуйте, товарищ Trianon.
Я вам в аську писал, вы мне че то не ответили, решил сюда написать, а то процесс написания сайта встал, а это не есть хорошо.

Поменял я после вашего намёка имена матчей в таблице.
Я так понял, цифрами надо было делать чтоб потом в цикле инкремент ставить ?
Ну было у меня a1 a2, изменил я на 1, 9, 2, 10 ... 8, 16.

Запрос:
mysql_query("INSERT INTO tur1 (id, name, date, 1, 9, 
2, 10, 3,11, 4,12, 5,13, 6,14, 7,15, 8,16) 
VALUES (null, 'ETALON', '$date', '$a1','$a2', 
'$b1','$b2','$c1','$c2','$d1','$d2','$e1','$e2','$f1','$f2'
,'$g1','$g2','$h1','$h2')") 
or die(mysql_error());


Не записывает.
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1, 9, 2, 10, 3,11, 4,12, 5,13, 6,14, 7,15, 8,16) VALUES (null, 'ETALON', '121872' at line 1

Ну всё вроде. Жду ответа ))

  Ответить  
 
 автор: Trianon   (12.08.2008 в 17:08)   письмо автору
 
   для: [ANTI]CheateR   (12.08.2008 в 16:25)
 

>А можно в двух словах описать как в данном случае по-человечески организовать бд ?

Так я в двух и написал.
А подробности зависят от предметной области. От того, как туры проходят, какие команды участвуют, как ставки делают и прочее прочее прочее.

  Ответить  
 
 автор: [ANTI]CheateR   (12.08.2008 в 16:25)   письмо автору
 
   для: Trianon   (12.08.2008 в 15:30)
 

А можно в двух словах описать как в данном случае по-человечески организовать бд ?

А насчет переменных, что в голову пришло первым, то и написал. Согласен, глуповато ))

  Ответить  
 
 автор: Trianon   (12.08.2008 в 15:30)   письмо автору
 
   для: [ANTI]CheateR   (12.08.2008 в 15:26)
 

Нет, это мне хотелось бы уточнить.
А если матчей будет не семь, а три? А если не три, а пятнадцать?
А что будет с таблицей в следующем туре?

Способ попроще есть. Только для этого надо схему БД организовать по-человечески.

А с Вашей таблицей семь раз скопированный фрагмент, ей-богу, цена невеликая.

Это ж, блин, надо выдумать было - нумеровать данные матчей БУКВАМИ!

  Ответить  
 
 автор: [ANTI]CheateR   (12.08.2008 в 15:26)   письмо автору
 
   для: Trianon   (12.08.2008 в 13:13)
 

Хотелось бы уточнить.

if($etalon['a1'] == $row['a1'] && $etalon['a2'] == $row['a2'])  
        $points += 10; 
    else if($etalon['a1']-$etalon['a2'] == $row['a1'] - $row['a2']) 
        $points += 5;

Это ведь у меня только по первому матчу обрабатывается.
Получается, что мне надо эти строки копирнуть 7 раз и везде поменять имена переменных.
Нет ли способа попроще ?

Может опять через цикл, только чтоб имена переменных менял ?

  Ответить  
 
 автор: Trianon   (12.08.2008 в 13:13)   письмо автору
 
   для: [ANTI]CheateR   (12.08.2008 в 12:46)
 

берем данные о истинном результате:
<? $sql "SELECT * FROM tbl WHERE `name` = 'ETALON'";
$res mysql_query(sql) or die "Error in $sql: "mysql_error();
$etalon mysql_fetch_assoc($res);


пробегаем все строки и обновляем очки.
<? $sql "SELECT * FROM tbl"
$res mysql_query(sql) or die "Error in $sql: "mysql_error();

while(
$row mysql_fetch_assoc($res))
{
    
$points 0;
    
    if(
$etalon['a1'] == $row['a1'] && $etalon['a2'] == $row['a2']) 
        
$points += 10;
    else if(
$etalon['a1']-$etalon['a2'] == $row['a1'] - $row['a2'])
        
$points += 5;
    .....
    if(
$points)
    {
        
$sql "UPDATE tbl SET points = $points WHERE id = ".$row['id'];
        
$upres mysql_query(sql) or die "Error in $sql: "mysql_error();
    }
}

  Ответить  

Сообщения:  [1-10]   [11-20] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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