Newsscript mit blätter funktion erweitern
renasco
- php
1 AllesMeins0 Alexander Brock0 Tom-1 Renasco
Hallo Leute ich brauch jetzt professionele Hilfe. Im Vorraus möchte ich betonen das ich ein neuling bin!!!!!
Ich hab vor, einen Newsscript den ich als Modul in mein CMS benutzte, mit blätterfunktion zu erweitern.
Das hier ist mein Newsscript:
<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : News
* Author(s) : Andreas Lindner, 4fb
* Copyright : Contenido - four for business, Andreas Lindner
* Created : 12.08.2005
* Modified : 27.01.2006
************************************************/
cInclude('classes', 'class.article.php');
cInclude('includes', 'functions.api.string.php');
cInclude('includes', 'functions.api.images.php');
if (!is_object($tpl)) {
$tpl = new Template;
}
$tpl->reset();
$sql = "SELECT
htmlpath, frontendpath
FROM
".$cfg["tab"]["clients"]."
WHERE
idclient = ".$client." ";
$db->query($sql);
if ($db->next_record()) {
$htmlpath = $db->f('htmlpath');
$frontendpath = $db->f('frontendpath');
}
// selected category
$selcat = "CMS_VALUE[1]";
//echo "sel $selcat<br>";
$template = "teaser_efrin3.html";
//echo "tpl $template<br>";
// anzahl der zeichen text
$mxtext = 200;
$limit = "CMS_VALUE[15]";
$cms_sort_direction = "CMS_VALUE[16]";
if ($cms_sort_direction == '') {
$cms_sort_direction = 'desc';
}
if ("CMS_VALUE[3]" == "sortdate") {
$order = 'created';
} else {
$order = 'artsort';
}
$newsheadline = "CMS_VALUE[4]";
$tpl->set('s', 'TITLE', $newsheadline);
if (strlen($selcat) > 0 AND $selcat != '0') {
$options = array ('idcat' => $selcat, "start" => false, "order" => $order, "direction" => $cms_sort_direction);
$list = new ArticleCollection($options);
$count = $list->count;
if ($count > 0) {
if (is_numeric($limit) AND strlen($limit) > 0) {
if ($limit < $list->count) {
$limit_art = $limit;
} else {
$limit_art = $list->count;
}
} else {
$limit_art = $list->count;
}
for ($i = 0; $i < $limit_art; $i ++) {
$article = $list->nextArticle();
$article_id = $article->getField('idart');
$teaser_img = '';
if ($noimg != 'true') {//Wenn Bild ja
$br_img = $article->getContent('CMS_IMG', 1);
$img_teaser = '';
$sql = "SELECT
*
FROM
".$cfg["tab"]["upl"]."
WHERE
idupl=$br_img ";
//echo "<pre>"; print_r($sql); echo "</pre>";
$db->query($sql);
if ($db->next_record()) {
$filename = $db->f('filename');
$dirname = $db->f('dirname');
//echo $dirname.$filename;
}
$img_path = $cfgClient[$client]["upl"]["path"].$dirname.$filename;
$img_size = "CMS_VALUE[14]";
$img_teaser = capiImgScale($img_path, $img_size, $img_size, $crop = false, $expand = false, $cacheTime = 1000, $wantHQ = false);
if($br_img!=''){
$teaser_img = '<img src="'.$img_teaser.'" class="teaser_img">';
}
} // end if noimg
$headline = strip_tags($article->getContent('CMS_HTMLHEAD', 1));
$headline = str_replace($replace, " ", $headline);
$teaserheadline = /*$subheadline." - ".*/ $headline;
$autor = strip_tags($article->getContent('CMS_HTML', 3));
$autor = str_replace($replace, " ", $autor);
$teaserautor = /*$subheadline." - ".*/ $autor;
$quelle = strip_tags($article->getContent('CMS_HTML', 4));
$quelle = str_replace($replace, " ", $quelle);
$teaserquelle = /*$subheadline." - ".*/ $quelle;
/* $subheadline = strip_tags($article->getContent('CMS_HTMLHEAD', 2));
$subheadline = str_replace($replace, " ", $subheadline);*/
$teaserheadline = /*$subheadline." - ".*/ $headline;
$href = $sess->url("front_content.php?idcat=$selcat&idart=$article_id");
$teasertext = $article->getField('summary');
if (strlen(trim($teasertext)) == 0) {
$teasertext = strip_tags($article->getContent('CMS_HTML', 1));
$teasertext2 = $teasertext;
$teasertext = capiStrTrimAfterWord($teasertext, $mxtext);
if ($teasertext!=$teasertext2) {
$teasertext.= '...';
}
} // end if
$sql = "SELECT DATE_FORMAT(created, '%d.%m.%Y') AS Changedatum FROM con__art_lang WHERE idart = " .$article_id;
$db->query($sql);
if ($db->next_record())
{
$time = $db->f('Changedatum');
}
$teasertext = $teasertext." ";
$tpl->set('d', 'HEADLINE', $teaserheadline);
$tpl->set('d', 'TEXT', $teasertext);
$tpl->set('d', 'HREF', $href);
$tpl->set('d', 'QUELLE', $teaserquelle);
$tpl->set('d', 'AUTOR', $teaserautor);
$tpl->set('d', 'TIME', $time);
$tpl->set('d', 'IMG', $teaser_img);
$tpl->set('d', 'MORE', mi18n("mehr"));
$tpl->next();
} // end for
$tpl->generate('templates/'.$template);
}
}
?>
Um die Sache etwas zu vereinfachen hab ich im Internet ein Blätterfunktion Script gefunden. Das muss doch möglich sein diesen Script irgend wie zusammen zu führen??????????
Bitte Hilft mir!!!!!!!!!!!
<?php
$seite = $_GET["seite"]; //Abfrage auf welcher Seite man ist
//Wenn man keine Seite angegeben hat, ist man automatisch auf Seite 1
if(!isset($seite))
{
$seite = 1;
}
//Verbindung zu Datenbank aufbauen
$link = mysql_connect("localhost","Username","Passwort") or die ("Keine Verbindung moeglich");
mysql_select_db("Datenbank") or die ("Die Datenbank existiert nicht");
//Einträge pro Seite: Hier 15 pro Seite
$eintraege_pro_seite = 15;
//Ausrechen welche Spalte man zuerst ausgeben muss:
$start = $seite * $eintraege_pro_seite - $eintraege_pro_seite;
//Tabelle Abfragen
//Tabelle heißt hier einfach: Tabelle
$abfrage = "SELECT * FROM Tabelle LIMIT $start, $eintraege_pro_seite";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
echo $row->id."<br>"; // Hier die Ausgabe der Einträge
}
//Jetzt kommt das "Inhaltsverzeichnis",
//sprich dort steht jetzt: Seite: 1 2 3 4 5
//Wieviele Einträge gibt es überhaupt
//Wichtig! Hier muss die gleiche Abfrage sein, wie bei der Ausgabe der Daten
//also der gleiche Text wie in der Variable $abfrage, bloß das hier das LIMIT fehlt
//Sonst funktioniert die Blätterfunktion nicht richtig,
//und hier kann nur 1 Feld abgefragt werden, also id
$result = mysql_query("SELECT id FROM Tabelle");
$menge = mysql_num_rows($result);
//Errechnen wieviele Seiten es geben wird
$wieviel_seiten = $menge / $eintraege_pro_seite;
//Ausgabe der Seitenlinks:
echo "<div align="center">";
echo "<b>Seite:</b> ";
//Ausgabe der Links zu den Seiten
for($a=0; $a < $wieviel_seiten; $a++)
{
$b = $a + 1;
//Wenn der User sich auf dieser Seite befindet, keinen Link ausgeben
if($seite == $b)
{
echo " <b>$b</b> ";
}
//Aus dieser Seite ist der User nicht, also einen Link ausgeben
else
{
echo " <a href="?seite=$b">$b</a> ";
}
}
echo "</div>";
?>
Ich versuch schon seit drei Tagen verzweifelt das zu ändern doch meine Kenntnisse rechen dafür nicht aus.
Mit freundlichen Grüßen Renas Sheho
Hiho,
ich wage mal die Behauptung so wird das nichts ;)
1.) Der Verein hier heisst "selfHTML" mit betonung auf "SELF". Sprich hier wird dir gerne geholfen wenn du im Gegenzu die Bereitsxchaft zeigst irgend was selber machen zu wollen. Ein freies Script von Quelle A zu nehmen und es hier zu posten damit Forum User B es dir auch noch so anpasst wie du willst zählt aber nicht unter "SELF".
2.) Es wird hier absolut nicht gern gesehen seitenweise Quelltext zu posten. Ganz ehrlich zumindest für mich gilt: Ich habe besseres zu tun als meine Lebenszeit damit zu verschwenden Quellcode von irgendwelchen Leuten zu lesen und zu verstehen nur damit ich irgendjemand anderem seine Arbeit machen kann
3.) Wenn du schon seit Tagen verzweifelst versuchst das zu ändern solltest du deine bisherigen Erkientnisse hier beschreiben und uns sagen wo das Problem liegt oder was nicht funktioniert. Auf eine Frage wie "Ich habe dieses und jenes getan und trotzdem wird beim blättern die falsche Anzahl von Seiten angezeigt" antwortet es sich weit besser (und vor allem mehr) als auf "Funktioniert nicht - mach mal".
Grüsse
Marc
Hallo Freunde des gehobenen Forumsgenusses,
Um die Sache etwas zu vereinfachen hab ich im Internet ein Blätterfunktion Script gefunden. Das muss doch möglich sein diesen Script irgend wie zusammen zu führen?
Ja, das ist möglich. Schau dir doch an, wie die Blätterfunktion im zweiten Script realisiert wurde (nämlich mit limit) und wie das Script an die Werte für limit kommt (es ist gut kommentiert).
Und pass bitte auf, dass auch wirklich nur Zahlen als limit verwendet werden.
Gruß
Alexander Brock
Hallo Alexander,
Ja, das ist möglich. Schau dir doch an, wie die Blätterfunktion im zweiten Script realisiert wurde (nämlich mit limit) und wie das Script an die Werte für limit kommt (es ist gut kommentiert).
auf nicht besonders schöne Weise. Dafür gibt es SELECT COUNT(*) AS Anzahl FROM tabelle
. Wenn ich von der Datenbank einen Wert haben will, dann lasse ich mir genau einen zurückgeben. Lustig, dass dieser Kommentar mit
// Wichtig!
beginnt. Genau dort sollte man ändern :-)
Ja, ich weiß, dass man dann nicht mysql_num_rows() verwenden kann. Ja, das ist gut so.
Freundliche Grüße
Vinzenz
echo $begrüßung;
Um die Anzahl der unLIMITierten Datensätze zu erhalten gibt es noch einen eleganteren Weg:
Die normale Abfrage mit der LIMIT-Klausel
SELECT irgendwas FROM irgendwoher LIMIT x,y
wird um das Schlüsselwort SQL_CALC_FOUND_ROWS erweitert:
SELECT SQL_CALC_FOUND_ROWS irgendwas FROM irgendwoher LIMIT x,y
Die Abfrage
SELECT FOUND_ROWS()
liefert dann die Anzahl der Daten, als ob "SELECT COUNT(*) FROM irgendwoher" ausgeführt worden wäre.
Weitere Informationen liefert das MySQL-Handbuch im Kapitel Information Functions unter dem Stichwort FOUND_ROWS().
echo "$verabschiedung $name";
Hello,
Um die Anzahl der unLIMITierten Datensätze zu erhalten gibt es noch einen eleganteren Weg:
Die normale Abfrage mit der LIMIT-Klausel
SELECT irgendwas FROM irgendwoher LIMIT x,y
wird um das Schlüsselwort SQL_CALC_FOUND_ROWS erweitert:
SELECT SQL_CALC_FOUND_ROWS irgendwas FROM irgendwoher LIMIT x,y
Die Abfrage
SELECT FOUND_ROWS()
liefert dann die Anzahl der Daten, als ob "SELECT COUNT(*) FROM irgendwoher" ausgeführt worden wäre.
Ich kann da nicht erkennen, ab welcher MySQL-Version das sicher funktioniert oder ich bin mal wieder blind. Hast Du da mehr Input für mich?
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
echo $begrüßung;
Ich kann da nicht erkennen, ab welcher MySQL-Version das [FOUND_ROWS] sicher funktioniert oder ich bin mal wieder blind. Hast Du da mehr Input für mich?
MySQL 4.0 kann damit umgehen. Du hast doch noch eine 3er Version am laufen und sicher dazu auch noch die Manual-Dateien ... :-)
echo "$verabschiedung $name";
Hello,
Ich kann da nicht erkennen, ab welcher MySQL-Version das [FOUND_ROWS] sicher funktioniert oder ich bin mal wieder blind. Hast Du da mehr Input für mich?
MySQL 4.0 kann damit umgehen. Du hast doch noch eine 3er Version am laufen und sicher dazu auch noch die Manual-Dateien ... :-)
_Eine_ schon.
Ja, leider und gottseidank...
Aber aus Bequemlichkeit gucke ich da doch immer im Online-Manual. Und da fand ich eben nix über die Version. Das PHP-Manual ist da besser.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hello,
<?php
$seite = $_GET["seite"]; //Abfrage auf welcher Seite man ist//Wenn man keine Seite angegeben hat, ist man automatisch auf Seite 1
if(isset($_GET['seite']))
{
$seite = intval($_GET['seite']);
}
if ($seite <= 0) { $seite = 1; }
if ($seite > $maxseite) { $seite = $maxseite; }
//Wichtig! Hier muss die gleiche Abfrage sein, wie bei der Ausgabe der Daten
//also der gleiche Text wie in der Variable $abfrage, bloß das hier das LIMIT fehlt
//Sonst funktioniert die Blätterfunktion nicht richtig,
//und hier kann nur 1 Feld abgefragt werden, also id
$result = mysql_query("SELECT count() as zahl FROM Tabelle where true $filter");
spalte\_blah
= $blubb" , oder auch "", wenn es keine Bedingungen gibt.//Wenn der User sich auf dieser Seite befindet, keinen Link ausgeben
Wird zwar häufig so gemacht, ist aber nicht nicht ergonomisch, weil man nur durch Bedienungsbruch einen Reload auf die Seite durchführen lassen kann. Besser auch für die angezeigte Seite einen aktiven link, aber eben farblich hervorgehoben.
Wo hakt es jetzt? Ich kann das eben nicht überschauen, wo Dein wichtigstes Problem liegt.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hello,
<?php
$seite = $_GET["seite"]; //Abfrage auf welcher Seite man ist//Wenn man keine Seite angegeben hat, ist man automatisch auf Seite 1
$seite = 1; # Initilisierung nicht vergessen!
if(isset($_GET['seite']))
{
$seite = intval($_GET['seite']);
}if ($seite <= 0) { $seite = 1; }
später noch:
if ($seite > $maxseite) { $seite = $maxseite; }
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Ich bin sehr dankbar, dass ihr mir geholfen habt. jetzt zu "alles meins" es tut mir ehrlich leid aber glaub mir ich hab das schon tage lang versucht aber das nicht hingekrigt und ausser dem ist das hier so ein art hilfe oder nicht. Dadurch werde ich "self" auch lernen.
;) Gruß
Hiho,
mag ja sein, dass du das schon Tagelang probiert hast. Aber das geht leider nicht aus deiner Frage hervor. Eine Frage in einem Forum zu stellen ist - und das wird dummerweise gerne vergessen - meistens eine Arbeit die Vorbereitung bedarf. Mir persönlich würde es schon mein Anstandsgefühl verbieten einfach mal so eine Frage mit "geht nicht" und Seitenlangem Code an Leute zu geben, die mir kostenblos und in ihrer Freizeit helfen wollen. Da würde ich mich - und ich denke zu Recht - wirklich schlecht fühlen, wenn ich aus eigener Faulheit mich nicht hinsetze und die Frage und den Code so knapp und präzise wie möglich gestalte um den Helfern nicht mehr Arbeit als unbedingt notwendig zu machen.
Ich meine das ist man Leuten, die einem helfen wollen, einfach schuldig.
Marc