Имам проблем със php & mysql незнам как да направя 1 check.

Never

New Member
Здр, имам проблем както се подразбира от заглавието така:
Искам да сложа още един check на това where.
Код:
mysql_query('UPDATE characters SET voted=1 where account_name like \''.$row['login'].'\' and online=1;') ;
Обаче нещо не ми се получава.
Искам да сложа нещо като
Код:
where MIN(accesstime)
след online=1
Обаче както и да пробвах да го формирам не ми се получи.
Дайте някакъв съвет!

Пробвах
Код:
mysql_query('UPDATE characters SET voted=1 where account_name like \''.$row['login'].'\' and online=1 having min(lastaccess);') ;
и не става, няма error просто не работи като функция
 
Последно редактирано:
От: Имам проблем със php & mysql незнам как да направя 1 check.

Доколкото прочетох, тия MIN и MAX работят с SELECT. Тоест, как ще ти намери accesstime.

Пусни преди това една заявка преди това за да разбереш кога се е логнал.

Може и тотално да бъркам да знаеш :).
 
От: Имам проблем със php & mysql незнам как да направя 1 check.

Код:
UPDATE  characters a
        INNER JOIN
        (
            SELECT  account_name, MIN(lastaccess) min_date
            FROM    characters
            GROUP   BY account_name
        ) b ON  a.Account_Name = b.Account_name AND
                a.lastAccess = b.min_date
SET     a.voted = 1
WHERE   a.Name = 'nameHere' AND
        a.online = 1

Tova izmislih no nqmam predstava za6to ne raboti
 
От: Имам проблем със php & mysql незнам как да направя 1 check.

Как да ти даде грешка след като не си му задал .
or die (mysql_error());
 
От: Имам проблем със php & mysql незнам как да направя 1 check.

Имаш проблем с дизайна на базата.
 
От: Имам проблем със php & mysql незнам как да направя 1 check.

Едит#

Код:
        In Database [1]
        Table Characters
    +----+------------------+-------+---------+
    |account_name| lastaccess| online| voted  |
    +------------+-----------+-------+--------+
    | Account1   | 1231321231|   1   |    1   |
    | Account1   | 132312213 |   0   |    0   |
    | Account3   | 13231212  |   0   |    0   |
    +------------+-----------+-------+--------+
        In Database [2]
        Table Accounts
    +----+------------------+
    |   Login   | lastIp    | 
    +-----------+-----------+
    | Account1  | 0.0.0.0.0 |
    | Account1  | 0.0.0.0.0 |
    | Account3  | 0.0.0.0.0 |
    +-----------+-----------+

Имам функция за акаунтите

Код:
   function getclientip()
    	{
    		if ( isset($_SERVER["REMOTE_ADDR"]) )    { 
    			return $_SERVER["REMOTE_ADDR"]; 
    		} else if ( isset($_SERVER["HTTP_X_FORWARDED_FOR"]) )    { 
    			return $_SERVER["HTTP_X_FORWARDED_FOR"] ; 
    		} else if ( isset($_SERVER["HTTP_CLIENT_IP"]) )    { 
    			return $_SERVER["HTTP_CLIENT_IP"] ; 
    		}
    			return "0.0.0.0";
    	}
    $Ip=getclientip();
    $sql='SELECT login FROM accounts WHERE lastIp like \''.$Ip.'\';';
    echo mysql_error();
    $result = mysql_query($sql);
    if (false === $result) {
    }
    while($row = mysql_fetch_array($result))
    {
Искам да направя това:

Код:
  mysql_query('update characters SET voted=1 where account_name like \''.$row['login'].'\' and online=1;') ;
но само където е min(lastaccess)
 
От: Имам проблем със php & mysql незнам как да направя 1 check.

Както казах сбъркан ти е дизайна на базата. Не е нужно да го показваш за да се убедя в това :).

Защо позволяваш на един потребител да се логне 2 пъти?
И спри да използваш LIKE за точно съвпадание, затова си има "="
 
От: Имам проблем със php & mysql незнам как да направя 1 check.

Какво означава "не работи" ?

Какви грешки получаваш? (след включването на mysql_error(), както те посъветва uphero)

Може грешката да е просто синтактична, като е пропуснато маркиране в кавички на полета от таблицата, или кейс сенситив да е проблема..
 

Горе