Gleich 2 Probleme

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

  • Gleich 2 Probleme

    Hi @ll
    Ich habe zwei Fragen, fangen wir mal beim wichtigsten an:
    Ich möchte gerne eine Rangliste erstellen, undzwar wer die meißten Posts im Forum hat...Wäre ja kein Problem wenn ich jetzt die Posts immer zu den Usern schreiben würde, also immer wenn sie schreiben ihre Zahl um eins erhöhen, habe ich aber leider nicht so gemacht
    Wenn ich jetzt die Anzahl haben will lasse ich einfach die Einträge zählen, wo die user_id drin steht...geht ohne weiteres, ist ja klar...Man kann natürlich ne Liste mit Usern+Posts so machen, sie ist dann aber Ungeordnet und so solls ja nichts sein...

    Könnte sein das das mit nem MySql Befehl alleine zu regeln ist, jedenfalls weiss ich keine Lösung, wäre nett wenn mir einer das Prinzip wie es gehen könnte schreibt.

    Zu Nr2
    Das Forum ist etwas langsam, liegt das am Server oder gibts kniffe die Abfragen zu beschleunigen??? www.myteam-4.de

    MFG; Chris
    Danke im Vorraus

  • #2
    Ok, ich versuch es mal mit den jetzigen Infos

    PHP-Code:
    $sql "SELECT COUNT(*) as totalposts FROM posts WHERE user_id = ".$user_id
    So, und jetzt noch weiterverarbeiten.....
    PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

    Kommentar


    • #3
      PHP-Code:
      <?php
      $query 
      mysql_query("SELECT * FROM `users`");
      while(
      $row mysql_fetch_object($query))
      {
      $sql mysql_fetch_object(mysql_query("SELECT COUNT(*) as posts FROM forum_posts WHERE user_id=$row->id"));
      echo 
      "$row->nickname - $sql->posts<br>";
      }
      ?>
      Ich kriege zwar Werte, sind aber auch nicht geordnet

      ODER BY bitte was?

      MFG

      Kommentar


      • #4
        *UP*
        brauche das dringend bitte

        MFG

        Kommentar


        • #5
          mach mal lieber ein join der zwei tabellen
          Beantworte nie Threads mit mehr als 15 followups...
          Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

          Kommentar


          • #6
            p.s. dann kannste auch sortieren etc
            Beantworte nie Threads mit mehr als 15 followups...
            Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

            Kommentar


            • #7
              PHP-Code:
              <?php
              $query 
              mysql_query("SELECT * FROM `users`");
              while(
              $row mysql_fetch_object($query))
              {
              $sql mysql_fetch_object(mysql_query("SELECT COUNT(*) as posts FROM forum_posts WHERE username=$row->id ORDER BY posts"));
              $rank[$row->nickname] = "$sql->posts";
              }
              arsort($rank);
              reset ($rank);
              while (list(
              $key$val) = each($rank)){
              $query mysql_fetch_object(mysql_query("SELECT * FROM `users` WHERE nickname='$key'"));
                  echo 
              "$query->nickname - $val<br>";
              }
              ?>
              Habs jetzt unelegant so gemacht, aber es geht

              Leider zu wenig Möglichkeiten...und ich habe keine Ahnung von den Joins, könnteste mir nen Beispiel vormachen???

              MFG

              Kommentar


              • #8
                Du hast ein Forum programmiert und weisst nicht wie ein join geht?
                Beantworte nie Threads mit mehr als 15 followups...
                Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                Kommentar


                • #9
                  schau dir mal das hier an:
                  http://www.php-resource.de/forum/sho...threadid=28292

                  und das mysql-manual ist auch zu empfehlen.
                  Kissolino.com

                  Kommentar


                  • #10
                    hehe, bei den joins habe ich mir hier helfen lassen, verstehen tue ich sie immer noch nicht -.-

                    Kommentar


                    • #11
                      haha wie lustig. da sieht man mal was es bringtwenn hier immer fertige codes und sql statements gepostet werden
                      kauf dir ein buch oder les im manual
                      Beantworte nie Threads mit mehr als 15 followups...
                      Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                      Kommentar


                      • #12
                        Original geschrieben von stf]Daywalker
                        PHP-Code:
                        $query mysql_query("SELECT * FROM `users`");
                        while(
                        $row mysql_fetch_object($query))
                        {
                        $sql mysql_fetch_object(mysql_query("SELECT COUNT(*) as posts FROM forum_posts WHERE user_id=$row->id"));
                        echo 
                        "$row->nickname - $sql->posts<br>";

                        na, und damit haben wir die zweite frage nach der schlechten performance auch gleich geklärt *g*

                        datenbank-queries in schleifen sind idR. absolut keine gute idee.

                        um einen JOIN kommst du hier nicht herum, wenn du es halbwegs performant halten willst.

                        oder ...
                        Wäre ja kein Problem wenn ich jetzt die Posts immer zu den Usern schreiben würde, also immer wenn sie schreiben ihre Zahl um eins erhöhen, habe ich aber leider nicht so gemacht
                        du kannst diesen punkt ja noch nachholen.

                        eine zusätzliche spalte für die anzahl der posts in die usertabelle einfügen, und diese einmal zu anfang mit werten füllen, die du dir aus den bisherigen postings zusammenrechnest, und per update bei jedem user einträgst.

                        bei neuen, zukünftigen postings machst du dann gleich beim jeweiligen user ein kleines update, mit dem du den wert um eins erhöhst.
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar

                        Lädt...
                        X