News nach X Tagen nicht mehr anzeigen lassen...

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

  • News nach X Tagen nicht mehr anzeigen lassen...

    Also ich benutze das Newsscript von http://www.scorpionz.de

    Ich habe den Autor gefragt ob es denn möglich wäre das News nach X Tagen automatisch aus der Übersicht rausgeschmissen werden und nur im Archive angezeigt werden. Daraufhin hat er mir gesagt das dies noch nicht implentiert wäre aber ich das machen kann wenn ich will ( Das Script unterliegt der GPL ).

    Hier der nun in meinen Augen entscheidende Teil des Scripts:

    PHP-Code:
     default:
          
    // - - News beginn - - //
          
    if( empty($s) )
          {
               
    $s 0;
          }
          isset(
    $cat) ?
           
    $query "SELECT news.newsid,news.newstext,news.newssubject,news.userid,news.newstime,news.newsurl,news.newslink,cat.catname,cat.catimage FROM ".$n."news news INNER JOIN ".$n."news_cat cat ON news.catid = cat.catid WHERE news.catid = '$cat' ORDER BY news.newsid DESC LIMIT $s,$config[nps]:
           
    $query "SELECT news.newsid,news.newstext,news.newssubject,news.userid,news.newstime,news.newsurl,news.newslink,cat.catname,cat.catimage FROM ".$n."news news INNER JOIN ".$n."news_cat cat ON news.catid = cat.catid ORDER BY news.newsid DESC LIMIT $s,$config[nps]";
          
    $q_news mysql_query($query);

          
    $num mysql_fetch_array(mysql_query("SELECT count(newsid) FROM ".$n."news"));
          
    $num $num[0];

          if(
    $num 0)
          {
               echo 
    '<table width="100%" cellpadding="0" cellpspacing="0"><tr><td>Insgesamt gepostete News: '.$num.'</td><td align="right">Kategorien: <select onChange="location.href=this.value"><option>Wähle Kategorie:';
               
    $q_cat mysql_query("SELECT catid,catname FROM ".$n."news_cat");

               while( 
    $category mysql_fetch_array($q_cat) )
               {
                    echo 
    '<option value="'.$url.'cat='.$category['catid'].'">'.$category['catname'];
               }
               echo 
    '</select></td></tr></table><br>';

               
    // News schreiben
               
    while( $news mysql_fetch_array($q_news) )
               {
                  echo 
    writenews($news);
               }

               
    // Footer
               
    isset($cat) ? $catstring 'cat='.$cat.'&' $catstring '';
               
    $forward $s $config[nps];
               
    $back $s $config[nps];
               
    $s $s_back '<a href="'.$url.$catstring.'s='.$forward.'">&lt; Neuere News</a>' $s_back '';
               
    $num > ($config[nps] + $s) ? $s_forward ='<a href="'.$url.$catstring.'s='.$back.'">&Auml;ltere News &gt;</a>' $s_forward '';
               echo 
    '<center>'.$s_back.' | <a href="'.$url.'do=archiv">Archiv</a> | '.$s_forward.'</center>';
          }
          else
          {
               echo 
    'Keine News gepostet!';
          } 
    Hier werden ja die News ausgegeben. Wie kann ich nun die entsprechenden News nicht mehr anzeigen lassen. Die Zeit der News wird in der variabel "$zeit" gespeichert.

  • #2
    bereits die SQL-Ergebnisse einschränken


    ... where news.newstime > "heute - 7 Tage" and ...
    TBT

    Die zwei wichtigsten Regeln für eine berufliche Karriere:
    1. Verrate niemals alles was du weißt!


    PHP 2 AllPatrizier II Browsergame

    Kommentar


    • #3
      PHP-Code:
      $query "SELECT news.newsid,news.newstext,news.newssubject,news.userid,news.newstime,news.newsurl,news.newslink,cat.catname,cat.catimage FROM ".$n."news news INNER JOIN ".$n."news_cat cat ON news.catid = cat.catid WHERE news.catid = '$cat' ORDER BY news.newsid DESC LIMIT $s,$config[nps]:
             
      $query "SELECT news.newsid,news.newstext,news.newssubject,news.userid,news.newstime,news.newsurl,news.newslink,cat.catname,cat.catimage FROM ".$n."news news INNER JOIN ".$n."news_cat cat ON news.catid = cat.catid ORDER BY news.newsid DESC LIMIT $s,$config[nps]"
      wie kann ich das denn da einschränken; da ist doch schon ein "where".

      Und wie kriege ich den Wert "aktuelle Zeit - 7 Tage". Und wie kriege ich das in solch ein Format ?

      Ein Beispielwert: 1037377586

      Kommentar


      • #4
        Du kannst doch mehrere Einschränkenden WHERE-Bedingungen angeben:

        WHERE feld1='value1'
        AND feld2='value2'


        oder

        WHERE feld1='value1'
        OR feld1='value2'



        Aktuelle Zeit - 7 Tage formuliert man in (My)SQL:

        NOW()-INTERVAL 7 DAY

        oder

        CURDATE()-INTERVAL 7 DAY

        Ergo:

        WHERE news.catid = '$cat'
        AND datumbis>=CURDATE()-INTERVAL 7 DAY


        nur mal so als Beispiel ...
        carpe noctem

        [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
        [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

        Kommentar


        • #5
          PHP-Code:
          <?
          $test = NOW()-INTERVAL 7 DAY;
          echo "".$test."";
          ?>
          PHP-Code:
          <?
          $test = CURDATE()-INTERVAL 7 DAY;
          echo "".$test."";
          ?>
          Das funzt nicht !?!?

          Kommentar


          • #6
            Original geschrieben von goth
            Aktuelle Zeit - 7 Tage formuliert man in (My)SQL
            (My)SQL != PHP
            EDIT:
            Wer lesen kann, ist klar im Vorteil
            Zuletzt geändert von mrhappiness; 16.01.2003, 22:41.
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              ok, danke für den Hinweis !

              Kommentar


              • #8
                PHP-Code:
                WHERE news.catid '$cat' AND ".$n."news.newstime >=CURDATE()-INTERVAL 56 DAY 
                produziert bei mir einen Fehler:
                Warning: Supplied argument is not a valid MySQL result resource in .../news.php on line 310

                dort steht:

                while( $news = mysql_fetch_array($q_news) )

                Die Zeit wird in dem Feld newstime eingetragen und dieses Feld ist ein int(11)

                Wie kriegt man die aktuelle Zeit- X Tage in PHP ?

                Kommentar


                • #9
                  Die Zeit wird in dem Feld newstime eingetragen und dieses Feld ist ein int(11)
                  dann funzt es nicht.
                  vorrausetzung dafür wäre ein feld mit dem format mysql-timestamp.

                  Wie kriegt man die aktuelle Zeit- X Tage in PHP ?
                  ein tag ist = 24*60*60 sekunden = 86400 sekunden

                  $akt_minus_x = time() - ($tage *86400);
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    So funzt es !

                    Kommentar


                    • #11
                      Da bleibt dann noch die Frage ob es Klug ist eine Zeitangabe in einem INT zu speichern, wenn das RDBMS einem entsprechende Typen (DATE, TIME; DATETIME) zur Verfügung stellt ...
                      carpe noctem

                      [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                      [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                      Kommentar


                      • #12
                        Das Script kommt ja nciht von mir !!!

                        Kommentar

                        Lädt...
                        X