Ankündigung

Einklappen
Keine Ankündigung bisher.

Bitte um Hilfe bei Query

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Bitte um Hilfe bei Query

    Hallo liebe Leute,

    ich habe einen Kalender online und will über die Wensite zur nächsten Veranstaltung springen. Doch bei Veranstaltungen am selben Tag werden die übersprungen da je nach dem > oder < es ja bedingt. Doch ändere ich es auf >= oder <= bleibt das Script an dem bewussten Tag hängen. das Springen über die ID ist auch keine Lösung, da die User, die Veranstaltungen nicht unbedingt in der Datumsreihenfolge registrieren.
    Kann mir jemand einen Tipp geben, wie ich das Problem löse oder umgehe?
    PHP-Code:
    //Wenn es zurückgeht im Kalender
    $sql "SELECT `id`, `date`\n"
        
    "FROM `rennen` \n"
        
    "WHERE `date`<(SELECT `date` FROM `rennen`
                        WHERE `id`= '"
    .$zurueck."')\n"
        
    "AND `date` BETWEEN '".JAHR."-01-01' and '".JAHR."-12-31'\n"
        
    "AND `id` NOT LIKE '".$zurueck."' \n"
        
    "ORDER BY `date` DESC \n"
        
    "LIMIT 1";

    // Wenn es vorgeht im Kalender
    $sql "SELECT `id`, `date`\n"
        
    "FROM `rennen` \n"
        
    "WHERE `date`>(SELECT `date` FROM `rennen`
                        WHERE `id`= '"
    .$vor."')\n"
        
    "AND `date` BETWEEN '".JAHR."-01-01' and '".JAHR."-12-31'\n"
        
    "AND `id` NOT LIKE '".$vor."' \n"
        
    "ORDER BY `date` ASC \n"
        
    "LIMIT 1"

  • #2
    Wenn du das ohne großen Aufwand anpassen willst, brauchst du eine Sortierung in der für jede Veranstaltung feststeht ob sie größer oder kleiner ist, also der Fall "gleich" darf nicht eintretten. Beziehst du die Id mit in die Sortierung ein, ist das gegeben.

    Sieht dann so aus:

    PHP-Code:
    $sql "SELECT `id`, `date`\n"
    "FROM `rennen` \n"
    "WHERE (`date`, id) < (SELECT `date`, id FROM `rennen`
    WHERE `id`= '"
    .$zurueck."')\n"
    "AND `date` BETWEEN '".JAHR."-01-01' and '".JAHR."-12-31'\n"
    "AND `id` NOT LIKE '".$zurueck."' \n"
    "ORDER BY `date` DESC, id \n"
    "LIMIT 1"

    Kommentar


    • #3
      Zitat von erc Beitrag anzeigen
      Wenn du das ohne großen Aufwand anpassen willst, brauchst du eine Sortierung in der für jede Veranstaltung feststeht ob sie größer oder kleiner ist, also der Fall "gleich" darf nicht eintretten. Beziehst du die Id mit in die Sortierung ein, ist das gegeben.

      Sieht dann so aus:

      PHP-Code:
      $sql "SELECT `id`, `date`\n"
      "FROM `rennen` \n"
      "WHERE (`date`, id) < (SELECT `date`, id FROM `rennen`
      WHERE `id`= '"
      .$zurueck."')\n"
      "AND `date` BETWEEN '".JAHR."-01-01' and '".JAHR."-12-31'\n"
      "AND `id` NOT LIKE '".$zurueck."' \n"
      "ORDER BY `date` DESC, id \n"
      "LIMIT 1"
      Danke für den Hinweis, da liegt die Krux, ich sage mal Veranstalter x meldet gestern eine Veranstaltung zum 29.09. hat dann id 145 dann melden weitere. Dann meldet ein neuer Veranstalter in einer Woche eine Veranstaltung zum 01.04. der hat die id 165. Da liegt ja mein Problem, ich habe keine Idee wie ich das löse, denn egal was mir einfällt, es scheitert an den Eingaben der User. Ich habe z.B. einen Fall, 2 Veranstalter, ids sind 20 Nummern auseinander aber am selben Tag.

      Kommentar


      • #4
        Schaus dir nochmal genau an. Die Problematik ist mir durchaus bewusst. Ich hab nicht geschrieben du sollst nach Id sortieren, sondern du sollst die Id in die Sortierung mit einbeziehen. Der Query ist unmissverständlich, zumindestens für die Datenbank.

        Kommentar


        • #5
          Zitat von erc Beitrag anzeigen
          Schaus dir nochmal genau an. Die Problematik ist mir durchaus bewusst. Ich hab nicht geschrieben du sollst nach Id sortieren, sondern du sollst die Id in die Sortierung mit einbeziehen. Der Query ist unmissverständlich, zumindestens für die Datenbank.
          Danke dir, es war die Lösung.

          Kommentar

          Lädt...
          X