rony: Tabellen/Zeilen abwechselnd farbig darstellen

Hallo zusammen

bei einer Schleife möchte ich die Tabellenzeilen abwechselnd farbig darstellen, und habe das mal hier:

<?php
<table width="450" height="18">
<?php do
  { ?>
  <?php if ($row_rs1['titel'] != "" ) {  ?>
  <tr>
    <td width="292" valign="top" class="titel"> <?php echo $row_rs1['titel']; ?>
      <div align="center"></div>
    </td>
    <td width="143" valign="top" class="titel"><?php echo $row_rs1['erscheinungsjahr']; ?> </td>
  </tr>
  <?php } ?>
  <?php
   function bgcolor($row = 1) {
    static $i;
    static $col = array('#CCCCCC',
                        '#DDDDDD'
                       ); // etc.
    $bg = $col[(int)($i + .00000001)];
    $i += 1 / $row;
    if ($i >= count($col)) $i = 0;
    return $bg;
  } while ($row_rs1 = mysql_fetch_assoc($rs1)); ?>
</table>
?>

Aber es funktioniert nicht. Kann mir jemand zeigen wo ich den Fehler habe?

Merci

  1. Hallo,

    <?php
    <table width="450" height="18">

    parse error, nimm das erste <?php weg

    <?php do
      { ?>

    php zu - php auf, wozu das?

    <?php if ($row_rs1['titel'] != "" ) {  ?>

    <?php } ?>

    dto.

    <?php
       function bgcolor($row = 1) {

    warum deklarierst du hier mittendrin eine Funktion - rufst diese aber nie auf?

    return $bg;
      } while ($row_rs1 = mysql_fetch_assoc($rs1)); ?>

    hier schliesst du php

    </table>
    ?>

    hier schliesst du es wieder

    Du waerest gut beraten, erstmal deinen Code zu sortieren, ansonsten ist ein Fehlersuche muessig.

    Dieter

    1. Hallo Dieter, keine Funktioin wird hier für nichts aufgerufen.
      Vielleicht ist das hier besser übersichtlicher:
      -------------------------------------------------
      <?php do { ?>
      <table width="450" border="0" cellspacing="0" cellpadding="0">
        <?php if ($row_rs1['titel'] != "" ) { // Hide if field is empty ?>
        <tr>
          <td width="293"><?php echo $row_rs1['titel']; ?></td>
          <td width="157"><?php echo $row_rs1['erscheinungsjahr']; ?></td>
        </tr>
        <?php } // Hide if field is empty ?>
      </table>
      <?php } while ($row_rs1 = mysql_fetch_assoc($rs1)); ?>
      -------------------------------------------------
      Danke für deine Hilfe, MfG rony

      1. Hallo!

        Hallo Dieter, keine Funktioin wird hier für nichts aufgerufen.

        Nette Tautologie.

        <?php do { ?>
        <table width="450" border="0" cellspacing="0" cellpadding="0">

        Du willst also pro Datensatz eine Tabelle auszeichnen?

        <?php if ($row_rs1['titel'] != "" ) { // Hide if field is empty ?>
          <tr>
            <td width="293"><?php echo $row_rs1['titel']; ?></td>
            <td width="157"><?php echo $row_rs1['erscheinungsjahr']; ?></td>
          </tr>
          <?php } // Hide if field is empty ?>
        </table>
        <?php } while ($row_rs1 = mysql_fetch_assoc($rs1)); ?>

        Da gibts nirgendwo etwas, das sich um die Zeilenfarben kümmern würde.

        Beste Grüße
        Viennamade

        1. Hallo Viennamade

          Darum Frage ich auch wie ich das anstelle!
           Grüsse rony

          1. Hallo!

            Darum Frage ich auch wie ich das anstelle!

            G stimmt :-)
            Du hast sicher schon das Posting von FrankieB oberhalb, innerhalb dieses Threads gelesen ...

            Beste Grüße
            Viennamade

            1. HI Viennamade

              Ja, habe ich , irgendwie bin ich nicht so Fux wie Ihr in denen Sachen. Aber auch schön kompliziert die ganze Sache ist.

              Liebe Grüsse, rony

              1. Hi rony,

                Ja, habe ich , irgendwie bin ich nicht so Fux wie Ihr in denen Sachen. Aber auch schön kompliziert die ganze Sache ist.

                Nein, das Ganze ist gar nicht so kompliziert wir Du vielleicht glauben magst.

                1. Hast Du dir die Datensätze welche Du in Tabellenform darstellen möchtest schon mal "unformatiert" ausgeben lassen? Wenn JA, was gibt folgender Code bei dir (!!) - eingefügt zwischen der DB-Query und deiner Tabelle - aus?

                <?php
                echo "<pre>";
                  print_r($rs1);
                echo "</pre>";
                ?>

                <?php
                echo "<pre>";
                  print_r($row_rs1);
                echo "</pre>";
                ?>

                <?php
                while ($row_rs1=mysql_fetch_assoc($rs1)){
                  print_r($row_rs1);
                }
                ?>

                Nachdem Du deine (Bildschirm)-Ausgabe hier gepostet hast (Copy&Paste des relevanten Teils deiner Ausgabe), sehen wir weiter.

                Ach ja, das Ganze macht natürlich nur Sinn, wenn deine Query korrekt ist und Datensätze gefunden werden.

                Grüsse
                Frankie

                PS:

      2. Hallo Rony,

        Viennamade war mit Modulo auf der richtigen Faehrte, alles was du jezt noch tun musst, ist eine CSS-Klasse mit dem namen ".distinct" zu basten, die die alternative Farbe enthaelt.

        <?php
        $i = 0;
        do {
          $class = $i % 2 ? '' : ' class="distinct"';
          print '<table width="450" border="0" cellspacing="0" cellpadding="0">'
          if ($row_rs1['titel'] != "" ) {
            print '<tr' . $class . ">\n"
                . '<td width="293">' . $row_rs1['titel'] . "</td>\n"
                . '<td width="157">' . $row_rs1['erscheinungsjahr'] . "</td>\n"
                . "</tr>\n"
          }
          print "</table>\n";
        $i++;
        } while ($row_rs1 = mysql_fetch_assoc($rs1));
        ?>

        Dieter

        1. Hallo Dieter, habe ich gemacht so wie du gepostet hast, aber es funktioniert nid.
          Die Fehlermeldung lautet:
          Parse error: parse error, unexpected T_IF in C:\xampp\htdocs\verzeichnis\index.php on line 65

          Trotzdem; lieben Dank für deine Mühe
          Grüsse rony

          1. Hallo,

            Parse error: parse error, unexpected T_IF in C:\xampp\htdocs\verzeichnis\index.php on line 65

            Steht doch da, unerwartetes if, weil hinter dem print '<table...> das Semikolon fehlt, Copy & Paste ist nicht immer das Gelbe vom Ei

            Dieter

    2. Hallo!

      Anbieten würde sich doch dafür eine Modula-Funktion: Ist die Zeilennummer (bzw. Zähler) gerade, dann vanilledotterblumengelb, ist sie ungerade dann südspanisch-eierfruchtviolett. Suche vergebens Modula-Funktion für PHP und finde keine. Das kann nicht sein?!

      Beste Grüße
      Viennamade

      1. Hallo Vienna,

        Anbieten würde sich doch dafür eine Modula-Funktion: Ist die Zeilennummer (bzw. Zähler) gerade, dann vanilledotterblumengelb, ist sie ungerade dann südspanisch-eierfruchtviolett.

        das sehe ich ebenso.

        Suche vergebens Modula-Funktion für PHP und finde keine. Das kann nicht sein?!

        ein kleiner Auszug aus der FAQ der NG de.comp.lang.php.*

        http://www.dclp-faq.de/q/q-code-tabellenfarbe.html

        <cite>
        Besonders, wenn man die Zeilen sowieso mitzählt, kann man den gleichen Effekt leicht mittels des Modulo-Operators (%) und CSS erreichen.

        printf("<tr class='row%s'><td>...</td></tr>\n", $line % 2);
        </cite>

        Abgesehen von der hoffentlich zufriedenstellenden Antwort auf deine Frage würde ich auch das Problem des OP versuchen mit dieser Variante zu realisieren ,-)

        hth

        Grüsse
        Frankie

        1. Hallo!

          Abgesehen von der hoffentlich zufriedenstellenden Antwort auf deine Frage würde ich auch das Problem des OP versuchen mit dieser Variante zu realisieren ,-)

          Oh, OK, % ist keine Smily :-)
          (Archiv: sondern der Modulus-Operator)

          Danke Frankie,
          Viennamade