Ließ dir lieber noch mal die Benutzung von mysql_fetch_row_format an.
Die relevanten Daten stehen in der Variable str ( bei deinem Beispiel ). Sonst könntest du auch gleich mysql_retrieve_row nutzen.
Das Problem ist recht simpel bzw nicht ganz so leicht zu finden.
Du benutzt in der while-Schleife mysql_Get*,dort liegt auch das Problem . Diese Funktionen nutzen auch mysql_store_result und überschreiben quasi dein Query,welches die Schleife einleitet ( SELECT `EnterX`,`EnterY`,`EnterZ`,`ID`,`SpielerID` FROM `haus` ) . Denn es gibt immer nur 1 result,dass aktuell im Speicher liegt und verarbeitet wird. Da du aber innerhalb der Schleife immer neu aus der Datenbank ausließt,gehen die Daten verloren und nach dem ersten Schleifendurchgang ist Schluss.
Warum immer nach einem ? Nun ja,du ließt ja auch immer genau einen konkreten Datensatz aus der Datenbank mit mysql_Get* und löschst diesen danach auch wieder intern durch mysql_Get* , weshalb mysql_fetch_row_format/) an einem leeren "result" durchgeführt wird und korrekterweise auch 0 zurück gibt. Denn es gibt ja keine weiteren Zeilen.
new str[512],dest[5][64],query[128];
format(query,128,"SELECT `EnterX`,`EnterY`,`EnterZ`,`ID`,`SpielerID` FROM `haus`");
mysql_query(query);
mysql_store_result(); // Dein Start-Query
while(mysql_fetch_row_format(str))
{
if(strval(dest[4]) == 0)
{
format(string,256,"HausID: %s\nDieses Haus ist zu verkaufen!\nPreis: %d\n/enter um es zu besichtigen!\n/hauskaufen um das Haus zu kaufen\n/mieten zum einmieten\nMietpreis/PayDay: %d",dest[3],mysql_GetInt("haus","Preis","ID",dest[3]),mysql_GetInt("haus","Mietpreis","ID",dest[3])); // <------------- HIER WIRD DEIN START-QUERY ÜBERSCHRIEBEN
}
else
{
format(string,256,"HausID: %s\nDieses Haus gehört: %s\n/mieten um dort zu wohnen!\nMietpreis/PayDay: %d",dest[3],GetPlayerMySQLName(strval(dest[4])),mysql_GetInt("haus","Mietpreis","ID",dest[3])); // <------------- HIER WIRD DEIN START-QUERY ÜBERSCHRIEBEN
}
}
Ich habe dir mal etwas markiert. Du musst dir da etwas Anderes überlegen.