Henning: schlleife mit while - kein erster durchlauf !?

Gute nact forumler,
also ich hab nu schon zum zweiten mal das problem, dass php mr eine while-schleife das erstemal nicht ausführt.
also es ist ein mysql-Ergebnis.

$q = mysql_query("SELECT * FROM news");
while ($newsdat = mysql_fetch_assoc($q))
 {
  echo $newsnummer; //zum testen
 }
die news stehen alle mit den nummer 1-81 in der DB.
PHPMyAdmin maht das auch alles ganz schön.
aber hier fängt er eben bei Nr 2 an und hört bei 81 auf.
ICh hatte das Problem schonmal und hab dann den FEhler entdeckt, irgendwas hab ich vergessen oder falsch gemacht oderso, kent ihr da Problem?
Mir fällt jetzt grad nich ein was ich damals geändert hab, vielleicht fällts euch ja ein :)
danke, henning.

  1. Hello,

    also ich hab nu schon zum zweiten mal das problem, dass php mr eine while-schleife das erstemal nicht ausführt.

    Das ist ziemlich unverstellbar oder zumindest nur mit Psi.
    Eine Schleife, die das erste Mal nicht ausgeführt wird, wird gar nicht ausgeführt.

    also es ist ein mysql-Ergebnis.

    $q = mysql_query("SELECT * FROM news");
    while ($newsdat = mysql_fetch_assoc($q))
     {
      echo $newsnummer; //zum testen
     }

    Was soll denn da angezeigt werden?
    Woher kommt denn $newsnummer?

    $res = mysql_query("SELECT * FROM news",$con);

    while ($_newsdat = mysql_fetch_assoc($res))
    {
      echo $_newsdat['newsnummer']."<br />\n";
    }

    Könnte es so besser klappen?
    MySQL_fetch_assoc() liefert ein Array (was ich immer durch den Unterstrich kennzeichne) mit den Spalten des Ergebnisdatensatzes, der bei while gerade im Focus steht. Aus diesem Array musst Du erst noch die passende Spalte herausholen.

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

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Was soll denn da angezeigt werden?
      Woher kommt denn $newsnummer?

      $res = mysql_query("SELECT * FROM news",$con);

      while ($_newsdat = mysql_fetch_assoc($res))
      {
        echo $_newsdat['newsnummer']."<br />\n";
      }

      Hab mich nur beim abtippen vertippt.
      sieht schonso aus.
      und so habe ich es auch probiert.
      und dann gibt er aber nur aus
      2
      3
      4
      5
      6
      7
      8
      9
      10
      (...)
      also das erste nicht.
      Und das kommt auch am Schluss nicht hinten oderso.
      ICh hatte das schonmal und konnte am anfang auch keinen FEhler finde...
      Irgendwas ganz kleines, ein ganz kleines Dingens wars dann...
      Naj trotzdem danke, Henning.

      1. Hello,

        Hab mich nur beim abtippen vertippt.
        sieht schonso aus.
        und so habe ich es auch probiert.
        und dann gibt er aber nur aus

        [...]

        also das erste nicht.

        Dann wird das erste Element inzwischen nicht mehr dasein. Woher nimmst Du die Sicherheit, dass es da sein muss?

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

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. Weil es in der Datenbank steht und bei jedem Aufruf die Daten neu ausgelesen werden.
          Und im PHPMyAdmin steht es ja auch drin und gelöscht habe ich es nicht.

          1. Hello,

            Weil es in der Datenbank steht und bei jedem Aufruf die Daten neu ausgelesen werden.
            Und im PHPMyAdmin steht es ja auch drin und gelöscht habe ich es nicht.

            Dann hast Du mindestens ein Zeile Code unterschlagen.

            Das wäre dann eine Standardfehler und würde schon fast in die FAQ zum Thema PHP gehören.

            Also bitte nochmals den vollständigen Code des Abschnitts.

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

            Tom

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

              also nun habe ich den ersten Eintrag mal scherzeshalber und zum testen aus der Datenbank gelöscht.
              Jetzt gibt er mir nur noch Nr. 3-81 aus.
              Also wieder den ersten der in der Db steht nicht.

              Also hier der komplette Code:

              $newsq = mysql_query("SELECT * FROM news");

              while ($row = mysql_fetch_assoc($newsq))
                 {
                  echo "test: ".$row['nr']."<br>\n";
                  //rest ist unwichtig
                 }

              jetzt hab ichs per copy&paste reingemacht.
              wenn ich diese schleife genauso durchlaufen lasse, mit diesem kommentar und ohne inhalt, dann gibt er mir jetzt die zahlen 3-81 aus.
              Weil ich jetzt Nr. 1 gelöscht habe.
              Jetzt habe ich gerade Nr. 1 wieder in die Datenbank geschrieben (per PHPMyAdmin) dann gibt er 2-81 aus.
              Er gibt den ersten nicht aus.
              Das kann doch nicht sein!?

              1. Na wie jetzt?
                vor diesem code ist nochmal eine schleife.
                die auch auf $porto zugreift.
                und $porto ist weiter oben definiert.
                Und jetzt hab ich die Definition von $porto einfach kopiert und unten nochmal reingestellt.
                vor diese schliefe.
                Un nun gehts!?
                Hm.
                Komisch.
                ICh verstehs echt nicht.
                Naja trotzdem danke für deine Hilfe :)