Seite 1 von 1

Zum "3B.sp.6n"-Problem in der Terminverwaltung von

Verfasst: So 16. Mai 2004, 15:52
von pinkernell
Wenn das Ein- und Ausgabe-Modul zusammen mit dem Headline Modul verwendet wird, zeigt die Terminübersicht im Enddatum die Zeichenfolge "3B.sp.6n" an. Das wurde auch schon hier erwähnt, und geraten, keine Headline zu verwenden.

Schade ist das, weil ich ganz gerne die Terminartikel auch als reguläre Artikel weiterverwenden will und diese daher im Layout und sonstigem Verhalten den übrigen anpassen will. Wäre es daher nicht möglich, das Modul so abzuändern, dass statt des "Termin Titels" die Headline CMS_HEAD[1] verwendet wird? Außerdem sollten auch weitere Text- und Html-Module zugelassen werden. Ich habe keine Programmierkenntnisse und kann es daher kaum selbst machen.

Aber ich habe mich auf die Suche nach der Ursache des "3B.sp.6n"-Problems gemacht und kann zumindest Folgendes berichten:

Ich habe durch eine Veränderung im Übersichtsmodul mir die Werte der Variablen $termin["xxx"][$i] ausgeben lassen, darunter, "datum1":

Code: Alles auswählen

echo '
<tr>
<td>Datum1</td>
<td>'
.$termin["datum1"][$i].'
</td>
</tr>
';
Die Headline enthielt neben dem Default Leerzeichen (was immer da ist, auch wenn man nix eingegeben hat) ein zusätzliches Leerzeichen. Das Ergebnis ist der folgende String:

Code: Alles auswählen

2004-05-16 %26nbsp%3B%26nbsp%3B 8:00
Offenbar wird zwischen dem Datum und der Uhrzeit der Inhalt der Headline eingelesen, nämlich zwei Leerzeichen. Wenns nur, wie üblich, ein Leerzeichen ist, heisst es "%26nbsp%3B", und dieser String hat genau die Länge eines Datums. Das Modul interpretiert diesen String als Enddatum und liest konsequenterweise hieraus das Datum "3B.sp.6n".

Wieso die Headline in "datum1" eingefügt wird ist mir ein Rätsel. Wo das im Übersicht-Modul passiert, ist hier:

Code: Alles auswählen

case 1: // Anfangsuhrzeit
    $termin["zeit1"][$anz] = $db->f("value");
    $termin["datum1"][$anz] = $termin["datum1"][$anz]." ".$termin["zeit1"][$anz];
   break;
Kommentiert mal das .$termin["zeit1"][$anz] in der drittenProgrammzeile raus. Dann ist neben der Uhrzeit auch der Headlineinhalt verschwunden. Das .$termin["zeit1"][$anz] allein enthält aber auch nur die Uhrzeit. Wie da noch was zwischen rutscht, können vielleicht nur die PHP Experten erzählen.

Vielleicht gibt's hier ja einen solchen, den das interessiert.

Guido

Verfasst: Mo 17. Mai 2004, 13:24
von 2Code
zeit hab ich leider im momet keine( und auch keinen termincal installiert), aber als quick and dirty hätte ich zwei lösungen:

alles ein eine variable rein schreiben
und dann zum schluss ein string replace drüberlaufen lassen..

$string = "bla";
$string .= "mehr bla bla";

$string = str_replace("zuersetzendes", "", "$string");

Verfasst: Di 25. Mai 2004, 07:39
von CyberDan
gibt es inzwischen eine funktionierende Lösung zu dem Problem? Hat schon jemand die Variante mit dem string replace testen können?

Verfasst: Di 25. Mai 2004, 08:28
von timo
Ähm einfach den String vorher urldecoden - dann klappt's warscheinlich auch mit dem String.

Verfasst: Di 25. Mai 2004, 09:20
von Acidgod
Ich hatte nach dem Einbinden eines Bild Modul auch das Problem mit dem Enddatum...

Bei mir hat ein Blick in die DB geholfen...

Code: Alles auswählen

case 3: // Enduhrzeit
if($db->f("idtype") == '3' && $db->f("typeid") == '3'){
     $termin["zeit2"][$anz] = $db->f("value");
}
break;
Sucht euch den idtype und typeid raus und schon klappt es mit dem Nachbarn... (o: