Texte abschneiden für "Teaser"

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

  • Texte abschneiden für "Teaser"

    Hallo zusammen,

    bin neu hier und hab noch nicht besonders viel mit MySQL gemacht. Eine Frage also:

    ich will mit PHP und MySQL einen "Presseartikel"-Bereich machen, und auf der Eingangsseite zu den Presseartikeln sollen zwei oder drei "Teaser" stehen für die neuesten Meldungen, d.h. es wird auf die Meldung hingewiesen und die ersten...sagen wir... 50 Wörter des Meldungstextes werden ausgegeben, danach wird mit drei "Punkten" (...) abgebrochen und daneben kommt dann ein "mehr"-Button der zur vollständigen Meldung verlinkt ist.

    Ich habe bisher schon alle Meldungs-Titelzeilen und die Meldungs-Texte in der MySQL-Datenbank stehen sowie das jeweilige Datum (um auch nach Aktualität sortieren zu können). Wie kann ich das jetzt so auslesen, dass nach 50 Wörtern abgebrochen wird? Und wie kann ich das jeweilige Datum der Meldungen so vergleichen dass genau die aktuellsten beiden Meldungen als "Teaser" erscheinen und nichts anderes?

    Vielen Dank,

    der Programmator
    Zuletzt geändert von Programmator; 04.02.2005, 00:20.

  • #2
    der teaser kann mit php mittels wordwrap() oder explode() gekürzt werden. und die sortierung nach datum kann noch auf sql-ebene stattfinden, und zwar mit ORDER BY (und LIMIT, damit's nicht zu viel wird).

    Kommentar


    • #3
      Statt explode(' ', $text) würde ich eher preg_split('/\s+/', $text) benutzen (in beiden Fällen anschließend mit array_slice abschneiden).

      Willst du nicht nach einer bestimmten Anzahl von Wörtern, sondern nach einer Zeichenzahl kürzen, dabei aber ganze Wörter nicht abschneiden, ist wordwrap die Funktion, die dich glücklich macht.
      mein Sport: mein Frühstück: meine Arbeit:

      Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

      Kommentar


      • #4
        SUBSTRING_INDEX() => http://dev.mysql.com/doc/mysql/de/string-functions.html ... könnte auch hilfreich sein.
        Kissolino.com

        Kommentar


        • #5
          Danke, ich hab das jetzt sowei verwirklichen können mit euren Tips.

          Mir ist jetzt noch die Idee gekommen, dass ich neben den drei "Teasern" darunter die restlichen vorhandenen älteren Pressemeldungen bringe, und zwar nur die Schlagzeile ohne Meldungstext, die verlinkt wird auf die Meldungen.

          Wie kann ich das über MySQL machen dass beim Auslesen der Schlagzeilen nicht nocheinmal ALLES, also nicht nochmal die ersten drei Meldungen die weiter oben schon stehen, ausgegeben wird?

          Vielen Dank im voraus, der Programmator

          Kommentar


          • #6
            warum willste 2 queries machen mach eine query und gib einfach nach den ersten drei was anders aus, sofern nicht zuviele daten geschickt werden kann das sinn machen ansonsten ist LIMIT das zauberwort
            Beantworte nie Threads mit mehr als 15 followups...
            Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

            Kommentar


            • #7
              Hm, irgendwie komm ich auf keinen grünen Zweig hier... Hier mal ein Schnipsel meines bisherigen Codes (verkürzt):

              [COLOR=red]$sql = mysql_query("SELECT Headline, Datum, meldung, id FROM Presse ORDER BY Datum DESC ");[/COLOR]
              [COLOR=green]while ($ds = mysql_fetch_object($sql))[/COLOR]
              [COLOR=blue]{
              $Titel = $ds -> Headline;
              $Zeit = $ds -> Datum;
              $meldungbody = $ds -> meldung;
              $nummer = $ds -> id;

              echo "$Titel $Zeit $meldungbody $nummer";

              }
              [/COLOR]

              Also, ich will daß bei den ersten drei Artikeln/Durchläufen der Schleife $Titel, $Zeit, $meldungbody und $nummer ausgegeben werden; danach für die restlichen Artikel nur die über die ID verlinkte Headline mit Datumsangabe.

              Bin grad am grübeln, an welche Stelle dieses "Kunstwerks" ich die Schleife hinpacken soll die zunächst von 1 bis 3 zählt und "nach" 3 nur noch Headline, Link und Datum rausgibt...

              Wie gesagt, stehe mit PHP und MySQL noch relativ am Anfang...

              any thoughts?

              Der Programmator

              Kommentar


              • #8
                In der Schleife zur Ausgabe zählst du hoch und wenn $zaehler größer als 3 ist, dann gibst du was anderes aus als wenn $zaehler nicht größer als drei ist
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  man könnte aber auch zwei Schleifen draus machen ...

                  $sql = mysql_query(...);

                  for ($i=0; ($ds = mysql_fetch_object($sql)) && ($i<3); $i++)
                  { dieerstendrei($ds); }

                  while ($ds = mysql_fetch_object($sql))
                  { alleweiteren($ds); }
                  mein Sport: mein Frühstück: meine Arbeit:

                  Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                  Kommentar


                  • #10
                    Danke, jetzt funzt es so wie ich es mir vorgestellt hab

                    Kommentar

                    Lädt...
                    X