Deutschland United States United Kingdom
ContentLion - Open Source CMS

Kommentar-Funktion

Kommentar-Funktion

Wenn ich mehrere Einträge aus der Datenbank lesen will, dann geht das ja nicht mit folgendem Code:

PHP-Quelltext

1
$row DataBase::Current()->ReadField("SELECT IFNULL(MAX(row),0) + 1 FROM {'dbprefix'}dashboards WHERE col = 3");


Muss ich das mit einer while-Schleife machen?
Und könntest du einen Beispiel-Code posten? - Danke im voraus. :D

ReadField ist für ein Feld.
ReadRow ist für eine Datenbankzeile
ReadRows ist für mehrere Zeilen.

Für dich ist wohl ReadRows die beste wahl.

Durchlaufen kannst du die einfach mit na foreach. Brauchst auch nicht vorher prüfen, obs ein Array ist, dass ist auf jeden Fall gegeben.

Also stimmt der folgende Cod eungefähr?:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
public function getComments ($pageid) {
        $comments = array();
        $rows DataBase::Current()->ReadRows("SELECT * FROM {'dbprefix'}plugin_comments WHERE pageid = " $pageid " ORDER BY `date`");

        foreach ($rows as $row) {
            $comments[] = $row;
        }

        return $comments;

    }

fast^^ ein DataBase::EscapeString($pageid) sollte im Query sein, um SQL-Injektions zu vermeiden.

Wenn du es noch besser machen möchtes, nennst du $comments in $res um,
damit man sofort sieht, was zurückgegeben wird.

Ok, Danke!
Habe es geändert. :D
@DataBase::EscapeString($pageid):
Ich dachte die Klasse Page macht das schon. ^^

Bei mir funktioniert in der Template-Datei folgender Code nicht:

Quellcode

1
{LANG:DESCRIPTION}: {LANG:COMMENTS_DISCRIPTION}


Meine language-Datei:

PHP-Quelltext

1
2
3
4
5
6
7
<?PHP
    $tokens['plugin_description'] = "F&uuml;gt dem CMS eine Kommentar-Funktion hinzu.";
    $tokens['no_comments'] = "Es wurden noch keine Kommentare geschrieben.";
    $tokens['plugin_comments'] = "Kommentar-Funktion";
    $tokens['description'] = "Beschreibung";
    $tokens['COMMENTS_DISCRIPTION'] = "Plugin-Beschreibung";
?>

Ich habe jetzt schon ein bisschen rumgebastelt und probiert, aber irgendwie stimmt was mit den Events nicht.
Kannst du mal schauen?
Danke im voraus. :D
Die Events befinden sich im Ordner "comments/events" und angelegt werden sie in der Datei "activate.php". ;)
»JuKu« hat folgende Datei angehängt:
  • comments.zip (7,32 kB - 579 mal heruntergeladen - zuletzt: 8. April 2024, 19:37)

musst {LANG:PLUGIN_COMMENTS_DESCRIPTION} nehmen ;-)

Deine Sachen schau ich mir nachher mal an, erstmal das Update fertig machen.

Das funktioniert bei mir trotzdem nicht.
Aber schau dir erst einmal den Code an. ^^

Wenn ich in der const.php DEVELOPMENT auf true setze, kommt folgende Meldfung:

Quellcode

1
Language-Token PLUGIN_COMMENTS_DESCRIPTION}: {LANG:COMMENTS_DISCRIPTION not found


Außerdem ist mir da gleich noch eine Fehlermeldung aufgefallen:

Quellcode

1
Notice:  Undefined index: dir in C:\xampp\htdocs\contentlion_beta\system\plugins\menulistwidget\menulistwidget.php on line 5


Das betrifft folgende Zeilen in der Datei:

PHP-Quelltext

1
2
3
if(Cache::contains("menu","widget_".$_GET['dir'])){
        $this->content Cache::getData("menu","widget_".$_GET['dir']);
      }


Vor diese Zeilen müsste folgender Code stehen, damit das ganze wieder läuft:

PHP-Quelltext

1
if (!isset($_GET['dir'])) { $_GET['dir'] = ""; }

Juhuuuuuuuuuuuuuuuuuuuuuuuuu! :D
Ich habe den Fehler mit dem EventManager gefunden:
Die Ordner-Struktur war falsch.
Ich hatte die Dateien im Ordner "events" statt im Ordner "classes" liegen.
Allerdings sind die Events eig. gar keine Klassen.
Naja. ;)

Im Anhang habe ich mal die neuere Version hochgeladen.
»JuKu« hat folgende Datei angehängt:
  • comments.zip (7,52 kB - 596 mal heruntergeladen - zuletzt: 8. April 2024, 20:33)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »JuKu« (22. April 2012, 14:50)


Hi,

habs jetzt mal getestet ;-)

Folgende Anmerkungen:
- Pluginbeschreibung ohne htmlentities, das machen wir schon ;-)
- Nach dem Aktivieren erscheint auf jeder Seite "Hier erscheint mal die Kommentar-Funktion. ;-)", auch im Backend. Das ist nicht so toll. Man sollte sie am besten pro Seite/Ordner freischalten können.
- Auf Extras-Kommentare sieht es bei mir sehr komisch aus (siehe Anhang)
»stevieswebsite« hat folgendes Bild angehängt:
  • kommentare.jpg

Jep, die Seite im Admin-Bereich ist halt noch in Arbeit. :D
Bei mir sieht sie genau so aus. ;)
@Freischalten:
Wie mache ich das, das so etwas pro Ordner freigeschalten werden kann?
Muss da in den Settings statt global was anderes rein?

Du musst da eigentlich nix machen, macht unsere Settings-Klasse automatisch ;-)

Einfach Settings::getValue benutzten.

Diese Methode benutze ich doch schon. :D

Dann aber nicht richtig^^
Vor allem im Admin-Bereich sollte keine Kommentar-Funktion zu sehen sien ;-)

Vermutlich ist diese Zeile Schuld daran:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Database::Current()->Execute("INSERT INTO {'dbprefix'}settings (
`role` ,
`dir` ,
`area` ,
`areaType` ,
`property` ,
`value` ,
`activated` ,
`description` ,
`type`
)
VALUES (
'3', 'global', 'global', 'global', 'guestbook', '1', '1', 'Gästebuch-Funktion', 'Plugin_Guestbook_OptionSelector'
);

Nein, Sorry, war eine Zeile aus dem Gästebuch-Plugin. :D
Stimmt, bei der Kommentar-Funktion ist noch gar keine Einstellung angelegt.

Wie mache ich eig. eine Einstellung nur für einen best. Ordner? :D
(Also gib mal bitte den MYSQL-Befehl an)

Ähnliche Themen