Bug (?) in Hangman 1.5.*

Allgemeiner Support zum phpBB 2 Board und phpBB 2 Modifikationen
Forumsregeln
Auch wenn hier der Support für phpBB 2 weiterhin aufrecht erhalten bleibt, weisen wir darauf hin, dass das phpBB 2 nicht mehr offiziell unterstützt und weiterentwickelt wird!
Antworten
Benutzeravatar
Dungeonwatcher
Beiträge: 1055
Registriert: Sa 19.Feb, 2005 01:16
Wohnort: Berlin
Kontaktdaten:

Bug (?) in Hangman 1.5.*

Beitrag von Dungeonwatcher »

Hi! :cool:

Nachdem nun Sudoku und Knuffel bestens funktionieren, bleibt noch Hangman übrig. ;)

Die Original Version und auch meine überarbeitete Version enthalten einen Fehler, der ziemlich unschön ist. Im ACP lässt sich zwar schön einstellen wie viele Buchstaben ein Hangman maximal haben darf, nur leider wird dies beim Ausfüllen im Eingabefeld ignoriert. ^6

Die Zuständige Variable ist maxlength. Im Template (hangman_quess.tpl) wird das so aufgerufen:

Code: Alles auswählen

  <td width="80%" align="center">
    <!-- BEGIN switch_shorter_words -->
    <input type="text" name="wortversuch" maxlength="{MAXLENGTH}" size="45" class="post" />
    <!-- END switch_shorter_words -->
    <!-- BEGIN switch_longer_words -->
    <tex..rea class="post" name="wortversuch" cols="30" rows="2"></tex..rea>
    <!-- END switch_longer_words -->
  </td>
  <td width="20%" align="center"><input class="mainoption" type="submit" name="{switch_show_letters.L_TRY}" value="{switch_show_letters.L_TRY}" /></td>
In der hangman.php gehört diese Stelle dazu:

Code: Alles auswählen

	if(intval($hangman_cfg['maximum_letters'])>0 && intval($hangman_cfg['maximum_letters'])<255)
		$template->assign_block_vars('switch_show_letters.switch_shorter_words',array('MAXLENGTH'=>$hangman_cfg['maximum_letters']));
	else
		$template->assign_block_vars('switch_show_letters.switch_longer_words',array());
		$restversuche = $hangman_max_versuche - $hangman_versuche;
Das gleiche trifft auch auf das Erstellen von Hangmans (hangman_create.tpl) zu:

Code: Alles auswählen

  <td class="row2" align="center" colspan="3" width="50%">
    <!-- BEGIN switch_shorter_words -->
    <input type="text" name="wort" maxlength="{MAXLENGTH}" size="55" class="post" />
    <!-- END switch_shorter_words -->
    <!-- BEGIN switch_longer_words -->
    <tex..rea class="post" name="wort" rows="2" cols="30">{L_HANG_WORD}</text..ea>
    <!-- END switch_longer_words -->
  </td>
Die hangman.php sagt dazu dies:

Code: Alles auswählen

	if(intval($hangman_cfg['maximum_letters'])>0 && intval($hangman_cfg['maximum_letters'])<255)
		$template->assign_block_vars('switch_shorter_words',array('MAXLENGTH' => $hangman_cfg['maximum_letters']));
	else
		$template->assign_block_vars('switch_longer_words',array());
Wenn ich den Code crichtig verstehen, dann sollte außerdem bei einem Wort/Text länger 255 Zeichen ein zweizeiliges Textfeld erscheinen?

Was läuft da schief?

Bye
Zuletzt geändert von Dungeonwatcher am Do 10.Jan, 2008 09:32, insgesamt 2-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

So sollte es dann eigentlich auch sein. Zumindest nach diesen Code-Schnipseln.
Du kannst man vor die jeweiligen Stellen das hier einfügen:

Code: Alles auswählen

echo $hangman_cfg['maximum_letters'];exit;
um zu prüfen, was wirklich hier drinnen steht.
Ist das ein anderer Wert, wie in der Hangman-Config eingegeben und gespeichert, ist die Abfrage hierzu falsch oder es wird ein anderer Feldname verwendet, wie in der Config-Tabelle zum MOD angegeben.

BTW:
Das Feld "wort" für den Wert des Hangman muss dabei in der Datenbank auch mindestens als "TEXT" definiert sein, sonst sind Strings über 255 Zeichen nicht möglich. VARCHAR geht nämlich nur bis maximal 255, alles was länger ankommt, wird dann von der DB abgeschnitten...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
Dungeonwatcher
Beiträge: 1055
Registriert: Sa 19.Feb, 2005 01:16
Wohnort: Berlin
Kontaktdaten:

Beitrag von Dungeonwatcher »

[quote="oxpus";p="80506"]...um zu prüfen, was wirklich hier drinnen steht.[/quote]

Es wird in beiden Fällen die 45 angezeigt, was auch korrekt ist.
Ist das ein anderer Wert, wie in der Hangman-Config eingegeben und gespeichert, ist die Abfrage hierzu falsch oder es wird ein anderer Feldname verwendet, wie in der Config-Tabelle zum MOD angegeben.
Das korrekte Feld ist "maximum_letters".
Das Feld "wort" für den Wert des Hangman muss dabei in der Datenbank auch mindestens als "TEXT" definiert sein
Jupp, ist es.

Nachtrag:

Ich habe mal die 255 durch eine 25 ersetzt. Nun wird auch das zweizeilige Textfeld angezeigt. Ändere ich dann die max. Anzahl der Buchstaben auf unter 25, dann wird korrekterweise wieder das einzeilige Feld angezeigt. Soweit funktioniert es schon mal. Nur warum dort 255 Zeichen als Standard vorgegeben sind weiss wohl nur der Programmierer. ^6
Ein sinnvoller Wert währe wohl um die 40-50 Zeichen.
Zuletzt geändert von Dungeonwatcher am Do 10.Jan, 2008 12:20, insgesamt 1-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Nun 255 wohl, weil der Wert für einfache Strings maximal 255 Zeichen beinhalten darf. Klar, wenn Du schon mit weniger mehrzeilig sein willst, einfach eben die Werte anpassen. 40-50 sind hierbei nicht verkehrt.
Solltest Du aber auch dem Autor des Hangman MODs mitteilen...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
Dungeonwatcher
Beiträge: 1055
Registriert: Sa 19.Feb, 2005 01:16
Wohnort: Berlin
Kontaktdaten:

Beitrag von Dungeonwatcher »

Ich habe beide hier angesprochenen Dinge eben in sein Forum geschrieben. Ich bin aber sehr sehr skeptisch ob dort eine Reaktion erfolgt. Es ist einfach zu leer dort. ^6
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Naja, Du weist es nun ja und die anderen hier auch ;)
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
Dungeonwatcher
Beiträge: 1055
Registriert: Sa 19.Feb, 2005 01:16
Wohnort: Berlin
Kontaktdaten:

Beitrag von Dungeonwatcher »

Es lässt mir keine Ruhe. ^6

Wenn ich dieses Array:

Code: Alles auswählen

array('MAXLENGTH' => $hangman_cfg['maximum_letters']);
so ändere:

Code: Alles auswählen

array('MAXLENGTH' => '123');
dann sollte doch die 123 im Template übernommen werden, oder liege ich da falsch?
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Das wäre dann theoretisch so richtig.
Allerdings würde dann die Verarbeitung im ACP ausgehebelt.
Aber wenn es nur um die Darstellung Feld/Textarea geht, solltest Du die Bedingung ändern. Also

Code: Alles auswählen

if(intval($hangman_cfg['maximum_letters'])>0 && intval($hangman_cfg['maximum_letters'])<255)
und hier die 255 durch eine andere Zahl ersetzen.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
Dungeonwatcher
Beiträge: 1055
Registriert: Sa 19.Feb, 2005 01:16
Wohnort: Berlin
Kontaktdaten:

Beitrag von Dungeonwatcher »

[quote="oxpus";p="80534"]Das wäre dann theoretisch so richtig.[/quote]

Gut.
Aber wenn es nur um die Darstellung Feld/Textarea geht
Ja, aber es soll korrekte Wert genommen werden. Diese 123 wird aber ebenfalls nicht übernommen. Da scheint also das Template mit {MAXLENGTH} nichts anfangen zu können. Die Schreibweise ist korrekt und der Switch shorter_words funktioniert ebenfalls. Woran könnte es denn noch liegen?
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Oh, ich sehe gerade:

Code: Alles auswählen

{MAXLENGTH}
ist auch so alleine nicht korrekt!
In der hangman_guess.tpl muss das so lauten:

Code: Alles auswählen

{switch_show_letters.switch_shorter_words.MAXLENGTH}
und in der hangman_create.tpl so:

Code: Alles auswählen

{switch_shorter_words.MAXLENGTH}
Klassische Template-Fehler...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
Dungeonwatcher
Beiträge: 1055
Registriert: Sa 19.Feb, 2005 01:16
Wohnort: Berlin
Kontaktdaten:

Beitrag von Dungeonwatcher »

Mein Held... :anbet :anbet :anbet :anbet :anbet ;)

Damit ist auch Hangman in der Version 1.5.6 W3C konform und enthält keinen mir aufgefallenen Fehler mehr. :cool:

Jetzt "nerve" ich gleich mal den Programmierer damit per eMail. :)
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Ich glaube, Du brauchst einen 2. Rang ;) *duck-und-wech*
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
Dungeonwatcher
Beiträge: 1055
Registriert: Sa 19.Feb, 2005 01:16
Wohnort: Berlin
Kontaktdaten:

Beitrag von Dungeonwatcher »

Ich stehe zu meinen Fehlern...und mit "Nervensäge" könnte ich leben... :pfff
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

A: Jeder hat Fehler, ist also kein Beinbruch
B: Du bist alles andere als eine Nervensäge, sondern ein wertvoller "Debugger"!!!
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
Dungeonwatcher
Beiträge: 1055
Registriert: Sa 19.Feb, 2005 01:16
Wohnort: Berlin
Kontaktdaten:

Beitrag von Dungeonwatcher »

[quote="oxpus";p="80559"]B: Du bist alles andere als eine Nervensäge, sondern ein wertvoller "Debugger"!!![/quote]

Das sag mal meinem Arbeitgeber. Der guckt dich dann verständnislos an. :cool:
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Schon klar ;)
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Antworten