klausi: Tabelle sortieren

Hallo zusammen!

Ich bräuchte Hilfe, ich komme nicht weiter: Habe mir ein bisschen Code zusammengestückelt, bin wirklich Anfänger, aber war bisher eigentlich ganz zufrieden. Jetzt möchte ich eine Tabelle gerne sortieren können.
Die Daten sollen aus mySQl ausgelesen werden, was gut funktioniert. Aber das Sortieren funktioniert nicht, ist evlt. komplizierter als ich dachte.

  
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />  
<title>Datensätze aus einer Datenbank auslesen und ausgeben</title>  
</head>  
  
<body>  
[code lang=php]<?php  
// Tabelle erstellen fuer die Ausgabe  
echo '<table border="1">';  
echo "<tr><th>Vorname</th><th>Name</th><th>E-Mail-Adresse</th><th>Herkunft</th><th>Herkunfts-Stadt</th><th>Zielland</th><th>Alter</th><th>Bemerkungen</th><th>Datum</th></tr>";  
// Ab hier werden die Datensaetze zeilenweise ausgeben (auch fetchen genannt)  
while ($datensatz = mysql_fetch_array( $abfrageergebnis ))  
{	  
	// Jeder Datensatz entspricht einer Tabellenzeile  
	echo "<tr>";  
	echo "<td>" .htmlspecialchars( $datensatz['vorname'] ). "</td>";  
	echo "<td>" .htmlspecialchars( $datensatz['name'] ). "</td>";  
	echo "<td>" .htmlspecialchars( $datensatz['mail'] ). "</td>";  
	echo "<td>" .htmlspecialchars( $datensatz['herkunft'] ). "</td>";  
	echo "<td>" .htmlspecialchars( $datensatz['herkunftsstadt'] ). "</td>";  
	echo "<td>" .htmlspecialchars( $datensatz['zielland'] ). "</td>";  
	echo "<td>" .$datensatz['alter']. "</td>";  
	echo "<td>" .htmlspecialchars( $datensatz['bemerkungen'] ). "</td>";  
	echo "<td>" .$datensatz['datum']. "</td>";  
	echo "</tr>";  
}  
// Tabelle schliessen  
echo "</table>";  
  
?>

// <!-- filter -->
<form action="./gesuche/index.php" method="get" class="fltr">
Filter:
<select name="fltr" onChange="document.forms[0].submit();" class="fltr">
<option value="none" selected>Alle</option>
<option value="herkunft">Land</option>
<option value="zielland">Ziel</option>
</select>
<noscript>
<input type="submit" value="&raquo;">
</noscript>
</form>
// <!-- /filter -->
</body>
</html>
[/code]

Wie bekomme ich das hin, dass der Filter mir die Tabelle sortiert?
Wenn mir jemand überdies noch Tipps geben könnte, wo ich Code für Schiebergler für eine Tabelle finde, wäre ich auch sehr dankbar! :-)

  1. ola,

    Ich bräuchte Hilfe, ich komme nicht weiter: Habe mir ein bisschen Code zusammengestückelt, bin wirklich Anfänger, aber war bisher eigentlich ganz zufrieden. Jetzt möchte ich eine Tabelle gerne sortieren können.

    Dazu nutzt man "ORDER BY" in der SQL Abfrage.

    Übrigends: htmlspecialchars(); solltest du nicht zur Ausgabe verwenden. Wenn der Benutzer Daten in ein Formularfeld eingibt und es danach in der Datenbank gespeichert werden soll, dann kannst du beim übertragen die Funktion nutzen. Damit wird es durch die Funktion behandelt übertragen und behandelt in der Datenbank gespeichert. So wie du es jetzt machst, wird bei jedem ausgegebenen Datensatz die Funktion aufgerufen = Performanceverlust.

    Gute Nacht,
    Rolfi

    1. Hi,

      Übrigends:

      Übrigens schreib man übrigens ohne d.

      htmlspecialchars(); solltest du nicht zur Ausgabe verwenden. Wenn der Benutzer Daten in ein Formularfeld eingibt und es danach in der Datenbank gespeichert werden soll, dann kannst du beim übertragen die Funktion nutzen. Damit wird es durch die Funktion behandelt übertragen und behandelt in der Datenbank gespeichert.

      So ein Unsinn.

      Die Daten sollten nicht für HTML codiert in die Datenbank eingetragen werden.
      Will man die Daten anderweitig (z.B. für eine Textmail oder für ein PDF) nutzen, hätte man bei Deiner Vorgehensweise unsinnige &lt; usw. im Text.

      Daten sollten genau dann für einen speziellen Kontext (z.B. HTML) aufbereitet werden, wenn sie in diesen speziellen Kontext eingebracht werden.

      Beim Schreiben in die Datenbank wird also nicht htmlspecialchars angewandt, sondern die für die jeweilige Datenbank passende escape-Funktion (z.B. für mysql mysql_real_escape_string (genaue Schreibweise müßte ich raussuchen).

      htmlspecialchars wird dann angewendet, wenn die Daten im Rahmen einer HTML-Seite ausgegeben werden sollen.

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      O o ostern ...
      Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
      1. Tach!

        Beim Schreiben in die Datenbank wird also nicht htmlspecialchars angewandt, sondern die für die jeweilige Datenbank passende escape-Funktion (z.B. für mysql mysql_real_escape_string (genaue Schreibweise müßte ich raussuchen).

        Kleine Ergänzung: Selbst wenn HTML in die Datenbank geschrieben wird (ob fachlich legitim oder nicht), darf man das Datenbank-Escaping nicht einfach weglassen, denn die kritischen Zeichen sind die Anführungszeichen, und davon behandelt htmlspecialchars() in seiner Grundausführung nur eins (" - es fehlt '). Also, als Sicherheitsmaßnahme gegen SQL-Injection ist htmlspecialchars() nur bedingt tauglich. Wenn das Ziel ist, durch htmlspecialchars() einmal Escaping zu sparen, dann ist das nicht effektiv.

        dedlfix.

      2. ola,

        Übrigens schreib man übrigens ohne d.

        Danke für diese Aufmerksamkeit - ich hätte es sonst beim nächsten mal wieder falsch geschrieben. :-)

        So ein Unsinn.

        Dem muss ich leider widersprechen. Es heißt "Nein Rolfi, du hast dich vertan denn eigentlich..." oder "In gewissen Situationen ist das allerdings nicht angebracht...". So eine herangehensweise wird als unerhörte Unfreundlichkeit wahrgenommen und führt schnell zu streit - auch ich persönlich empfinde sie als Provokation und würde dich für die Zukunft bitten, etwas gefühlvoller mit so Sachen umzugehen, denn es verärgert sonst die Leute denen du antwortest. Ich hoffe du verstehst, was ich damit ausdrücken möchte.

        Will man die Daten anderweitig (z.B. für eine Textmail oder für ein PDF) nutzen, hätte man bei Deiner Vorgehensweise unsinnige &lt; usw. im Text.
        Daten sollten genau dann für einen speziellen Kontext (z.B. HTML) aufbereitet werden, wenn sie in diesen speziellen Kontext eingebracht werden.

        Ja, und an dieser stelle hättest du nur die richtigen Übergangswörter finden müssen. :-) Denn du sagst ja nun selbst, dass es kein Unsinn ist, sondern in gewissen Situationen nicht dem Ziel dienlich. Ich habe auch nicht behauptet, nicht andere escape Funktionen zu nutzen. Aber es ist gut, dass du es ansprichst.

        mfg,
        Rolfi

        1. @@Rolfi:

          nuqneH

          So ein Unsinn.

          Dem muss ich leider widersprechen. Es heißt "Nein Rolfi, du hast dich vertan denn eigentlich..." oder "In gewissen Situationen ist das allerdings nicht angebracht...".

          So ein Unsinn.

          Wenn etwas Unsinn ist, sollte es auch „Unsinn“ genannt werden dürfen.

          Man sollte fachliche Kritik nicht als persönlichen Angriff missverstehen.

          Qapla'

          --
          „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
          1. ola Gunnar,

            So ein Unsinn

            beinhaltet wie ich sehe, sehr viel fachliche Kritik. Besonders >fachliche< Kritik. Es strotzt nur von einem Wissen fachlicher Handwerkskunst. Ich finde, ein Kind aus der 5. Klasse hätte nicht fachlicher antworten können. Aber dann sind Floskeln wie "Du bist du.." und so weiter auch in diesem Fachbereich anzusiedeln. Wenn das aber schon alles fachlich ist, dann muss jeder der etwas sagt ein Fachmann sein, denn es ist nie weniger als dieses Niveau. Und wie kann man jemand der fachmännisch antwortet, dann kritisieren? Wie konntest du meine fachlichen Antworten in Frage stellen? Oder gilt nur als fachlich, das Wort "Unsinn" zu erwähnen? Daher widerspreche ich dem was du sagst gewaltig.

            Ein "Fachmann" arbeitet mit fundiertem Wissen und weiß wovon er spricht. Was "Unsinn" für ein Wissen sein soll, entzieht sich wohl meinem Blick - Aber da ist dann die Brille schuld.

            Man sollte fachliche Kritik nicht als persönlichen Angriff missverstehen.

            Ob jemand etwas als persönlichen Angriff betrachtet, hängt allein von der Form ab in welcher Weise mit dem Betreffenden gesprochen wird. Wenn ich die herangehensweise als unhöflich betrachte, weil es das nunmal für mich so ist, dann missverstehe ich nichts falsch. Und ich sage das nicht nur, weil ich es so empfinde, sondern weil dieser Fehler hier immerwieder begangen wird wie allein der Fall vor einigen Tagen beweist. Das ist nunmal nicht von der Hand zu weisen, dass den Fragenden und anderen Antwortenden fast schon respektlos geantwortet wird, besonders unsensibel. Dabei ist sensibel der wichtigste Ausdruck bei der Sache des Lernens. "So ein Unsinn" ist ein direkter persönlicher Angriff, wenn es nicht stören würde, hätte ich es ja nicht angesprochen. Ich habe ja auch nicht das was danach kam und hilfreich war, kritisiert. Ganz im Gegenteil, ich fand es gut, dass er es  Aber der Satz "So ein Unsinn", war wenig hilfreich und ganz gewiss nicht fachlich. Ich verstehe nicht warum immer erst eine Zeile geschrieben wird die dem anderen vermittelt er sei dumm oder etwas ähnliches, und dann wird zwei Zeilen darunter erklärt/angedeutet was nun eigentlich "Unsinn" ist. Ich finde, man könnte sich das zumindest ersparen, warum braucht das Wort Unsinn einen eigenen Satz? Wenn man etwas erklärt und richtig stellt, merkt der Betreffende schon von selbst, dass er falsch lag. Dazu bedarf es keiner äußerst direkten "Hinweise".

            mfg,
            Rolfi

        2. Om nah hoo pez nyeetz, Rolfi!

          So ein Unsinn.

          Dem muss ich leider widersprechen. ... So eine herangehensweise wird als unerhörte Unfreundlichkeit wahrgenommen und führt schnell zu streit

          Unsinn ist ja nun kein beleidigendes Wort. Ich sehe keinen Unterschied zwischen "Das ist Unsinn.", "Das ist falsch." oder "Das darf/sollte man so nicht machen."

          Die beiden Postings lassen sich imho auch nicht vergleichen, da Andreas in der nächsten Zeile erläutert, warum dein Vorschlag unsinnig/fehlerhaft/nicht zielführend ist.

          Matthias

          --
          Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Elf und Elfmetertöter.

          1. ola Matthias,

            "Das ist falsch." oder "Das darf/sollte man so nicht machen."

            ich kann über so Sachen hinweg sehen, aber ich kenne sehr viele die sich daran stoßen. Das Wort Unsinn hat einen beleidigenden Klang, da ist "falsch" schon etwas angenehmer, wenn es auch nicht richtig ist einen direkt in solcher Weise zu konfrontieren. Letzteres was du erwähnst, ist eine sehr höfliche Form, weil es nicht direkt die Person angreift, sondern die Aussage, die die Person getroffen hat. Ihr seid hier im Forum mit solchen groben Konfrontationen aufgewachsen, bei anderen sieht das anders aus. Die sind noch die gute Stube gewohnt. Man sollte möglichst, wie ich erwähnte, die Aussage entkräftigen und nicht versuchen an dem Ego des gegenüber zu kratzen. Das geht fachlich sowie auch sachlich. Richtig stellen fängt nicht damit an zu sagen, es sei Unsinn. Richtig stellen fängt damit an es richtig zu stellen, damit der Betreffende am Ende des richtig Stellens seine Fehler selbst erkennt.

            Ich bin nicht erbost darüber, dass es so ein Satz gefallen ist wie "Das ist Unsinn", sondern ich finde die herangehensweise unangebracht, weil sie die meisten eher angreift als Ihnen hilft.

            mfg,
            Rolfi

            1. Hallo,

              "Das ist falsch." oder "Das darf/sollte man so nicht machen."

              ich kann über so Sachen hinweg sehen, aber ich kenne sehr viele die sich daran stoßen. Das Wort Unsinn hat einen beleidigenden Klang, da ist "falsch" schon etwas angenehmer, wenn es auch nicht richtig ist einen direkt in solcher Weise zu konfrontieren. Letzteres was du erwähnst, ist eine sehr höfliche Form, weil es nicht direkt die Person angreift, sondern die Aussage, die die Person getroffen hat. [..]

              Deiner Ansicht nach snd die Aussagen "Das ist Unsinn" und "Das ist falsch" die aussagende Person angreifend? Und "Das sollte man so nicht machen..." ist nicht angreifend?

              Also ganz ehrlich ich seh in den drei Aussagen keinen einzingen Angriff auf die Person, vielmehr beziehen sich alle drei auf die Aussage selbst nur wird unterschiedlich stark durch die Blume gesprochen. Ich glaube, dass das die meisten ähnlich sehen udn es nicht nötig ist/ sein sollte seine Kritik durch eine Blumenwiese sagen zu müssen.

              Nur mal so als Beispiel, die aussagende Person angreifend wäre eine Aussage wie: "Sowas kann nur ein Idiot von sich geben"

              Und noch eine Frage was ist nicht richtig daran, direkt zu sagen "Das ist falsch"? Sollen wir nur noch in Watte verpackt mit "naja so ganz richtig war deine getätigte Aussage nicht" antworten?

              martachen

              1. ola,

                Ich glaube, dass das die meisten ähnlich sehen udn es nicht nötig ist/ sein sollte seine Kritik durch eine Blumenwiese sagen zu müssen.

                Du glaubst also. Bei Gläubigen kann ich sowieso nichts tun, es herrscht Religionsfreiheit und die möchte ich respektieren. ;-)
                Die "Meisten" können auch nur 51% sein. Die Meisten können auch 3/4 von 100 sein, dann sind es immernoch 25, die nicht die Meisten sind. Und da jetzt langsam Sommer wird, sollte man an einer Blumenwiese nicht sparen müssen. Ich bin auch bereit Blumen zu schenken. :)

                Und noch eine Frage was ist nicht richtig daran, direkt zu sagen "Das ist falsch"? Sollen wir nur noch in Watte verpackt mit "naja so ganz richtig war deine getätigte Aussage nicht" antworten?

                Ob du nun Watte dafür benutzt, möchte ich dir überlassen. Es würde allerdings reichen zu respektieren, dass sich jemand angegriffen fühlt und es eben nicht möchte. Es geht auch nicht um das Wort "falsch", sondern um das Wort "Unsinn". Bei falsch habe ich nur gesagt, es ist auch nicht ganz optimal es direkt zu sagen, ich habe aber nicht gesagt das man es lassen soll. Ich kritisiere ja auch hauptsächlich nur die Form, in welcher Weise geantwortet wird.

                1. Unsinn!
                2. Eine Zeile frei lassen mit Enter
                3. Eine Antwort schreiben die auch ohne die Aussage von 1. klarkommt.

                Manche Leute verwirrt es eben, wenn Sätze von Sätzen begleitet werden, die nicht Donaudampfschifffahrtselektrizitätenhauptbetriebswerkbauunterbeamtengesellschaft.

                mfg,
                Rolfi

                1. Hallo,

                  ola,

                  Ich glaube, dass das die meisten ähnlich sehen udn es nicht nötig ist/ sein sollte seine Kritik durch eine Blumenwiese sagen zu müssen.

                  Du glaubst also. Bei Gläubigen kann ich sowieso nichts tun, es herrscht Religionsfreiheit und die möchte ich respektieren. ;-)

                  Nein diese glaube drückt nur eine Meinungsäußerung aus, die nicht als Fakt missverstanden werden sollte (schließlich wird hier alles missverstanden, wenn man es nur will)

                  Die "Meisten" können auch nur 51% sein. Die Meisten können auch 3/4 von 100 sein, dann sind es immernoch 25, die nicht die Meisten sind. Und da jetzt langsam Sommer wird, sollte man an einer Blumenwiese nicht sparen müssen. Ich bin auch bereit Blumen zu schenken. :)

                  nein danke, was soll mit den Blumen? beim verwelken zusehen? da schaue ich sie mir lieber in voller Lebenspracht im Garten an

                  Und noch eine Frage was ist nicht richtig daran, direkt zu sagen "Das ist falsch"? Sollen wir nur noch in Watte verpackt mit "naja so ganz richtig war deine getätigte Aussage nicht" antworten?

                  Ob du nun Watte dafür benutzt, möchte ich dir überlassen. Es würde allerdings reichen zu respektieren, dass sich jemand angegriffen fühlt und es eben nicht möchte. Es geht auch nicht um das Wort "falsch", sondern um das Wort "Unsinn". Bei falsch habe ich nur gesagt, es ist auch nicht ganz optimal es direkt zu sagen, ich habe aber nicht gesagt das man es lassen soll. Ich kritisiere ja auch hauptsächlich nur die Form, in welcher Weise geantwortet wird.

                  1. Unsinn!
                  2. Eine Zeile frei lassen mit Enter
                  3. Eine Antwort schreiben die auch ohne die Aussage von 1. klarkommt.

                  Manche Leute verwirrt es eben, wenn Sätze von Sätzen begleitet werden, die nicht Donaudampfschifffahrtselektrizitätenhauptbetriebswerkbauunterbeamtengesellschaft.

                  Hä? Wolltest du irgendwas damit sagen? wenn ja dann sags, wenn nein, sag einfach gar nichts, aber lass diesen Unsinn (<-- ganz bewusst genutzt)

                  und ich weiß immer noch nicht was an der Form falsch ist, aber gut ich fühl mich ja davon auch nicht angegriffen.

                  martachen

          2. Unsinn ist ja nun kein beleidigendes Wort. Ich sehe keinen Unterschied zwischen "Das ist Unsinn.", "Das ist falsch." oder "Das darf/sollte man so nicht machen."

            Und doch gibt es viele, die einen solchen sehen. Manche sind sogar sehr empfindlich. "Das ist Unsinn." ist auch in meinen Augen grenzwertig - um es zurückhaltend zu formulieren.

            Richtiger gewesen wäre: "Das ist gefährlich!"

            Dazu noch die Kombination mit der vorherigen Korrektur der Rechtschreibung - die dazu führt, dass nachfolgendes kritischer wahrgenommen wird. Ich denke, das hat der Matthias, der sonst ein geschätzter Fachmann ist, nicht bis zum Ende durchdacht.

            Allerdings darf ich mir einiges von diesem Typ Asche auch selbst aufs Haupts streuen.

            Jörg Reinholz

  2. Aber das Sortieren funktioniert nicht, ist evlt. komplizierter als ich dachte.

    Du hast ja auch kein Sortieren drin. Den einzigen wichtigen Teil, nämlich das SELECT, hast du völlig unterschlagen. Wie sieht das bisher aus und was funktioniert da nicht?

    Wie bekomme ich das hin, dass der Filter mir die Tabelle sortiert?

    Dazu musst du auslesen was als Wert von "fltr" übergeben wird und davon abhängig ein ORDER BY in dein SQL einbauen.
    Oder noch besser, nenne zuerst fltr in etwas um das an sortieren erinnert, denn ein Filter sortiert gewöhnlich nicht.

    // Ab hier werden die Datensaetze zeilenweise ausgeben (auch fetchen genannt)

    Das Holen heißt fetch, also wenn die Daten aus dem Ergebnis des SELECT zeilenweise ausgelesen werden. Siehe Teil des Namens.

    Wenn mir jemand überdies noch Tipps geben könnte, wo ich Code für Schiebergler für eine Tabelle finde, wäre ich auch sehr dankbar! :-)

    Du meinst Scrollbars? Die kommen von selbst wenn deine Tabelle größer ist als das Element in dem sie sitzt und dieses Element Scrollbars anzeigen soll. Sieh dir dazu overflow:scroll an, ich glaube das wars. Genau weiß ich es nicht auswendig.

    Sorry für die vielen Korrekturen, aber es ist schon sinnvoll wenn man Dinge so nennt wie sie heißen ;-)

  3. hi,

    Ich bräuchte Hilfe, ich komme nicht weiter: Habe mir ein bisschen Code zusammengestückelt, bin wirklich Anfänger, aber war bisher eigentlich ganz zufrieden. Jetzt möchte ich eine Tabelle gerne sortieren können.

    Der Besucher möchte das im Browser sortieren?

    Die Daten sollen aus mySQl ausgelesen werden, was gut funktioniert. Aber das Sortieren funktioniert nicht, ist evlt. komplizierter als ich dachte.

    1. die Abfrage macht eine Default-Order
    2. der Besucher sortiert nach seinem Wunsch mit dem Browser

    Wie bekomme ich das hin, dass der Filter mir die Tabelle sortiert?

    Machs nicht so kompliziert. Komfortabler und einfacher ist ein Klick auf die Spaltenüberschrift, dafür gibts Frameworks wie z.B. jQuery, damit hast du das ratzfatz erledigt und der Besucher freut sich über eine sehr schnelle Sortierung.

    Horst H.

    1. @@hotti:

      nuqneH

      Machs nicht so kompliziert. Komfortabler und einfacher ist ein Klick auf die Spaltenüberschrift, dafür gibts Frameworks wie z.B. jQuery

      Dafür gibt’s das HTML5.1-Table-Sorting-Model – später.

      Qapla'

      --
      „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
      1. Tach!

        Dafür gibt’s das HTML5.1-Table-Sorting-Model – später.

        Da ist ja mal gar nicht wenig spezifiziert. Aber gehe ich recht in der Annahme, dass das nur bedingt verwendbar ist, also nur in den Fällen, in denen die Tabelle vollständig ist und nicht nur einen Teil der Daten anzeigt (paged data)? Gibts für spezielle Sortierkriterien eine Schnittstelle zu einer benutzerdefinierbaren Vergleichsfunktion?

        dedlfix.

      2. Dafür gibt’s das HTML5.1-Table-Sorting-Model – später.

        Oder (jetzt schon) das jQuery Plugin Tablesorter

        Und ganz ehrlich, obwohl ich allgemein kein großer Freund von jQuery bin (eben wegen der Ressourcen) ... dafür würde ich es ohne mit der Wimper zu zucken verwenden.

        Jörg Reinholz

    2. Om nah hoo pez nyeetz, hotti!

      Machs nicht so kompliziert. Komfortabler und einfacher ist ein Klick auf die Spaltenüberschrift, dafür gibts Frameworks wie z.B. jQuery, damit hast du das ratzfatz erledigt und der Besucher freut sich über eine sehr schnelle Sortierung.

      dafür gibst auch Ressourcen schonende Lösungen, zum Beispiel die von JürgenB.

      Matthias

      --
      Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Los und Losung.

  4. danke euch allen!

    ich werde es später ausprobieren!

    Bei den ganzen fachsimpeligen Diksussionen komm ich leider nicht mit - außer, dass man übrigens ohne "d" schreibt ;-)

    das mit der Sicherheit usw. ist noch ein ganz anderes Thema, das ich leider null Blicke und wofür ich dann noch mal extra Zeit brauche und mich einlesen muss oder jemanden bezahlen, weil ich eiegntlich null Bock drauf hab ;-)

    Ich melde mich wieder wie es geklappt hat mit dem ordnen statt filtern!

    Wegen des "Schiebereglers" meinte ich keine Scrollbar, sondern einen Regler, der wie beim Ordnen z.B. nurn noch Preise über 100 Euro anzeigt, wenn man ihn nach rechts schiebt. Ich hoffe, das war vertsändlich...

  5. hi,

    </head>

    <body>

    <?php

    // Tabelle erstellen fuer die Ausgabe
    echo '<table border="1">';
    echo "<tr><th>Vorname</th><th>Name</th><th>E-Mail-Adresse</th><th>Herkunft</th><th>Herkunfts-Stadt</th><th>Zielland</th><th>Alter</th><th>Bemerkungen</th><th>Datum</th></tr>";
    // Ab hier werden die Datensaetze zeilenweise ausgeben (auch fetchen genannt)
    while ($datensatz = mysql_fetch_array( $abfrageergebnis ))
    {
    // Jeder Datensatz entspricht einer Tabellenzeile
    echo "<tr>";
    echo "<td>" .htmlspecialchars( $datensatz['vorname'] ). "</td>";
    echo "<td>" .htmlspecialchars( $datensatz['name'] ). "</td>";
    echo "<td>" .htmlspecialchars( $datensatz['mail'] ). "</td>";
    echo "<td>" .htmlspecialchars( $datensatz['herkunft'] ). "</td>";
    echo "<td>" .htmlspecialchars( $datensatz['herkunftsstadt'] ). "</td>";
    echo "<td>" .htmlspecialchars( $datensatz['zielland'] ). "</td>";
    echo "<td>" .$datensatz['alter']. "</td>";
    echo "<td>" .htmlspecialchars( $datensatz['bemerkungen'] ). "</td>";
    echo "<td>" .$datensatz['datum']. "</td>";
    echo "</tr>";
    }
    // Tabelle schliessen
    echo "</table>";

    Auch wenn es nicht gefragt war, ich rate mal wieder davon ab, php-Code auszuechoen. Nutze alternative Syntax:

    [link:http://php.net/manual/en/control-structures.alternative-syntax.php]

    [code lang=php]<?php while($datensatz = mysql_fetch_array( $abfrageergebnis )):?>

    ~~~html
    <tr>  
    <td> [code lang=php]<?php echo htmlspecialchars($dantsatz["vorname"]?>
    ~~~ </td>  
    <etc></etc>  
    </tr>  
    [/code]  
    `<?php endwhile;?>`{:.language-php}  
      
    mfg  
      
    tami
    
  6. @@klausi:

    nuqneH

    echo "<td>" .htmlspecialchars( $datensatz['zielland'] ). "</td>";
    echo "<td>" .$datensatz['alter']. "</td>";
    echo "<td>" .htmlspecialchars( $datensatz['bemerkungen'] ). "</td>";
    echo "<td>" .$datensatz['datum']. "</td>";

    Hat es eigentlich eine spezielle Bewandnis, dass $datensatz['alter'] und $datensatz['datum'] als sicher angesehen werden und nicht mit htmlspecialchars() behandelt werden? Oder wurde dies einfach vergessen?

    Qapla'

    --
    „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
    1. Hat es eigentlich eine spezielle Bewandnis, dass $datensatz['alter'] und $datensatz['datum'] als sicher angesehen werden und nicht mit htmlspecialchars() behandelt werden? Oder wurde dies einfach vergessen?

      Darüber hab ich mal nachgedacht.

      Die Daten stammen aus der Datenbank. Ich gehe mal davon aus, der Klausi ist kein ganz dummer, und hat die betreffenden Felder auf einen Datentyp gesetzt (oder das Alter errechnet) - so dass sich eine Behandlung mit htmlspecialchars() schlicht erübrigt. Sicher wird er auch selbst Verwalter der Datenbank sein oder diesem vertrauen und vermutlich geht er davon aus, dass wenn jemand soweit Zugriff auf die Datenbank hat, dass er unerlaubt die Datentypen und den Inhalt ändern kann, ganz andere Probleme vorliegen als die Frage ob jetzt noch ein htmlspecialchars() nötig wäre.

      Jörg Reinholz