anpera.net https://anpera.dyndns.org/phpbb3/ |
|
Daten gar nicht ausgelesen https://anpera.dyndns.org/phpbb3/viewtopic.php?f=25&t=5326 |
Seite 1 von 1 |
Autor: | Rattentod [ Mo 04 Apr, 2011 23:26 ] |
Betreff des Beitrags: | Daten gar nicht ausgelesen |
Hey, ich versuche in der Kämpferliste es so einzubauen das nicht nur die normalen Bios, der User per Popup angezeigt werden sondern auch die der NPCs. Mein Problem ist da die NPCs eigene IDs haben, weiß ich nicht so genau wie ich es abfragen soll das zum passenden Hauptcharakter auch der passende NPC angezeigt wird. Als Beispiel um es hoffe einfacher zu machen. Charakter X hat den NPC mit der ID 10 angezeigt soll also werden durch die untere Abfrage "",npcpopup.php?char=X&npc=10 Was ich bisher immer geschafft hatte war es so anzuzeigen das entweder der erste oder letzte NPC in der gesamten Liste dargestellt wurde, aber halt nie der passende leider. PHP: $sql1 = "SELECT * FROM npc WHERE nid = '".$_GET['npc']."' "; $result1 = db_query($sql1); $row1 = db_fetch_assoc($result1); PHP: output("<a href='npcpopup.php?char=".rawurlencode($row['login'])."&npc={$row1['nid']}' target='_blank'>",true); addnav("","npcpopup.php?char=".rawurlencode($row['login'])."&npc={$row1['nid']}'",false,false,true); Hoffe mir kann man da irgendwie helfen. ![]() ![]() |
Autor: | Jack [ Mo 04 Apr, 2011 23:57 ] |
Betreff des Beitrags: | Re: Daten gar nicht ausgelesen |
Vielleicht noch nach dem besitzer abfragen. Hab das NPC system nicht. Kann daher nicht sagen ob der Besitzer via acctid oder name abgespeichert wird Edit: Also falls per acctid PHP: $sql1 = "SELECT * FROM npc WHERE nid = '".$_GET['npc']."' AND owner/besiter/was auch immer=".$row['acctid']." "; $result1 = db_query($sql1); $row1 = db_fetch_assoc($result1); würd ich esj etzt mal machen, falls der besitzer per acctid abgespeichert wird |
Autor: | Rattentod [ Di 05 Apr, 2011 12:53 ] |
Betreff des Beitrags: | Re: Daten gar nicht ausgelesen |
Ich hatte es nun so versucht wie du meintes funktioniert nur leider nicht PHP: $sql1 = "SELECT * FROM npc WHERE nid = '".$_GET['npc']."' AND acctid='".$row['acctid']."' "; Das lustige ist ja wenn man mit dem NPC schreiben will per Emote, funktioniert es schon, da habe ich es geschafft das man die Bio per Popup richtig aufrufen kann. PHP: $sql = "SELECT commentary.*, accounts.name, accounts.login, accounts.prefs, accounts.acctid, accounts.loggedin, accounts.location, accounts.laston, accounts.race, accounts.title, accounts.avatar, npc.* FROM commentary INNER JOIN accounts ON accounts.acctid = commentary.author INNER JOIN npc ON npc.nid = commentary.author WHERE section = '$section' AND accounts.locked=0 ORDER BY commentid DESC LIMIT ".($com*$limit).",$limit"; $result = db_query($sql) or die(db_error(LINK)); $counttoday=0; for ($i=0;$i < db_num_rows($result);$i++){ $row = db_fetch_assoc($result); $row[comment]=stripslashes(preg_replace("'[`][^".$appoencode_str."`]'","",$row[comment])); $commentids[$i] = $row[commentid]; Und dann halt via a href wieder zu geben und drauf zu klicken klappt es hervorragend,, nur halt nicht in der Kämpferliste. ![]() Hab mal noch einen Screen angehangen von der NPC Tabelle, hoffe damit geht es einfacher. ![]() |
Autor: | Charon [ Di 05 Apr, 2011 15:53 ] |
Betreff des Beitrags: | Re: Daten gar nicht ausgelesen |
Zwei Fragen/Anmerkungen dazu: 1) Woher kommt der Wert $_GET['npc'], den du in der Abfrage verwendest? Es scheint ja, als würde hierüber der falsche NPC abgefragt werden. 2) Ist es überhaupt notwendig die ID des NPC zu verwenden? Ich würde (ohne das System zu kennen) vermuten, dass acctid in der NPC Tabelle die acctid des zugehörigen Chars enthält. Damit wäre die Verknüpfung zumindest bei nur einem möglichen NPC eindeutig gegeben. Entsprechend sollte ein $this->bbcode_second_pass_code('', '$sql1 = "SELECT * FROM npc WHERE acctid=".$row['acctid'];')ausreichen. Wobei $row['acctid'] halt die acctid des entsprechenden users ist. Edit: Hochkommas entfernt; sorry hatte die Abfrage kopiert und die ' übersehen. |
Autor: | anpera [ Mi 06 Apr, 2011 00:15 ] |
Betreff des Beitrags: | Re: Daten gar nicht ausgelesen |
Warum schreibt ihr INT-Werte in Hochkommas? PHP: $sql1 = "SELECT * FROM npc WHERE nid = ".$_GET['npc']; Dazu noch eine kleine Anmerkung: Auch wenn obige Abfrage funktioniert, ist das so ziemlich die unsicherste Methode, eine Abfrage zu gestalten. (Die Hochkommas ändern daran auch nichts.) $_GET und $_POST gehört eigentlich NIE direkt in einen SQL-String. Minimum Security wäre im oberen Fall, also wenn nur INT-Werte erlaubt sind, ein PHP: $sql1 = "SELECT * FROM npc WHERE nid = ".(int)$_GET['npc']; Einfach um zu vermeiden, dass ein böswillger Spieler den Wert in $_GET['npc'] beim Laden der Seite durch einen weiteren SQL-Befehl ersetzt, und sich so z.B. Adminrechte über den Server beschafft. |
Autor: | Rattentod [ Do 07 Apr, 2011 15:39 ] |
Betreff des Beitrags: | Re: Daten gar nicht ausgelesen |
Danke euch, hab es nun so gelöst mit Hilfe einer Bekannten. PHP: $sql1 = "SELECT npc.* FROM npc, accounts WHERE npc.acctid=".$row[acctid]." AND npc.active=1"; $result1 = db_query($sql1); $row1 = db_fetch_assoc($result1); Es funktioniert auch wie ich es will, nun muss ich nur an einem INSERT arbeiten das auch die NID des NPCs in den commentary eingetragen wird, damit ich immer nur die Kommentare des richtiges NPCs auslesen lassen kann und nicht nur immer der Name getauscht wird vor einem Post. So ist sie bisher und es klappt irgendwie nicht. PHP: $sql = "INSERT INTO commentary (postdate,section,author,nauthor,comment) VALUES (now(),'$section',".$session[user][acctid].",'$row[nauthor]',\"$commentary\")";
db_query($sql) or die(db_error(LINK)); |
Seite 1 von 1 | Alle Zeiten sind UTC + 1 Stunde |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |