[GastForen Programmierung/Entwicklung PHP und MySQL Reihenfolge von News

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Reihenfolge von News

Berni
Beiträge gesamt: 66

3. Apr 2008, 11:44
Beitrag # 1 von 11
Bewertung:
(3126 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

habe ein Script, das die News immer nach oben packt....es soll aber die News nach hinten packen. Wie kann man das machen? Weiss da jemand was?

Code
//Funtion zum Anzeigen der News 
function shownews()
{
global $start, $news_maxpage, $news_ubbc, $news_smilies;
if(!$start) $start='0';
$inhalt=explode('|||||', implode('', file('data.dat')));
$end=$start+$news_maxpage;
$temp1=implode('',file('templates/news.php'));
$templates1=explode('<!--Beginn des Codes für einen Newseintrag - diese Zeile darf nicht entfernt oder verändert werden-->', $temp1);
$templates2=explode('<!--Beginn des Fusses der News - diese Zeile darf nicht entfernt oder verändert werden-->', $templates1[1]);
$html=$templates1[0];
for($i=$start; $i<$end && $inhalt[$i]; $i++)
{
$details=explode('|||', $inhalt[$i]);
if($details[1]=='0') $details[1]='';
$news=str_replace('<!--Autor-->', $details[0], $templates2[0]);
$news=str_replace('<!--Email-->', $details[1], $news);
$news=str_replace('<!--Datum-->', $details[2], $news);
$news=str_replace('<!--Betreff-->', $details[4], $news);
if($news_smilies=='1')$details[5]=smiliehtml($details[5]);
if($news_ubbc=='1') $details[5]=codehtml($details[5]);
$news=str_replace('<!--News-->', $details[5], $news);
$feedbacklink='news.php?action=feedback&newsid='.$details[3].'&news='.$i;
$news=str_replace('<!--Feedbacklink-->', $feedbacklink, $news);
$news=str_replace('<!--Feedbackzahl-->', getfeedbackzahl(trim($details[3])), $news);
$html.=$news;
}
if($start!=0)
{
$back=$start-$news_maxpage;
$menuehtml='<a href="news.php?start='.$back.'"><<-Zur&uuml;ck</a> |';
}
else
$menuehtml='<<-Zur&uuml;ck |';
$menuehtml.=' <a href="news.php">Start</a> ';
if($inhalt[$end]) $menuehtml.='| <a href="news.php?start='.$end.'">Weiter->></a>';
else $menuehtml.='| Weiter->';
$html.=str_replace('<!--Menue-->', $menuehtml, $templates2[1]);
echo $html;
}


Danke

Berni
X

Reihenfolge von News

flobaer
Beiträge gesamt: 317

3. Apr 2008, 13:00
Beitrag # 2 von 11
Beitrag ID: #344481
Bewertung:
(3102 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Berni,

was ist oben, was ist hinten? Kannst du mal ein Beispiel bringen wie es jetzt ist und wie du es gerne hättest?

Viele Grüße,
Florian


als Antwort auf: [#344460]

Reihenfolge von News

Berni
Beiträge gesamt: 66

3. Apr 2008, 13:26
Beitrag # 3 von 11
Beitrag ID: #344492
Bewertung:
(3092 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Florian,

ja, das Script zeigt die zuletzt eingetragenen News in der Ausgabe im an der ersten Stelle aller News an. D. h. nun zeigt es den neuesten Beitrag zuerst an. Da das Script aber als "Terminplaner" mit einer Monatsabfolge laufen soll muss das anderes herum.

Am besten wäre natürlich eine manuelle Sortierung oder eine nach Name...denn da könnte ich dann ja mit dem Titel spielen (Z. B. 01 Januar, 02 Februar)...

Berni


als Antwort auf: [#344481]

Reihenfolge von News

flobaer
Beiträge gesamt: 317

3. Apr 2008, 13:31
Beitrag # 4 von 11
Beitrag ID: #344496
Bewertung:
(3090 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Berni,

wie sieht denn die news.php aus, in der offensichtlich die News stehen? An irgendeiner Stelle musst du die Texte ja sortieren. Offensichtlich arbeitest du nicht mit einer Datenbank. Warum nicht?

Viele Grüße,
Florian


als Antwort auf: [#344492]

Reihenfolge von News

Berni
Beiträge gesamt: 66

3. Apr 2008, 13:58
Beitrag # 5 von 11
Beitrag ID: #344511
Bewertung:
(3080 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Florian,

nunja...der Eintrag vorhin kam aus der news.php, ich dachte, das wäre der relevante Teil. Hier nochmal die ganze Datei. Achja, ich nutze keine Datenbank, da ich ein wirklich sehr einfache Script gebraucht habe. Einfache Installation, Anpassung und einfache Bedienung.

Code
<?php 
/**********************************

Easy News Updater

Copyright (C) 2001 Andreas Geißner

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

*********************************/

//In dieser Datei muss nichts verändert werden
//Wer aber will darf das natürlich machen

//Einbinden der Config
include('config.php');

//Funktion zum Ersetzen des Smilies durch einen imagetag
function smiliehtml($text)
{
$text=str_replace(':)', '<img src="smilies/smile.gif" border="0">', $text);
$text=str_replace(':(', '<img src="smilies/sad.gif" border="0">', $text);
$text=str_replace(';-)', '<img src="smilies/wink.gif" border="0">', $text);
$text=str_replace(':cool:', '<img src="smilies/cool.gif" border="0">', $text);
$text=str_replace(':mad:', '<img src="smilies/mad.gif" border="0">', $text);
$text=str_replace(':D', '<img src="smilies/biggrin.gif" border="0">', $text);
$text=str_replace(':rolleyes:', '<img src="smilies/rolleyes.gif" border="0">', $text);
return $text;
}

//Function für den UBB Code
function codehtml($text)
{
$text=eregi_replace("\[B\]([^\[]+)\[/B\]", "<b>\\1</b>", $text);
$text=eregi_replace("\[I\]([^[]+)\[/I\]", "<i>\\1</i>", $text);
$text=eregi_replace("\[URL\]www.([^\[]+)\[/URL\]", "<a href=\"http://www.\\1\" target=\"_blank\">www.\\1</a>", $text);
$text=eregi_replace("\[URL\]([^[]+)\[/URL\]", "<a href=\"\\1\" target=\"_blank\">\\1</a>", $text);
$text=eregi_replace("\[MAIL\]([^[]+)\[/MAIL\]", "<a href=\"mailto:\\1\">\\1</a>", $text);
$text=eregi_replace("\[URL=([^[]+)\]([^[]+)\[/URL\]", "<a href=\"\\1\" target=\"_blank\">\\2</a>", $text);
return $text;
}


//Anzahl der Feedbackposts auslesen
function getfeedbackzahl($newsid)
{
if(!@$array=explode('|||||', implode('|||', file("feedback/$newsid.dat")))) return '0';
else return count($array)-1;
}

//Funtion zum Anzeigen der News
function shownews()
{
global $start, $news_maxpage, $news_ubbc, $news_smilies;
if(!$start) $start='0';
$inhalt=explode('|||||', implode('', file('data.dat')));
$end=$start+$news_maxpage;
$temp1=implode('',file('templates/news.php'));
$templates1=explode('<!--Beginn des Codes für einen Newseintrag - diese Zeile darf nicht entfernt oder verändert werden-->', $temp1);
$templates2=explode('<!--Beginn des Fusses der News - diese Zeile darf nicht entfernt oder verändert werden-->', $templates1[1]);
$html=$templates1[0];
for($i=$start; $i<$end && $inhalt[$i]; $i++)
{
$details=explode('|||', $inhalt[$i]);
if($details[1]=='0') $details[1]='';
$news=str_replace('<!--Autor-->', $details[0], $templates2[0]);
$news=str_replace('<!--Email-->', $details[1], $news);
$news=str_replace('<!--Datum-->', $details[2], $news);
$news=str_replace('<!--Betreff-->', $details[4], $news);
if($news_smilies=='1')$details[5]=smiliehtml($details[5]);
if($news_ubbc=='1') $details[5]=codehtml($details[5]);
$news=str_replace('<!--News-->', $details[5], $news);
$feedbacklink='news.php?action=feedback&newsid='.$details[3].'&news='.$i;
$news=str_replace('<!--Feedbacklink-->', $feedbacklink, $news);
$news=str_replace('<!--Feedbackzahl-->', getfeedbackzahl(trim($details[3])), $news);
$html.=$news;
}
if($start!=0)
{
$back=$start-$news_maxpage;
$menuehtml='<a href="news.php?start='.$back.'"><<-Zur&uuml;ck</a> |';
}
else
$menuehtml='<<-Zur&uuml;ck |';
$menuehtml.=' <a href="news.php">Start</a> ';
if($inhalt[$end]) $menuehtml.='| <a href="news.php?start='.$end.'">Weiter->></a>';
else $menuehtml.='| Weiter->';
$html.=str_replace('<!--Menue-->', $menuehtml, $templates2[1]);
echo $html;
}

//Funktion zum Anzeigen des Feedbacks
function showfeedback($newsid, $news)
{
global $news_smilies, $news_ubbc;
if(getfeedbackzahl($newsid)==0)
{
$template=implode('', file('templates/nofeedback.html'));
$inhalt=explode('|||||', implode('', file('data.dat')));
$details=explode('|||', $inhalt[$news]);
if($details[1]=='0') $details[1]='';
$template=str_replace('<!--Autor-->', $details[0], $template);
$template=str_replace('<!--Email-->', $details[1], $template);
$template=str_replace('<!--Datum-->', $details[2], $template);
$template=str_replace('<!--Betreff-->', $details[4], $template);
if($news_smilies==1) $details[5]=smiliehtml($details[5]);
if($news_ubbc==1) $details[5]=codehtml($details[5]);
$template = str_replace('<!--News-->', $details[5], $template);
echo str_replace('<!--Newsid-->', $newsid, $template);
}
else
{
$temp1=implode('', file('templates/feedback.html'));
$template1=explode('<!--Beginn des Codes für einen Feedbackposts - diese Zeile darf nicht entfernt oder verändert werden-->', $temp1);
$template2=explode('<!--Beginn des Fusses der Seite - diese Zeile darf nicht entfernt oder verändert werden-->', $template1[1]);
$inhalt=explode('|||||', implode('', file('data.dat')));
$details=explode('|||', $inhalt[$news]);
if($details[1]=='0') $details[1]='';
$template1[0]=str_replace('<!--Autor-->', $details[0], $template1[0]);
$template1[0]=str_replace('<!--Email-->', $details[1], $template1[0]);
$template1[0]=str_replace('<!--Datum-->', $details[2], $template1[0]);
$template1[0]=str_replace('<!--Betreff-->', $details[4], $template1[0]);
if($news_smilies==1) $details[5]=smiliehtml($details[5]);
if($news_ubbc==1) $details[5]=codehtml($details[5]);
$html=str_replace('<!--News-->', $details[5], $template1[0]);
$inhalt=explode('|||||', implode('', file("feedback/$newsid.dat"))) or die('Fehler');
for($i='0'; $inhalt[$i]; $i++)
{
$details=explode('|||', $inhalt[$i]);
$fb=str_replace('<!--Autor-->', $details[0], $template2[0]);
$fb=str_replace('<!--Email-->', $details[1], $fb);
if($news_smilies==1) $details[2]=smiliehtml($details[2]);
# echo smiliehtml($details[2]);
if($news_ubbc==1) $details[2]=codehtml($details[2]);
$html.=str_replace('<!--Eintrag-->', $details[2], $fb);
}
echo $html.str_replace('<!--Newsid-->', $newsid, $template2[1]);
}
}

//Funktion zum Schreiben des Feedbacks in die Datenbank
function writefeedback($newsid, $name, $email, $comment)
{
if(!$name||!$email||!$comment)
{
$template=implode('', file('templates/fberror.html'));
die(str_replace('<!--Fehler-->', 'Es wurden nicht alle Felder ausgefuellt!', $template));
}
if(strpos($name.$email.$comment, '||'))
{
$template=implode('', file('templates/fberror.html'));
die(str_replace('<!--Fehler-->', 'Die Zeichenkette "||" darf keinem Feld vorhanden sein, bzw. Anfang und Ende zweier Felder zusammen d&uuml;rfen die Zeichenkette ebenfalls nicht ergeben.', $template));
}
if(!@$datei=fopen("feedback/$newsid.dat", 'a'))
{
if(!@$datei=fopen("feedback/$newsid.dat", 'w'))
{
$template=implode('', file('templates/fberror.html'));
die(str_replace('<!--Fehler-->', 'Fehler: Konnte Feedbackdatei nocht oeffnen: Evtl unzureichende Dateirechte (CHMODS)!', $template));
}
}
$name=htmlentities($name);
$email=htmlentities($email);
$comment=str_replace("\n", '<br>', htmlentities($comment));
fputs($datei, "$name|||$email|||$comment|||||");
fclose($datei);
echo implode('', file('templates/fbwritten.html'));
}

//Newsletterformular
function nlstart()
{
global $news_nletter;
if($news_nletter=='1')
echo '<html>
<head>
<title>Newsletter</title>
</head>
<body>
<form action="news.php" method="POST">
<input type="hidden" name="action" value="nlsend">
<p align="center">
<input type="text" name="email" value="name@home.page"><br>
<input type="radio" name="do" value="eintragen" CHECKED>Eintragen | Austragen <input type="radio" name="do" value="austragen"><br>
<input type="submit" name="submit" value="Absenden"></p></form>
</body>
</html>';
else echo '<html>
<head>
<title>Newsletter</title>
</head>
<body>
<p align="center"> Newsletter nicht aktiviert!</p>
</body>
</html>';
}

//Newsletter eintragen/austragen
function nlwrite($email, $do)
{
global $news_nletter;
if($news_nletter=='0')
echo '<html>
<head>
<title>Newsletter</title>
</head>
<body>
<p align="center"> Newsletter nicht aktiviert!</p>
</body>
</html>';
if($do=='eintragen')
{
$datei=fopen('newsletterdata.php', 'a');
fputs($datei, "\n$email");
fclose($datei);
echo '<html>
<head>
<title>Eintrag erfolgreich</title>
</head>
<body>
<p align="center">Die E-Mailadresse wurde erfolgreich eingetragen!</p>
</body>
</html>';
}
else
{
$inhalt=file('newsletterdata.php', 'a');
$writetext='<?php';
for($i='1'; $inhalt[$i]; $i++)
{
$inhalt[$i]=trim($inhalt[$i]);
if($inhalt[$i]==$email) $found='1';
else $writetext.="\n$inhalt[$i]";
}
if(!$found) echo '<html>
<head>
<title>Nicht gefunden</title>
</head>
<body>
<p align="center">Diese E-Mailadresse wurde in der Datenbank nicht gefunden!</p>
</body></html>';
else
{
$datei=fopen('newsletterdata.php', 'w');
fputs($datei, $writetext);
fclose($datei);
echo '<html>
<head>
<title>Eintrag entfernt</title>
</head>
<body>
<p align="center">Die angegebene E-Mailadresse wurde aus der Datenbank entfernt!</p>
</body></html>';
}
}
}

switch($action)
{
case 'feedback':
showfeedback($newsid, $news);
break;
case 'fbwrite':
writefeedback($newsid, $name, $email, $comment);
break;
case 'newsletter':
nlstart();
break;
case 'nlsend':
nlwrite($email, $do);
break;
default:
shownews();
}



Oder ist die admin.php wichtig....??

Berni


als Antwort auf: [#344496]

Reihenfolge von News

Berni
Beiträge gesamt: 66

3. Apr 2008, 14:01
Beitrag # 6 von 11
Beitrag ID: #344514
Bewertung:
(3077 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
achja, hier noch die config.php

Code
<?php 
/**********************************

Easy News Updater

Copyright (C) 2001 Andreas Geißner

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

*********************************/



########## Allgemeine Konfiguration ###########
$news_maxpage = "3"; //Maximale Anzahl an News auf einer Page
$news_feedback = "0"; //Bei 1 ist das Feedback an, bei 0 nicht. Besonders bei aktiviertem Save-Mode kann es Probleme mit dem Feedback geben
$news_scripturl = "http://www.beispielseitefuerdienews.de/newsarea"; //URL zum Verzeichnis in dem das Script liegt, am ende kein /
$news_smilies = "0"; //Smilies in den News und im Feedback erlauben?
$news_ubbc = "0"; //UBBC Code in den News udn im Feedback erlauben?
$news_nletter = "0"; //Newsletter aktivieren oder nicht?



als Antwort auf: [#344511]

Reihenfolge von News

flobaer
Beiträge gesamt: 317

3. Apr 2008, 14:20
Beitrag # 7 von 11
Beitrag ID: #344522
Bewertung:
(3071 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Herrjeh, jetzt bin ich auch noch in der Zeile verrutscht. Eigentlich wollte ich die data.dat sehen. Darin stehen die News, oder? Was ich aber nicht verstehe ist die Zeile
Code
$temp1=implode('',file('templates/news.php')); 

Was tut die?

Wie auch immer. Wenn ich deinen Ansatz richtig versteh, lädtst du alle News in ein Array und gibst es dann elementweise aus. Du musst einfach nur vor der Ausgabe das Array wie gewünscht sortieren.

Viele Grüße,
Florian


als Antwort auf: [#344511]

Reihenfolge von News

Ollli
Beiträge gesamt: 458

3. Apr 2008, 14:30
Beitrag # 8 von 11
Beitrag ID: #344528
Bewertung:
(3066 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Berni,

allein um die Reihenfolge umzukehren müsste folgende Zeile ausgetauscht werden:
$inhalt=explode('|||||', implode('', file('data.dat')));

durch
$inhalt=explode('|||||', implode('', array_reverse(file('data.dat'))));

Für eine Sortierung nach einem bestimmten Attribut wird das Ganze aufwendiger. Dazu müsstest du das zu sortierende Attribut extrahieren, in ein assoziatives Array speichern und dieses Array sortieren. Solltest du mit diesem Newssystem noch mehr Sachen anstellen wollen, dann empfehle ich dir ein Datenbanksystem zu verwenden. Es muss ja nicht MySQL sein, es gibt ja auch SQLLite oder ähnliche kleine Systeme.

Viel Erfolg,


als Antwort auf: [#344492]

Reihenfolge von News

Berni
Beiträge gesamt: 66

3. Apr 2008, 16:17
Beitrag # 9 von 11
Beitrag ID: #344566
Bewertung:
(3040 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Olli,

danke...probiere es gleich aus!

Du hast geschrieben...andere Systeme. Ja, da gibt es schon bald wieder zuviele...alle, die ich bis jetzt getestet habe waren viel zu komplex (für User und auch bei der Templateanpassung). Ich bräuchte nur eines, was mit einem User News eingeben kann, diese sollten vielleicht noch sortierbar sein. Achja, wenn möglich auch ein Bildupload mit autom. Bildberechnung....

Aber da stelle ich mir wohl zuviel vor...

Berni


als Antwort auf: [#344528]

Reihenfolge von News

Ollli
Beiträge gesamt: 458

3. Apr 2008, 16:50
Beitrag # 10 von 11
Beitrag ID: #344572
Bewertung:
(3027 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Berni,

meine Empfehlung bezog sich allein auf Datenbanksysteme, aber da du hier ein freies Script gepostet hast, nehme ich an, du suchst eine kleine Anwendung.

Ja, es gibt sehr viele Newssysteme. Leider kann ich dir mangels Erfahrung keins empfehlen, aber evtl. findest du etwas hier im Forum oder auf den einschlägigen Seiten, die Skripte/kleine Anwendungen anbieten. Sabine hat in ihrem Post (http://www.hilfdirselbst.ch/...;;page=unread#unread) zwar hauptsächlich Adressen für CGI/Perl-Anwendungen stehen, doch einerseits befinden sich dort auch PHP-Anwendungen und andererseits kannst du CGI/Perl ebenso nutzen.

Liebe Grüße


als Antwort auf: [#344566]

Reihenfolge von News

ganesh
Beiträge gesamt: 1981

3. Apr 2008, 19:13
Beitrag # 11 von 11
Beitrag ID: #344596
Bewertung:
(3004 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Versuch doch einfach mal Wordpress. Lässt sich durchaus auch für News-Sachen verwenden. Handling für end-user ist ziemlich einfach.


als Antwort auf: [#344566]
X