Register for your free account! | Forgot your password?

You last visited: Today at 15:39

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Mysql befehl

Discussion on Mysql befehl within the Metin2 Private Server forum part of the Metin2 category.

Reply
 
Old 06/01/2013, 23:33   #16
 
Spartan#117's Avatar
 
elite*gold: 0
Join Date: Apr 2013
Posts: 151
Received Thanks: 149
Hi Leute!

Das Script von Coniesan ist recht performancelastig bei vielen Spielern. (Es geht für jeden Account, egal ob leer oder nicht, die ganze player-Tabelle durch und zählt dabei die Anzahl der Charaktere)

Ich würde empfehlen, die leeren Accounts direkt in einem Query zu finden:
Code:
SELECT account.id,account.login
FROM account.account
LEFT JOIN player.player_index ON player_index.id = account.id
WHERE ISNULL(player_index.id) OR (player_index.pid1 = 0 AND player_index.pid2 = 0 AND player_index.pid3 = 0 AND player_index.pid4 = 0)
Dieser Query zählt ausserdem nicht durch die ganze Charaktertabelle, sondern nutzt die player_index-Tabelle, was auch Ressourcen spart.

Coniesan kann das Script ja anpassen, wenn er Lust hat. (ich hatte keine Lust dazu)
Spartan#117 is offline  
Thanks
1 User
Old 06/01/2013, 23:58   #17
 
Coniesan's Avatar
 
elite*gold: 1000
Join Date: Mar 2009
Posts: 1,408
Received Thanks: 1,007
Kleiner Denkfehler beim Benutzen der player_index!
Wenn man keinen Char besitzt, existiert auch kein Eintrag in dieser Tabelle, wobei mir dennoch eine Idee kommt! Ich werde diese mal kurz durch gehn!
Coniesan is offline  
Old 06/02/2013, 00:05   #18
 
Spartan#117's Avatar
 
elite*gold: 0
Join Date: Apr 2013
Posts: 151
Received Thanks: 149
Quote:
Originally Posted by Coniesan View Post
Kleiner Denkfehler beim Benutzen der player_index!
Wenn man keinen Char besitzt, existiert auch kein Eintrag in dieser Tabelle, wobei mir dennoch eine Idee kommt! Ich werde diese mal kurz durch gehn!
Keine Sorge, daran habe ich auch gedacht.

Wenn kein Eintrag mit dieser ID in der player_index gefunden wird, ist der Inhalt von beispielsweise der "player_index.id" Spalte NULL. Dieser Befehl, welchen du übrigens auch im Query findest, prüft ob diese Spalte NULL ist.
Code:
ISNULL(player_index.id)
Spartan#117 is offline  
Old 06/02/2013, 00:12   #19
 
Coniesan's Avatar
 
elite*gold: 1000
Join Date: Mar 2009
Posts: 1,408
Received Thanks: 1,007
jojo das hab ich dann soweit auch schon bearbeitet gehabt
Also hier das bearbeitete Script, und nochmal danke für die SQL
PHP Code:
<?php
    
// Temp. SQL connection
    
$sqlCon mysql_connect('127.0.0.1''root''pass');
    
//Auslesen der leeren Acc's
    
$sql=mysql_query('SELECT account.id,account.login FROM account.account LEFT JOIN player.player_index ON player_index.id = account.id WHERE ISNULL(player_index.id) OR (player_index.pid1 = 0 AND player_index.pid2 = 0 AND player_index.pid3 = 0 AND player_index.pid4 = 0);')or die(mysql_error());

    
// Normaler Seitenaufruf mit Leeren acc's abfrage
    
if(empty($_POST))
    {    
        
$count 0;
        while(
$get mysql_fetch_object($sql))
        {    
            
$acc_id=$get->id;
            
$acc_login=$get->login;
            echo 
$acc_id.' - '.$acc_login.'<br>';
            
$count $count+1;
        }
    }
    
    
// Seitenaufruf bei gesendetem delete Post
    
if(!empty($_POST))
    {
        
$count 0;
        if(
$_POST['delete'])
        {
            while(
$get mysql_fetch_object($sql))
            {
                
$acc_id=$get->id;
                
$acc_login=$get->login;
                
mysql_query('DELETE FROM account.account WHERE id='.$acc_id.';')or die(mysql_error());
                
$count $count+1;
            }
        }
        echo 
'Es wurden <b>'.$count.'</b>-leere Accounts wurden gelöscht!<br><br>';
    }
    
// HTML User Delete Abfrage
    
If(empty($_POST))
    {
        if(
$count>0)
        {
            echo
'--------------------------<br>
            Es sind <b>'
.$count.'</b> leere Accounts vorhanden<br>
            Möchtest du alle diese Accounts löschen?
                <form action="#" method="POST" name="deleteform"><input type="submit" name="delete" value="JA!" /></form>
            '
;
        }
        else 
            echo 
'Keine Accounts vorhanden!';
    }
?>
Coniesan is offline  
Thanks
2 Users
Old 06/02/2013, 00:19   #20
 
nostradame37's Avatar
 
elite*gold: 0
Join Date: Jan 2011
Posts: 2,504
Received Thanks: 870
das script wird einmahlig benutzt alle 2-3 monate und nuhr dan ist es auch activ
also wird es auscomentiert wen es nicht gepraucht wird .
bei 13k+ accounts kanst lange suchen welche jetzt chars besitzen und welche nicht
mfg
nostradame37 is offline  
Old 06/02/2013, 00:23   #21
 
Spartan#117's Avatar
 
elite*gold: 0
Join Date: Apr 2013
Posts: 151
Received Thanks: 149
Quote:
Originally Posted by Coniesan View Post
jojo das hab ich dann soweit auch schon bearbeitet gehabt
Also hier das bearbeitete Script, und nochmal danke für die SQL
Code:
 OR (player_index.pid1 = 0 AND player_index.pid2 = 0 AND player_index.pid3 = 0 AND player_index.pid4 = 0)
Warum hast du denn diesen Teil des Querys rausgenommen?

Wenn jemand einen Char erstellt und diesen wieder löscht, bleibt der player_index Eintrag, obwohl keine Chars mehr vorhanden sind, und dieser enthält dann bei jeder der pid Spalten eine 0, daher diese Überprüfung.

Ich bin nunmal perfektionist, haha.
Spartan#117 is offline  
Old 06/02/2013, 00:23   #22
 
Coniesan's Avatar
 
elite*gold: 1000
Join Date: Mar 2009
Posts: 1,408
Received Thanks: 1,007
man könnte ja n Autoscript schreiben, welches jeden Tag guckt, ob und welcher Acc länger als 2 Monate (oder, wie mans halt gern hätte) nicht benutzt wurde, und die dort gelisteten automatisch löscht

#Edit: Ja sry, habs ausm Queryeditor Copy&Paste raus da hab ich als Experiment den Part raus geschmissen gehabt
Coniesan is offline  
Thanks
2 Users
Reply


Similar Threads Similar Threads
[S] Mysql Befehl!
04/14/2013 - Metin2 Private Server - 3 Replies
Hallo Community, Ich möchte gerne meine 3 Tausend löschen aber das nicht per Hand sondern per befehl. Wie so einer. DELETE FROM item WHERE vnum = 72726 Aber dies für die Account Tabelle und für die Player Tabelle Also ich weiß nur das man so anfängt. ''DELETE FROM'' Aber mehr weiß ich nicht.
MySQL Befehl?
11/25/2012 - Metin2 Private Server - 0 Replies
Hallu, kennt jemand einen MySQL Befehl, den man für die Mob Proto anwenden kann? Würde gerne einige Spalten dort updaten, sprich, erweitern, mit Nullen, weil ich alle diese Mobs, auch die auf Map2 etc., an Level 100 angleichen möchte und von Hand dauert das echt lange >.< Kennt jemand nen Befehl dafür?
Suche Mysql befehl
07/23/2012 - Metin2 Private Server - 2 Replies
hallo com habe ein kleines problem und zwar sind autopots bei mir auf dem server unters folk gelangt das es nicht solte also ein GM hatt die verteilt so meine frage ist es gibt sicher einen mysql befehl der in der tabelle item zb das item 72726 loescht also von allen playern das suchen dauert lange danke im voraus mfg
suche MySQL Befehl
10/28/2011 - Metin2 Private Server - 6 Replies
Guten Abend !! Gibt es einen Befehl für die MySQL ,wo man die Accounts alle auf einmal auf BLOCK stellt ? Habe in der SUFU nichts gefunden
mysql befehl
05/08/2010 - Metin2 Private Server - 4 Replies
hi,ich suche 3 mysql befehle für navicat in der query tabelle für die exp yang und item drop und wo genau ich die eingeben muss iwo in der player is das egal? oder in der mobproto? und ich kann iwie die npcs nimmer anklicken nur noch die shops woran liegt das? währe nett wenn mir jemand hilft



All times are GMT +1. The time now is 15:40.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.