SA-MP Forums Archive
all rows - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: all rows (/showthread.php?tid=625603)



all rows - saffierr - 04.01.2017

I don't see why this isn't loading all the rows I've got in my table? everything after the 6th row isn't being loaded...

PHP Code:
forward LoadServerVehicles();
public 
LoadServerVehicles()
{
    if(
cache_get_row_count() < 1) return 1;
    new 
rows cache_get_row_count(), row 0;
    while(
row rows)
    {
        new 
vid cache_get_field_content_int(row"ID");
        
ServerVeh[vid][svModel] = cache_get_field_content_int(row"Model");
        
ServerVeh[vid][svX] = cache_get_field_content_float(row"X");
        
ServerVeh[vid][svY] = cache_get_field_content_float(row"Y");
        
ServerVeh[vid][svZ] = cache_get_field_content_float(row"Z");
        
ServerVeh[vid][svA] = cache_get_field_content_float(row"A");
        
ServerVeh[vid][svC1] = cache_get_field_content_int(row"C1");
        
ServerVeh[vid][svC2] = cache_get_field_content_int(row"C2");
        
CreateVehicle(ServerVeh[vid][svModel], ServerVeh[vid][svX], ServerVeh[vid][svY], ServerVeh[vid][svZ], ServerVeh[vid][svA], ServerVeh[vid][svC1], ServerVeh[vid][svC2], -1);
        
row++;
    }
    return 
1;




Re: all rows - BiosMarcel - 04.01.2017

Try to debug it, print the row count, look what it is and check your query.


Re: all rows - saffierr - 04.01.2017

Unfortunately print(); isn't going to work for me because I can't view samp.server because of my host.

Edit: Mysql query in OnGameModeInIt
PHP Code:
mysql_tquery(mysql"SELECT * FROM `ServerVehs`""LoadServerVehicles"); 



Re: all rows - BiosMarcel - 04.01.2017

Can't even access the logs? You could also use SendclientMessageToAll.

Also, you said everything after the 6th row isn't being loaded, how many rows are there?


Re: all rows - saffierr - 04.01.2017

Currently 19, but even if I had 7 it wouldn't load the seventh row.
SCMToall isn't sending anything either.


Re: all rows - BiosMarcel - 04.01.2017

Why is SCMToAll not working? I meant that you should just print the row count, like this(I edited the code a little, i like itbetter that way):

PHP Code:
forward LoadServerVehicles(); 
public 
LoadServerVehicles() 

    new 
rowCount cache_get_row_count();
    new 
debugMessage[20];
    
format(debugMessagesizeof(debugMessage), "Row count is: %d"rowCount);
    
SendClientMessageToAll(-1debugMessage);
    for(new 
row 0row rowCountrow++)
    { 
        new 
vid cache_get_field_content_int(row"ID"); 
        
ServerVeh[vid][svModel] = cache_get_field_content_int(row"Model"); 
        
ServerVeh[vid][svX] = cache_get_field_content_float(row"X"); 
        
ServerVeh[vid][svY] = cache_get_field_content_float(row"Y"); 
        
ServerVeh[vid][svZ] = cache_get_field_content_float(row"Z"); 
        
ServerVeh[vid][svA] = cache_get_field_content_float(row"A"); 
        
ServerVeh[vid][svC1] = cache_get_field_content_int(row"C1"); 
        
ServerVeh[vid][svC2] = cache_get_field_content_int(row"C2"); 
        
CreateVehicle(ServerVeh[vid][svModel], ServerVeh[vid][svX], ServerVeh[vid][svY], ServerVeh[vid][svZ], ServerVeh[vid][svA], ServerVeh[vid][svC1], ServerVeh[vid][svC2], -1); 
    } 
    return 
1

have u considered updating your MySQL, seems like you are using an older version. You'd have to rework a lot tho(Depending on how much old MySQL code u got).


Re: all rows - Lordzy - 04.01.2017

You're retrieving ID from your tables and using it as an index of your array. If the retrieved ID is not within the array bounds, it could be why your operation breaks there. Use this code and debug to confirm:
pawn Code:
//Make sure you're connecting while this runs.
forward LoadServerVehicles();
public LoadServerVehicles()
{
    //if(cache_get_row_count() < 1) return 1;
    //new rows = cache_get_row_count(), row = 0; //Why use the function twice?
    new
        rows = cache_get_row_count(),
        row = 0,
        debug_String[64]
    ;
    if(rows < 1)
        return 1;

    while(row < rows)
    {
        new vid = cache_get_field_content_int(row, "ID");
        format(debug_String, sizeof(debug_String), "row : %d | vid : %d | rows : %d", row, vid, rows);
        SendClientMessageToAll(-1, debug_String);
        print(debug_String); //You can get it from server_log.txt if you're not connected.
        ServerVeh[vid][svModel] = cache_get_field_content_int(row, "Model");
        ServerVeh[vid][svX] = cache_get_field_content_float(row, "X");
        ServerVeh[vid][svY] = cache_get_field_content_float(row, "Y");
        ServerVeh[vid][svZ] = cache_get_field_content_float(row, "Z");
        ServerVeh[vid][svA] = cache_get_field_content_float(row, "A");
        ServerVeh[vid][svC1] = cache_get_field_content_int(row, "C1");
        ServerVeh[vid][svC2] = cache_get_field_content_int(row, "C2");
        CreateVehicle(ServerVeh[vid][svModel], ServerVeh[vid][svX], ServerVeh[vid][svY], ServerVeh[vid][svZ], ServerVeh[vid][svA], ServerVeh[vid][svC1], ServerVeh[vid][svC2], -1);
        row++;
    }
    return 1;
}
If possible, show us your table structure and data.


Re: all rows - BiosMarcel - 04.01.2017

Quote:
Originally Posted by Lordzy
View Post
You're retrieving ID from your tables and using it as an index of your array. If the retrieved ID is not within the array bounds, it could be why your operation breaks there. Use this code and debug to confirm:
pawn Code:
//Make sure you're connecting while this runs.
forward LoadServerVehicles();
public LoadServerVehicles()
{
    //if(cache_get_row_count() < 1) return 1;
    //new rows = cache_get_row_count(), row = 0; //Why use the function twice?
    new
        rows = cache_get_row_count(),
        row = 0,
        debug_String[64]
    ;
    if(rows < 1)
        return 1;

    while(row < rows)
    {
        new vid = cache_get_field_content_int(row, "ID");
        format(debug_String, sizeof(debug_String), "row : %d | vid : %d | rows : %d", row, vid, rows);
        SendClientMessageToAll(-1, debug_String);
        print(debug_String); //You can get it from server_log.txt if you're not connected.
        ServerVeh[vid][svModel] = cache_get_field_content_int(row, "Model");
        ServerVeh[vid][svX] = cache_get_field_content_float(row, "X");
        ServerVeh[vid][svY] = cache_get_field_content_float(row, "Y");
        ServerVeh[vid][svZ] = cache_get_field_content_float(row, "Z");
        ServerVeh[vid][svA] = cache_get_field_content_float(row, "A");
        ServerVeh[vid][svC1] = cache_get_field_content_int(row, "C1");
        ServerVeh[vid][svC2] = cache_get_field_content_int(row, "C2");
        CreateVehicle(ServerVeh[vid][svModel], ServerVeh[vid][svX], ServerVeh[vid][svY], ServerVeh[vid][svZ], ServerVeh[vid][svA], ServerVeh[vid][svC1], ServerVeh[vid][svC2], -1);
        row++;
    }
    return 1;
}
If possible, show us your table structure and data.
He is using the cache index and not the actual database row, which is totally fine. Correct me if i am wrong, but explain please


Re: all rows - saffierr - 04.01.2017

Debug, it stops at the 6th row, with your code, Lordzy.



Re: all rows - Jefff - 04.01.2017

Show array ServerVeh