where in einer row-abfrage

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • where in einer row-abfrage

    Hallo PHP-Profies,

    kann man eigentlich in eine 'row' abfrage ein 'where' setzen.

    PHP Code:
    <?php
    $sql 
    "SELECT url,hits,since,title FROM $tbl_mpdl WHERE type='mp' AND enabled ORDER BY hits DESC LIMIT 0,15";
    $res mysql_query($sql);
    $i 3;
    while (
    $row = @mysql_fetch_array($res)) {
    $ArrMp1 '<a href="'.htmlspecialchars($primary_url.$row[0]).'"> '.$row[0].'</a>';
    $ArrMp2 $row[1];
    $ArrMp3 date($strDate2,GMTtoUser($row[2]));
    $i++;
    echo 
    "<tr><td>$ArrMp1</td>";
    echo 
    "<td>$ArrMp2</td>";
    echo 
    "<td>$ArrMp3</td></tr>";
    }
    ?>
    Nun möchte ich das nur in der Abfrage
    PHP Code:
    echo "<td>$ArrMp3</td></tr>"
    folgende Anweisung einfügen
    PHP Code:
    WHERE time $first_of_month 
    denn wenn ich es in der SQL-Abfrage setze,
    wird die komplette Ausgabe darauf ausgerichtet.

    Danke im voraus

    Gruß Manuela

  • #2
    Versteh nicht ganau, wie du das meinst.

    Comment


    • #3
      Original geschrieben von TobiaZ
      Versteh nicht ganau, wie du das meinst.
      ich verstehs auch nicht. mal sehen, wer es auch nciht versteht. dann wären wir nicht alleinen...

      @manuelakersten
      gib mal nähere infos, was genau du aus der DB holen willst, bzw. wie es aussehen soll.
      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 |


      Comment


      • #4
        Danke für die schnelle Antwort,
        sorry war ein Fehler von mir :-)

        Also ich habe eine Ausgabe mit einem Zählwert.

        Dieser Zählwert beinhaltet die Zählung von Anfang an
        nun möchte ich einen Zählwert erstellen der nur
        den aktuellen Monat beinhaltet,
        der Unix-Timestamp in der Datenbank hat 'since'
        als Zellenüberschrift

        Nun gibt
        PHP Code:
        $ArrMp1 '<a href="'.htmlspecialchars($primary_url.$row[0]).'"> '.$row[0].'</a>'
        die zu zählende URL aus und
        PHP Code:
        $ArrMp2 $row[1]; 
        die Anzahl der gesamten Zälwertes.
        Nun möchte ich eine Ausgabe erstellen,
        der nur die Zählungen des aktuellen Monats beinhaltet.

        Die SQL-Abfrage ist wie oben angegeben.
        Die Abfrage
        PHP Code:
        date($strDate2,GMTtoUser($row[2])); 
        gibt an seit wann die URL gezählt wird.

        Bitte vergesse die
        PHP Code:
        WHERE time $first_of_month 
        da diese hier nicht funktioniert.

        Gruß und danke Manuela

        Comment


        • #5
          was ist eigentlich mit dem enabled ????? da steht ja nix dahinter.

          ich mache mal Y rein. wenns nicht richtig ist, musst du es korrigieren!

          so ....
          PHP Code:
          $sql "SELECT  url,
                          hits,
                          since,
                          title
                    FROM  "
          .$tbl_mpdl."
                   WHERE  `type`='mp' AND
                          enabled = 'Y' AND
                          MONTH(FROM_UNIXTIME(since)) = MONTH(NOW())
                ORDER BY  hits DESC
                   LIMIT  0,15"

          oder so ....
          PHP Code:
          $sql "SELECT  url,
                          hits,
                          since,
                          title
                    FROM  "
          .$tbl_mpdl."
                   WHERE  `type`='mp' AND
                          enabled = 'Y'
                  HAVING  MONTH(FROM_UNIXTIME(since)) = MONTH(NOW())
                ORDER BY  hits DESC
                   LIMIT  0,15"

          oder so ....
          PHP Code:
          $sql "SELECT  url,
                          hits,
                          SUM(since) since_sum,
                          title
                    FROM  "
          .$tbl_mpdl."
                   WHERE  `type`='mp' AND
                          enabled = 'Y'
                  HAVING  MONTH(FROM_UNIXTIME(since)) = MONTH(NOW())
                GROUP BY  since_sum
                ORDER BY  hits DESC
                   LIMIT  0,15"

          einfach mal testen.
          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 |


          Comment


          • #6
            mhhh, danke aber wird dann nicht die komplette
            Ausgabe nur von dem aktuellen Monat ausgegeben ?

            Gruß Manuela

            Comment


            • #7
              mhhh, danke aber wird dann nicht die komplette
              Ausgabe nur von dem aktuellen Monat ausgegeben ?
              stimmt. denn das war doch dein wunsch, oder?

              die Anzahl der gesamten Zälwertes.
              Nun möchte ich eine Ausgabe erstellen,
              der nur die Zählungen des aktuellen Monats beinhaltet.
              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 |


              Comment


              • #8
                Nich einfach oder ...
                ... ich habe mal ein Bild gepostet :



                Nun ich möchte die Spalte 'Monat' erzeugen
                bitte beachtet, daß diese Werte natürlich nicht stimmen
                können, ich habe Sie einfach in die Spalte kopiert.

                Vielleicht hilft es mein Problem zu verstehen !

                Gruß Manuela

                Comment


                • #9
                  ich denke nicht, dass du das mit nur einer abfrage machen kannst. einmal musst du ja die summe aller werte bilden und einmal die summer des monats.

                  da musst du wohl oder übel mit zwei queries arbeiten.

                  die erste query arbeitet die monate ab, wie ich es oben beschrieben habe. die andere macht nur eine SUM() auf das Feld. mehr nicht, damit die Performance nicht leidet.

                  Beide Queries solltest du dann schachteln.

                  PHP Code:
                  $sql_month "SELECT Id,....";
                  $result_month mysql_query ($sql_month);
                  while (
                  $zeile_month=mysql_fetch_array) {
                    echo 
                  "monatssumme id = ".$zeile["Id"];
                    
                  $sql_all "SELECT SUM(spalte) sumall FROM .... WHERE Id = ".$zeile["Id"];
                    
                  $result_all mysql_query ($sql_all);
                    
                  // keine schleife, da i.d.R. nur ein datensatz geliefert werden sollte.
                    // Id sollte es nur einmal geben.
                    
                  $zeile_all mysql_fetch_array($result_all);
                    echo 
                  "alle: ".  $zeile_all["sumall"];

                  habs nicht getestet, aber sollte wunderbar funktionieren.
                  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 |


                  Comment


                  • #10
                    Nun den Code verstehe ich, hat aber irgendwie
                    nichts mit meinen Ausgaben zu tun,
                    denn ich muß ja auch die URL'S ausgeben.


                    Ich bekomme eine Entlosschleife wenn ich diesen Code einsetze :
                    PHP Code:
                    $sql_month "SELECT  url,
                                      hits,
                                      since,
                                      title
                                      FROM  "
                    .$tbl_mpdl."
                                      WHERE type='mp' AND
                                      enabled AND
                                      MONTH(FROM_UNIXTIME(since)) = MONTH(NOW())
                                      ORDER BY  hits DESC
                                      LIMIT  0,15"
                    ;
                      
                    $result_month mysql_query ($sql_month);
                      while (
                    $zeile_month=mysql_fetch_array) {
                      echo 
                    "monatssumme id = ".$zeile["Id"];
                      
                    $sql_all "SELECT SUM(hits) sumall FROM ".$tbl_mpdl." WHERE Id = ".$zeile["Id"];
                      
                    $result_all mysql_query ($sql_all);
                      
                    $zeile_all mysql_fetch_array($result_all);
                      echo 
                    "alle: ".  $zeile_all["sumall"];

                    Dieses wäre ja mein Originalcode :
                    PHP Code:
                    <?php
                    $sql 
                    "SELECT url,hits,since,title FROM $tbl_mpdl WHERE type='mp' AND enabled ORDER BY hits DESC LIMIT 0,15";
                    $res mysql_query($sql);
                    $i 3;
                    while (
                    $row = @mysql_fetch_array($res)) {
                    $ArrMp1 '<a href="'.htmlspecialchars($primary_url.$row[0]).'"> '.$row[0].'</a>';
                    $ArrMp2 $row[1];
                    $ArrMp3 // hier muß die Abfrage für den Monat rein
                    $i++;
                    echo 
                    "<tr><td>$ArrMp1</td>";
                    echo 
                    "<td>$ArrMp2</td>";
                    echo 
                    "<td>$ArrMp3</td></tr>";
                    }
                    ?>
                    Nun ich könnte die Abfragen auch hier verschachteln
                    jedoch müsste ich dann zwei while-schleifen setzen.

                    1.) while ($row = mysql_fetch_array($res)) {
                    2.) while ($zeile_month=mysql_fetch_array) {

                    Gruß und Danke Manuela

                    Comment


                    • #11
                      endlos wäre die schleife auf KEINEN FALL gewesen.

                      das $zeile["Id"] ist auch nur ein beispiel zum verstehen.
                      das feld Id ist wahrscheinlich so nicht in deiner tabelle
                      enthalten. also musst du ein anderes eindeutiges feld nehmen,
                      wahrscheinlich die url oder so.

                      Nun den Code verstehe ich[...]
                      das glaube ich dann man nicht, denn mit ein wenig selber überlegen hättest du da aber auch drauf
                      kommen MÜSSEN!!!


                      PHP Code:
                      $sql_month "SELECT  url,
                                            hits,
                                            since,
                                            title
                                      FROM  "
                      .$tbl_mpdl."
                                     WHERE  type='mp' AND
                                            enabled AND
                                            MONTH(FROM_UNIXTIME(since)) = MONTH(NOW())
                                  ORDER BY  hits DESC
                                     LIMIT  0,15"
                      ;
                        
                      $result_month mysql_query ($sql_month);
                        while (
                      $zeile_month=mysql_fetch_array) {
                          echo 
                      "monatssumme: ".$zeile["since"]."<br><br>";
                          
                      $sql_all "SELECT SUM(hits) sumall FROM ".$tbl_mpdl." WHERE url = ".$zeile["url"];
                          
                      $result_all mysql_query ($sql_all);
                          
                      $zeile_all mysql_fetch_array($result_all);
                          echo 
                      "alle: ".$zeile_all["sumall"]."<br>";
                        } 
                      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 |


                      Comment

                      Working...
                      X