Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Counts einer tabelle mit anzahl aus anderer addieren

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Counts einer tabelle mit anzahl aus anderer addieren

    Hallo PHP.de-Team und Leser,


    ich habe eine komplette user-aktivitaeten-beitragsliste erstellt, die aus den diversen modulen die beitraege fuer jeden einzelnen user auffuehrt.

    nun habe ich zwei db_tabellen (beitraege aus neuem forum und aus dem alten) aus denen ich die jeweiligen forenbeitraege zusammen zaehlen moechte. die sql-abfrage fuer die neuen forenbeitraege funktioniert und wird mir auch korrekt angezeigt -->
    PHP-Code:
    $aresult sql_query("select * from ".$prefix."_smf_messages where posterName='$uname'"$dbi);
    $anumrows sql_num_rows($aresult$dbi);

    if(
    $anumrows == 0) { echo "<td bgcolor=\"$bgcolor1\" align=\"center\">-"; } else {
                    echo 
    "<td bgcolor=\"$bgcolor1\" align=\"center\"><b>$anumrows</b>";


    nur zeigt es mir die alten foren-beitraege aus ...

    -----------------------
    db_tabelle -> _userposts
    spalten -> nick, beitrag (unter beitrag befindet sich schon die gesamtanzahl)
    -----------------------

    ...nicht an und die addition kann somit auch nicht erfolgen. bitte seht euch das mal an, was mach ich falsch? -->
    PHP-Code:
    $res sql_query("SELECT nick, beitrag FROM ".$prefix."_userposts where nick='$uname'"$dbi);
    while(
    $row sql_fetch_array($res$dbi)) {

                    echo 
    $row[beitrag]</td>\n";


    zur spaeteren addition wuerde ich folgenden simplen code verwenden -->
    PHP-Code:
    $gesamt $anumrows $row[beitrag]; 

    nur bringt mir das nichts, wenn es mir nicht gelingt, die beitragsanzahl aus den _userposts auszulesen.



    ueber hilfe wuerde ich mich sehr freuen und bedanke mich jetzt schon fuer eure bemuehungen.

    ich sende euch liebe gruesse aus muenchen, bye heike

  • #2
    Erstmal solltest Du statt
    $aresult = sql_query("select * from ".$prefix."_smf_messages where posterName='$uname'", $dbi);
    $anumrows = sql_num_rows($aresult, $dbi);
    PHP-Code:
    $aresult sql_query("select Count(*) as summe from ".$prefix."_smf_messages where posterName='$uname'"$dbi);
    $summe = ..Feld summe aus erstem Datensatz abholen 
    verwenden.

    Was verbirgt sich hinter sql_query() und wie kann man ermitteln, ob eine Abfrage fehl geschlagen ist?

    Kommentar


    • #3
      Zitat von David Beitrag anzeigen
      Was verbirgt sich hinter sql_query() und wie kann man ermitteln, ob eine Abfrage fehl geschlagen ist?
      So wie ich das sehe nichts

      @proud2be:
      Verwende:
      PHP-Code:
      $query 'SELECT COUNT(*)...'// Den musst du noch erweitern

      $result mysql_query$query ) or die ( 'SQL Error: ' mysql_error() . '<br />' $query ); 
      So erkennt man Fehler in Querys auch leichter...

      Kommentar


      • #4
        hallo David und tomtaz,


        sorry, dass ich mich jetzt erst melde nur hatte ich besuch hier. danke erstmal fuer eure antworten, doch ... die erste abfrage funktioniert ja und es wird mir auch die korrekte anzahl der beitraege ausgegeben. vielleicht habe ich mich etwas ungluecklich ausgedrueckt.

        es geht hierbei um die zweite abfrage aus der tabelle --> _userposts (nick,beitrag) -->
        PHP-Code:
        $res sql_query("SELECT nick, beitrag FROM ".$prefix."_userposts where nick='$uname'"$dbi); 
        while(
        $row sql_fetch_array($res$dbi)) { 

                        echo 
        $row[beitrag]</td>\n"

        solange diese abfrage nicht klappt, kann ich die beiden ausgaben auch nicht addieren.

        ich hoffe ich habe dies nun etwas besser formuliert. ich wuensch euch noch einen schoenen sonntag, falls man sich nicht mehr lesen sollte.


        ... bye heike

        Kommentar


        • #5
          Wenn ich dein Problem richtig verstehe willst zu einem xyz aus zwei verschiedenen Tabellen Werte zählen und diese dann addieren,richtig?

          Nun iegentlich ist ganz einfach umzusetzen in drei Abfragen.

          Die erste natürlich du liest den User aus einer Tabelle aus. So den hast du dann.

          Dann machst du beide Abfragen zu den beiden anderen Tabellen mit einem Count(*) zu deinem User.

          Also so hier:

          PHP-Code:
          //abfrage erste zählung
          $sqlbefehl ="
             Select
              Count(*) As wert_1
             From
              tabelle1
             Where
              user ='"
          .mysql_real_escape_string($user)."'
             "
          ;
          $erg_count1 mysql_query($sqlbefehl)or die(mysql_error().$sqlbefehl);
          $wert1 mysql_fetch_assoc($erg_count1);
          //abfrage zweite zählung
          $sqlbefehl ="
             Select
              Count(*) As wert_2
             From
              tabelle2
             Where
              user ='"
          .mysql_real_escape_string($user)."'
             "
          ;
          $erg_count2 mysql_query($sqlbefehl)or die(mysql_error().$sqlbefehl);
          $wert2 mysql_fetch_assoc($erg_count2); 
          So nun hast du beide Zählwerte die du brauchst.

          Und nun noch Addieren.

          PHP-Code:
          $ausgabewert = (int)$wert1['wert_1'] + (int)$wert2['wert_2'];
          //ausgabe des Ergebnisses
          echo $ausgabewert
          Mehr ist es eigentlich nicht. Hoffe mal das hilft dir weiter.

          Kommentar


          • #6
            hallo litterauspirna,


            hast es in etwa erfasst, ich benoetige werte aus zwei verschiedenen tabellen. in der ersten tabelle brauche ich count-werte, da dort alle user-einzelbetraege gelistet sind. mein erster uralt-code, gibt mir die summe auch korrekt aus.
            in der zweiten tabelle (_userposts), sind lediglich ca. 30 eintragungen (gespaltet in nick und beitrag). dort steht gleich neben dem nick, in spalte beitrag die komplette gesamtanzahl der beitraege ... z.b. 36 (fuer 36 geschriebene altbeitrage) ... diese muessen ergo nicht mehr per count aufgeschluesselt werden.

            mit deinem posting hast du mir sehr geholfen und ich werde mich etwas spaeter gleich mal hinsetzen, um es durch deinen ansatz zu einer loesung zu bringen. leider bin ich php maessig nicht mehr auf dem laufenden und habe es mir damals (vor ca. 7 jahren) selbst etwas angeeignet ... nach dem motto "learning by doing".

            leider bekomme ich gleich nochmals besuch, so dass ich mich jetzt nicht umgehend ueber die codezeilen her machen kann, aber ich werde dich auf dem laufenden halten und sende dir liebe gruesse aus muenchen ...


            ... bye heike

            Kommentar


            • #7
              Zum Beispiel mit Subqueries kannst Du das alles in eine Abfrage stopfen
              Code:
              SELECT
                Count(*) as c,  
                (
                  SELECT
                    beitraege
                  FROM
                    userposts
                  WHERE
                    userposts.nick = smf_messages.posterName
                  LIMIT    
                    1
                ) as oldcounter
              FROM
                smf_messages  
              WHERE
                smf_messages.posterName = 'Hans'

              Kommentar


              • #8
                hallo David, tamtaz und litterauspirna,


                danke fuer eure hilfe, ihr seit echt prima. ich habe nacheinander alle eure loesungsansaetze probiert und nichts hat funktioniert. irgendwie konnte ich mir das ganze nicht erklaeren, bei einem vorschlag bekam ich statt der beitragsanzahl auch nur Array ausgeschrieben.
                ich war von gestern nacht auf heute morgen schon dem durchdrehen nahe, bis ich endlich auf meinen fehler gestossen bin und bitte erschlagt mich jetzt nicht, denn ...

                ... ich habe mich beim manuellen anlegen meiner zweiten datenbank-tabelle, bei der prefix vertippt (ein zahlendreher) und so konnte natuerlich keine codezeile greifen.

                aber nun funktioniert es, sowohl mit meinem altcode als auch mit euren neuvorschlaegen, ich danke euch und hoffe ihr seit mir nicht boese.


                ich sende euch liebe gruesse, bye heike

                Kommentar


                • #9
                  Dann bitte noch das Thema als [Erledigt] markieren. Danke.

                  Kommentar

                  Lädt...
                  X