Reihe nach reihe abfragen

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
  • Hallo leute!


    Hab ne frage, wie kann ich im script alle datensätze einer mysql-tabelle nacheinander abfragen? irgendwie mit for (im script) und COUNT (bei abfrage)? Wie man mit einer select abfrage einen datensatz holt, das ist kein problem.. wisst ihr was ich meine?


    MFG selEcT

  • also ^^


    sagen wir mal, meine tabelle "fahrzeuge" hat X datensätze. Von dieser Tabelle möchte ich ALLE Datensätze auslesen (also irgendwie mit SELECT COUNT(*) FROM fahrzeuge). Danach soll eine While- oder Forschleife kommen, die die Daten eines Datensatzes einzeln ausliest und dann zum nächsten Datensatz springt, wenn der Datensatz am Ende ist.


    Verstanden? ^^


    MFG

  • aso :D einfach^^


    for(new i = 0; i < MAX_BLA; i++)
    {
    new var[200];
    new result[50];
    format(var, sizeof(var), "SELECT * FROM `Tabellenname` WHERE `Irgend eine ID die für jede zeile einzigartig is`='%d'",i);
    samp_mysql_query(var);
    samp_mysql_store_result();
    if(samp_mysql_num_rows() != 0)
    {
    samp_mysql_query(var); samp_mysql_store_result(); samp_mysql_fetch_row(var);
    samp_mysql_get_field("Feld", result); strmid(string_oda_array_oda_enum_oda_was_auch_immer, result, 0 , 50, 50);
    }
    }


    Ich hoffe du meinst es so :D


    MFG, Robdeflop®

  • ja, das hab ich mir auch schon gedacht, aber wie find ich eben dieses MAX_BLA raus? das ist eben mein problem :D Es würde gehen, wenn die anzahl immer gleich ist, dies ist allerdings eben nicht so! kann man nicht irgendwie die anzahl in eine variable schreiben? was ich machen könnte ist, ich könnte für MAX_BLA irgendwie eine Zahl (50 oder maximale anzahl slots) geben, aber das wäre mehr ressourcenlastiger und geht sicher auch anders. Gibts denn keine andere möglichkeit?

  • Hmm das weiß ich auch nicht so rech^^


    Aber was du auchnoch machen könntest. Wenn keine lücken bei den ID´s sind, also von 1 bis was weiß ich wie hoch alle zahlen follständig erhalten sind, kannst du es so machen:


    for(new i = 1; i < 9999; i++)
    {
    new var[200];
    new result[50];
    format(var, sizeof(var), "SELECT * FROM `Tabellenname` WHERE `Irgend eine ID die für jede zeile einzigartig is`='%d'",i);
    samp_mysql_query(var);
    samp_mysql_store_result();
    if(samp_mysql_num_rows() != 0)
    {
    samp_mysql_query(var); samp_mysql_store_result(); samp_mysql_fetch_row(var);
    samp_mysql_get_field("Feld", result); strmid(string_oda_array_oda_enum_oda_was_auch_immer, result, 0 , 50, 50);
    }
    else
    {
    return 1;
    }
    }


    So wird nur so hoch gezählt, wie es auch einträge gibt. Sollte also klappen ;)

  • die ids sind nicht unbedingt alle der reihe nach. Aber so könnte man es auch machen ja, aber es wäre halt irgendwie einfacher, wenn die 9999 auch echt bestimmt ist. Die ID wird eben mit der ID vom Spieler abgeglichen, das heisst der spieler mit der Tabellenid 3 hat auch das fahrzeug mit der tabellenid 3 (funktioniert auch so ;) ).


    Hab das jetzt mal so probiert, allerdings ist mir das irgendwie recht schade, das er da soviele datensätze durchgeht, die es gar nicht hat.. Wieviele Datensätze kann eine Tabelle haben? Dann kann ich die MAX_BLA durch eben diese anzahl ersetzen..