berni: for schleife - wie richtig????

hi @ all!

ich hab eine bitte: gestern war jemand so nett und hat mir eine 'for-schleife' vogeschlagen, wenn ich bei einem cms (tabelle besteht aus 2 spalten: 'ID' und 'inhalt')nicht den inhalt ändern will, sondern 299 zeilen unter ID anlegen will, ich hab da auch progr. - aber,es geht zwar durch bis zum echo, ohne fehlermeldung >>> es bleibt aber nur ID 300  angelegt, 1 - 299 wurden nicht angelegt, bitte was hab' ich falsch gemacht?????

hier meine schleife:

<?require ("connect.php");
for($i = 0; $i < 300; $i++ )
mysql_query('INSERT INTO hp (ID) VALUES ($i)');
echo "Alle Seiten angelegt";
?>

liebe grüße
berni

  1. hi,

    es bleibt aber nur ID 300  angelegt, 1 - 299 wurden nicht angelegt, bitte was hab' ich falsch gemacht?????

    for($i = 0; $i < 300; $i++ )
    mysql_query('INSERT INTO hp (ID) VALUES ($i)');

    du überschreibst jedes mal in dem datensatz mit der id (ID) den wert mit deinem aktuellen zählerstand.

    du scheinst noch gar nicht verstanden zu haben, was du da eigentlich tust ...

    gruss,
    wahsaga

    1. du scheinst noch gar nicht verstanden zu haben, was du da

      ===> Scheint so ;-), aber deshalb frag ich ja hier, wenn ichs behirnt hätte, würde ich ja da nicht fragen!

      ich fürchte i < 300 ist auch 1 bzw.0, müsste es nicht <=299

      liebe grüße
      berni

    2. Hallo wahsaga,

      mysql_query('INSERT INTO hp (ID) VALUES ($i)');

      du überschreibst jedes mal in dem datensatz mit der id (ID) den wert mit deinem aktuellen zählerstand.

      du scheinst noch gar nicht verstanden zu haben, was du da eigentlich tust ...

      Du?

      Bitte zeige mir _eine_ SQL Query, bei der ein INSERT einen vorhandenen Datensatz _überschreibt_ ;-))

      viele Grüße

      Axel

      1. hi,

        Bitte zeige mir _eine_ SQL Query, bei der ein INSERT einen vorhandenen Datensatz _überschreibt_ ;-))

        sorry, wohl zu oberflächlich gelesen.

        gruss,
        wahsaga

        1. DANKE alles klappt, Ihr habt mir super geholfen!!!

    3. yo,

      du scheinst noch gar nicht verstanden zu haben, was du da eigentlich tust ...

      das gilt scheinbar für uns alle. liegt vielleicht daran, das wir doch nur menschen sind und fehler machen. aber manche sind doch gleicher...

      grüße
      Ilja

  2. Hallo,

    hier meine schleife:

    <?require ("connect.php");
    for($i = 0; $i < 300; $i++ )

    Hier wird i, solange kleiner als 300 immer um eins erhöht. Am Ende ist i dann 300.

    mysql_query('INSERT INTO hp (ID) VALUES ($i)');

    Das wird nur einmal ausgeführt, mit i = 300.

    echo "Alle Seiten angelegt";
    ?>

    for($i = 0; $i < 300; $i++ ) {
        mysql_query('INSERT INTO hp (ID) VALUES ($i)');
    }
    echo "Alle Seiten angelegt";

    Oder die andere Methode, die in http://www.php.net/manual/de/control-structures.for.php beschrieben ist, wäre wahrscheinlich besser. Noch besser wäre allerdings zu überlegen, ob eine solche Datensatzfüllmethode überhaupt notwendig ist.

    viele Grüße

    Axel

    1. Hallo,

      hier meine schleife:

      <?require ("connect.php");
      for($i = 0; $i < 300; $i++ )
      Hier wird i, solange kleiner als 300 immer um eins erhöht. Am Ende ist i dann 300.
      mysql_query('INSERT INTO hp (ID) VALUES ($i)');
      Das wird nur einmal ausgeführt, mit i = 300.
      echo "Alle Seiten angelegt";
      ?>

      for($i = 0; $i < 300; $i++ ) {
          mysql_query('INSERT INTO hp (ID) VALUES ($i)');
      }
      echo "Alle Seiten angelegt";

      Oder die andere Methode, die in http://www.php.net/manual/de/control-structures.for.php beschrieben ist, wäre wahrscheinlich besser. Noch besser wäre allerdings zu überlegen, ob eine solche Datensatzfüllmethode überhaupt notwendig ist.

      viele Grüße

      Axel

      hi axel!

      Ich hab leider keinen plan, auch der URL half nix (newbie php >> mach das erst seit ca. 1 monat) - ich will 299 zeilen anlegen, ohne vorerst nicht 'inhalt', nur 299 zeilen in der spalte ID. gestern kam der vorschlag hier eine for-schleife zu machen. die tabelle wurde mit auto-increment angelegt.

      1. Hallo,

        Ich hab leider keinen plan, auch der URL half nix (newbie php >> mach das erst seit ca. 1 monat)

        Ja und mit den geschweiften Klammern also:

        for($i = 0; $i < 300; $i++ ) {
             mysql_query('INSERT INTO hp (ID) VALUES ($i)');
        }
        echo "Alle Seiten angelegt";

        geht es immer noch nicht?

        • ich will 299 zeilen anlegen, ohne vorerst nicht 'inhalt', nur 299 zeilen in der spalte ID. gestern kam der vorschlag hier eine for-schleife zu machen. die tabelle wurde mit auto-increment angelegt.

        Wenn ID Auto-Increment ist, musst Du allerdings beim INSERT einer anderen Spalte einen Wert zuweisen, weil ID dann eben _automatisch_ weitergezählt wird.

        Die Frage bleibt aber: Wozu werden in einer Datenbank-Tabelle leere Datensätze benötigt? Füge diese doch dann ein, wenn Du die notwendigen Werte kennst.

        viele Grüße

        Axel

        1. Hallo,

          Ilja hat natürlich auch Recht. In single-Quotes stehende WVariablen werden natürlich nicht durch ihre Werte ersetzt.

          for($i = 0; $i < 300; $i++ ) {

          mysql_query("INSERT INTO hp (ID) VALUES ($i)");

          }
          echo "Alle Seiten angelegt";

          ist also richtiger.

          http://www.php.net/manual/de/language.types.string.php

          viele Grüße

          Axel

    2. yo,

      for($i = 0; $i < 300; $i++ )

      Hier wird i, solange kleiner als 300 immer um eins erhöht. Am Ende ist i dann 300.

      mysql_query('INSERT INTO hp (ID) VALUES ($i)');
      Das wird nur einmal ausgeführt, mit i = 300.

      wenn nach einer schleife nur eine befehlszeile folgt, dann braucht man keine klammerung mit {...}. insofern wird die mysql_query auch merfach ausgeführt, nur scheinbar fehlerhaft, allerdings ohne fehlermeldung.

      Ilja

  3. yo,

    mysql_query('INSERT INTO hp (ID) VALUES ($i)');

    versuch es mal mit " anstelle von '

    mysql_query("INSERT INTO hp (ID) VALUES ($i)");

    Ilja