script-probs

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

  • script-probs

    Also fange ich mal an. Ich weiß leider nicht wie ich es umsetzen soll und hoffe das man mir helfen kann.

    Es geht um folgendes:

    Ich möchte aus einer vorhandenen Tabelle daten auslesen mit einem PHP-Script und in einer neuen Tabelle einfügen. Das Problem ist folgendes:

    Die tabelle heisst "table_bans" mit den einträgen "bhid, ban_created, ban_length". In der Tabelle ist jeder user einzeln eingetragen.

    Nun möchte ich mit einem PHP-Script alle User nach dem Datum auslesen (ban_created) und in eine neue Tabelle (nennen wir sie "table_ban_stats")
    nach datum sortiert eintragen (natürlich für alle Datums) mit den anzahl der bans.

    Also zb:
    PHP-Code:
    INSERT INTO table_ban_stats (time,allbansVALUES ('unixtime','anzahlderbans'
    Leider habe ich null Ahnung, wie ich es anstelle, die gesamten bans für zB den 22.01.2006 auszulesen um sie in die neue Tabelle einzufügen.

    Über hilfe würde ich mich sehr freuen



  • #2
    Für was willst du die SELBE Tabelle doppelt abspeichern?

    Wenn es dir ums sortieren geht nutzt "ORDER BY tabellenname" am Ende deiner Select Abfrage.

    Kommentar


    • #3
      die gesamten bans für zB den 22.01.2006 auszulesen
      SELECT * FROM table_bans WHERE ban_created = "$datum"

      Kommentar


      • #4
        Original geschrieben von Daniela
        Für was willst du die SELBE Tabelle doppelt abspeichern?

        Wenn es dir ums sortieren geht nutzt "ORDER BY tabellenname" am Ende deiner Select Abfrage.
        Nicht doppelt, es soll zusammengefasst werden das jedes datum eine tabelle belegt. Die Tabelle die ich auslesen will, hat alles durcheinander da in dieser Tabelle alles nach bhid und nicht nach ban_created eingetragen wird. So sieht sie jetzt aus:

        bhid - ban_created - ban_length
        1 ---- 1128782620 -- 720
        2 ---- 1128782620 -- 60
        3 ---- 1128782620 -- 720
        4 ---- 1140247336 -- 0
        5 ---- 1140247336 -- 60
        6 ---- 1140247336 -- 720

        ect ect

        ich möchte es aber so haben:

        time -------- all_bans
        1128782620 - 3
        1140247336 - 3

        ect blabla


        Kommentar


        • #5
          Vergiss die 2. Tabelle, alles was du brauchst ist ORDER BY und GROUP BY!

          EDIT:
          Mit COUNT noch nachwürzen, aber dann schmeckts wirklich vorzüglich

          Ausserdem wäre dieser Thread unter SQL besser aufgehoben als unter PHP.
          Zuletzt geändert von Quetschi; 23.02.2006, 16:11.
          Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
          Schön - etwas Geschichte kann ja nicht schaden.
          Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

          Kommentar


          • #6
            nee ich brauch die 2. Tabelle... hat seine Gründe...
            Also wäre es lieb wenn mir da jemand helfen würde


            Kommentar


            • #7
              Selbst wenn du unbedingt (aus welchen Gründen auch immer ) das Ganze in ne 2. Tabelle klopfen willst - COUNT, ORDER BY und GROUP BY bilden die optimale Ausgangslage dafür

              http://dev.mysql.com/doc/refman/4.1/...functions.html
              Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
              Schön - etwas Geschichte kann ja nicht schaden.
              Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

              Kommentar


              • #8
                hmmm habs mal versucht... funzt irgendwie net. trägt nur die unix-time ein, den rest liest er nicht ausIrgendwo nen Fehler drin?

                PHP-Code:
                <?php
                require "sql.php";
                $bantime time();
                $banlengthtotal $db->query_first("SELECT COUNT(ban_length) as anzahl FROM banhistory WHERE ban_created='$bantime'");
                $banlengthtotal $banlengthtotal[0];
                $banlength1 $db->query_first("SELECT COUNT(ban_length) as anzahl FROM banhistory WHERE ban_created='$bantime' GROUP BY ban_length='720'");
                $banlength1 $banlength1[0];
                $banlength2 $db->query_first("SELECT COUNT(ban_length) as anzahl FROM banhistory WHERE ban_created='$bantime' GROUP BY ban_length='1140'");
                $banlength2 $banlength2[0];
                $banlength3 $db->query_first("SELECT COUNT(ban_length) as anzahl FROM banhistory WHERE ban_created='$bantime' GROUP BY ban_length='0'");
                $banlength3 $banlength3[0];

                $bansonst $banlengthtotal-$banlength1-$banlength2-$banlength3;

                $db->query("INSERT INTO stat2 (time,zwoelfban,vierundzwanzigban,permban,sonstban,allban) VALUES ('$bantime','$banlength1','$banlength2','$banlength3','$bansonst','$banlengthtotal')");
                        
                ?>


                Kommentar


                • #9
                  hat alles durcheinander da in dieser Tabelle
                  "durcheinander" ist relativ...
                  ... sortiers mal in PHPMyAdmin nicht nach ID sondern nach Datum

                  steckt mehr wahrheit dahinter als du denkst

                  nee ich brauch die 2. Tabelle... hat seine Gründe...
                  wenn dir mehrere Leute sagen das ORDER BY, GROUP by,
                  etc.. reichen dann würd ich mich nicht so krampfhaft
                  drauf versteifen da sein eigenes Ding durchziehen zu
                  wollen, sondern sich auch mal Tips geben lassen
                  einfach mal etwas BESSER zu machen als es man
                  bissher gemacht hat.

                  /Edit PS: Editier mal deinen PHP Code das er nicht bis zum 10ten Bildschrim rechts raus reicht...

                  justmy2cents

                  dani
                  Zuletzt geändert von Daniela; 23.02.2006, 19:38.

                  Kommentar


                  • #10
                    Wenn dein Datumsfeld Typ Date (oder DateTime) ist, nutze DATE_FORMAT()

                    Kommentar

                    Lädt...
                    X