Enrico: Problem mit der Anzeige dyn. erzeugter Tabellen

Hallo,

Ich habe mit der Ausgabe von Meldungen über dynamisch erzeugte Tabellen meine Probleme:

Die Ausgabe von Meldungen erfolgt über folgende drei Schritte:

Beispiel "Anmeldeformular wurde leer abgeschickt":

  1. Aufbau des Tabellenanfangs mit Ausgabe der ersten Überschrift:
       Tabelle_Umrandung_Anfang ("Gästebuch");

  2. Zusammensetzen der eigentlichen Meldung:
       Tabelle_Meldung ("ff0000",
                        "Fehler",
                        "Du hast keine Zugangsdaten eingegeben",
                        "PHP.Gaestebuch.Administrator.Formular",
                        "N_zurueck_zum_formular",
                        "113",
                        "N_login_abbrechen",
                        "92");

  3. Aufbau des Tabellenendes mit Ausgabe der zweiten Überschrift:
       Tabelle_Umrandung_Ende ("Login");

Diese Teilfunktionen sind immer unter einer Kopffunktion zusammengefasst, hier "Formular_leer ()", wenn das Anmeldeformular ohne Eingaben abgeschickt wurde.

Die Funktionen "Tabelle_Umrandung_Anfang ($Ueberschrift_LO)" und "Tabelle_Umrandung_Ende ($Ueberschrift_RU)" funktionieren problemlos, die Funktion "Tabelle_Meldung ()" hingegen nicht:

function Tabelle_Meldung ()
{
  $Parameter = func_num_args ();

echo '<table border="0" cellpadding="0" cellspacing="0">
          <tr>
            <td style="border: 1px solid #FFFFFF; padding: 5"
                bgcolor="#' . $Parameter [0] . '">' . $Parameter [1] . '</td>
            <td><img border="0" src="pic/gfx/L_spacer.gif" width="5" height="1"></td>
            <td style="border: 1px solid #FFFFFF; padding: 5"
                bgcolor="#000000" align="center">' . $Parameter [2] . '</td>
          </tr>
          <tr><td colspan="3"><img border="0" src="pic/gfx/L_spacer.gif" width="1" height="5"></td></tr>
          <tr>
            <td align="right" colspan="3">
              <table border="0" cellpadding="0" cellspacing="0">
                <tr>';

for ($i = 3; $i < count ($Parameter); $i = $i + 3)
                  {
                    echo '<td><a href="' . $Parameter [$i] . '">
                          <img border="0"
                               src="pic/nav/' . $Parameter [$i + 1] . '.png"
                               width="' . $Parameter [$i + 2] . '"
                               height="16"></a></td>';

if (($i + 3) < count ($Parameter))
                      echo '<td><img border="0" src="pic/gfx/L_spacer.gif" width="5" height="1"></td>';
                  }

echo '</tr>
              </table>
            </td>
          </tr>
        </table>';
}

Ich habe Zeilenumbrüche eingefügt, damit der Code übersichtlicher wird (hoffentlich).

Grundsätzlich sollen innerhalb dieser Funktion folgende An- und Ausgaben realisiert werden:

  1. Ausgabe Statuswert ("Fehler", "OK", ...) auf einer bestimmten Hintergrundfarbe

  2. Ausgabe Fehlermeldung ("Du hast keine Zugangsdaten eingegeben", ...)

  3. Angabe der aufzurufenden Seite, wenn der Administrator auf die nächste Schaltfläche klickt

  4. Angabe und Ausgabe der Schaltfläche, die auf die aufzurufende Seite verweist (mit Breite und Höhe)

  5. danach Angabe und Ausgabe beliebig weiterer Schaltflächen für weitere Aktionen (die weiteren Aktionen werde ich noch später einbauen).

Aktuell ist es so, dass die Funktion "Tabelle_Meldung ()" keine Bildschirmausgabe bewirkt. Es werden nur der einleitende und abschliessende Tabellenteil angezeigt, wie sie in den Funktionen "Tabelle_Umrandung_Anfang ("Gästebuch")" und "Tabelle_Umrandung_Ende ("Login")" implementiert sind.

Liegt die Ursache vielleicht darin, dass ich die variabel übergebenen Parameter der Funktion "Tabelle_Meldung ()" falsch abfrage ?

Vielen Dank für Eure Rückantworten.

Gruss, Enrico

  1. Einen Fehler habe ich gefunden, man sollte natürlich nicht func_num_args und func_get_args verwechseln...   o:)

    Gruss, Enrico

  2. Hallo,

    Liegt die Ursache vielleicht darin, dass ich die variabel übergebenen Parameter der Funktion "Tabelle_Meldung ()" falsch abfrage ?

    Nein, es liegt daran, dass Du sie gar nicht übernimmst.

    Nach

    $Parameter = func_num_args ();

    steht in $Parameter eine Ganzzahl, z.B. 8.

    http://de2.php.net/manual/en/function.func-num-args.php
    http://de2.php.net/manual/en/function.func-get-args.php

    viele Grüße

    Axel

  3. Hello Enrico,

    löblich, dass Du Dir Gedanken über Funktionen machst.
    Auch gut, dass Du schon ansatzweise mit CSS (style="") angefangen hast. Wieso hältst Du das dann nicht auch konsequent durch?

    Schade, dass die Funktion nicht funktioniert.

    Allerdings vielleicht auch nicht so schlimm, denn wenn Du Lust hast, sollten wir darüber nochmal diskutieren, bevor Du nachher vor Spaghetti Dein Konzept nicht mehr findest.

    Grundsätzlich solltest Du nämlich

    • Daten
    • Bedienung (Navigation mit Postbuttons und Hyperlinks)
    • Fehlermeldungen

    geschickt voneineinder trennen, damit die nachher nicht nur für eine Ausgabefunktion, sondern für viele nutzbar sind.

    Außerdem solltest Du Deine Scripte klar gliedern

    • Konstanten und Includes von nicht optionalen Libs
    • Funktionsdefinitionen
    • Steuerflusskontrolle
    • Datenverarbeitung
    • HTML-Ausgabe

    Ich habe da vorhin gerade in https://forum.selfhtml.org/?t=90044&m=539234 ein kleines Testscript für die Ausgabe von Select-Boxen gepostet. An diesem Beispiel kannst Du sehen, wie ich das mit dem Gliedern meine.

    Außerdem kannst Du dort sehen, dass meine Funktionen (wenn es möglich ist) keine direkten Ausgaben auf der Standardausgabe (echo, print) machen, sondern immer Strings erzeugen, die dann zu gegebner Zeit ausgegeben werden können. Das geht allerdings nicht mehr, wenn es um Massendaten geht (Logbücher). Die würden den Speicher sprengen auf diese Weise.

    Wenn Du also nun noch Lust hast, könnten wir doch mal so eine Standard-Struktur für die Fehlerbehandlung zusammen erstellen, natürlich anhand Deiner Aufgabenstellung.

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Hi Tom,

      Ich freue mich jedesmal, wenn ich sehe, mit welchem Elan Du Dich an die unterschiedlichsten Postings machst. Ein beeindruckendes, fast pädagogisches Engagement kann man Dir nicht abstreiten   :o)

      ansatzweise mit CSS (style="")
      Wieso hältst Du das dann nicht auch konsequent durch?

      Gut, CSS-Angaben nehme ich nur auf, um gezielte Formatierungen zu tätigen (was ja auch Sinn und Zweck der Sache ist), aber Layouts über CSS zu realisieren ist mir noch viel, viel zu kompliziert (deswegen noch die Verwendung von Tabellen).

      wie ich das mit dem Gliedern meine.

      Uuuuuh, sehr modular und damit nicht mehr so einfach zum Durchblicken.

      könnten wir doch mal so eine Standard-Struktur für die
      Fehlerbehandlung zusammen erstellen, natürlich anhand Deiner
      Aufgabenstellung.

      Liebend gern :-) Hier im Forum oder via eMail mit Präsentation des Endergebnisses hier im Forum ?

      Gruss, Enrico

      1. Hello,

        Ich freue mich jedesmal, wenn ich sehe, mit welchem Elan Du Dich an die unterschiedlichsten Postings machst. Ein beeindruckendes, fast pädagogisches Engagement kann man Dir nicht abstreiten   :o)

        Nun übertreib mal nicht so.

        Gut, CSS-Angaben nehme ich nur auf, um gezielte Formatierungen zu tätigen (was ja auch Sinn und Zweck der Sache ist), aber Layouts über CSS zu realisieren ist mir noch viel, viel zu kompliziert (deswegen noch die Verwendung von Tabellen).

        Du kannst ja auch trotzdem Tabellen benutzen. Es geht hier ja um eine tabellarische Darstellung, da ist das doch auch angebracht. Du solltest nur die Design-Manipulation vollständig über CSS ermöglichen. Solltest Du auch noch für nicht CSS-fähige Browser schreiben wollen, müssen da dann leider auch zusätzlich noch die alten HTML-Attribute drinbleiben. Das würde ich mir allerdings heutzutage überlegen, ob das noch notwenig ist.

        Frage an alle: Sind die alten HTML-Attribute zusätzlich zu CSS notwendig?

        Mit sprang hier allerdings gerade das "size" bei <select> entgegen. Da scheint es noch keine vernünftige Entsprechnung zu geben. Das sind ähnliche Probleme, wie bei der <textarea>.

        wie ich das mit dem Gliedern meine.

        Uuuuuh, sehr modular und damit nicht mehr so einfach zum Durchblicken.

        Das ist ganz klar gegliedert, darum findet man auch immer ziemlich schnell, was man sucht. Alles nur Gewöhnungssache.

        könnten wir doch mal so eine Standard-Struktur für die
        Fehlerbehandlung zusammen erstellen, natürlich anhand Deiner
        Aufgabenstellung.

        Liebend gern :-) Hier im Forum oder via eMail mit Präsentation des Endergebnisses hier im Forum ?

        Das kann man schon hier im Forum machen. Dann geht es nicht verloren.

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau