Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
News nach X Tagen nicht mehr anzeigen lassen... [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
News nach X Tagen nicht mehr anzeigen lassen...


 
Murderdeath
16-01-2003, 19:43 
 
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:


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 > 0 ? $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.

 
TBT
16-01-2003, 20:26 
 
bereits die SQL-Ergebnisse einschränken


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

 
Murderdeath
16-01-2003, 22:07 
 
$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

 
goth
16-01-2003, 22:15 
 
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 ... :dontknow:

 
Murderdeath
16-01-2003, 22:33 
 
<?
$test = NOW()-INTERVAL 7 DAY;
echo "".$test."";
?>


<?
$test = CURDATE()-INTERVAL 7 DAY;
echo "".$test."";
?>

Das funzt nicht !?!?

 
mrhappiness
16-01-2003, 22:36 
 
Original geschrieben von goth
Aktuelle Zeit - 7 Tage formuliert man in (My)SQL
(My)SQL != PHP
Wer lesen kann, ist klar im Vorteil ;) :D

 
Murderdeath
16-01-2003, 22:39 
 
ok, danke für den Hinweis !

 
Murderdeath
16-01-2003, 22:59 
 
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 ?

 
wahsaga
17-01-2003, 00:04 
 
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);

 
Murderdeath
17-01-2003, 00:09 
 
So funzt es !

 
goth
17-01-2003, 03:02 
 
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 ... :dontknow:

 
Murderdeath
17-01-2003, 08:08 
 
Das Script kommt ja nciht von mir !!!


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:11 Uhr.