update mysql
#1

Can you please pass this on command r39-3?
Код:
//========================================[CMD:SHOWFACTIONACTIVITY]============================================
CMD:showfactionactivity(playerid, params[])
{
    if(IsPlayerConnected(playerid))
    {
        new jucator,numejucator[32],query[128],datastring[256],str[128], string[256];
        if(sscanf(params, "u", jucator)) return SendClientMessage(playerid, COLOR_GRAD2, "{00FF00}Folosire:{FFFFFF} /showfactionactivity [PlayerID/PartOfName]");
        GetPlayerName(jucator, numejucator, sizeof(numejucator));


        format(query, sizeof(query), "SELECT * FROM `NewsReporterActivity` WHERE `Player` = '%s' AND `Command` = '/news' AND `ZI` = 'Monday'", numejucator);
        mysql_tquery(handle,string, "", "");
        mysql_store_result();
        new dataluni = mysql_count_rows();
        mysql_free_result();

        format(query, sizeof(query), "SELECT * FROM `NewsReporterActivity` WHERE `Player` = '%s' AND `Command` = '/news' AND `ZI` = 'Tuesday'", numejucator);
        mysql_tquery(handle,string, "", "");
        mysql_store_result();
        new datamarti = mysql_count_rows();
        mysql_free_result();

        format(query, sizeof(query), "SELECT * FROM `NewsReporterActivity` WHERE `Player` = '%s' AND `Command` = '/news' AND `ZI` = 'Wednesday'", numejucator);
        mysql_tquery(handle,string, "", "");
        mysql_store_result();
        new datamiercuri = mysql_count_rows();
        mysql_free_result();

        format(query, sizeof(query), "SELECT * FROM `NewsReporterActivity` WHERE `Player` = '%s' AND `Command` = '/news' AND `ZI` = 'Thursday'", numejucator);
        mysql_tquery(handle,string, "", "");
        mysql_store_result();
        new datajoi = mysql_count_rows();
        mysql_free_result();

        format(query, sizeof(query), "SELECT * FROM `NewsReporterActivity` WHERE `Player` = '%s' AND `Command` = '/news' AND `ZI` = 'Friday'", numejucator);
        mysql_tquery(handle,string, "", "");
        mysql_store_result();
        new datavineri = mysql_count_rows();
        mysql_free_result();

        format(query, sizeof(query), "SELECT * FROM `NewsReporterActivity` WHERE `Player` = '%s' AND `Command` = '/news' AND `ZI` = 'Saturday'", numejucator);
        mysql_tquery(handle,string, "", "");
        mysql_store_result();
        new datasambata = mysql_count_rows();
        mysql_free_result();

        format(query, sizeof(query), "SELECT * FROM `NewsReporterActivity` WHERE `Player` = '%s' AND `Command` = '/news' AND `ZI` = 'Sunday'", numejucator);
        mysql_tquery(handle,string, "", "");
        mysql_store_result();
        new dataduminica = mysql_count_rows();
        mysql_free_result();

        new total = dataluni + datamarti + datamiercuri + datajoi + datavineri + datasambata + dataduminica;

        format(str, sizeof(str), "{FFFFFF}Activitatea lui %s", numejucator);
        format(datastring,sizeof(datastring)," Luni\t\t%d puncte\n Marti\t\t%d puncte\n Miercuri\t%d puncte\n Joi\t\t%d puncte\n Vineri\t\t%d puncte\n Sambata\t%d puncte\n Duminica\t%d puncte\n\n Total\t\t%d puncte\n ",dataluni, datamarti, datamiercuri, datajoi, datavineri, datasambata, dataduminica, total);

        ShowPlayerDialog(playerid, 991, DIALOG_STYLE_MSGBOX, str, datastring,"Close","");
    }
    return 1;
}
//return /showfactionactivity
CMD:sfa(playerid, params[])
{
return cmd_showfactionactivity(playerid, params);
}
Reply
#2

Ew. There's definitely better ways to do this. Please see the GROUP BY clause. Furthermore, it is okay to use num_rows as a byproduct, but it should never be used on its own to get a count of something. This leads to additional processing overhead and much more network traffic than needed. To count something, one uses the aggregate function COUNT().

PHP код:
SELECT ZICOUNT(*) FROM NewsReporterActivity WHERE Player '%s' AND Command '/news' GROUP BY ZI 
Assuming that "ZI" (whatever that undescriptive name may represent) only contains weekday names, that should give you a result set that looks somewhat like this:

Monday7
Tuesday3
......
Sunday5
Not necessarily in that order.

Using the name as the lookup key is also really, really bad. Ideally, a player's name appears ONCE in the entire database and everything that is tied to the player must reference that table. But if I have to explain database logic to you, I'll still be busy tomorrow morning.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)