ilch Forum » Allgemein » HTML, PHP, SQL,... » Wie abfragen?!

Geschlossen
  1. #1
    User Pic
    Hippo4u Mitglied
    Registriert seit
    02.10.2009
    Beiträge
    19
    Beitragswertungen
    0 Beitragspunkte
    Hey!

    Stehe momentan echt aufm Schlauch, aus welchen Gründen auch immer...

    Ich hab Tabelle in der in verschiedenen Zeiträumen alle 30 sekunden ein eintrag gemacht wird.

    Praktischerweise sollte dieser Eintrag bei 1 beginnen, aus verschiedenen Gründen geht dies aber nicht und fängt erst bei später an.

    Nunja jetzt hab ich folgende Tabellenstruktur:

    id | lap | groupid
    ----------------
    1 | 4 | 1
    2 | 5 | 1
    3 | 6 | 1
    ....

    Nunja ich hab jede 30 Sekunden einen neuen Wert bei dem lap eigentlich sein sollte. Ebenfalls sollte der wert immer bei 1 anfangen, sprich ich brauch eine Abfrage die überprüft ob sie bei 1 anfängt und ggf einträgt und das so weiterführt bis zum Wert der maximal sein darf.

    Sprich ich brauch eine Abfrage die überprüft ob 1 vorhanden ist, 2 vorhanden ist, 3 vorhanden ist ....

    Ich weis das die einfachste möglichkeit das Problem zu lösen mit einer while-schleife ist, doch ich kriegs heute zum verrecken nicht hin xD

    Vielen dank schonmal für die hilfe


    Zuletzt modifiziert von Hippo4u am 27.04.2010 - 12:58:32
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    GeCk0 Hall Of Fame
    Registriert seit
    01.05.2009
    Beiträge
    2.989
    Beitragswertungen
    96 Beitragspunkte
    wenns für ilch ist kannst du db_last_id() verwenden

    ansonsten schau dir mal das hier an

    externer Link


    Zuletzt modifiziert von GeCk0 am 27.04.2010 - 13:31:12
    Alle Module von mir sind nun unter php-gecko.de erreichbar
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Hippo4u Mitglied
    Registriert seit
    02.10.2009
    Beiträge
    19
    Beitragswertungen
    0 Beitragspunkte
    Ja ne das ist nicht ganz das was ich suche...

    Das ganze soll grob betrachtet eine Art "RacingManager" werden.

    Beispiel:
    Im Zeitraum zwischen 18:00 - 19:00 Uhr ist ein Rennen. Jede 30 Sekunden wird eine Runde absolviert bzw Generiert und somit auch ein Datenbank eintrag mit den dazugehörigen berechnungen gemacht. Der optimale Fall wäre, wenn der User von anfang bis Ende online wäre. Ist er das aber nicht und kommt z.B. um 18:05 online so fehlen insgesammt 10 Einträge. Diese sollten dann bis zur momentanen Rundenzahl 11 (Die berechnung dafür habe ich schon) eingetragen werden.

    Sprich ich brauch einfach eine Abfrage die Überprüft ob überhaupt Einträge fehlen und wenn sie das tuen sie von der niedrigsten zahl an bis oben hochzählt somit ich meine berechnungen dazwischen packen kann...

    Optimal wäre eine while-Schleife:

    $lapthistime = '11';
    $count = 1;
    
    while($lapthistime >= $count) {
      if($row['lap'] != $count) {
       Berechnungen + Datenbank eintrag
       $count++;
       } else {
       $count++;
      }
    }


    Oder halt irgendwie so. Aber dafür brauch ich halt eine Passende Abfrage mit der das möglich ist. Mit fetch_row bzw fetch_object wiederholt er ja die while-Schleife ja sooft wie auch Tabelleneinträge in der Tabelle sind.

    Verstehste? ^^

    Eigentlich ists gaaaaanz einfach das weis ich selbst, doch irgendwie mach ichs mir selbst so kompliziert das ich im moment einfach aufm Schlauch Steh ^^


    Zuletzt modifiziert von Hippo4u am 27.04.2010 - 14:54:20
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Mhh ich weiß ja nicht ob ich dich richtig verstehe, aber einfach alle Werte bis zu einem bestimmten Eintragen geht wie du sagst mit einer Schleife bzw. mit mehreren.

    $groupid = 2; //groupid die geändert werden soll
    $qry = db_query('SELECT lap FROM table WHERE groupid = ' . $groupid);
    $laps = array();
    while ($r = db_fetch_assoc($qry)) {
      $laps[] = $r['lap'];
    }
    //Nun sind alle schon vorhanden Laps in diesem Array
    //Nun eine Query erstellen, mit der alle fehlenden Einträge bis zu einem Maximum eingetragen werden
    $sql_begin = 'INSERT INTO table (lap, groupid) VALUES ';
    $sqlvalues = array();
    for ($i = 1; $i <= MAX; $i++) { //Schleife zählt bis zu einem Maximalwert hoch
      if (!in_array($i, $laps)) { //überprüft ob Lap schon in der Datenbank steht (bzw. im Array)
        $newsql[] = '(' . $i . ', ' . $groupid .')';  //falls nicht zum Eintragen merken
    }
    db_query($sql_begin . implode(', ', $sqlvalues)); //INSERT Query zusammenfügen und ausführen
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Hippo4u Mitglied
    Registriert seit
    02.10.2009
    Beiträge
    19
    Beitragswertungen
    0 Beitragspunkte
    Hatte es ein wenig anderst auch gelöst aber Mairu du bist der beste glücklich

    Hatte es mit einer function gelöst die in einer while schleife jedes mal aufgerufen wird und jede einzelne lap überprüft.

    Deine Methode ist definitiv ressourcensparender glücklich

    Vielen dank!
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu HTML, PHP, SQL,...

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten