Jan: Bildschirmausgabe gibt ungewollte Zeichen wieder

Hallo

habe in PHP einen Kalender, den ich als Funktion abrufen kann. Jedoch bekomme ich eine Bildschirmausgabe, die nicht exakt das wiedergibt, was ich programmiert bzw. mit HTML dargestellt habe. Zu sehen ist das hier: Bildschirmausgabe

Es erscheinen auf der linken Seite des Bildschirms mehrere kleine Rubriken. U.a. auch die Rubrik "Gigkalender". Dort kommt es zwischen dem eigentlichen Kalender und dem darüberliegenden Strich <hr> zur Ausgabe von "\n". Das ist von mir nicht gewollt.

Der PHP-Code sieht wie folgt aus:

  
// Gigkalender  -------------------------------------------------------------------------------------------------------------------------------------  
function gigkalender()  
{  
 // Monat und Jahr festlegen  
 $monat=date('n');  
 $jahr=date('Y');  
 // Erster des Monats ist der wie vielte Tag im Kalender  
 $erster=date('w', mktime(0,0,0,$monat,1,$jahr));  
 // Tage im Monat insgesamt  
 $insgesamt=date('t', mktime(0,0,0,$monat,1,$jahr));  
 // Monatsnamen in Array ablegen  
 $heute=date('d');  
 $monate=array('Januar','Februar','M&auml;rz','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember');  
  
 // Gigabfrage ob überhaupt Gigs in diesem Monat des Jahres anstehen  
 $gigabfrage=mysql_query("SELECT * FROM gigs WHERE JAHR = '$jahr' AND MONAT = '$monat' ORDER BY TAG DESC;");  
 $gig_kal=@mysql_fetch_array($gigabfrage);  
  
 // Bedingung: Es muss ein Gig in der Zukunft des jetzigen Monats liegen damit eine Bildschirmausgabe des Gigkalenders erfolgt  
 if ($gig_kal['TAG'] >= $heute)  
 {  
  // Ausgabe des Kalenders 1. Zeile mit Wochentagen  
  if($erster==0){$erster=7;}  
  
  // Überschrift  
  echo '<div align="center"><hr color="#FFFFFF" width="100" size="1">';  
  echo '<div id="rip">Gigkalender</div>';  
  echo '<hr color="#FFFFFF" width="100" size="1">';  
  
  // Kalenderausgabe  
  echo '<table frame="1" bordercolor="#252525" style="border-collapse: collapse" cellpadding="4" cellspacing="3">';  
  echo '<th colspan=7 align=center style="font-size:12pt; font-family:Arial; color:#ffffff; background-color:#252525;" >';  
  echo '&nbsp;&nbsp;&nbsp;'.$monate[$monat-1].' '.$jahr.'&nbsp;&nbsp;&nbsp;';  
  echo '</th>';  
  echo '<tr>  
		<td style="font-size:8pt; font-family:Arial; color:#252525"><b>Mo</b>  
		</td><td style="font-size:8pt; font-family:Arial;color:#252525"><b>Di</b></td>';  
  echo '<td style="font-size:8pt; font-family:Arial;color:#252525"><b>Mi</b></td>  
 		<td style="font-size:8pt; font-family:Arial;color:#252525"><b>Do</b></td>';  
  echo '<td style="font-size:8pt; font-family:Arial;color:#252525"><b>Fr</b></td>  
  		<td style="font-size:8pt; font-family:Arial;color:#ffffff"><b>Sa</b></td>';  
  echo '<td style="font-size:8pt; font-family:Arial;color:#ffffff"><b>So</b></td></tr>';  
  echo '<tr>\n';  
  
  // Start der Tage  
  $i=1;  
  
  // Leere Kästchen zu beginn des Kalenders  
  while($i<$erster)  
  {  
   echo '<td>&nbsp;</td>'; $i++;  
  }  
  
  // Start der Tage  
  $i=1;  
  
  // Wenn $i kleiner als die Gesamtanzahl der Tage des Monats, dann durchlauf diesen Bereich  
  while($i<=$insgesamt)  
  {  
   // Gigabfrage  
   $gigabfrage=mysql_query("SELECT * FROM gigs WHERE JAHR = '$jahr' AND MONAT = '$monat' AND TAG = '$i';");  
   $gig_kal=@mysql_fetch_array($gigabfrage);  
  
   // Beginn der Zahlen in der Kalendertabellenausgabe  
   $rest=($i+$erster-1)%7;  
  
   // Heute - Hintergrundfarbe  
   if($i==$heute && $i!=$gig_kal['TAG'] && $monat==date('n'))  
   {  
    echo '<td style="font-size:8pt; font-family:Arial; background:#ffffff;" align=center>';  
   }  
   else if($i==$gig_kal['TAG'])  
   {  
    echo '<td style="font-size:8pt; font-family:Arial; background:#FF0000;" align=center>';  
   }  
   // Alle anderen Tage außer Heute  
   else  
   {  
    echo '<td style="font-size:8pt; font-family:Arial; color:#252525;" align=center>';  
   }  
  
   // Heute - Schriftfarbe  
   if($i==$heute && $i!=$gig_kal['TAG'] && $monat==date('n'))  
   {  
    echo '<span style="color:#000000;">'.$i.'</span>';  
   }  
   else if($i==$gig_kal['TAG'])  
   {  
    echo '<span style="color:#FFFFFF;"><a href="http://www.palzrock.de/finerip/termine.php" target="_self" title="'.$gig_kal[WAS].' in '.$gig_kal[WO].'"><blink>'.$i.'</blink></a></span>';  
   }  
   // Alle Samstage  
   else if($rest==6 && $i!=$gig_kal['TAG'])  
   {  
    echo '<span style="color:#ffffff">'.$i.'</span>';  
   }  
   else if($rest==6 && $rest==$gig_kal['TAG'])  
   {  
    echo '<span style="color:#ffffff" background:#ff0000;"><a href="http://www.palzrock.de/finerip/termine.php" target="_self" title="'.$gig_kal[WAS].' in '.$gig_kal[WO].'"><blink>'.$i.'</blink></a></span>';  
   }  
   // Alle Sonntage  
   else if($rest==0 && $i!=$gig_kal['TAG'])  
   {  
    echo '<span style="color:#ffffff">'.$i.'</span>';  
   }  
   else if($rest==0 && $rest==$gig_kal['TAG'])  
   {  
    echo '<span style="color:#ffffff" background:#ff0000;"><a href="http://www.palzrock.de/finerip/termine.php" target="_self" title="'.$gig_kal[WAS].' in '.$gig_kal[WO].'"><blink>'.$i.'</blink></a></span>';  
   }  
   // Alle anderen Tage  
   else  
   {  
    echo $i;  
   }  
  
   // Ende der Kalendertabellenzeile  
   echo "</td>\n";  
  
   // Ende des Kalenders  
   if($rest==0)  
   {  
    echo '</tr><tr>';  
   }  
  
   // $i erhöhen für nächste Zeile  
   $i++;  
  }  
  
  // Ende der Kalendertabelle  
  echo '</tr>';  
  echo '</table>';  
  // Schlussstrich und Ende der <div center>-Klammer vor der Überschrift  
  echo '<hr color="#FFFFFF" width="100" size="1"></div>';  
  // Freizeile zur ggf. nächsten Bildschirmausgabe  
  echo '<p>&nbsp;</p>';  
  
 // ENDE der Bedingung "Es muss ein Gig in der Zukunft des jetzigen Monats liegen damit eine Bildschirmausgabe des Gigkalenders erfolgt"  
 }  
  
// Ende der Funktion gigkalender();  
}  

Danke für jeden hilfreichen Tipp!

  1. Hallo,

    suche in deinem Quelltext nach \n.

    Das soll für einen Zeilenumbruch (im Quelltext) stehen. Das funktioniert aber nur wenn es in PHP in doppelten Anführungszeichen steht. Deshalb siehst du dein erstes \n in der Ausgabe (da sind single Quotes) und dein zweites \n siehst du nicht.

    Wenn du das änderst sollte es klappen.

    Gruß
    Alex

    PS: Wenn du kurz Zeit hast würde ich dich bitten, an meiner Umfrage für meine Bachelorarbeit teilzunehmen:
    http://bittersmann.de/tests/border-radius
    Danke!

    1. PS: Wenn du kurz Zeit hast würde ich dich bitten, an meiner Umfrage für meine Bachelorarbeit teilzunehmen:
      http://bittersmann.de/tests/border-radius
      Danke!

      Mist ich hatte vorher einen anderen Link (auch interessant) kopiert. Der richte ist der hier:
      http://www.voycer.de/umfrage.html?sid=89674

  2. Moin!

    Brutaler Code. Du solltest wirklich mal aufraeumen.

    // Ende der Kalendertabellenzeile
       echo "</td>\n";

    --
    Ich bin dafuer verantwortlich was ich sage, nicht dafuer, was Du verstehst.
    1. Hi!

      Brutaler Code. Du solltest wirklich mal aufraeumen.

      // Ende der Kalendertabellenzeile
         echo "</td>\n";

      Auch diese Zeile kann man aufräumen, obwohl sie nicht die Ursache für das Problem ist.

      Lo!

      1. Ach Mist. Jetzt hab ich die tds genommen statt der trs... Ja. Stimmt. Danke fuer die Korrektur.

        Das kommt davon.

        --
        Ich bin dafuer verantwortlich was ich sage, nicht dafuer, was Du verstehst.
    2. Na ja,

      der Code ist einwandfrei kommentiert und recht übersichtlich angeordnet. Wenn das "brutal" sein soll, dann hast Du aber noch keine wirklich "fiesen" Codes gesehen.

      Hier kann man wenigstens flüssig runterlesen. Aber jeder macht das ja offensichtlich anders...

      Gruß

      Moin!

      Brutaler Code. Du solltest wirklich mal aufraeumen.

      // Ende der Kalendertabellenzeile
         echo "</td>\n";

  3. Hi,

    Dort kommt es zwischen dem eigentlichen Kalender und dem darüberliegenden Strich <hr> zur Ausgabe von "\n". Das ist von mir nicht gewollt.

    und warum schreibst du es dann so?

    echo '<tr>\n';

    So long,
     Martin

    --
    They say hard work never killed anyone, but I figure, why take the risk?
      (Ronald Reagan, US-Präsident 1981-1989)
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
  4. Danke an alle!

    Natürlich ist es echo '<tr>\n';
    Ärgere mich über mich selbst, da ich vor lauter Bäumen den Wald nicht mehr gesehen habe. Habe am Anfang der Tabelle (da wo das "\n" auch steht) gesucht und nicht dort, wo es eigentlich zu suchen war.

    Danke Euch allen für die Hilfe !!!