Kai Seibert: Hilfe bei PHP Formatierung / Ausgabe

Hallo zusammen,

ein bekannter von mir hat mir ein PHP Script erstellt das aus einer CSV Datei die Geburtstage der Woche ausliest. Doch ich will die Ausgabe jetzt in einen Fließtext einbauen und ich bekomme das leider nicht hin.

Also die Ausgabe soll so aus sehen:

(Fließtext Anfang) Geburtstag der Woche: Name, Vorname am TT,MM ; Name, Vorname am TT,MM  (Fließtext Ende)

Das Problem ist, dass die Ausgabe jetzt immer auf einer neuen Zeile steht und nicht wie ich es möchte auf einer Zeile.

  
<?  
$fp = fopen('test.csv', 'r');  
$tag = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");  
while (!feof($fp)) {  
    $zeile = fgets($fp,4096);  
    if ($zeile!="") {  
      $tmp=split(";", $zeile );  
      $temp['name']=trim($tmp[0]);  
      $temp['datum']=trim($tmp[1]);  
      ereg ("([0-9]{1,2}).([0-9]{1,2}).([0-9]{4})", $temp['datum'], $tmp);  
      $temp['tag']=$tmp[1];  
      $temp['monat']=$tmp[2];  
      $temp['jahr']=$tmp[3];  
      $speicher[]=$temp;  
    }  
}  
fclose($fp);  
foreach ( $speicher AS $Wert)  
{  
 if (date ("W")==date("W", mktime(0, 0, 0, $Wert['monat'], $Wert['tag'], date("Y") ) ) )  
 {  
 $jahr=date("Y")-$Wert['jahr'];  
echo '<a style="font-family:Arial, Helvetica, sans-serif; font-size:13px; font-weight:700;"><center>Geburtstage der Woche!!</center></a>';  
echo '<a style="font-family:Arial, Helvetica, sans-serif; font-size:12px; font-weight:500;"><marquee><center>'.$Wert['name'].' am '.$Wert['tag'].'.'.$Wert['monat']."</center></marquee></a>\n";  
 }  
 }  
?>  

  1. Mahlzeit Kai Seibert,

    (Fließtext Anfang) Geburtstag der Woche: Name, Vorname am TT,MM ; Name, Vorname am TT,MM  (Fließtext Ende)

    Das Problem ist, dass die Ausgabe jetzt immer auf einer neuen Zeile steht und nicht wie ich es möchte auf einer Zeile.

    Na klar, schließlich hast Du genau das programmiert:

    foreach ( $speicher AS $Wert)
    {
    if (date ("W")==date("W", mktime(0, 0, 0, $Wert['monat'], $Wert['tag'], date("Y") ) ) )
    {
    $jahr=date("Y")-$Wert['jahr'];
    echo '<a style="font-family:Arial, Helvetica, sans-serif; font-size:13px; font-weight:700;"><center>Geburtstage der Woche!!</center></a>';
    echo '<a style="font-family:Arial, Helvetica, sans-serif; font-size:12px; font-weight:500;"><marquee><center>'.$Wert['name'].' am '.$Wert['tag'].'.'.$Wert['monat']."</center></marquee></a>\n";
    }
    }

    Wenn Du nicht möchtest, dass "Geburtstage der Woche!!" (Satzzeichen sind übrigens keine Rudeltiere!) mehrfach erscheint, wieso schreibst Du das dann *IN* die Schleife?

    Auch solltest Du nicht irgendwelche http://de.selfhtml.org/html/text/bereiche.htm#block_zentriert@title=uralten, http://de.selfhtml.org/html/text/schrift.htm#art_groesse_farbe@title=missliebigen oder gar http://de.selfhtml.org/html/text/proprietaer.htm#marquee@title=unstandardisierten Elemente und Attribute zur Textformatierung einsetzen, sondern möglichst http://de.selfhtml.org/css/eigenschaften/schrift.htm@title=CSS - und dieses *nicht* als Inline-Style-Angaben, sondern sinnvollerweise in einer <http://de.selfhtml.org/http://nt-iis01/selfhtml/css/formate/einbinden.htm#separat@title=ausgelagerten Datei>.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Moin

      Außerdem wäre hier die Funktion fgetcsv() ratsam und angebrachter. Dann würde dieses Split-Chaos wegfallen.

      Gruß Bobby

      --
      -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
      ### Henry L. Mencken ###
      -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
      ## Viktor Frankl ###
      ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
    2. Hallo Ekki,

      danke erstmal für deine Hilfe ich habe den Text Geburtstage der Woche jetzt auf der Schleife entfernt. Ich die Ausgabe der Name hintereinander bekomme ich nicht hin. Kannst du mir da nochmal helfen?

      vielen Dank
      Gruß Kai

      Mahlzeit Kai Seibert,

      (Fließtext Anfang) Geburtstag der Woche: Name, Vorname am TT,MM ; Name, Vorname am TT,MM  (Fließtext Ende)

      Das Problem ist, dass die Ausgabe jetzt immer auf einer neuen Zeile steht und nicht wie ich es möchte auf einer Zeile.

      Na klar, schließlich hast Du genau das programmiert:

      foreach ( $speicher AS $Wert)
      {
      if (date ("W")==date("W", mktime(0, 0, 0, $Wert['monat'], $Wert['tag'], date("Y") ) ) )
      {
      $jahr=date("Y")-$Wert['jahr'];
      echo '<a style="font-family:Arial, Helvetica, sans-serif; font-size:13px; font-weight:700;"><center>Geburtstage der Woche!!</center></a>';
      echo '<a style="font-family:Arial, Helvetica, sans-serif; font-size:12px; font-weight:500;"><marquee><center>'.$Wert['name'].' am '.$Wert['tag'].'.'.$Wert['monat']."</center></marquee></a>\n";
      }
      }

      Wenn Du nicht möchtest, dass "Geburtstage der Woche!!" (Satzzeichen sind übrigens keine Rudeltiere!) mehrfach erscheint, wieso schreibst Du das dann *IN* die Schleife?

      Auch solltest Du nicht irgendwelche http://de.selfhtml.org/html/text/bereiche.htm#block_zentriert@title=uralten, http://de.selfhtml.org/html/text/schrift.htm#art_groesse_farbe@title=missliebigen oder gar http://de.selfhtml.org/html/text/proprietaer.htm#marquee@title=unstandardisierten Elemente und Attribute zur Textformatierung einsetzen, sondern möglichst http://de.selfhtml.org/css/eigenschaften/schrift.htm@title=CSS - und dieses *nicht* als Inline-Style-Angaben, sondern sinnvollerweise in einer <http://de.selfhtml.org/http://nt-iis01/selfhtml/css/formate/einbinden.htm#separat@title=ausgelagerten Datei>.

      MfG,
      EKKi

      1. Mahlzeit Kai Seibert,

        Kannst du mir da nochmal helfen?

        Das tue ich gerne - unter zwei Bedingungen:

        1.) Du verpflichtest Dich hiermit auf Immer und Ewig bei den Gebeinen Deiner Ahnen und unter Androhung Deiner ewigen Verdammnis und der Deiner Kinder bis in das dritte und vierte Glied, dass Du in Zukunft auf TOFU verzichtest und

        2.) Du zeigst uns den jetzt aktuellen Code: woher sollen Deine Leser sonst wissen, *was genau* Du *wie* verändert hast?

        MfG,
        EKKi

        PS: *SCNR* :-)

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. Hallo Ekki

          hier mein Aktueller Code.

          <?  
          $fp = fopen('test.csv', 'r');  
          $tag = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");  
          while (!feof($fp)) {  
              $zeile = fgets($fp,4096);  
              if ($zeile!="") {  
                $tmp=split(";", $zeile );  
                $temp['name']=trim($tmp[0]);  
                $temp['datum']=trim($tmp[1]);  
                ereg ("([0-9]{1,2}).([0-9]{1,2}).([0-9]{4})", $temp['datum'], $tmp);  
                $temp['tag']=$tmp[1];  
                $temp['monat']=$tmp[2];  
                $temp['jahr']=$tmp[3];  
                $speicher[]=$temp;  
              }  
          }  
          fclose($fp);  
          echo '<a style="font-family:Arial, Helvetica, sans-serif; font-size:13px; font-weight:700;">Geburtstage der Woche!!</a>';  
            
          foreach ( $speicher AS $Wert)  
          {  
           if (date ("W")==date("W", mktime(0, 0, 0, $Wert['monat'], $Wert['tag'], date("Y") ) ) )  
           {  
           $jahr=date("Y")-$Wert['jahr'];  
          echo '<a style="font-family:Arial, Helvetica, sans-serif; font-size:12px; font-weight:500;"><marquee>'.$Wert['name'].' am '.$Wert['tag'].'.'.$Wert['monat']."</marquee></a>\n";  
           }  
           }  
          ?>
          
          1. Mahlzeit Kai Seibert,

            [code lang=php]<?

            Verlasse Dich nicht darauf, dass short_open_tags auf jedem System aktiviert sind!

            echo '<a style="font-family:Arial, Helvetica, sans-serif; font-size:13px; font-weight:700;">Geburtstage der Woche!!</a>';

            1. Warum benutzt Du ein Link-Element, wenn Du doch überhaupt gar keinen Link setzen willst?

            2. Lagere Deine CSS-Anweisungen - wie bereits empfohlen - sinnvollerweise in <http://de.selfhtml.org/css/formate/einbinden.htm#separat@title=externe Stylesheets> aus.

            3. Satzzeichen sind immer noch keine Rudeltiere.

            echo '<a style="font-family:Arial, Helvetica, sans-serif; font-size:12px; font-weight:500;"><marquee>'.$Wert['name'].' am '.$Wert['tag'].'.'.$Wert['monat']."</marquee></a>\n";

            1. Hier wäre wiederum die Frage nach der Sinnhaftigkeit eines Link-Elements angebracht.

            2. Die o.g. Anmerkungen zu CSS gilt entsprechend.

            3. Du solltest diesen <http://de.selfhtml.org/html/text/proprietaer.htm#marquee@title=<marquee>>-Blödsinn entfernen.

            4. Du willst anscheinend eine Liste von Geburtstagen ausgeben - nutze <http://de.selfhtml.org/html/text/listen.htm#aufzaehlung@title=das dafür vorgesehene HTML-Element>.

            Dazu solltest Du vor dem Schleifendurchlauf die Liste öffnen (<ul>), während jedes Schleifendurchlaufs genau ein Element ausgeben (<li></li>) und danach die Liste schließen (</ul>).

            Das Aussehen kannst Du später <http://de.selfhtml.org/html/text/listen.htm#formatieren@title=mittels CSS beliebig formatieren>.

            MfG,
            EKKi

            --
            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
            1.   
              <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
              <html>  
              <head>  
              <title>Unbenanntes Dokument</title>  
              <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">  
              </head>  
                
              <body>  
                
              <?  
              $fp = fopen('test.csv', 'r');  
              $tag = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");  
              while (!feof($fp)) {  
                  $zeile = fgets($fp,4096);  
                  if ($zeile!="") {  
                    $tmp=split(";", $zeile );  
                    $temp['name']=trim($tmp[0]);  
                    $temp['datum']=trim($tmp[1]);  
                    ereg ("([0-9]{1,2}).([0-9]{1,2}).([0-9]{4})", $temp['datum'], $tmp);  
                    $temp['tag']=$tmp[1];  
                    $temp['monat']=$tmp[2];  
                    $temp['jahr']=$tmp[3];  
                    $speicher[]=$temp;  
                  }  
              }  
              fclose($fp);  
              echo 'Geburtstage der Woche!';  
                
              foreach ( $speicher AS $Wert)  
              {  
               if (date ("W")==date("W", mktime(0, 0, 0, $Wert['monat'], $Wert['tag'], date("Y") ) ) )  
               {  
               $jahr=date("Y")-$Wert['jahr'];  
                
              echo '<li>'.$Wert['name'].' am '.$Wert['tag'].'.'.$Wert['monat']."</li>\n";  
               }  
               }  
              ?>  
                
              
              

              Diesen Punkt versehe ich nicht. Kenne mich mit PHP nicht wirklich aus.

              Dazu solltest Du vor dem Schleifendurchlauf die Liste öffnen (<ul>), während jedes Schleifendurchlaufs genau ein Element ausgeben (<li></li>) und danach die Liste schließen (</ul>).

              1. Mahlzeit Kai Seibert,

                echo 'Geburtstage der Woche!';

                Ich vermute mal, dass dieser Text so etwas wie eine http://de.selfhtml.org/html/text/ueberschriften.htm@title=Überschrift sein soll ... richtig?

                Diesen Punkt versehe ich nicht. Kenne mich mit PHP nicht wirklich aus.

                Dazu solltest Du vor dem Schleifendurchlauf die Liste öffnen (<ul>), während jedes Schleifendurchlaufs genau ein Element ausgeben (<li></li>) und danach die Liste schließen (</ul>).

                Mit PHP musst Du Dich dafür auch nicht wirklich auskennen (wobei ich mich frage, wie dann der restliche Code zustandegekommen ist?) - hauptsächlich mit HTML. Hast Du Dir <http://de.selfhtml.org/html/text/listen.htm@title=den entsprechenden Abschnitt in SELFHTML> durchgelesen?

                Dann wüsstest Du, dass eine einfache Aufzählungsliste folgenden Aufbau hat:

                <ul>  
                  <li>1. Eintrag</li>  
                  <li>Nächster Eintrag</li>  
                  <li>Noch ein Eintrag</li>  
                  <li>...</li>  
                </ul>
                

                Daraus ergibt sich zwangsläufig, dass Du zwar die einzelnen Listeneinträge (bestehend aus "<li>", dem Inhalt und "</li>") innerhalb einer PHP-Schleife ausgeben kannst - nicht aber das öffnende "<ul>" sowie das schließend "</ul>". Diese musst Du also *vor* bzw. *nach* dem Durchlaufen der Schleife ausgeben.

                Was genau ist Dein Problem?

                MfG,
                EKKi

                --
                sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
      2. Moin

        Ich die Ausgabe der Name hintereinander bekomme ich nicht hin. Kannst du mir da nochmal helfen?

        das liegt am center-Element. Nimm dieses raus, dann funktionierts.

        Gruß Bobby

        --
        -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
        ### Henry L. Mencken ###
        -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
        ## Viktor Frankl ###
        ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)