Anfänger SQL Query in PHP

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

  • Anfänger SQL Query in PHP

    Hallo Zusammen,

    nachdem ich inzwischen die Basics verstanden habe, stehe ich nun vor dem Problem, 2 SQL Querys in EINER Tabelle auszugeben!

    PHP-Code:
    <?php
            
    //Top List
            
    $queryDB = new QueryDB();

            
    //Query 1: Actions last 30 days
            
    $query "SELECT user, create_date, DATE_SUB(CURDATE(), INTERVAL 30 DAY) AS period, SUM(action_number) AS count30 "
            
    $query .= "FROM smartmam_log "
            
    $query .= "WHERE create_date BETWEEN DATE_SUB(CURDATE(), INTERVAL 30 DAY) AND NOW() ";
            
    $query .= "AND user NOT LIKE 'admin%' ";
            
    $query .= "GROUP BY USER ORDER BY SUM(action_number) DESC, USER DESC LIMIT 8";
            
            
    //Query 2: Actions since 1st of every month
            
    $query2 "SELECT user, SUM(action_number) AS monthly, DATE_SUB(CURDATE(),INTERVAL (DAY(CURDATE())-1) DAY) AS day1 ";
            
    $query2 .= "FROM smartmam_log ";
            
    $query2 .= "WHERE create_date BETWEEN DATE_SUB(CURDATE(),INTERVAL (DAY(CURDATE())-1) DAY) AND NOW()";
            
    $query2 .= "AND user NOT LIKE 'admin%' ";
            
    $query2 .= "GROUP BY USER ORDER BY SUM(action_number) DESC, USER DESC LIMIT 8";
            
            
    $resultUser $queryDB->QueryDatabase("de_buffer"$query);
            
    $resultMonth $queryDB->QueryDatabase("de_buffer"$query2);
            
            
    //erste Überlegung wie ichs realisieren könnte
            #$monthsByUser = array('monthly' => array(MONAT_1,MONAT_2), 'user_name_2' => array(MONAT_1,MONAT_2))
                            
            
    echo "<table class='TopListStyle'>";
            echo 
    "<td align='left' width:120px><b>name</b></td>";
            echo 
    "<td align='left' width:120px><b>last 30 days</b></td>";
            echo 
    "<td align='center' width:120px><b>this month</b></td>";
                    
            foreach(
    $resultUser as $row)
            {
                echo 
    "<tr>";
                echo 
    "<td align='left' width:120px>$row[user]</td>";
                echo 
    "<td align='center' width:120px>$row[count30]</td>";
                echo 
    "<td align='left' width:120px>$resultMonth[$row['monthly']]</td>";
                echo 
    "</tr>";
                
            }
            echo 
    "</table>";
        
    ?>
    Das ist mein bisheriger Code...funktioniert für Usernames und Aktivität der letzten 30 tage einwandfrei, jedoch ist es nun daran, das zweite Query in die Tabelle zu integrieren!



    soll dann in "this month" erscheinen.

    Bitte um Hilfe!

    Grüße,


    Simon

  • #2
    'Hab jetzt mal die 2 Möglichkeiten ausprobiert:

    PHP-Code:
            $monthly "";
            foreach(
    $resultMonth as $res)
            {
                
    $monthly $res[monthly];
            }
            
                   
    // ODER

            
    while($data mysql_fetch_array($resultMonth))
            {
                
    $monthly $data[monthly];
            } 
    Das erste gibt mir jedoch nur den Wert von EINEM user, das zweite NULL...

    edith sagt:

    PHP-Code:
            foreach($resultUser as $row)
            {
                echo 
    "<tr>";
                echo 
    "<td align='left' width:120px>$row[user]</td>";
                echo 
    "<td align='center' width:120px>$row[count30]</td>";
            }
            
            
    $monthly="";
            foreach(
    $resultMonth as $res)
            {
                
    $monthly $res[monthly];
                echo 
    "<td align='right' width:120px>$monthly</td>";
                echo 
    "</tr>";
            }        
            echo 
    "</table>"
    So stimmt die Ausgabe, nur die Positionierung will nicht so ganz ist nun mehr oder weniger in einer eigenen Tabelle direkt an der ersten dran...ROAARR
    Zuletzt geändert von b1p; 15.11.2012, 16:01.

    Kommentar


    • #3
      Gewöhn dir bitte mal gescheites Escaping an:

      [COLOR="DarkRed"]SCHLECHT[/COLOR]
      PHP-Code:
      $var $arr[key];
      echo 
      "Hello $var and $arr[key]"
      [COLOR="SeaGreen"]GUT[/COLOR]
      PHP-Code:
      $var $arr['key'];
      echo 
      'Hello ' $var ' and ' $arr['key']; 
      Das gleiche gilt auch für HTML. Die "width"-Angabe ist entweder ein Attribut, dann schreibst du es so

      PHP-Code:
      <td align="left" width="120px"
      oder eine CSS-Angabe, dann bitte so

      PHP-Code:
      <td align="left" style="width: 120px;"
      und nicht anders.


      So wie du die Tabelle erzeugst, muss die ja bescheuert aussehen. Lass dir mal den HTML-Quellcode der Seite anzeigen, dann siehts du es bestimmt selbst. Du machst zuviele Zeilen wieder zu (</tr>).

      Die Zeilen musst du außerhalb der inneren Schleife schließen, sonst machst du das bei jedem Durchlauf.
      This is what happens when an unstoppable force meets an immovable object.

      Kommentar


      • #4
        Ich habs mir mal zu Herzen genommen, danke für den Hinweis! Bin froh, wenn mir jemand mit konstruktiver Kritik was beibringt

        Nun hackts mal wieder...

        PHP-Code:
        echo "<table class='TopListStyle'>";
        echo 
        "<td align='left' width:'120px'><b>name</b></td>";
        echo 
        "<td align='left' width:'120px'><b>last 30 days</b></td>";
        echo 
        "<td align='right' width:'120p'x><b>this month</b></td>";
                        
        foreach(
        $resultMonth as $res)
            {
                
        $monthly $res[monthly];
                    
            }
                
            foreach(
        $resultUser as $row)
            {
                echo 
        "<tr>";
                echo 
        "<td align='left' width:'120px'>" $row[user] . "</td>";
                echo 
        "<td align='center' width:'120px'>" $row[count30] . "</td>";
                echo 
        "<td align='center' width:'120px'>" $res[monthly] . "</td>";
            }
            echo 
        "</tr></table>"
        Die Tabelle passt nun, jedoch gibt mir das $res[monthly] nun nur EINEN Wert aus?!

        Wo liegt der Fehler?

        Kommentar


        • #5
          Zitat von b1p Beitrag anzeigen
          Die Tabelle passt nun, jedoch gibt mir das $res[monthly] nun nur EINEN Wert aus?!
          Natürlich, du überschreibst es doch in der ersten Schleife immer wieder – also bleibt nach der Schleife nur der letzte Wert übrig.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Die Variable $res gibt es in der zweiten Schleife garnicht. Deine erste Schleife wird doch vorher schon geschlossen?
            This is what happens when an unstoppable force meets an immovable object.

            Kommentar


            • #7
              Gelöst
              PHP-Code:
                      $monthly = array();
                      foreach(
              $resultMonth as $res)
                      {
                          
                          
              $userName $res['user'];
                          
              $monthly[$userName] = $res['monthly'];
                          
                      }
                      
                      foreach(
              $resultUser as $row)
                      {
                          echo 
              "<tr>";
                          echo 
              "<td align='left' width:'150px'>" $row['user'] . "</td>";
                          echo 
              "<td align='center' width:'150px'>" $row['count30'] . "</td>";
                          echo 
              "<td align='center' width:'150px'>" $monthly[$row['user']] . "</td></tr>";
                      }
                      echo 
              "</table>"
              bin echt etwas schwer von Begriff manchmal :S

              Kommentar


              • #8
                Jetzt bitte noch das HTML richtig schreiben (siehe mein erster Post), dann sind alle glücklich.
                This is what happens when an unstoppable force meets an immovable object.

                Kommentar

                Lädt...
                X