Script für Kommentare: entweder fertig gesucht oder hilfe bei anpassen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Script für Kommentare: entweder fertig gesucht oder hilfe bei anpassen

    Hi@all!

    Ich möchte auf meiner Seite die Möglichkeit geben, die User Kommentare abzugeben. Ich bin gerade dabei auf das CMS phpCMS umzustellen und hab da auch schon ein einfaches Script dafür.

    Probleme:
    1) Mehrfachpostings werden nicht verhindert
    2) Postings werden nicht ab einer bestimmten Anzahl auf mehreren Seiten angezeigt.

    Was ich machen könnte wäre jeder Seite ein gutes Guestbook Script zu verpassen. Nur möchte ich eben nicht für jede Seite ein eigenes Script einbinden, sondern das ganze irgendwie automatisieren, wie bei dem Scirpt das ich schon habe... hat jemand eine Idee wie ich das machen könnte.

    Danke mal für eure Hilfe,
    Gruß,
    Syco

    P.S. wie das ganze aussieht könnt ihr mal auf http://www.thema-drogen.net/l_raetsc...n_pflanzen.htm sehen.
    [COLOR=darkblue].: 1+1=23 :.[/COLOR]

  • #2
    Das mit der Seite ist denkbar einfach hinzubekommen wenn man logisch das ganze betrachtet.

    Ist-Zustand: gefüllte Datenbank die komplett dargestellt wird
    Soll-Zustand: eine bestimmte Anzahl an Datensätzen nur anzeigen und den Rest dann auf weitere Seiten verteilen.

    Um die Datsätze auf mehrere Seiten zu verteilen ist es erst mal wichtig das man weiss wieviele auf eine Seite angezeigt werden sollen.

    Gut gehen wir mal von 8 Datensätze pro Seite aus. Nun aber müssen wir wissen wie groß die Datenbank ist bzw. wieviele Datensätze dort sind wo verteilt werden müssen. Das lässt sich durch eine Funktion leicht ermitteln:

    PHP-Code:
    $Anzahl ="8";
    $table="Deine Kommentar Tabelle";
    $result mysql_query("select * from $table");

    $menge = @mysql_numrows($result); /* Funktion ermittelt wieviele Datensätze vorhanden sind */ 
    Nun da wir wissen wieviele Datensätze verteilt werden müssen, muss nun ermittelt werden mit Hilfe einer mathematischen Formel wieviele Seiten es geben wird. Das ist auch leicht da wir einfach das Verhältnis zwischen Anzahl der Datensätze und Anzahl der Ausgaben nehmen können, da es aber manchmal vorkommen kann aufgrund der Mathematik das die Zahlen nicht immer aufgehen müssen wir das auch berücksichtigen indem wir das ganze einfach aufrunden.

    PHP-Code:
    // Auf Seiten verteilen
      
      
    $seiten ceil($menge $Anzahl);

    /* Für das spätere starten des Skriptes ohne Seitenangabe soll die erste Seite angezeigt werden */
    if ( !$z )
      
    $z 1;

    /* Tut im moment noch nichts zur Sache */ 
    So da wir nun die Anzahl der Seiten haben müssen wir nur noch eine entsprechende For-Next Schleife scripten die uns jeweils nur die Datensätze auszählt die für die entsprechende Seite angezeigt werden sollen. Dafür ist aber noch ein wenig Vorarbeit zu leisten. Was aber auch einfach naheliegend ist indem wir nun ganz einfach das Maximum der Schleife ausrechnen und das Minímum.

    Maximum:
    Mit Hilfe der Anzahl der Datensätze und der Seitenzahl die wir wollen können wir das Maximum berechnen:

    PHP-Code:
    $maximum $z $Anzahl
    Minimum:
    Das Minum also den Startwert der For-Nextschleife können wir ermitteln indem wir die Anzahl der zu anzeigenden Datensätze vom Maximum (dem Endwert der For-Next Schleife) abziehen:

    PHP-Code:
    $minimum $maximum $Anzahl
    So nun ein Rechenbeispiel um das ganze besser verstehen zu können:
    Wir wollen 8 Datensätze pro Seite anzeigen und haben 16 Datensätze ingesamt. Diese müssen auf 2 Seiten ja kommen:

    PHP-Code:
    1. Seite
    $maximum 
    8
    $maximum hat Wert 8
    ;

    $minimum 8
    $minimum 
    0

    For next Schleife zählt nun von 0 bis 8 bei Seite 1


    2.Seite
    $maximum 
    8
    $maximum hat Wert 16
    ;

    $minimum16 8
    $minimum hat Wert 8
    ;

    For- 
    Next Schleife zählt nun von 8 16 
    So nun haben wir für alle Seite die jeweils passenden Datensätze berechnet nun fehlt noch eine Bedingung die überprüft ob überhaupt Datensätze vorliegen und dann im positiven Aspekt die Zählschleife startet und im negativen Falle eine Meldung bringt das noch keine Einträge vorliegen. Muss nicht sein bietet sich aber an. Folglich die Schleife + Bedingung:

    PHP-Code:
    If ($menge 0) {
        
    // Ausgabe der Datensätze, wenn vorhanden
            
    for($i=$minimum;$i $maximum$i++) {
          
    $nr mysql_result($result,$i,"nr");
          
    $titel mysql_result($result,$i,"titel");
          
    $autormysql_result ($result,$i,"autor");
                print 
    " Der Titel $titel<br>";
                print
    "Der Autor:$autor";  
    // Ende der Zählschleife
      
    // Ende ob $menge > 0 wenn nicht dann gleich Alternative Else Ausgabe

    else { 
            echo 
    "<b><div class=\"headline\">Aktuelles aus der Spieleschmiede:</div></b><br><br>";
          echo 
    "<li>Der Webmaster hat noch keine News geupped!<p>"
    //ende von else 

    So die Ausgabe stimmt jetzt alles wird vernünftig berechnet aber es fehlt noch was, du fragst dich was könnte es sein.
    Antwort: Die Links kommen damit man auf die nächste Seite weitergelangt. Das geht auch über eine Bedingung die für z jeweils 1 dazu gibt oder 1 Abzieht, je nachdem.

    PHP-Code:
    If ($menge $Anzahl){
          echo 
    "<b><center>";
          
    $vor $z 1// Gibt einen Statuswert ab der sagt ob es noch ältere Einträge gibt.
          
    $next $z 1// Gibt einen Statuswert ab ob es noch weitere gibt.

          
    If ($vor != ) echo "<a href=\"News.php?z=$vor\">";
          If (
    $vor == 0) { echo "<span class=\"links_inaktiv\"><strike>Neuere</strike></span>";
          } else {echo 
    "<span class=\"links_normal\">Neuere</span>"; }
          If (
    $vor !=0) echo "</a>";
          echo 
    " | ";
          If (
    $next <= $seiten) echo "<a href=\"News.php?z=$next\">";
          If (
    $next $seiten) { echo "<span class=\"links_inaktiv\"><strike>&Aumlltere</strike></span>";
          } else {echo 
    "<span class=\"links_normal\">&Aumlltere</span>"; }
          If (
    $next <=$seiten) echo "</a>";
          echo
    "</b></center><P>";
     } 
    Das kleine Skript sieht ein bisschen kompliziert aus ist es aber nicht wirklich.

    kleines Beispiel bei 2 Seiten gibt es 1 die davor liegt, die Statuswert sehen dann bei $vor so aus:
    aktuell 1 Seite = $vor = 1 - 1 = 0 also keine weitere Seite mehr
    aktuell 2 Seite = $vor = 2 - 1 = 1 es gibt noch eine Seite davor

    Für weitere Seiten gleiches Beispiel
    aktuell 1 Seite = $next = 1 + 1 = 2
    aktuell 2 Seite = $next = 2 + 1 = 3


    Die Anzeige: Wie du siehst hab ich in dem Beispiel jeweils zwei CSS Formate für 2 Zustände definiert: links_normal und links_inaktiv. links_normal wird immer angezeigt wenn man noch vor bzw. zurück blättern kann, links_inaktiv wird zugeweisen wenn das nicht mehr möglich ist, dabei könnte man z.B. durchgestrichen und in einer dunklen Farbe hinterlegen. Man könnte zwar die Formatbedingen abändern so dass wenn keine Blättern mehr möglich ist kein link mehr kommt zum blättern aber das würde unschön wirken.

    Nun zu den Bedingung für vorblättern:
    Solange $vor nicht sagt das keine Seiten mehr gibt wird der vorblättern Link angezeigt bzw. funktioniert technisch, aber ohne LInkbeschreibung!!
    Wenn man nicht mehr vorblättern kann wird er als inaktiver Link dargestellt.
    Wenn man aber doch noch blättern kann wird diese Bedingung einen aktiven Link setzen. Danach kommt noch eine Bedingung (die weggelassen werden kann, aber nur als ein Zusatzschutz fungiert und beim weiteren vorblättern möglich den Link klickbar macht durch </a> Tag, wäre er weg könnte man nicht klicken!

    Das lässt sich auch im groben für das weiterblättern erklären.
    2 Seiten; $Vor bei seite1
    Wenn 1 <= 2 dann spuckt er einen Teil vom Link aus, muss kleiner ode gleich sein da ansonsten für den Fall das die letzte Seite angezeigt wird ansonsten keine Beschriftung sein wäre.

    2 Seiten; $Vor bei seite2 -> letzte Seite wo angezigt wird Link muss inaktiv werden: (3 kommt durch $vor zustande da Seite 2 erreicht ist also z=2 ist, $vor liefert aber Status von 3; $vor = 2+1.
    Wenn 3 > 2 dann wird der inaktive Link gesetzt
    andernfalls wird der aktive Link gesetzt. Danach wird wieder eine Sicherheitsbeding in dem Fall wenn $vor noch nicht bei der letzten Seite ist oder Seiten davor der </a> Tag für einen funktionierenden Tag gesetzt.


    So das wars, ich hoffe dieses Tut von mir eben bringt dich der Sache näher.

    Ach ja da ich mir schon die Mühe gemacht habe könnten die Admins den Tread vielleicht auch als Sticky machen, oder sonstwie verwenden ist free.
    [color=blue]MfG Payne_of_Death[/color]

    [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
    [color=red]Merke:[/color]
    [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

    Murphy`s Importanst LAWS
    Jede Lösung bringt nur neue Probleme
    Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
    In jedem kleinen Problem steckt ein großes, das gern raus moechte.

    Kommentar


    • #3
      @POD:
      Du kannst es gerne bei den Codesnippets noch mal Posten. Hab es zwar nicht durchgelesen, aber ist bestimmt sinnvoll...

      Kommentar


      • #4
        @TobiaZ:

        1.) Für dich immer noch Payne_of_Death, vergleicht mich hier mit dem alten POD Racing Game tztztz nicht ganz ernst nehmen

        2.) Und Zweitens hab ich den Code bzw. das Tut bei den Codesnippets gepostet

        Gruß

        Payne_of_Death
        [color=blue]MfG Payne_of_Death[/color]

        [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
        [color=red]Merke:[/color]
        [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

        Murphy`s Importanst LAWS
        Jede Lösung bringt nur neue Probleme
        Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
        In jedem kleinen Problem steckt ein großes, das gern raus moechte.

        Kommentar


        • #5
          Vielen Dank, Payne_of_Death!!!

          Hatte bei dem Namen eher an die Leute gedacht, die Musik machen.

          Kommentar


          • #6
            oh mann, schon mal vielen vielen Dank für deine Mühe. Ich muss mir jetzt mal einen Schreibtisch kaufen. Aber am Abend werde ich mir das mal genauer ansehen.

            Gruß,
            Syco
            [COLOR=darkblue].: 1+1=23 :.[/COLOR]

            Kommentar

            Lädt...
            X