Mach ne Conter Funktion, die sobald einer von den beiden 1 returned, somit umgehst du auch spam ![]()
mfg
Mach ne Conter Funktion, die sobald einer von den beiden 1 returned, somit umgehst du auch spam ![]()
mfg
Guten,
steht oben ![]()
Also ich will irgendeinen eintrag aus einer tabelle lesen
mfg
Der sinn dahinter ist schwachsinn, da du den string nochmal in nen string formatierst und dann nochmal in nen string.....
Nur erließt erst garnichts aus der Datenbank.
//edit Fehler gefunden!!
//closed
Nein, ich gebe den String direkt aus ![]()
Was RedJoker schreibt ist ja auch totaler Blödsinn. Dein Query ist schon richtig so.
SQLSELECT haus.EnterX,haus.EnterY,haus.EnterZ,haus.ID,haus.SpielerID,haus.Preis,haus.Mietpreis,accounts.Name FROM haus, accounts WHERE accounts.ID = haus.ID
Dir werden jetzt auch nur Ergebnisse angezeigt,wo die haus.ID mit der accounts.ID in Beziehung gesetzt werden kann. Ob das bei allen Einträgen der Fall ist,weiss ich nicht.
Muss ich selber zugeben,hab ich erst auch nicht beachtet.
Du könntest entweder eine Dummy-ID bzw User anlegen,die bedeutet,dass das Haus keinen Besitzer hat ( dann kann man es weiterhin mit nur 1 Query lösen ) oder du splittest das Erstellen der Häuser. Im ersten Fall werden die Häuser erstellt die einen Besitzer haben .Im zweiten Fall die Häuser die noch keinen Besitzer haben.
kann ich nicht iwie noch eine Where Bedingung einbringen, die nur für die tabelle haus gilt und dort haus.ID = * gilt ( funktioniert grade geteset :D)
//edit
Ich habs jetzt getrennt, jedoch werden die häuser mit Besitzern nicht angezeigt ![]()
format(query,256,"SELECT haus.EnterX,haus.EnterY,haus.EnterZ,haus.ID,haus.SpielerID,haus.Preis,haus.Mietpreis,accounts.Name FROM haus, accounts WHERE accounts.ID = haus.SpielerID");
mysql_store_result();
mysql_store_result();
while(mysql_fetch_row_format(str))
{
mysql_fetch_field_row(dest[0],"haus.EnterX");//16
mysql_fetch_field_row(dest[1],"haus.EnterY");
mysql_fetch_field_row(dest[2],"haus.EnterZ");
mysql_fetch_field_row(dest[3],"haus.ID");
mysql_fetch_field_row(dest[4],"haus.SpielerID");
mysql_fetch_field_row(dest[5],"haus.Preis");
mysql_fetch_field_row(dest[6],"haus.Mietpreis");
mysql_fetch_field_row(dest[7],"accounts.Name");
new string[256];
format(string,256,"HausID: %s\nDieses Haus gehört: %s\n/mieten um dort zu wohnen!\nMietpreis/PayDay: %s",dest[3],dest[7],dest[6]);
new Text3D:labelid = CreateDynamic3DTextLabel(string, COLOR_RED, floatstr(dest[0]),floatstr(dest[1]), floatstr(dest[2])+0.35, 5.0);
new pickid = CreateDynamicPickup(1273, 1,floatstr(dest[0]),floatstr(dest[1]), floatstr(dest[2]));
mysql_SetInt("haus", "PickupID", pickid, "ID", dest[3]);
mysql_SetInt("haus", "LabelID", _:labelid, "ID", dest[3]);
}
Wie kann mit einem Query Mehrere Colums aus 2 Tabellen auslesen, aber aus der einen Tabelle soll es ein Colum sein, der durch eine Bedinung die mit aus einem Colum der anderen Tabelle besteht?
es würde aber dein Problem lösen und ist in den fall besser als das nach maddins tutorial art
Ich versuch dir hier nur zu helfen
Dass würde nicht mein Problem lösen, da der query immernoch überschrieben werden würde
Alles anzeigendu kannst in den fall auch sscanf nehmen mal nen Muster:
new Data[512];
mysql_query("SELECT * FROM `Haus`");
mysql_store_result();
while(mysql_fetch_row(Data))
{
sscanf(Data, "p<|>s[128]df",enum halt);//s = String, d = Intger, f Float
}
Das tut hier aber grad nichts zur sache
Wieso, wenn mysql, den Query, wie im SQL Wiki verarbeitet, dann klappt das wie oben.
mal ne frage woher soll der string wissen was haus.id ist?
das musst du da auch geschickter machen
Ich hab das wie im SQL Wiki gemacht, die Stelle die Goldkiller vorhin gepostet hat.
dann poste den debug
[22:51:27] ---------------------------
[22:51:27] MySQL Debugging activated (08/16/12)
[22:51:27] ---------------------------
[22:51:27]
[22:51:27] >> mysql_query( Connection handle: 1 )
[22:51:27] CMySQLHandler::Query(SELECT haus.EnterX,haus.EnterY,haus.EnterZ,haus.ID,haus.SpielerID,haus.Preis,haus.Mietpreis,accounts.Name FROM haus, accounts WHERE accounts.ID = haus.ID) - Successfully executed.
[22:51:27] >> mysql_store_result( Connection handle: 1 )
[22:51:27] CMySQLHandler::StoreResult() - Result was stored.
[22:51:27] >> mysql_num_rows( Connection handle: 1 )
[22:51:27] CMySQLHandler::NumRows() - Returned 0 row(s)
[22:51:27] >> mysql_fetch_row_format( Connection handle: 1 )
[22:51:27] >> mysql_query( Connection handle: 1 )
Alles anzeigen
//Edit Verwendung aus dem SQL Wiki verwendet:
Die Nutzung der Funktionen, die das MySQL Plugin bietet fällt unter die Kategorie wie die Nutzung von DINI usw.
Die Erstellung des Querys ( SQL Kommando ) ,welches an der MySQL Datenbank ausgeführt wird, ist etwas Anderes.SQLSELECT `EnterX`,`EnterY`,`EnterZ`,`ID`,`SpielerID` FROM `haus` SELECT `Name` FROM `accounts` WHERE `ID` = '%d'
Diese Beiden SQL Kommandos zu kombinieren hat nichts mit PAWN / SA:MP zu tun,auch wenn du es hier nutzen kannst. Denn SQL ist eine eigenen Sprache.
Ein einfaches Beispiel wäre hier zu finden.
Mit einem WHERE ist es ein leichstes die Beiden zu verknüpfen.
Also ich hab das so verstanden
format(query,256,"SELECT haus.EnterX,haus.EnterY,haus.EnterZ,haus.ID,haus.SpielerID,haus.Preis,haus.Mietpreis,accounts.Name FROM haus, accounts WHERE accounts.ID = haus.ID");
mysql_query(query);
Er ließt es auch aus( richtiger Syntax), aber 0 rows.
//edit Zitat hinzugefügt, Aber in der mysql_debug log wird halt alles richtig angezeigt nur das 0 einträge angeblich in der tabelle wären obwohl 6 drin sind.
Was sagt dir das?
[23:37:14] [Fehler...] Konnte keine Verbindung zur Datenbank herstellen
Mit einem besser gewähltem SQL Kommando.
Da du in jedem ( Ausnahme wahrscheinlich GetPlayerMySQLName ) Befehl aus der Tabelle "haus" ließt,kannst du einfach einen Query nutzen und dort alle Daten auslesen.
Da wir aber a) kein SQL - Hilfeforum sind und b) ich dir nicht die Lösung vorschreibe, überleg mal ein wenig selber ;).
Was auch immer GetPlayerMySQLName, dass kann man sicherlich auch direkt mit dem Query verknüpfen über WHERE.
Kannst ja einfach mal die Funktion GetPlayerMySQLName posten, Tatbestand b bleibt aber erhalten.
Also Punkt a kann ich nicht verstehen, da MySQL eine Speicherart ist, die man mit Pawn nutzen kann. So müßte man hier auch Dini,SII und sonstiges verbieten....
Ich habe grad mal gegoogelt, man kann es mit dem Syntax Join machen nur diesen verstehe ich nicht ![]()
stock GetPlayerMySQLName(id)
{
new query[130], Get[130];
format(query,sizeof(query), "SELECT `Name` FROM `accounts` WHERE `ID` = '%d'", id);
mysql_query(query);
mysql_store_result();
mysql_fetch_row(Get);
mysql_free_result();
return Get;
}