Ramirez: Datenbankinhalt wird nicht ab ersten Eintrag angezeigt

Hallo
ich komme mit meinem Script nicht weiter.
Der Fehler ist Providerunabhängig (tritt auf Seiten bei mehreren Providern auf!).
Wenn ich in eine Mysql4 Datenbank einen Datensatz eingebe, wird dieser nicht auf der PHP Seite angezeigt. Gebe ich nun einen zweiten Eintrag ein als Dummy, wird der erste Eintrag angezeigt aber nicht der zweite, gebe ich einen dritten Eintrag ein, werden nur die ersten beiden Einträge angezeigt usw. D.h. es wird immer ein Eintrag geschluckt.
Ich finde den Fehler leider nicht.
Kann mir bitte jemand mit mehr Erfahrung in diesem Bereich den Fehler in meinem Code zeigen?

Anbei der PHP Code:
<div class="content">
<h1>Termine</h1>
<?php

mysql_connect ("Servername","Anmeldename","Passwort");
mysql_select_db ("Database");

$query = "SELECT  Anfangsdatum, Enddatum, Betreff, Anfangszeit, Endzeit, Ort, Link, Zusatz, Link2, Art
FROM TermineWHERE 1 ORDER BY Anfangsdatum ASC ";

$res = mysql_query( $query );

$dsatz = mysql_fetch_assoc($res);

?>

<table border="1">
<tr>
<th>Anfangsdatum</th>
<th>Enddatum</th>
<th>Thema / Inhalt</th>
<th>Anfang</th>
<th>Ende</th>
<th>Ort</th>
<th>Zusatz</th>
<th>Art</th>

</tr>

<?php

if ($res) {
while ($dsatz = mysql_fetch_assoc($res)) {
echo "<tr>";
echo "<td>" . date("d.m.y", strtotime($dsatz["Anfangsdatum"])). "</td>";
if ($dsatz ["Enddatum"]=="0000-00-00")
echo "<td>-</td>";
else
echo   "<td>" . date("d.m.y", strtotime($dsatz ["Enddatum"])) . "</td>";
if ( empty ($dsatz ["Link"] ))

echo ' <td>' . $dsatz ["Betreff"] . '</td>';

else

echo ' <td><a href="' . $dsatz ["Link"] . '">' . $dsatz ["Betreff"] . '</a></td>';

if ($dsatz ["Anfangszeit"]=="00:00:00")
echo "<td>-</td>";
else
echo " <td>" . $dsatz ["Anfangszeit"] . "</td>";
if ($dsatz ["Endzeit"]=="00:00:00")
echo "<td>-</td>";
else
echo " <td>" . $dsatz ["Endzeit"] . "</td>";

echo " <td>" . $dsatz ["Ort"] . " </td>";

if ( empty ($dsatz ["Link2"] ))

echo ' <td>' . $dsatz ["Zusatz"] . '</td>';

else

echo ' <td><a href="' . $dsatz ["Link2"] . '">' . $dsatz ["Zusatz"] . '</a></td>';

if ( empty ($dsatz ["Art"] ))

echo ' <td>' - '</td>';

else

echo ' <td>' . $dsatz ["Art"] . '</td>';

echo "</tr>";
}
}
echo "</table>";
?>

</div>

</body>
</html>

Für die Hilfebemühungen im voraus besten Dank.
Rasputin

  1. Hallo

    formatiere mal deinen Quelltext bitte
    So kann man es kaum lesen.

    Was soll die Where Klausel?
    WHERE 1 ORDER BY ...

    Grusse
    hawk

    1. Hallo

      formatiere mal deinen Quelltext bitte
      So kann man es kaum lesen.

      Was soll die Where Klausel?
      WHERE 1 ORDER BY ...

      Grusse
      hawk

      die sollte mir die rausgezogenen Spalten nach Anfangsdatum sortieren.

      Ich habe das mal modifiziert:
      $query = "SELECT  Anfangsdatum, Enddatum, Betreff, Anfangszeit, Endzeit, Ort, Link, Zusatz, Link2, Art FROM Termine ORDER BY Anfangsdatum ASC ";

      Ich habe in der Datenbanktabelle Termine 3 Einträge, angezeigt werden jedoch nur 2

      Auf das Where 1 bin ich dadurch gekommen, dass die Datenbank das mir bei generierten Anfragen so angezeigt hat.

      Danke schon mal für das erste Feedback
      Ramirez Rasputin

      1. Hello,

        Auf das Where 1 bin ich dadurch gekommen, dass die Datenbank das mir bei generierten Anfragen so angezeigt hat.

        das kann nur Bequemlichkeit sein. Ohne echte Bedingungen kann der WHERE-Teil entfallen.

        Zu deinem eigentlichen Problem:
        oberhalb der HTML-Tabelle hast du
        $dsatz = mysql_fetch_assoc($res);
        stehen, damit greifst du den ersten Satz ab. Weiter unten läuft deine Schleife, die nun logischerweise als nächstes den zweiten Satz abgreift - Den ersten Satz kriegst du nie zu sehen.

        MfG
        Rouven

        --
        -------------------
        sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
        Eine Bilanz ist wie der Bikini einer Frau. Sie zeigt fast alles, aber verdeckt das Wesentliche  --  Günter Stotz, Regierungsdirektor des baden-württembergischen Wirtschaftsministeriums
        1. »

          Zu deinem eigentlichen Problem:
          oberhalb der HTML-Tabelle hast du
          $dsatz = mysql_fetch_assoc($res);
          stehen, damit greifst du den ersten Satz ab. Weiter unten läuft deine Schleife, die nun logischerweise als nächstes den zweiten Satz abgreift - Den ersten Satz kriegst du nie zu sehen.

          MfG
          Rouven

          Hallo Rouven,
          das erklärt einige.
          D.h. ich muss immer einen Dummy Eintrag erstellen oder wie kann man das sauber lösen?
          Ich lerne gerne dazu, wie man das besser lösen kann!

          Danke im voraus
          Ramirez Rasputin

          1. Mahlzeit Ramirez,

            D.h. ich muss immer einen Dummy Eintrag erstellen

            Nein! Du solltest nicht Probleme durch neue Probleme verschleiern.

            oder wie kann man das sauber lösen?

            Indem Du die Ursache behebst - lass das erste $dsatz = mysql_fetch_assoc($res); doch einfach weg! Wozu brauchst es überhaupt an dieser Stelle?

            MfG,
            EKKi

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

              hat geholfen!

              Läuft nun wunderbar!!!