anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Do 18 Jul, 2019 12:13

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 29 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags: Re: Arbeitsamt
BeitragVerfasst: Fr 13 Mär, 2009 23:30 
Offline
Meister
Meister
Benutzeravatar

Registriert: Mo 05 Feb, 2007 12:33
Beiträge: 375
Wohnort: Hattingen
Geschlecht: Männlich
LoGD: http://www.alvion-logd.de/logd/
Ja die sind wohl egal, denke ich! :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Arbeitsamt
BeitragVerfasst: So 15 Mär, 2009 17:55 
Offline
Eingeweihter
Eingeweihter

Registriert: Fr 13 Mär, 2009 16:14
Beiträge: 68
Geschlecht: Weiblich
-----


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Arbeitsamt
BeitragVerfasst: Fr 15 Jul, 2011 14:22 
Offline
Held
Held

Registriert: Mo 23 Jan, 2006 13:15
Beiträge: 222
Servus!
Ich brauche eure Hilfe. Vllt seh ich den Wald vor lauter Bäumen nicht.
Habe bei mir ebenfalls eine Art Stellenmarkt und mir komplette Teile von der arbeit.php übernommen. Mit Angabe im Quelltext :P.
Soweit alles super. Nun möchte ich in meiner Ruhmeshalle jedwede Bürger mit ihren Anstellungen anzeigen lassen.
Quasi so:

Name des Bürgers | Name der Anstellung
vernisage | Schreiberin

Wenn ich mich mal als Bsp nehmen darf :P.

Ihr versteht, worauf ich hinaus will, richtig?

In meiner hof.php habe ich wie folgt eingesetzt:

PHP:
////////////////
// ANSTELLUNGEN
else if ($_GET[op]=="arbeit"){
output("In diesem Nebenraum der Ruhmeshalle findest du eine Liste mit allen Arbeitenden, die es hier in Esgorath gibt!`n`n");
$sql = "SELECT name FROM accounts WHERE arbeit_ID >0";
$result = db_query($sql);
output("<table border=0 cellpadding=6 cellspacing=1 bgcolor='#38342D' align='center'><tr class=trkopf><td>Name</td><td>Anstellung</td></tr>", true);
while ($row = db_fetch_assoc($result)) {
output("<tr class=".($i%2?"trlight":"trdark")."><td>" . $row['name'], true);
output("</td>", true);

$sqla = "SELECT name FROM arbeit WHERE ID=".$row['arbeit_ID']."";
$resulta = db_query($sqla) or die(db_error(LINK));
if($rowa = db_fetch_assoc($resulta))
output("<td>" . $rowa['name'] . "</td>", true);
else
output("<td>`c---`c</td>", true);

}
output("</tr></table>",true);
/////////// Ende ANSTELLUNG


Aaaaaber... jeht natürlich nicht. *hmpfz*
Ich krieg obligatorische weiße Fehlerseite mit dem Spruch:
SELECT name FROM arbeit WHERE ID=

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Ich hole aus der Tabelle `accounts` alle User, dessen 'arbeit_ID' größer 0 ist. Die 'arbeit_ID' stimmt mit der 'ID' aus der Tabelle `arbeit` überein. Wieso geht das nicht? Wo ist mein Denkfehler?
Wer kann es mir verdeutlichen?

Vielen Dank & Gruß, verni

[Edit]: benutzte php's in meiner Source: freimarkt.php, arbeit_editor.php, hof.php. <--- kann sie nicht entblocken im Source_Viewer. Keine Ahnung, warum... Wenn ich sie bei legen soll, bitte posten

_________________
»Esgorath«

Source


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Arbeitsamt
BeitragVerfasst: Fr 15 Jul, 2011 15:56 
Offline
Eingeweihter
Eingeweihter

Registriert: Mi 12 Aug, 2009 18:11
Beiträge: 65
Geschlecht: Männlich
LoGD: http://www.plueschdrache.de
Hallo,

$row['arbeit_ID'] ist leer, da es in deiner ersten Abfrage nur in der WHERE Bedingung vorkommt. Änder es mal auf
$sql = "SELECT name, arbeit_ID FROM accounts WHERE arbeit_ID >0";

Von der Performance her wäre es allerdings besser, nur eine einzige Datenbankabfrage mittels JOIN der Tabellen auszuführen. Solltest du eine größere Anzahl an Spielern mit Arbeit haben, kann sich das recht schnell bemerkbar machen, wenn du bei jedem nochmal eine zusätzliche Abfrage generierst.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Arbeitsamt
BeitragVerfasst: Fr 15 Jul, 2011 16:07 
Offline
Held
Held

Registriert: Mo 23 Jan, 2006 13:15
Beiträge: 222
OH Mann, natürlich!! EY !! ... Ich sag ja, seh den Wald vor Bäumen nicht!
Und wegen meiner zwei Abfragen... ist das wirklich so 'böse'? Wie kann ich es denn schöner verarbeiten?

_________________
»Esgorath«

Source


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Arbeitsamt
BeitragVerfasst: Fr 15 Jul, 2011 21:59 
Offline
Eingeweihter
Eingeweihter

Registriert: Mi 12 Aug, 2009 18:11
Beiträge: 65
Geschlecht: Männlich
LoGD: http://www.plueschdrache.de
Also "böse" ist natürlich relativ, aber angenommen 50 Spieler haben eine Arbeit, dann hast du auf diese Weise an der Stelle schon 51 Datenbankabfragen, obwohl es mit einer einzigen machbar wäre. Das schlägt dir auf die Zeit zur Seitengenerierung und belastet natürlich auch den Server entsprechend mehr. Angenommen du hast dann noch ein paar solcher Stellen mehr und genug User die sich dort rumtreiben, kann es schnell störend werden. Vor allem bei Leuten, die sich einen Server auch noch mit anderen Seiten teilen müssen, haben dann letztlich alle ihren "Spaß" dran.

Nur so als Beispiel: Ich hab auf meinem Entwicklungssystem mal was Vergleichbares in der Kämpferliste gemacht, da ich quick&dirty was testen wollen. Das gab dann schnell eine Sekunde Aufschlag auf die Seitengenerierung, vor allem wenn die Abfrage auch noch eine Sortierung enthält.

Hier mal eine performantere und etwas verbesserte Lösung für dich. Ich habe noch die Schleife verändert, da dir das $i für die wechselnde Zeilenfarbe gefehlt hat (kannst du natürlich auch in die while-Schleife einbauen, wenn dir die lieber ist) und beim Tabellenaufbau gab es nur ein einzelnes </tr> ganz am Ende.

$this->bbcode_second_pass_code('', '
elseif ($_GET['op']=="arbeit")
{
$out = "In diesem Nebenraum der Ruhmeshalle findest du eine Liste mit allen Arbeitenden, die es hier in Esgorath gibt!`n`n";

$sql = "SELECT a.name, b.name AS arbeitname FROM accounts a JOIN arbeit b ON a.arbeit_ID=b.ID";
$result = db_query($sql);
$anzahl = db_num_rows($result);

$out.="<table border=0 cellpadding=6 cellspacing=1 bgcolor='#38342D' align='center'><tr class=trkopf><td>Name</td><td>Anstellung</td></tr>";
for ($i=0;$i<$anzahl;$i++)
{
$row = db_fetch_assoc($result);
$out.="<tr class=".($i%2?"trlight":"trdark")."><td>".$row['name']."</td><td>".$row['arbeitname']."</td></tr>";
}
$out.="</table>";
output($out,true);
}')
Ist ungetestet, aber ich denke das müsste so funktionieren.

Gruß
Charon


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Arbeitsamt
BeitragVerfasst: Sa 16 Jul, 2011 15:05 
Offline
Held
Held

Registriert: Mo 23 Jan, 2006 13:15
Beiträge: 222
Okay, das werd ich mal in Kürze probieren,
aber kannst du mir ggf sagen, warum Berufe, die einen Umlaut wie äöü haben, in badnav führen und nicht angenommen werden können?
Da gibts doch bestimmt nen Trick?

_________________
»Esgorath«

Source


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Arbeitsamt
BeitragVerfasst: Sa 16 Jul, 2011 21:11 
Offline
Eingeweihter
Eingeweihter

Registriert: Mi 12 Aug, 2009 18:11
Beiträge: 65
Geschlecht: Männlich
LoGD: http://www.plueschdrache.de
Gib bei solchen Fragen bitte auch die Datei und den "op" an, bei dem das Problem auftritt. Das macht es für potentielle Helfer dann einfacher, gerade wenn man das Skript nicht kennt. ;)

Aber versuch mal in arbeit.php das
PHP:
output("<a href=arbeit.php?op=annehmen&ID={$row['ID']}&name=".$row['name'].">ANNEHMEN</a>",true);
addnav("","arbeit.php?op=annehmen&ID={$row['ID']}&name=".$row['name']."");
zu ersetzen mit
PHP:
output("<a href=arbeit.php?op=annehmen&ID={$row['ID']}&name=".urlencode($row['name']).">ANNEHMEN</a>",true);
addnav("","arbeit.php?op=annehmen&ID={$row['ID']}&name=".urlencode($row['name'])."");
Umlaute und Sonderzeichen uncodiert in der URL zu übertragen geht schief. :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Arbeitsamt
BeitragVerfasst: So 17 Jul, 2011 11:18 
Offline
Held
Held

Registriert: Mo 23 Jan, 2006 13:15
Beiträge: 222
Hallo Charon,

zum Beitrag mit der DB-Abfrage: funktioniert :)
zur codierten URL: funktioniert :) (im Übrigen sollte sowas dann in der "Vorlage-PHP" dringenst abgeändert werden!!)

Ich dank dir sehr für deine Hilfsbereitschaft!

Viele Grüße
verni :wink:

_________________
»Esgorath«

Source


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 29 Beiträge ]  Gehe zu Seite Vorherige  1, 2

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum