PHP und SQL!

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

  • PHP und SQL!

    Hi Leute,

    ich hätte da mal eine kleine dumme Frage, aber ich versuch es seit Tagen allein und es will nicht klappen.

    Vorneweg sollte vielleicht gesagt werden, dass ich ein totaler Newbie auf dem Gebiet PHP usw. bin und mit Newbie meine ich Newbie. Hoffe mir kann dennoch jemand eine kleine Frage beantworten.

    Also, in unserem Board haben wie einen Hangman-Hack installiert und zusätzlich dazu wird jetzt die Statistik im Profil des jeweiligen Users angezeigt.

    Leider werden dort nur die erstellen Rätsel, gelösten Rätsel usw. angezeigt.

    Ich hab jetzt versucht durch angucken der anderen Einträge einen neuen Eintrag zu schreiben der den Rang des jeweiligen Users ausgibt. Leider musste ich feststellen, dass es nicht so einfach ist.

    Bei den anderen wird einfach der entsprechende Wert in der DB rausgesucht und wiedergegeben.

    Jetzt zu der eigentlich Aufgabenstellung:

    In der DB gibt es mehrere Spalten wo halt gelöste Rätsel oder gelöste Buchstaben der einzelnen User stehen. Wie schaffe ich es jetzt über einen PHP-Befehl, dass er zuerst die Spalte mit gelösten Rätseln nimmt und wenn da Gleichstand sein sollte die Spalte mit den gelösten Buchstaben vergleicht.

    Anschliessend soll dann natürlich der aktuelle Platz in der Statistik ausgeben werden.

    Beispiel:

    User 1--->20 gel. Rätsel--->50 gel. Buchst.
    User 2--->10 gel. Rätsel--->60 gel. Buchst.
    User 3--->20 gel. Rätsel--->40 gel. Buchst.
    User 4--->0 gel. Rätsel--->10 gel. Buchst.

    Jetzt soll halt im Profil des Users 3 angezeigt werden, dass er momentan auf Platz 2 in der Statistik liegt.

    Ist das überhaupt möglich und wenn wie lautet der Befehl dafür?

    Ich hab leider im kompletten Quelltext nicht gerade viele Hinweise gefunden und jemand der gerade erst anfängt sich mit PHP zu beschäftigen wirkt alles so unverständlich.

    Ich wäre wirklich sehr froh wenn mir bei dem Problem jemand helfen könnte.

    MfG
    Giro

  • #2
    Hi,
    dies sollte so zu lösen sein:
    PHP-Code:
    $sql mysql_query("SELECT * FROM tabelle order by gelöste Rätsel, gelöste Buchstaben"); 
    Hiermit sollte er die Daten nach den gelösten Rätsel und dann nach den gelösten Buchstaben ordnen.
    mfg
    Günni


    Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
    Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
    Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
    City-Tiger - Online durch die Straßen tigern...

    Kommentar


    • #3
      Danke, aber werden dann nicht alle User in der richtigen Reihenfolge angezeigt?

      Es soll ja quasi nur eine Zahl ausgegeben werden.

      Aber ich versuch es mal, hab ja im Prinzip keine Ahnung davon.

      MfG
      Giro

      Kommentar


      • #4
        Original geschrieben von Gironymus
        Danke, aber werden dann nicht alle User in der richtigen Reihenfolge angezeigt?
        willst du nun nach den ergebnissen oder nach den usernamen sortiert haben?

        gleichzeitig geht es jedenfalls nicht.

        oder versuche mal auto alphabetisch aufsteigend des markennamens zu sortieren UND GLEICHZEITIG nach der körpergröße des fahrers. geht auch nicht.

        eine sortierung ist immer zuerst und innerhalb derer wird das nächste sortiert, z.b. erst nach nachname, dann nach vorname, wie im schönen telefonbuch ...
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Ja schon klar, aber das Script soll intern die Reihenfolge berechnen und dann nur den jeweiligen Rang des User ausgeben.

          Wenn ich mich also einlogge und in mein persönliches Profil gehe soll bei Aktueller Platz nur eine Zahl wie z.B. 2 oder 3 rauskommen.

          Dazu müsste das Script halt selbstständig im Hintergrund sortieren.

          MfG
          Giro

          Kommentar


          • #6
            das ist doch das, was Günni schon geschrieben hat.

            nimm mal seine abfrage mit LIMIT noch dran.

            dann kannst du das mit while-schleife ausgeben. die sortierung ist ja schon durch die DB gemacht. jetzt musst du bei der ausgabe mittels while nur noch eine andere VAR hochcounten, die dann vor den namen geschrieben wird.

            ist doch ganz einfach ..
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              Original geschrieben von Abraxax

              dann kannst du das mit while-schleife ausgeben. die sortierung ist ja schon durch die DB gemacht. jetzt musst du bei der ausgabe mittels while nur noch eine andere VAR hochcounten, die dann vor den namen geschrieben wird.

              ist doch ganz einfach ..
              Ja ganz einfach, nur dass ich kein Wort verstanden hab.

              Hab ich erwähnt, dass ich keine Ahnung hab.

              Wie sollte die Zeile denn dann aussehen, wenn die Schleife usw. noch drin ist?

              MfG
              Giro

              Kommentar


              • #8
                post mal bitte deine bisherige tabellenstruktur. aber bitte als phpmyadmin export und MIT [code ] TAGs (ohne leerzeichen)

                ich werde dann mal schauen.
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar


                • #9
                  Hi,

                  also ich hab gerade die Struktur exportiert und es kam folgendes dabei raus. Wichtig sind hang_solved und hang_points.

                  Hoffe das klappt mit den [ CODE] Tags, weil es in der Vorschau nur so aussah wie ein normaler [ QUOTE] Tag, oder mach ich was falsch?

                  Code:
                  CREATE TABLE bb1_user_table (
                    userid int(11) NOT NULL auto_increment,
                    username varchar(30) NOT NULL default '',
                    userpassword varchar(50) NOT NULL default '',
                    useremail varchar(150) NOT NULL default '',
                    regemail varchar(150) NOT NULL default '',
                    userposts int(11) NOT NULL default '0',
                    groupid int(7) NOT NULL default '0',
                    statu************tra varchar(25) default NULL,
                    regdate int(11) NOT NULL default '0',
                    lastvisit int(11) NOT NULL default '0',
                    lastactivity int(11) NOT NULL default '0',
                    session_link int(1) NOT NULL default '1',
                    signatur text NOT NULL,
                    usericq varchar(30) NOT NULL default '',
                    aim varchar(30) NOT NULL default '',
                    yim varchar(30) NOT NULL default '',
                    userhp varchar(200) NOT NULL default '',
                    age_m varchar(10) NOT NULL default '',
                    age_d int(2) NOT NULL default '0',
                    age_y int(4) NOT NULL default '0',
                    avatarid int(11) NOT NULL default '0',
                    interests varchar(250) NOT NULL default '',
                    location varchar(250) NOT NULL default '',
                    work varchar(250) NOT NULL default '',
                    gender int(1) NOT NULL default '0',
                    usertext text NOT NULL,
                    show_email_global int(1) NOT NULL default '0',
                    mods_may_email int(1) NOT NULL default '1',
                    users_may_email int(1) NOT NULL default '1',
                    invisible int(1) NOT NULL default '0',
                    hide_signature int(1) NOT NULL default '0',
                    hide_userpic int(1) NOT NULL default '0',
                    prunedays int(4) NOT NULL default '0',
                    umaxposts int(2) NOT NULL default '0',
                    bbcode int(1) NOT NULL default '1',
                    style_set int(11) NOT NULL default '0',
                    activation int(10) NOT NULL default '0',
                    blocked int(1) NOT NULL default '0',
                    abwesend tinyint(1) NOT NULL default '0',
                    abwesend_grund varchar(255) NOT NULL default '',
                    abwesend_timer1 int(14) NOT NULL default '0',
                    abwesend_timer2 int(14) NOT NULL default '0',
                    showmetheelektions int(1) NOT NULL default '1',
                    hang_made int(11) NOT NULL default '0',
                    hang_solved int(11) NOT NULL default '0',
                    hang_points int(11) NOT NULL default '0',
                    hang_played int(11) NOT NULL default '0',
                    PRIMARY KEY  (userid)
                  ) TYPE=MyISAM;
                  MfG
                  Giro

                  Kommentar


                  • #10
                    ok. das mit dem code-tag war wunderbar.....

                    tipp: wenn du mal php.code einfügt, mache das gleiche nur mit [php ] (ohne leerzeichen)

                    eigentlich ging es mir nur um die korrekten feldnamen. wusst ja nicht, dass du jetzt so ein monster postest ... aber egal.

                    entweder mache ich dir jetzt gleich noch was fertig oder eben erst morgen. vielleicht ist ein anderer ja schon schneller als ich ....
                    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                    Kommentar


                    • #11
                      Und? Schon Zeit gehabt Dir das anzugucken?

                      MfG
                      Giro

                      Kommentar


                      • #12
                        ups. habe dich glatt vergessen. sorry.

                        nein konnte ich noch nicht. mache ich aber noch. versprochen.
                        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                        Kommentar


                        • #13
                          so jetz bin ich fertig ...

                          PHP-Code:
                          <?php

                            
                          // AUSGABE DER TOP-5
                            
                          $sql "SELECT username,hang_solved,hang_points FROM bb1_user_table ORDER BY hang_solved DESC, hang_points DESC LIMIT 5";
                            
                            
                          $result mysql_query ($sql);
                            
                          $platz  0;
                            
                          $out "<table>"
                            
                          $out.= "<tr bgcolor=\"#cccccc\"><td>Platz</td><td>User</td><td>Rätsel gelöst</td><td>Buchstaben gelöst</td></tr>";
                            while (
                          $zeile=mysql_fetch_array($result)) {
                              
                          $platz++;
                              
                          $out.= "<tr><td>".$platz."</td><td>".$zeile["username"]."</td><td>".$zeile["hang_solved"]."</td><td>".$zeile["hang_points"]."</td></tr>";
                            }
                            
                          $out.= "</table>";
                            
                            echo 
                          $out;
                          ?>
                          ob die sortierung jetz richtig ist, weiss ich nicht genau. habe zuerst nach gelöst und dann nach den punkten sortiert. jeweils absteigend. wenn es andersrum sein muss, kannst du das noch in der qurey tauschen.

                          probier es mal aus. optik kannst du selber verbessern ...
                          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                          Kommentar


                          • #14
                            Hi,

                            danke das hat schonmal ein Problem gelöst, zu dem ich aber eigentlich erst später kommen wollte.

                            Jetzt fühl ich mich irgendwie komisch, weil ich denke ich hab mich falsch ausgedrückt.

                            Weil um die Aufstellung der Top 5 ging es mir ja im Prinzip nicht (noch nicht, das sollte eigentlich später kommen). Ich wollte ja nur eine Zahl ausgeben.

                            Du kannst ja mal auf www.berg-treff.de gehen und Dir da das Profil eines Users ansehen (ich hoffe das geht als Gast).

                            Da siehst Du dann in dem Profil wieviele Spiele der User gewonnen hat, an wievielen er teilgenommen hat usw.
                            Aber direkt da drüber steht der momentane Rang des Users in der Hangman-Statistik und momentan steht da leider nur Resource id #14, warum auch immer.

                            Und genau da soll halt der Rang erscheinen auf dem der User sich momentan befindet.

                            Ist sowas auch möglich oder müsste man dafür erst so eine Aufstellung aller User machen und die Zahl aus dieser Aufstellung dann in das Profil übertragen?

                            MfG
                            Giro

                            Kommentar


                            • #15
                              ok. verstehe.... .)

                              das resoure#14 heisst nur, dass du eine query gemacht hast,
                              diese aber noch nicht mit ....fetch.... bearbeitet hast.

                              wenn ich mich nicht irre, kann man eine sortierung auch mittels
                              der DB sortieren. innerhalb dessen macht man ein WHERE auf den username.

                              die nummerierung sollte erhalten bleiben.

                              frage jetzt nicht wie genau das lüppt. habe aber mit sicherheit
                              schon davon gelesen.
                              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                              Kommentar

                              Lädt...
                              X