Hallo,
kann man mit MySQL eine If-Abfrage gesalten, die einen Datensatz einfügt, wenn ein bestimmtes Ereignis eintritt?
Warum ich es brauche?
mysql_format(connection,string,"SELECT 1 FROM Tabellenname WHERE Name='%e' LIMIT 1;",inputtext);
mysql_function_query(connection,string,true,"Check","is",playerid,inputtext);
mysql_function_query(connection,string,true,"Check","is",playerid,inputtext);
// Irgendwo anders...
forward Check(playerid,inputtext[]);
public Check(playerid,inputtext[])
{
new rows,fields;
cache_get_data(rows,fields);
if(rows!=0) return SendClientMessage(playerid,COLOR_GRAD1,"Dieser Name existiert bereits.");
new string[128];
mysql_format(connection,string,"INSERT INTO Tabellenname (Name) VALUES ('%e');",inputtext);
mysql_function_query(connection,string,false,"Insert","i",playerid);
}
forward Check(playerid,inputtext[]);
public Check(playerid,inputtext[])
{
new rows,fields;
cache_get_data(rows,fields);
if(rows!=0) return SendClientMessage(playerid,COLOR_GRAD1,"Dieser Name existiert bereits.");
new string[128];
mysql_format(connection,string,"INSERT INTO Tabellenname (Name) VALUES ('%e');",inputtext);
mysql_function_query(connection,string,false,"Insert","i",playerid);
}
forward Insert(playerid);
public Insert(playerid)
{
new string[128];
format(string,sizeof(string),"Eintrag hinzugefügt (ID %i)",mysql_insert_id()); // Primary Key in Kombination mit AUTO_INCREMENT gesetzt.
SendClientMessage(playerid,-1,string);
}
public Insert(playerid)
{
new string[128];
format(string,sizeof(string),"Eintrag hinzugefügt (ID %i)",mysql_insert_id()); // Primary Key in Kombination mit AUTO_INCREMENT gesetzt.
SendClientMessage(playerid,-1,string);
}
mysql_format(connection,string,"INSERT INTO Tabellenname (Name) VALUES ('%e');",inputtext);
mysql_function_query(connection,string,false,"Insert","i",playerid);
mysql_function_query(connection,string,false,"Insert","i",playerid);
// Irgendwo anders...
forward Insert(playerid);
public Insert(playerid)
{
if(mysql_affected_rows()==0) // Datensatz konnte nicht eingefügt werden, da keine doppelten Einträge möglich sind
{
SendClientMessage(playerid,COLOR_GRAD1,"Dieser Name existiert bereits.");
return 1;
}
new string[128];
format(string,sizeof(string),"Eintrag hinzugefügt (ID %i)",mysql_insert_id()); // Primary Key in Kombination mit AUTO_INCREMENT gesetzt.
SendClientMessage(playerid,-1,string);
return 1;
}
forward Insert(playerid);
public Insert(playerid)
{
if(mysql_affected_rows()==0) // Datensatz konnte nicht eingefügt werden, da keine doppelten Einträge möglich sind
{
SendClientMessage(playerid,COLOR_GRAD1,"Dieser Name existiert bereits.");
return 1;
}
new string[128];
format(string,sizeof(string),"Eintrag hinzugefügt (ID %i)",mysql_insert_id()); // Primary Key in Kombination mit AUTO_INCREMENT gesetzt.
SendClientMessage(playerid,-1,string);
return 1;
}
Ich habe versucht das mit dem Unique-Index zu realisieren, leider wird bei einem doppelten Datensatz der Callback garnicht aufgerufen,
sondern er wird weiter geleitet zu OnQueryError...
Gibts eine andere Möglichkeit?
Pille