Threadanzeige

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

  • Threadanzeige

    Hallo,

    ich habe ein Problem mit der Anzeige von Threads. Da ich denke, dass das eher ein PHP-Problem ist, da das SQL-Statement korrekt ist, hab ich das hier gepostet. Ich habe die Datei angehängt.

    Das Problem ist, dass a.) Threads nicht nach Datum sortiert werden und b.) die Usernamen von irgendeinem Post von den gezeigten Threads jedem Thread zugeordnet werden (unter der Tabelle "Letzter Beitrag von")

    Ich hoffe mir kann jemand helfen.
    Angehängte Dateien

  • #2
    zu a.)
    PHP-Code:
    ORDER BY post_id DESC 
    Alles in Allem nicht verwunderlich, dass nicht nach Datum sortiert wird

    zu b.)
    poste doch mal wo die Usernamen ausgelesen werden, und wo sie den jeweiligen Thread zugeordnet werden .. es ist nämlich schon ein bisschen mühsam und zeitaufwändig bei den 90 Zeilen komplett durchzusteigen
    [color=red]Geht nicht[/color] ist keine Fehlermeldung

    Kommentar


    • #3
      Hm, also, auch wenn ich nach "p_date" sortiere, werden die Threads nicht nach den zuletzt erstellten Posts sortiert.

      Bezüglich der User - diese werden von Zeile 59 bis 81 ausgelesen.

      PHP-Code:
      $gu mysql_fetch_array(mysql_query("SELECT nickname FROM $user_tname WHERE id='$thread[userid]'"));
      $username $gu[nickname];

      echo 
      "<a href='?action=user&id=$thread[userid]'>$username</a>";
      echo 
      " @ $thread[t_date]$thread[t_time] o'clock</p></td>";

      $count mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM board_posts WHERE tid='$thread[id]'"));
      $count[0]--;

      echo 
      "<td align='center'>$count[0]</td>
      <td align='center'>
      $thread[hits]</td>
      <td align='left'>"
      ;

      $gu2 mysql_fetch_array(mysql_query("SELECT nickname FROM $user_tname WHERE id='$thread[p_userid]'"));
      $username2 $gu2[nickname];

      echo 
      "<p style='margin-left:10; margin-top:0; margin-bottom:0'>$thread[p_date]$thread[p_time] o'clock</p></a>
          <p style='margin-left:10; margin-top:3; margin-bottom:0'>by "
      ;

      echo 
      "<a href='?action=user&id=".$thread[p_userid]."'>$username2</a>
          </p></td></tr>
          </td></tr>"

      Kommentar


      • #4
        Bitte um Hilfe

        Kommentar


        • #5
          Bitte...

          Kommentar


          • #6
            Hast du eventuell das DESC bei der Zeit vergessen? Muss man bei Timestamps machen, wenn man sie nach den neusten sortiert werden sollen...

            Anm: Du solltest dich mal mit JOINS auseinander setzen. Was du da fabrizierst ist der reinste Performance Killer..
            PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

            Kommentar


            • #7
              Original geschrieben von owna6e2
              PHP-Code:
              $gu mysql_fetch_array(mysql_query("SELECT nickname FROM $user_tname WHERE id='$thread[userid]'")); 
              Die Zeile für sich ist schon sehr, sehr schlimm.

              So wäre es zumindest etwas besser.
              PHP-Code:
              $guQuery "SELECT nickname FROM '" $user_tname "' WHERE id = " $thread['userid']);
              $guResult mysql_query($query) or die(mysql_error);
              $gu mysql_fetch_array($guResult);
              mysql_free_result($guResult); 
              Den Query würde ich immer in eine eigene Variable packen. Den kannst du dann nämlich später ausgeben und sehen, was wirklich an die Datenbank geschickt wird (z.B. die Inhalte deiner Variablen etc). Dabei die Variablen nicht einfach mitten in den String reinpacken, sondern extra dazu holen, sonst gibt es nämlich Probleme z.B. mit deinem Array $thread.
              Bei Arrays übrigens immer den Schlüssel in '' packen, es sei denn es sind numerische Schlüssel, sonst können schnell Fehler auftreten. (Steht übrigens auch im PHP-Handbuch)
              Die Spalte id in deiner Tabelle ist ein Zahlenwert, nehme ich mal an, deswegen: keine Anführungszeichen an dieser Stelle an die Datenbank schicken!

              Das Result (das, was mysql_query zurückgibt) auch nochmal in eine extra Variable, denn so kannst du dir evtl. in der Datenbank auftretende Fehler ausgeben lassen. mysql_free_result ist zwar nicht zwingend notwendig, aber es ist besser, das zu verwenden.

              So, und jetzt passe mal den Rest deines Codes entsprechend an und schaue, ob du den Fehler nicht selbst findest.

              P.S. Falls du MySQL-Queries innerhalb einer Schleife durchführst (ich hab mir die .zip-Datei jetzt nicht angesehen), ist das eine sehr schlechte Idee, denn wenn das Script häufiger aufgerufen wird, kannst du mit starken Performance-Problemen rechnen.
              hopka.net!

              Kommentar


              • #8
                kleiner tipp von mir...

                genau so wie dein zip hatte ich früher genau so mal angefangen.. doch die schlamperei würd ich mir ganz schnell abgewöhnen..

                1. empfehl ich dir generell mysql querys sauber zu schreiben

                z.b:

                PHP-Code:

                $sql 
                "

                SELECT 
                                blubb,
                                blah,
                                usw
                FROM
                                tabelle1, tabelle2
                WHERE
                               blah= '"
                .$blah."'
                     AND
                               bloo = '"
                .$blu2."'
                "

                das liest sich angenehmer. ( und dir fällt es nacher leichter den query mal eben zu verbessern etc.

                2. würd ich an manchen stellen arrays benutzen.

                PHP-Code:
                $hierwasrein[] = $irgendwas->aus_der_DB_innerhalb_einer_while_schleife
                dann kannst du später wieder in einer anderen schleife das auslesen, und musst nicht wieder extra ne DB abfrage machen. um $hierwasrein[] auseinander zu kriegen müsstest aber implode() verwenden.

                3. mysql_error() verwenden kann u.U. viel zeit sparen!

                4. würd ich an deiner stelle erstmal ne pause einlegen und mich mit mysql befehle auseinander setzen. ( dir scheint da noch viel zu fehlen )

                in dem sinne viel spaß

                Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
                sondern mit den Augen das Manual zu lesen.

                Kommentar

                Lädt...
                X