Hey hab schon oft probiert Information aus einer MySQL Datenbank in einen Dialog zu bringen. Hab es nie hinbekommen. Ich hab es mir irgendwie so vorgestellt:
new string[256];
format(string,sizeof(string),"SELECT `aname` FROM `airlines` ");
mysql_query(string);
//und hier halt noch ShowPlayerDialog aber das kann saich jeder ja denken.
Es soll halt so aussehen: Ich habe eine Datenbank und dort eine Tabelle namens Airlines, von dort soll er sich aus jeder Zeile den Airlinenamen herausnehmen und ihn in einen Dialog einfügen. 1 Zeile = 1 Airlinename.
MySQL Dialog
- Oskaar1994
- Geschlossen
- Erledigt
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
-
-
Namen auslesen, mit format formatieren und ausgeben.
-
füg mal des ein sollte funktionieren
new string[256],rows,dialog[512],name[52];
format(string,sizeof(string),"SELECT * FROM `airlines` ");
mysql_query(string);
mysql_store_result();
rows = mysql_num_rows();
if(rows)
{
for(new x=0;x<rows,x++)
{
mysql_retrieve_row();
mysql_fetch_field_row(name,"aName");
strcat(dialog,%s\n,name);
}
return ShowPlayerDialog(playerid,DIALOG_NAME,DIALOG_STYLE_LIST,"Überschrift",dialog,"Button1","Button2");
}
return SendClientMessage(playerid,Grau,"Es gibt keine Airlines"); -
füg mal des ein sollte funktionieren
new string[256],rows,dialog[512],name[52];
format(string,sizeof(string),"SELECT * FROM `airlines` ");
mysql_query(string);
mysql_store_result();
rows = mysql_num_rows();
if(rows)
{
for(new x=0;x<rows,x++)
{
mysql_retrieve_row();
mysql_fetch_field_row(name,"aName");
strcat(dialog,%s\n,name);
}
return ShowPlayerDialog(playerid,DIALOG_NAME,DIALOG_STYLE_LIST,"Überschrift",dialog,"Button1","Button2");
}
return SendClientMessage(playerid,Grau,"Es gibt keine Airlines");
Gibt leider relativ viele Errors aus:
CMD:airlines(playerid, params[])
{
new string[256],rows,dialog[512],name[52];
format(string,sizeof(string),"SELECT * FROM `airlines` ");
mysql_query(string);//1470
mysql_store_result();
rows = mysql_num_rows();
if(rows)
{
for(new x=0;x<rows,x++)//1475
{
mysql_retrieve_row();
mysql_fetch_field_row(name,"aName");
strcat(dialog,%s\n,name);//1479
}
return ShowPlayerDialog(playerid,50,DIALOG_STYLE_LIST,"Überschrift",dialog,"Button1","Button2");
}
return SendClientMessage(playerid,Grau,"Es gibt keine Airlines");
}BeThePilot.pwn(1470) : error 035: argument type mismatch (argument 1)
BeThePilot.pwn(1475) : error 001: expected token: ";", but found ")"
BeThePilot.pwn(1479) : error 029: invalid expression, assumed zero
BeThePilot.pwn(1479) : error 017: undefined symbol "s"
BeThePilot.pwn(1479) : error 029: invalid expression, assumed zero
BeThePilot.pwn(1479) : fatal error 107: too many error messages on one line -
CMD:airlines(playerid, params[])
{
new string[256],rows,dialog[512],name[52];
format(string,sizeof(string),"SELECT * FROM `airlines` ");
mysql_query(string);//1470
mysql_store_result();
rows = mysql_num_rows();
if(rows)
{
for(new x=0;x<rows;x++)//1475 , -> ;
{
mysql_retrieve_row();
mysql_fetch_field_row(name,"aName");
strcat(dialog,"%s\n",name);//1479 %s\n -> "%s\n"
}
return ShowPlayerDialog(playerid,50,DIALOG_STYLE_LIST,"Überschrift",dialog,"Button1","Button2");
}
return SendClientMessage(playerid,Grau,"Es gibt keine Airlines");
}Probier es mal so, welches mysql Plugin verwendest du ?
-
Danke huGGy hab es die Kleinigkeiten in der Eile übersehen
-
CMD:airlines(playerid, params[])
{
new string[256],rows,dialog[512],name[52];
format(string,sizeof(string),"SELECT * FROM `airlines` ");
mysql_query(string);//1470
mysql_store_result();
rows = mysql_num_rows();
if(rows)
{
for(new x=0;x ;
{
mysql_retrieve_row();
mysql_fetch_field_row(name,"aName");
strcat(dialog,"%s\n",name);//1479 %s\n -> "%s\n"
}
return ShowPlayerDialog(playerid,50,DIALOG_STYLE_LIST,"Überschrift",dialog,"Button1","Button2");
}
return SendClientMessage(playerid,Grau,"Es gibt keine Airlines");
}Probier es mal so, welches mysql Plugin verwendest du ?
CMD:airlines(playerid, params[])
{
new string[256],rows,dialog[512],name[52];
format(string,sizeof(string),"SELECT * FROM `airlines` ");
mysql_query(string);//1470
mysql_store_result();
rows = mysql_num_rows();
if(rows)
{
for(new x=0;x<rows;x++);
{
mysql_retrieve_row();
mysql_fetch_field_row(name,"aName");
strcat(dialog,"%s\n",name);//1479 %s\n -> "%s\n"
}
return ShowPlayerDialog(playerid,50,DIALOG_STYLE_LIST,"Überschrift",dialog,"Button1","Button2");
}
return SendClientMessage(playerid,0xFFFFFFFF,"Es gibt keine Airlines");
}Gibt immernoch Errors aus :
BeThePilot.pwn(1470) : error 035: argument type mismatch (argument 1)
BeThePilot.pwn(1475) : error 036: empty statement
BeThePilot.pwn(1479) : error 035: argument type mismatch (argument 3)
Benutze das Plugin : https://code.google.com/p/sa-mp-mysql-plugin/ -
du musst hinter der for-Schleife das Semikolon(;) wegmachen
-
du musst hinter der for-Schleife das Semikolon(;) wegmachen
2 Erros verbleibend
(1470) : error 035: argument type mismatch (argument 1)
(1479) : error 035: argument type mismatch (argument 3) -
Hinter eine schleife gehört kein ;
-
Mal als Info strcat nutzt nix da format benötigt wird
Strcat hat KEINE parameter um ein %s zu setzen... -
mysql_retrieve_row();
mysql_fetch_field_row(name,"aName");
format(dialog,sizeof(dialog),"%s\n%s",dialog,name);So dürfte das einwenig einfacher als mit strcat gehen.
Da ganze einfach in die for-schleife einsetzen.Edit:
Da du die r34 benutz musst du aus mysql_query ein mysql_tquery machen wie es in der Include steht.
mit freundlichem Gruß
Timo Schneider -
mysql_retrieve_row();
mysql_fetch_field_row(name,"aName");
format(dialog,sizeof(dialog),"%s\n%s",dialog,name);So dürfte das einwenig einfacher als mit strcat gehen.
Da ganze einfach in die for-schleife einsetzen.Edit:
Da du die r34 benutz musst du aus mysql_query ein mysql_tquery machen wie es in der Include steht.
mit freundlichem Gruß
Timo SchneiderErstmal danke nur habe ich leider mysql_tquery trotzdem noch den Fehler den ich schon seit Tagen bei anderen Systemen habe.
error 035: argument type mismatch (argument 1) -
2 Zeilen über und unter dem Fehler wären sehr nett, damit wir auch helfen können.
mit freundlichem Gruß
Timo Schneider -
2 Zeilen über und unter dem Fehler wären sehr nett, damit wir auch helfen können.
mit freundlichem Gruß
Timo Schneider
new string[256],rows,dialog[512],name[52];
format(string,sizeof(string),"SELECT * FROM `airlines` "); -
2 Zeilen über und unter dem Fehler bitte und diesen BITTE AUCH MARKIEREN.
Sonst können wir die Zeilen eraten,mit freundlichem Gruß
Timo Schneider -
2 Zeilen über und uneter dem Fehler bitte und diesen BITTE AUCH MARKIEREN.
Sonst können wir die Zeilen eraten,mit freundlichem Gruß
Timo Schneider
Zwei Zeilen darüber :
new string[256],rows,dialog[512],name[52];
format(string,sizeof(string),"SELECT * FROM `airlines` ");
Zwei Zeilen darunter:
mysql_store_result();
rows = mysql_num_rows(); -
Und welche Zeile ist die Fehlerzeile ?
-
Und welche Zeile ist die Fehlerzeile ?
mysql_tquery(string);//1470 -
new handle = mysql_connect(const host[], const user[], const database[], const password[], port = 3306, bool:autoreconnect = true);mysql_format(handle, query, sizeof(query), "SELECT * FROM `airlines`");
mysql_tquery(handle, query, "Public", "i", playerid);In der r34 sollte das ganze in etwa so aufgebaut sein.
mit freundlichem Gruß
Timo Schneider -