anpera.net
https://anpera.dyndns.org/phpbb3/

Multis in der Bio
https://anpera.dyndns.org/phpbb3/viewtopic.php?f=25&t=5321
Seite 1 von 1

Autor:  Rattentod [ Mo 28 Mär, 2011 23:28 ]
Betreff des Beitrags:  Multis in der Bio

Hallo, ich bräuchte Hilfe weil ich einfach nicht weiter komme.

Ich würde gern einfach die Multis von jedem Spieler in die Bio einbauen, das jeder der die Bio öffnet sieht, welche Multis der gewählte User noch hat, wenn dieser will das seine Multis in der Bio angezeigt werden oder nicht. Wobei das letzte ja recht leicht zu bewerkstelligen ist.

Ich hatte mich bisher an der Multiuseranzeige in den Logs orientiert und es klappt auch soweit das die Multis angezeigt werden, nur mein Problem ist, es werden alle angezeigt und nicht nur von einer Person.

Hoffe ihr könnt mir da irgendwie helfen.


PHP:
if ($_GET['searchby']!='ip') {
$sql = 'SELECT uniqueid FROM accounts WHERE uniqueid!="" GROUP BY uniqueid HAVING COUNT(*) > 1';
$result = db_query($sql) or die(db_error(LINK));
while ($row = db_fetch_assoc($result)) {
$in_id .= ',"'.$row['uniqueid'].'"';
}
}


$ip = $id = $user = array();
$sql = 'SELECT name,lastip,uniqueid FROM accounts WHERE (lastip IN (-1'.$in_ip.') OR uniqueid IN (-1'.$in_id.')) AND locked="0" ORDER BY acctid ASC';
$result = db_query($sql) or die(db_error(LINK));

while ($row = db_fetch_assoc($result)) {
if ((!isset($id[$row['uniqueid']]) || $_GET['searchby']=='ip') && (!isset($ip[$row['lastip']]) || $_GET['searchby']=='id')) {
// if ($_GET['searchby']!='id') $ip[$row['lastip']] = count($user);
if ($_GET['searchby']!='ip') $id[$row['uniqueid']] = count($user);
$user[] = array($row);
}
elseif (isset($id[$row['uniqueid']])) {
$ip[$row['lastip']] = $id[$row['uniqueid']];
$user[$id[$row['uniqueid']]][] = $row;
}
else {
$id[$row['uniqueid']] = $ip[$row['lastip']];
$user[$ip[$row['lastip']]][] = $row;
}
}
if ($session[user][superuser]>=2){
output('`n`bMultiaccounts`b`nNaaa, wer spielt denn hier noch wen?`n`n');

output('<table><tr><td>',true);
foreach ($user AS $list) {
if (count($list)<2) continue;
$tmpstr = '';
$ip = $id = $acct = array();
foreach ($list AS $val) {


$tmpstr .= ('<tr><td></td>

<td>'.$val['name'].'</td>
</tr>');
}

output("<table align='center' width='100%'><tr><td>&nbsp;</td>
<td>`bName`b</td>

</tr>",true);
output($tmpstr,true);

output('</table>`n`n',true);
output('</form>',true);
}
output('</td></tr></table>',true);

}



Das war der Code bisher so weit den ich verwende. :(

Autor:  Charon [ Di 29 Mär, 2011 08:57 ]
Betreff des Beitrags:  Re: Multis in der Bio

Hallo,
du bräuchtest in dem Fall einfach nur die IP/UID des einen betreffenden User nehmen und damit die accounts nach Treffern durchsuchen.
Ich würde da aber von abraten, denn da sind ja falsche Anzeigen aufgrund von einem gemeinsamen Internetanschluss, Besuch bei nem Freund etc. ja schon abzusehen, wie eben in der Grotte auch. Biete den Usern vielleicht besser die Möglichkeit, einfach manuell in den prefs einen anderen Char als Multi einzutragen.

Gruß
Charon

Autor:  Rattentod [ Di 29 Mär, 2011 12:01 ]
Betreff des Beitrags:  Re: Multis in der Bio

Man könnte das doch über die E-Mail Adresse laufen lassen, da würde es zu weniger Fehlern kommen da wenn sich Leute mit der gleichen anmelden dann auch gleich zugeordnet werden oder? Nur wie müsste man die Anfrage gestalten?

Autor:  MySql [ Di 29 Mär, 2011 18:25 ]
Betreff des Beitrags:  Re: Multis in der Bio

Wieso den entsprechendes Multi's nicht einfach die AccountID des Hauptcharakters zuweisen und dann via AccountID auslesen? :?

Autor:  Charon [ Di 29 Mär, 2011 19:52 ]
Betreff des Beitrags:  Re: Multis in der Bio

@Rattentod
Ich sehe auch nicht so den Nutzen dieser Lösung, aber wenn du das gerne über die Mailadresse machen möchtest, sollte es so funktionieren:

1.) In der oben stehen langen Abfrage (mit allen Daten für den zu betrachtenden Char) das Feld emailaddress ergänzen

2.) zugehörige Chars abfragen (und natürlich noch eine Ausgabe dazu basteln)
$this->bbcode_second_pass_code('', '
"SELECT name FROM accounts WHERE emailaddress='".$row['emailaddress']."' AND acctid!=".$row['acctid']." ORDER BY name ASC"
')

Autor:  Rattentod [ Di 29 Mär, 2011 20:59 ]
Betreff des Beitrags:  Re: Multis in der Bio

So hab ich das bisher gebaut nur ich komme bei dem Output nicht klar, es zeigt alle User die bisher bestehen schön in Gruppen sortiert an.
Also meine Multis und die meiner Freundin, in je einzelnen Gruppen, aber wie bekomme ich das nur hin das nur meine oder nur ihre wenn sie ihre Bio aufmacht sehen kann? Daran verzweifle ich gerade. :bash: :bash:


PHP:
$sql = 'SELECT emailaddress FROM accounts WHERE emailaddress!="" AND acctid!= ".$row[acctid]." ';
$result = db_query($sql) or die(db_error(LINK));
while ($row = db_fetch_assoc($result)) {
$in_id .= ',"'.$row['emailaddress'].'"';
}




$sql = 'SELECT name,emailaddress FROM accounts WHERE emailaddress IN (-1'.$in_id.') AND locked="0" ORDER BY acctid ASC';
$result = db_query($sql) or die(db_error(LINK));

while ($row = db_fetch_assoc($result)) {
if (!isset($id[$row['emailaddress']])) {
$id[$row['emailaddress']] = count($user);
$user[] = array($row);
}
elseif (isset($id[$row['emailaddress']])) {
$ip[$row['lastip']] = $id[$row['emailaddress']];
$user[$id[$row['emailaddress']]][] = $row;
}

}
if ($session[user][superuser]>=2){
output('`n`bMultiaccounts`b`nNaaa, wer spielt denn hier noch wen?`n`n');

output('<table><tr><td>',true);
foreach ($user AS $list) {
if (count($list)<2) continue;
$tmpstr = '';
$ip = $id = $acct = array();
foreach ($list AS $val) {


$tmpstr .= ('<tr><td></td>

<td>'.$val['name'].'</td>
</tr>');
}

output("<table align='center' width='100%'><tr><td>&nbsp;</td>
<td>`bName`b</td>

</tr>",true);
output($tmpstr,true);

output('</table>`n`n',true);
output('</form>',true);
}
output('</td></tr></table>',true);

}

Autor:  Lori [ Di 29 Mär, 2011 22:14 ]
Betreff des Beitrags:  Re: Multis in der Bio

Wieso uziehst du alle Multis aus der Tabelle? Du möchtest doch das für jede Bio die anderen Charas des Users (in der Bio) angezeigt werden?

Dann suche doch nur die Charas aus der Accounts raus ...


PHP:
$sql = 'SELECT * FROM accounts WHERE emailaddress='.$row[emailaddress'].' AND locked=0';

Autor:  Charon [ Di 29 Mär, 2011 22:43 ]
Betreff des Beitrags:  Re: Multis in der Bio

Charon hat geschrieben:
1.) In der oben stehen langen Abfrage (mit allen Daten für den zu betrachtenden Char) das Feld emailaddress ergänzen

2.) zugehörige Chars abfragen (und natürlich noch eine Ausgabe dazu basteln)
$this->bbcode_second_pass_code('', '
"SELECT name FROM accounts WHERE emailaddress='".$row['emailaddress']."' AND acctid!=".$row['acctid']." AND locked=0 ORDER BY name ASC"
')

(das "AND locked=0" aus Loris Vorschlag ergänzt, macht Sinn)

Original Bio nehmen und wie beschrieben modifizieren. Das ganze andere Zeug raus, da der Code nunmal dafür gedacht ist, um ALLE Multis des Servers rauszusuchen... Für diesen Zweck nicht nötig und viel zu aufwändig.
Was meinem Vorschlag nur noch fehlt, ist die Ausgabe der Accounts (im Beispiel von mir nur Namen, ggf. Abfrage um weitere Felder ergänzen). Wie man eine Abfrage ausführt und das Ergebnisarray in einer Schleife auswertet, kannst du einfach an diversen anderen Stellen in den Skripten abgucken.

Autor:  Rattentod [ Mi 30 Mär, 2011 13:13 ]
Betreff des Beitrags:  Re: Multis in der Bio

Hab das so nun ganz simpel gelöst und funktioniert auch. Danke für die Hilfe. :)

PHP:
output("$row1[colbio2]Die Multis von $row[name]$row1[colbio2]:`n");
$sql="SELECT name FROM accounts WHERE emailaddress='".$row['emailaddress']."' AND acctid!=".$row['acctid']." AND locked=0 ORDER BY name ASC";
$result = db_query($sql);
while ($row = db_fetch_assoc($result)){

output("`n$row[name]");
}

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/