lorddoener: Gewissen Teil eines Scriptes x mal ausführen

Hallo!
Da mir bei meinem anderen Problem schon tadellos geholfen wurde habe ich hier ein anderes Problem. Ich möchte eine Datenbankabfrage machen (hab ich schon), doch der Teil in der while schleife soll nicht 41,267 mal ausführen, sondern nur x mal!(x steht für eine feste Zahl in meiner Datenbank, die gleichzeitig mit abgeruft wird!)
Genauer beschrieben:
Hier werden PosX und PosY abgerufen, außerdem x
while($row = mysql_fetch_object($ergebnis)) //das dürfte wohl klar sein!
{
    imagesetpixel($grafik,$row->PosX,$row->PosY,$farbe) //Grafik habe ich erstellt, row x und row Y sind die Koordinaten und $farbe habe ich auch festgelegt.
}
Das Script läuft wunderbar, doch ich möchte nicht 41,267 Pixel setzen sondern nur x.
Mich würde es freuen, wenn es eine Lösung gibt!
MFG lorddoener

  1. Hier werden PosX und PosY abgerufen, außerdem x
    while($row = mysql_fetch_object($ergebnis)) //das dürfte wohl klar sein!
    {
        imagesetpixel($grafik,$row->PosX,$row->PosY,$farbe) //Grafik habe ich erstellt, row x und row Y sind die Koordinaten und $farbe habe ich auch festgelegt.
    }
    Das Script läuft wunderbar, doch ich möchte nicht 41,267 Pixel setzen sondern nur x.
    Mich würde es freuen, wenn es eine Lösung gibt!
    MFG lorddoener

    Hallo!

    Vor der Schleife musst du eine Zählvariable auf eins setzen. Dann kannst du in der Schleife einfach folgendes schreiben:

    //----------------

    if ($zaehlvariable == $x)
        break;

    // hier kommt der Code, der in der Schleife steht
    // ...

    // Und dann kommt am Ende das hier:

    $zaehlvariable++;

    1. Hier werden PosX und PosY abgerufen, außerdem x
      while($row = mysql_fetch_object($ergebnis)) //das dürfte wohl klar sein!
      {
          imagesetpixel($grafik,$row->PosX,$row->PosY,$farbe) //Grafik habe ich erstellt, row x und row Y sind die Koordinaten und $farbe habe ich auch festgelegt.
      }
      Das Script läuft wunderbar, doch ich möchte nicht 41,267 Pixel setzen sondern nur x.
      Mich würde es freuen, wenn es eine Lösung gibt!
      MFG lorddoener

      Hallo!

      Vor der Schleife musst du eine Zählvariable auf eins setzen. Dann kannst du in der Schleife einfach folgendes schreiben:

      //----------------

      if ($zaehlvariable == $x)
          break;

      // hier kommt der Code, der in der Schleife steht
      // ...

      // Und dann kommt am Ende das hier:

      $zaehlvariable++;

      Genial Einfach! Einfach Genial! Danke schöN!
      hat einwandfrei geklappt, aber ich habs per <img> eingebunden, statt direkt auf die seite!

      MFG lorddoener

  2. Hi,

    Ich möchte eine Datenbankabfrage machen (hab ich schon), doch der Teil in der while schleife soll nicht 41,267 mal ausführen, sondern nur x mal!(x steht für eine feste Zahl in meiner Datenbank, die gleichzeitig mit abgeruft wird!)
    Genauer beschrieben:
    Hier werden PosX und PosY abgerufen, außerdem x
    while($row = mysql_fetch_object($ergebnis)) //das dürfte wohl klar sein!

    Wenn diese Schleife 41irgendwastausendmal durchlaufen wird, dann heisst das wohl, dass du 41irgendwastausend Datensaetze von der Datenbank abgefragt hast.

    Das Script läuft wunderbar, doch ich möchte nicht 41,267 Pixel setzen sondern nur x.

    Dann lese nur die Datensaetze aus der DB aus, die dich wirklich interessieren - alles anderes ist aus Performance-Sicht absoluter Bloedsinn.

    MfG ChrisB

    1. Hi,

      Ich möchte eine Datenbankabfrage machen (hab ich schon), doch der Teil in der while schleife soll nicht 41,267 mal ausführen, sondern nur x mal!(x steht für eine feste Zahl in meiner Datenbank, die gleichzeitig mit abgeruft wird!)
      Genauer beschrieben:
      Hier werden PosX und PosY abgerufen, außerdem x
      while($row = mysql_fetch_object($ergebnis)) //das dürfte wohl klar sein!

      Wenn diese Schleife 41irgendwastausendmal durchlaufen wird, dann heisst das wohl, dass du 41irgendwastausend Datensaetze von der Datenbank abgefragt hast.

      Genau das wollte ich damit ausdrücken!

      Das Script läuft wunderbar, doch ich möchte nicht 41,267 Pixel setzen sondern nur x.

      Dann lese nur die Datensaetze aus der DB aus, die dich wirklich interessieren - alles anderes ist aus Performance-Sicht absoluter Bloedsinn.

      Das wusste ich und daher meine Frage!

      MfG ChrisB

      1. Hi,

        Dann lese nur die Datensaetze aus der DB aus, die dich wirklich interessieren - alles anderes ist aus Performance-Sicht absoluter Bloedsinn.

        Das wusste ich und daher meine Frage!

        Gut - du nimmst aber hoffentlich nicht an, mit der vorgeschlagenen "Loesung" haettest du eben dieses erreicht.

        MfG ChrisB

        1. Hi,

          Dann lese nur die Datensaetze aus der DB aus, die dich wirklich interessieren - alles anderes ist aus Performance-Sicht absoluter Bloedsinn.

          Das wusste ich und daher meine Frage!

          Gut - du nimmst aber hoffentlich nicht an, mit der vorgeschlagenen "Loesung" haettest du eben dieses erreicht.

          Nein, aber ich fand es nett von dir, mir zu helfen, denn es gibt viele andere, die nicht so nett sind!

          MfG ChrisB

          Tja, dann auch nochmals Tschüss!

          1. so, das erste problem wäre gelöst!
            Ich be aber ncoh ein problem mit einer anderen Abfrage:

            if(!isset($_SESSION['ip']))
                {
                  $sql01 = "SELECT user, freigeschaltet FROM user WEHERE user = '$mo'";
                  //^dies soll den Wert freigeschaltet ausgeben
                  $sql02 = mysql_query($sql01);
                  //^is wohl klar
                  while($row3 = mysql_fetch_object($sql02)) //genau so wie das
                  {
                    $row3->freigeschaltet++; //ich möchte, das es um eins hochgezählt wird. dies geschieht aber nur einmal, da $mo nur einmal in der tabelle vorkommt!
                    $sql3 = "UPDATE user Set freigeschaltet = '$row3->freigeschaltet'
                    WHERE user = '$mo'";
            //Jetzt soll er den um 1 erhöhten stand speichern
                    $sql4 = mysql_query($sql3);
                  }
                  $_SESSION['ip'] = $ip; //Danch soll eine Reload sperre verhängt werden
                }
                else
                {
                  echo "Sie haben ".$mo."'s Pixelmonster bereits besucht!";
                }

            Das erfreuliche: Kein Error bekommen!
            Das schlechte: Er tut nix!
            Ein Bild des Datenbankaufbaus findet ihr hier:
            http://4gamers-unlimited.com/datenbank.jpg
            ich weis nicht obs hilft, aber ich habe im gleichen dokument nochmals die umfassend gleiche abfrage (Die ich in diesem Thread bekommen habe!):

            $abfrage2 = "SELECT user, freigeschaltet FROM user WHERE user LIKE '$mo'";
                $ergebnis2 = mysql_query($abfrage2);
                while($row2 = mysql_fetch_object($ergebnis2))
                {
                  $abfrage = "SELECT PosX, PosY FROM pixelmonster";
                 $ergebnis = mysql_query($abfrage);
                 while($row = mysql_fetch_object($ergebnis))
                 {
                  if ($zaehlvariable == $row2->freigeschaltet)
                  break;
                  imagesetpixel($grafik,$row->PosX,$row->PosY,$farbe);
                  $zaehlvariable++;
                 }
                }

            Vielleicht ginge es auch, beides miteinander zu kombinieren und so resourcen zu sparen?!
            Vielen Dank im voraus - der kleine dönernoob