Per MySQL ganze Tabelle auslesen..

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Guten Morgen Brotfischer!


    Ich hätte da mal ne Frage..
    Ich benutze das MySQL Plugin 2.0 von StrickenKid. Darin gibt es befehle wie diesen:
    mysql_fetch_row (dest[], const splitter[], MySQL:handle);
    nun ist meine frage, wie cih die ganze tabelle auslese. bsp.:

    SQL
    SELECT carid, coordx, coordy, coordz, color1, color2 FROM cars


    und dann bekomme ich koordinaten aus der tabelle, mit denen ich für jede Row ein
    Auto Spawnen kann... Aber wie lese ich denn die ganze Zeile aus? (ich weis nur das man
    das in PHP mit einer While-Schleife macht.. Danke für jede antwort, SkEiTa!

  • Ja is klar, aber wie kann ich das ganze dann zerteilen, sodass ich für jedes auto einen CreateVehicle() ausführen kann :D
    //edit Wollt ihr mir erzählen, ihr wisst das nicht?

    Einmal editiert, zuletzt von SkEiTa ()

  • stock LoadHouses()
    {
    print("======== [ Loading Houses from MySQL.... ] ========");
    mysql_query("SELECT * FROM `houses`");
    mysql_store_result();
    hCount = 1;
    new t[128];
    if(mysql_num_rows() > 0)
    {
    while( mysql_fetch_row_data() )
    {
    mysql_fetch_field( "id", field);
    hInfo[ hCount ][ sID ] = strval(field);
    mysql_fetch_field("intid",field);
    hInfo[ hCount ][ hInt ] = strval(field);
    mysql_fetch_field("intids",field);
    hInfo[ hCount ][ hIntS ] = strval(field);
    mysql_fetch_field("vw",field);
    hInfo[ hCount ][ hVW ] = strval(field);
    mysql_fetch_field("owner", hInfo[ hCount ][hOwner]);
    mysql_fetch_field("preis",field);
    hInfo[ hCount ][hPreis] = strval(field);
    mysql_fetch_field("hx",field);
    hInfo[ hCount ][hPos][0] = floatstr(field);
    mysql_fetch_field("hy",field);
    hInfo[ hCount ][hPos][1] = floatstr(field);
    mysql_fetch_field("hz",field);
    hInfo[ hCount ][hPos][2] = floatstr(field);
    mysql_fetch_field("ha",field);
    hInfo[ hCount ][hPos][3] = floatstr(field);
    mysql_fetch_field("htyp",field);
    hInfo[ hCount ][hTyp] = strval(field);
    mysql_fetch_field("typid",field);
    hInfo[ hCount ][hTypID] = strval(field);
    mysql_fetch_field("kaufbar",field);
    hInfo[ hCount ][Kaufbar] = strval(field);
    mysql_fetch_field("reward",field);
    hInfo[ hCount ][hReward] = strval(field);

    hInfo[ hCount ][hActive] = 1;

    hCount++;
    }
    }
    printf("=======[ %d Houses loaded! ] =========",hCount -1);
    return 1;
    }


    Das sollte dir helfen ^^

  • hmm mein problem liegt nun darin:

    Code
    mysql.pwn(546) : warning 213: tag mismatch
    mysql.pwn(548) : warning 213: tag mismatch
    mysql.pwn(550) : warning 213: tag mismatch
    mysql.pwn(552) : warning 213: tag mismatch
    Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase
    
    
    
    
    4 Warnings.


    Die Zeilen:
    while( mysql_fetch_row_data() )
    {
    mysql_fetch_field("carid",field);
    CarInfo[carid] = strval(field);
    mysql_fetch_field("posx",field);
    CarInfo[posx] = floatstr(field);// 546
    mysql_fetch_field("posy",field);
    CarInfo[posy] = floatstr(field);// 548
    mysql_fetch_field("posz",field);
    CarInfo[posz] = floatstr(field);// 550
    mysql_fetch_field("posr",field);
    CarInfo[posr] = floatstr(field);// 552
    mysql_fetch_field("colors1",field);
    CarInfo[colors1] = strval(field);
    mysql_fetch_field("colors2",field);
    CarInfo[colors2] = strval(field);
    CreateVehicle(CarInfo[carid], CarInfo[posx], CarInfo[posy], CarInfo[posz], CarInfo[posr], CarInfo[colors1], CarInfo[colors2], 0);


    hCount++;
    }
    Ich finde den Fehler einfach nicht -.-

  • CarInfo[carid]
    CarInfo[posx]
    Ich kenn dein Autosystem nicht, aber das sieht für mich verkehrt aus. Zeig am B :love: esten wie du den Array "CarInfo" erstellt hast. Ich schätze es müsste so heissen ungefähr:
    CarInfo[carid][var]
    also entsprechend
    CarInfo[carid][posx]
    Und natürlich müssten deine "posx" usw. auch als "Float" erstellt sein.

  • darum geht es ja garnichtmal unbedingt, abgesehen hab cih das schon gefixt :D


    public carsload()
    {
    print("======== [ Loading Cars from MySQL.... ] ========");
    mysql_query("SELECT * FROM cars");
    print("======== [ Loading Cars from MySQL.... ] ========");
    mysql_store_result();
    new field[255];
    new hCount = 1;
    if(mysql_num_rows() > 0)
    {
    while( mysql_fetch_row_data() )
    {
    mysql_fetch_field( "id", field);
    print(field);
    hCount++;
    }
    }
    printf("=======[ %d Cars loaded! ] =========",hCount -1);
    return 1;
    }
    Und es wird nur ein Print(); angezeigt. Also muss der Fehler im mysql_query liegen.



    hmm..

  • hier nim meinen

    stock Loadvehicles()
    {
    new strFromDb[256];


    new modelid;
    new Float:pos_x, Float:pos_y, Float:pos_z, pos_r;
    new z[128];
    new color1,color2;
    format(z,sizeof(z),"SELECT COUNT(*) FROM vehicles");
    mysql_query(z);
    mysql_store_result();
    mysql_fetch_row(strFromDb);
    new SizeOfVeh = strval(strFromDb);
    for(new i = 0; i < SizeOfVeh; i++)
    {
    new obsql[128],resultline[64];
    format(obsql,sizeof(obsql),"SELECT * FROM vehicles LIMIT %d, 1", i);
    mysql_query(obsql); mysql_store_result();
    if(mysql_fetch_row(resultline))
    {
    mysql_fetch_field("modelid",obsql); modelid = strval(obsql);
    mysql_fetch_field("pos_x",obsql); pos_x = floatstr(obsql);
    mysql_fetch_field("pos_y",obsql); pos_y = floatstr(obsql);
    mysql_fetch_field("pos_z",obsql); pos_z = floatstr(obsql);
    mysql_fetch_field("color1",obsql); color1 = strval(obsql);
    mysql_fetch_field("color2",obsql); color2 = strval(obsql);

    }
    if (mysql_num_rows() > 0)
    {
    CreateVehicle(modelid,pos_x,pos_y,pos_z,pos_r,color1,color2, -1);
    printf("creating vehicles %d %f %f %f %f %d %d ",modelid,pos_x,pos_y,pos_z,pos_r,color1,color2);
    }
    }
    }
    [
    müste dir halt noch anpassen aber sonst ist er soweit ok und bei mir komen auch keine erors

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen