Hat das Feld ID einen Primary Key und Auto Increment?
Wenn ich das richtig sehe, dann meckert er, dass ein Primary Key dubliziert (kopiert) wird.
Also das 2x 0 eingetragen wird.
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
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
-
-
Hat das Feld ID einen Primary Key und Auto Increment?
Wenn ich das richtig sehe, dann meckert er, dass ein Primary Key dubliziert (kopiert) wird.
Also das 2x 0 eingetragen wird.Kann eigentlich nicht sein.
strcat(AddDatabase,"CREATE TABLE IF NOT EXISTS `Accounts` (`ID` int(30) NOT NULL,`Name` varchar(24) NOT NULL,`Passwort` varchar(34) NOT NULL, `Online` int(1) NOT NULL, `Admin` int(2) NOT NULL DEFAULT '0',`Warns` int(2) NOT NULL DEFAULT '0',`Leader` int(2) NOT NULL,`Fraktion` int(2) NOT NULL,`Rang` int(2) NOT NULL,"); strcat(AddDatabase,"`Job` int(3) NOT NULL,"); strcat(AddDatabase,"`Geschlecht` int(1) NOT NULL,`Level` int(4) NOT NULL,`Geld` int(10) NOT NULL, `Bankkonto` int(15) NOT NULL,"); strcat(AddDatabase,"`Wantedlevel` int(3) NOT NULL,`Skin` int(3) NOT NULL,"); strcat(AddDatabase,"`Fightstyle` int(2) NOT NULL,`Handy` int(2) NOT NULL, `Nummer` int(8) NOT NULL DEFAULT '12345',"); strcat(AddDatabase,"`Biz` int(3) NOT NULL DEFAULT '-1',`Haus` int(3) NOT NULL DEFAULT '-1', `Jailtime` int(10) NOT NULL,"); strcat(AddDatabase,"`Living` int(1) NOT NULL,`Kills` int(5) NOT NULL,`Deaths` int(5) NOT NULL, `Partner` varchar(24) NOT NULL, `Notiz` varchar(24) NOT NULL, `Register` varchar(24) NOT NULL, PRIMARY KEY (`ID`))"); mysql_query(AddDatabase); -
Aber wie sieht der String dann aus der Formatiert wird
Das ist das was ich nicht weiß.
%s\n%s%s%s oder wie?- Tom
SynonymousZ hat da was schönes gebastelt.
Sollte das sein was du suchst.Ich verwende es, funktioniert gut.
mfg -
plantGSLabel[9]=Create3DTextLabel(dini_Get(Fraktion,"Fraktion"),COLOR_PINK,x,y,z,10,0,0);
Error: warning 213: tag mismatch
-
format(str, sizeof(str), "SELECT * FROM `Troll` WHERE `Name` = '%s'", DB_Escape(name));
Wie kann ich hier jetzt das was in der Tabelle steht in einem Dialog anzeigen lassen?
bzw. den str?
denke mal mit str als text Angabe im Dialog wohl eher nicht?
-
eine for schleife machen (num_rows dazu nutzen)
Dann je nach plugin fetch_field nutzen und dann die einzelnen Spalten nehmen
Hier mal ein Muster
new blabla[128],load[50];
mysql_query("SELECT * FROM `Baum`;", (-1), (0), SQL);
mysql_store_result(SQL);
new Rows = mysql_num_rows(SQL);
for(new i = 0; i < Rows; i ++)
{
mysql_fetch_row_data(SQL);
mysql_fetch_field("Name",load,SQL);
format(blabla,sizeof(blabla),"%s\n%s",blabla,load);
}
mysql_free_result(SQL);
ShowPlayerDialog(playerid,555,DIALOG_STYLE_MSGBOX,"Hannes",blabla,"Ok",""); -
eine for schleife machen (num_rows dazu nutzen)
Dann je nach plugin fetch_field nutzen und dann die einzelnen Spalten nehmen
Hier mal ein Muster
new blabla[128],load[50];
mysql_query("SELECT * FROM `Baum`;", (-1), (0), SQL);
mysql_store_result(SQL);
new Rows = mysql_num_rows(SQL);
for(new i = 0; i < Rows; i ++)
{
mysql_fetch_row_data(SQL);
mysql_fetch_field("Name",load,SQL);
format(blabla,sizeof(blabla),"%s\n%s",blabla,load);
}
mysql_free_result(SQL);
ShowPlayerDialog(playerid,555,DIALOG_STYLE_MSGBOX,"Hannes",blabla,"Ok","");Okay, danke werds gleich mal versuchen.
Lassen sich damit z.b. auch 10 Texteinträge hinter einnander aus der DB laden d.h.
%s, %s, %s, %s .. .und so weiter? Also würd die 10 gerne untereinnander anzeigen lassen.
-
ja das kommt aber auf die größe des Strings an wie viel der inhalt sein darf
aber wenn du nur 10 einträge auslesen willst, dann nutz die LIMIT funktion
bsp:
mysql_query("SELECT * FROM `Baum` LIMIT 10;", (-1), (0), SQL);
damit werden maximal 10 einträge geladen -
Okay, was ich vergessen haben zu erwähne, dass ich das nicht auf MySQL schreibe, sondern SQLite.
Wie gehts da? kleines bsp evtl?
Oder einfach mysql_ weg lassen?
-
So sollte es Funktionieren
new DBResult:query,Data[30];
query = db_query(...,"SELECT * FROM `Baum` LIMIT 10;");//das ... auf die Connection unbenennen!
new Rows = db_num_rows(query);
new Inhalt[50*Rows];
for(new i = 0; i < Rows; i++)
{
db_get_field_assoc(query,"Name",Data,sizeof(Data));
format(Inhalt,sizeof(Inhalt),"%s\n%s",Inhalt,Data);
db_next_row(query);
}
db_free_result(query);
ShowPlayerDialog(playerid,555,DIALOG_STYLE_MSGBOX,"Hannes",Inhalt,"Ok",""); -
So sollte es Funktionieren
new DBResult:query,Data[30];
query = db_query(...,"SELECT * FROM `Baum` LIMIT 10;");//das ... auf die Connection unbenennen!
new Rows = db_num_rows(query);
new Inhalt[50*Rows];
for(new i = 0; i < Rows; i++)
{
db_get_field_assoc(query,"Name",Data,sizeof(Data));
format(Inhalt,sizeof(Inhalt),"%s\n%s",Inhalt,Data);
db_next_row(query);
}
db_free_result(query);
ShowPlayerDialog(playerid,555,DIALOG_STYLE_MSGBOX,"Hannes",Inhalt,"Ok","");So, erst mal danke.
Funktioniert auch soweit, bloß das Zeile 160, im dem Falle:
new Inhalt[50*Rows];
4 Error Nachrichten ausgibt:error 008: must be a constant expression; assumed zero
error 009: invalid array size (negative, zero or out of bounds)
error 036: empty statement
fatal error 107: too many error messages on one line//E: Ja, habe alles an mein Script angepasst.
-
Ok dann geht das so nicht
Da ich Limit 10 habe, schreib da einfach 500 rein -
Ok dann geht das so nicht
Da ich Limit 10 habe, schreib da einfach 500 reinDanke, hat funktioniert.
Allerdings wird als Inhalt (Dialog) jetzt nur mein Name angezeigt.
format(str,sizeof(str),"%s\n%s",str,Data);
Hier einfach noch eine %s angabe, hinter der Texten? Also für den Text in der der Datenbank
//E: Ich glaub hat sich erledigt.
db_get_field_assoc(query,"Name",Data,sizeof(Data));
Einfach noch ein Feld abfragen?
-
Bei 2 Felden könnte es so sein
new DBResult:query,Data[2][30],Inhalt[500];
query = db_query(...,"SELECT * FROM `Baum` LIMIT 10;");//das ... auf die Connection unbenennen!
new Rows = db_num_rows(query);
for(new i = 0; i < Rows; i++)
{
db_get_field_assoc(query,"Feld 1",Data[0],sizeof(Data[0]));
db_get_field_assoc(query,"Feld 2",Data[1],sizeof(Data[1]));
format(Inhalt,sizeof(Inhalt),"%s\n%s - %s",Inhalt,Data[0],Data[1]);
db_next_row(query);
}
db_free_result(query);
ShowPlayerDialog(playerid,555,DIALOG_STYLE_MSGBOX,"Hannes",Inhalt,"Ok",""); -
Bei 2 Felden könnte es so sein
new DBResult:query,Data[2][30],Inhalt[500];
query = db_query(...,"SELECT * FROM `Baum` LIMIT 10;");//das ... auf die Connection unbenennen!
new Rows = db_num_rows(query);
for(new i = 0; i < Rows; i++)
{
db_get_field_assoc(query,"Feld 1",Data[0],sizeof(Data[0]));
db_get_field_assoc(query,"Feld 2",Data[1],sizeof(Data[1]));
format(Inhalt,sizeof(Inhalt),"%s\n%s - %s",Inhalt,Data[0],Data[1]);
db_next_row(query);
}
db_free_result(query);
ShowPlayerDialog(playerid,555,DIALOG_STYLE_MSGBOX,"Hannes",Inhalt,"Ok","");Danke dir, geht nun alles.
Eine Frage noch, wie ist die Syntax um einen Eintrag zu löschen?
db_query(....DELETE `` where `` = '%s'); ?
-
So
new DBResult:query = db_query(...,"DELETE FROM `Baum` WHERE `Name` = 'Peter';");
db_free_result(query); -
Ich danke dir.
Denn kann ich ja jetzt endlich weiter machen.
Hat sich denn jetzt auch erledigt.
-
Kann mir hier, wer die Fraktionen (gangs) vom Godfather einfügen? (id 5,6,12,13,14)
Kriege es wirklich nicht auf die reihe, bitte um hilfe.stock GetPlayerFaction(playerid){
new Member = CallRemoteFunction("GetPlayerMember","i",playerid);
if(Member)
return Member;
new Leader = CallRemoteFunction("GetPlayerLeader","i",playerid);
if(Leader)
return Leader;
return 0;
} -
Von den Airport interior´s war irgenteiner buggy ^^. da spawnt man dann draussen und der Boden ist weiß und man kann überall durchlaufen.
Okay ist bei dem aber eigendlich nicht,zumindest sieht man das durch das unsichtbare Dach nicht
Zeig mal den Ganzen code .. Wo man entert wo man rauskommt etc.
HIer der Code:
if(pickupid == Flugeingang)
{
SetPlayerPos(playerid,-1861.936889,54.908092,1061.143554);
SetPlayerInterior(playerid,14);
return 1;
} -
Wie kann ich "UPDATE" in 2 formate machen?, da es heißt die Linie wäre zu Lange..
format(query, sizeof(query), "UPDATE `accounts` SET `Level` = '%d',`Geld` = '%d',`Alter` = '%d',`Bundesland` = '%s',`Admin` = '%d',`Kills` = '%d',\
`Tode` = '%d', `Health` = '%f',`Perso` = '%d',`CarLic` = '%d',`BikeLic` = '%d',`FlyLic` = '%d', `WaffenLic` = '%d',`TruckLic` = '%d',`Ban` = '%d',\
`Warn` = '%d',`Leader` = '%s', `Rang` = '%s', `Fraktion` = '%s',`Story` = '%d',`Member` = '%s', `Skin` = '%d', `Geschlecht` = '%d', `Job` = '%d', \
`Premium` = '%d', `IP` = '%d',`Wanteds` = '%d' WHERE `Name` = '%s'",