• Liebe User, bitte beachtet folgendes Thema: Was im Forum passiert, bleibt im Forum! Danke!
  • Hallo Gemeinde! Das Problem leidet zurzeit unter technischen Problemen. Wir sind da dran, aber das Zeitkontingent ist begrenzt. In der Zwischenzeit dürfte den meisten aufgefallen sein, dass das Erstellen von Posts funktioniert, auch wenn das Forum erstmal eine Fehlermeldung wirft. Um unseren Löschaufwand zu minimieren, bitten wir euch darum, nicht mehrmals auf 'Post Reply' zu klicken, da das zur Mehrfachposts führt. Grußworte.

und nochmal RSS

Mitglied seit
08.03.2004
Beiträge
1.574
Reaktionen
0
ich hab noch ein Problem.

Ich hab das jetzt soweit hinbekommen, dass flexible Feeds möglich sind und auch die entsprechenden Daten aus der DB gelesen werden. RSS-Feed wird erstellt und alles toll.
Das dumme ist aber wenn ich an einem link ? dranhab oder ein &, dann spinnt er immer rum. Ich vermute mal, weil XML diese Zeichen nicht mag.
Nun möchte ich aber nicht meinen ganzen Blog umproggen müssen, dass ich die entsprechenden Ziele auch ohne ampersands erreiche. Bei anderen Blogs geht das ja auch... Wie macht man das?

funktioniert das mit %irgendwas? Wo krieg ich dafür die Zahlen her? Ich dachte zuerst das wäre % plus ASCII, aber das funktioniert irgendwie nicht, egal ob ich die rechtesten beiden Ziffern von dezimal, oktal oder hexa nehme.
 
Mitglied seit
02.08.2002
Beiträge
2.781
Reaktionen
0
du solltest in urls kein einfaches & nutzen, sondern &

das & leitet sonderzeichen ein. das ganze hängt imo nicht mal vom verwendeten encoding ab sondern ist in den URL spezifikationen festgeschrieben...
 
Mitglied seit
02.08.2002
Beiträge
2.781
Reaktionen
0
die usereingaben können mit nem ordentlichen encoding (utf!!) übergeben werden
 

bog

Mitglied seit
02.08.2002
Beiträge
10.121
Reaktionen
0
Ort
auf dem mutterschiff
und was aendert das daran, dass xml keine ampersands in tags ohne nachfolgende sonderzeichen-kombination akzeptiert?
 
Mitglied seit
02.08.2002
Beiträge
2.781
Reaktionen
0
die URL wird anders enkodiert als der content...
 
Mitglied seit
08.03.2004
Beiträge
1.574
Reaktionen
0
ok. das läuft.

wie schonmal erwähnt soll das ganze ja recht flexibei sein. ich würde deshalb gern eine liste in mein Formular einbauen, die es dem Benutzer möglich macht zu sagen "mich interessieren nur die Einträge der letzten X Wochen". Da krieg ich also eine int-Zahl die mal sieben gerechnet und vom heutigen datum abgezogen ein datum ergeben, das ich als Grenzwert nutzen kann. Dummerweise hat so ein Monat aber nicht immer genau 30 Tage.
Muss ich da jeden möglichen Fall selbst in eine Methode programmieren, oder gibt es schon eine php methode, die mir das aktuelle datum um X Tage erhöht oder verringert?
 

bog

Mitglied seit
02.08.2002
Beiträge
10.121
Reaktionen
0
Ort
auf dem mutterschiff
da reicht eine methode. die schreib ich dir aber jetzt nicht. hier das prinzip:

du schaufelst den derzeitigen monat und das derzeitige jahr jeweils in ne variable. dann machst du dir nen unix timestamp mit mktime() und setzt als wert fuer den monat einfach $monat-1 ein. dann kannst du per sql werte mit WHERE `datum` > '$timestamp' rausselecten.

generell ist das ganze aber unsinnig. ein rss feed ist in der regel so ausgelegt, dass er nur soundsoviel items (10-30) enthaelt, und ein rss-reader markiert diese, die der benutzer gelesen hat, einfach als gelesen. eine moeglichkeit zu uebergeben, die ausgabe nach zeitraum zu begrenzen ist schlichtweg ueberfluessig. und _wochen_ haben ohnehin immer 7 tage. immer. versprochen.
 
Mitglied seit
08.03.2004
Beiträge
1.574
Reaktionen
0
ich kann nicht nach datum rausselecten. Ich krieg das Datum als ein Element in der 2. Dimension eines 2d-Feldes. Mehr geht nicht. Deshalb muss ich ne Variable finden, die ich mit diesem Datum in dem Array vergleichen kann.

Und gleich noch ne zweite Frage:

Ich hab jetzt angefangen meine Links etwas dynamischer zu gestalten (mir bleibt da auch garnix anderes übrig). Wenn ich jetzt aber einfach in den Link als erstes "/index.php?usw=blabla&so=weiter" schreibe, wird der RSS Code nicht ordentlich interpretiert und sieht dann im reader so aus als hätte er keine elemente. $PHP_SELF oder $_SERVER['PHP_SELF'] taugt auch nicht, da es mir nur "/rss.php" liefert, die ich als Links für die Items ja schlecht verwenden kann. Gibt es eine Möglichkeit dynamisch die wirkliche aktuelle Domain davorschreiben zu lassen?
 

bog

Mitglied seit
02.08.2002
Beiträge
10.121
Reaktionen
0
Ort
auf dem mutterschiff
1. hae? gib mal bitte ein praxisnahes beispiel. meinetwegen einen var_dump() des arrays. ich dachte eigentlich, du seist clever und speicherst das datum des artikels in der mysql als unix timestamp. dann wird das ganze richtig einfach

2. da musst du ein bisschen tricksen. annihilator hat mir mal sowas geschrieben, aber ich finds grad nicht. die idee ist, das array $_GET[] durchzugehen und einfach keys sowie values als string zusammenzukleben.
 

killerchicken_inaktiv

Guest
Zu 1: Sag uns GENAU wie deine Datenstruktur aussieht, dann koennen wir dir vlt. helfen

Zu 2:

Guck dir mal das hier an und sag ob es dir hiflt:

echo 'http://' . $_SERVER[ 'HTTP_HOST' ] . $_SERVER[ 'PHP_SELF' ] . "?" . urlencode( $_SERVER[ 'QUERY_STRING' ] );

(evt. falls du https oder nen anderen Port als 80 benutzt noch anpassen, aber ich denke eher net dass das fuer dich relevant ist)
 
Mitglied seit
08.03.2004
Beiträge
1.574
Reaktionen
0
das mit http_host ist genau das was ich brauche. danke!!


@bog:
hast du immer bog, alles nochmal umzuschreiben nur weil du jetzt mal eine Sache anders machen willst?
Ich hab mir das ganze hier schön in 3 Ebenen zurecht gebastelt. Eine Ebene arbeitet nur mit der Datenbank, eine Ebene erstellt nur das Layout und dazwischen liegt die Verwaltungsebene, welche beide Ebenen verbindet und den großteil der Logik enthält.
Ich hab wirklich keine Lust die eine DB-Datei zu ändern, nur weil ich an der anderen was machen möchte.



So und um nochmal genau zu sagen, was ich zur verfügung habe:

Code:
Array
(
    [0] => Array
        (
             [Attr_1]=Wert1
             [Attr_2]=Wert2
             [Attr_3]=Wert3
             [Attr_4]=Wert4
        )
    [1] => Array
        (
             [Attr_1]=Wert5
             [Attr_2]=Wert6
             [Attr_3]=Wert7
             [Attr_4]=Wert8
        )
    [2] => Array
        (
             [Attr_1]=Wert9
             [Attr_2]=Wert10
             [Attr_3]=Wert11
             [Attr_4]=Wert12
        )
)

Und ich sag jetzt einfach mal Attr_3 ist das Erstellungs-Datum. Dazu habe ich ja mit date(Ymd) (das ist übrigens auch die Formatierung des Datums im Array!) das heutige Datum herauskriegen. Und ich habe noch eine int-Variable die mir die Anzahl der Wochen angibt, die für den User interessant sind. Ich muss also wirklich vom heutigen Datum die X Wochen abziehen, wobei berücksichtigt werden muss, dass ein Monat unterschiedlich viele Tage haben kann.

Aber das ganze hat sich seit 1 Minute sowieso erledigt, weil ich grad von nem Kumpel erfahren hab, dass mein (zum glück modifizierter) apache dafür schon ne Funktion hat. :elefant:
 
Mitglied seit
08.03.2004
Beiträge
1.574
Reaktionen
0
edit: alles klar. kleiner Tippfehler und das der Test schiefgeht, liegt an einer früher mal feherhaft geschriebenen Basisklasse. sry wegen postverschwendung.
 

killerchicken_inaktiv

Guest
Original geschrieben von Sholvar
ich kriege folgende Fehlerausgabe: PHP Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING

theoretisch dürfte ihn die Code-Zeile also garnicht interessieren...

Den Fehler hat Pikkart schon gepostet, aber dein Verstaendnis was Parse Errors angeht ist falsch.

Prinzipiell wird zunaechst die ganze Datei geparst, und wenn du Syntax-Fehler drinhast, wird die gesamte Datei nicht ausgefuehrt. Das kann wie in deinem Fall ein vergessener Punkt sein, um Strings miteinander zu verbinden, oder ein vergessenes Semikolon, oder sonstiges

Gruss
Sebastian
 
Mitglied seit
08.03.2004
Beiträge
1.574
Reaktionen
0
da wart ihr mal weider schneller als ich :/


ja. ich hab zuerst garnicht mit solchen fehlern gerechnet, weil die zeile vorher nicht bemängelt wurde. irgendwie komisch...
 

killerchicken_inaktiv

Guest
lass doch beim naechsten Mal den Ursprungstext stehen, plz
 
Oben