Hallo Zusammen
Zuerst einmal Danke an alle, sind einige Inputs, die ich gerne versuche resp. mich darin vertiefe.
@flobaer
Es ist richtig, sobald die cmsboxtype ins Spiel kommt gibt es einen gültigen Datensatz. Das Zählergebnis ist richtig. Ich versuch mal, das Script zu erläutern (Datenerfassung läuft praktisch identisch ab).
Die Artikel stehen nicht in einer Zeile, damit ich quasi unabhängig davon bin, wieviele Felder ein Artikel braucht. Die Menge der Felder pro Artikel wird über den ident der cmsboxtype bestimmt (respektive über die Erfassung, bei welcher ich die benötigten Felder zur Eingabe bestimme und jedem Eingabefeld ein cmsboxtype-ident zuweise).
Mit den tmpid wird der ident-wert des cmsboxtype errechnet. Bei der tblcms_artikel_content gibt es u.a. id, artikelid, cmsbox, cmsboxtype, content, usw. Bei der Eingabe der Inhalte wird alles in "content" gelegt und mit den o.genannten eindeutig zugeordnet. Ein vollständiger Artikel setzt sich zusammen aus:
$artikel_bild + $artikel_bildtitel + $artikel_bildlink
- die tmpid berechnet für den zweiten, dritten, usw. Artikel die nächst höheren cmsboxtype-werte, um wieder einen kompletten Artikel zusammenzufassen
Ich hab das Script mit Kommentaren erweitert, die (hoffentlich) genauer erläutern, was passiert:
//** Uebergabe der Globalen Variablen und zurücksetzen der spezifischen Variablen**//
global $pageid, $cbnr;
$artikel_bild="";
$artikel_bildtitel="";
$artikel_bildlink="";
//** Auswertung der id aus tblcms_artikel um festzustellen, zu welchem Navigationspunkt der Artikel gehört**//
$sql = "SELECT * FROM tblcms_artikel WHERE menuid=".$pageid." and pos=1";
$res=mysql_query($sql);
if (mysql_num_rows($res)!=0)
{
$data = mysql_fetch_array($res);
$artikelid=$data["id"];
//** Inhalte laden: mit dieser Schlaufe wird der identwert der cmsboxtype berechnet, die Schlaufe lauft xmal durch, bis das Ergebnis aller Inhalte feststeht, alle Artikelkomponenten berechnet sind und ausgegeben werden können, die Schlaufe läuft für jeden Teil des Artikels durch **//
for ($x=0;$x<12;$x++)
{
$tmpid1 = $x*3+1;
$tmpid2 = $x*3+2;
$tmpid3 = $x*3+3;
$sql = "SELECT * FROM tblcms_artikel_content WHERE artikelid=".$artikelid." and cmsbox=".$cbnr." and cmsboxtype=".$tmpid1;
$artikel_bild="";
$res=mysql_query($sql);
$data = mysql_fetch_array($res);
if (mysql_num_rows($res)!=0)
$artikel_bild="<img src=uploadfiles/pictures/".$data["content"]." width=100 height=67 border=0>";
$sql = "SELECT * FROM tblcms_artikel_content WHERE artikelid=".$artikelid." and cmsbox=".$cbnr." and cmsboxtype=".$tmpid2;
$artikel_bildtitel="";
$res=mysql_query($sql);
$data = mysql_fetch_array($res);
$artikel_bildtitel=$data["content"];
$sql = "SELECT * FROM tblcms_artikel_content WHERE artikelid=".$artikelid." and cmsbox=".$cbnr." and cmsboxtype=".$tmpid3;
$artikel_bildlink="";
$res=mysql_query($sql);
$data = mysql_fetch_array($res);
$artikel_bildlink=$data["content"];
if ($artikel_bildlink!="")
{
list ($link, $ziel, $linkpro) = split ('#', $artikel_bildlink);
if ($ziel!="")
$ziel=" target=".$ziel." ";
$artikel_bild="<a href=".$linkpro.$link.$ziel.">".$artikel_bild."</a>";
}
//** Ab hier die Ausgabe der Artikel, ein Artikel setzt sich zusammen aus: $artikel_bild, $artikel_bildtitel und $artikel_bildlink**//
if ($artikel_bild!="");
{
echo "<class=bild>";
echo $artikel_bild ;
echo (".$artikel_bildtitel.");
}
}
}
Wenn die Daten ausgegeben werden (je nach Darstellungsform, bei Eingabe von <br> einfach untereinander) folgt:
-(1. Artikel) = erstes Bild, erster Bildtitel (allenfalls Bild mit Bildlink)
-(2. Artikel) = zweites Bild, zweiter Bildtitel, usw.
in der tblcms_artikel_content steht z.B. zu den Artikeln:
- id = 6 (int) / artikelid = 3 / cmsbox = 2 / cmsboxtype = 1 (Inhalt gleich Bild 1)
- id = 7 / artikelid = 3 / cmsbox = 2 / cmsboxtype = 2 (Inhalt gleich Bildtitel 1)
- id = 8 / artikelid = 3 / cmsbox = 2 / cmsboxtype = 3 (Inhalt gleich Bildlink 1)
- id = 9 / artikelid = 3 / cmsbox = 2 / cmsboxtype = 4 (Inhalt gleich Bild 2)
- id = 10 / artikelid = 3 / cmsbox = 2 / cmsboxtype = 5 (Inhalt gleich Bildtitel 2)
- id = 11 / artikelid = 3 / cmsbox = 2 / cmsboxtype = 6 (Inhalt gleich Bildlink 1)
- usw., je nach Menge der erfassten Artikel
Zähle ich die Artikel über "SELECT * FROM tblcms_artikel_content WHERE artikelid=$artikelid AND cmsbox=$cbnr" erhalte ich logischerweise die Menge aller eingegebenen Artikel mit entsprechender artikelid und cbnr (bei 12 eingegebenen Artikel und allen belegten Eingabemöglichkeiten - 3 pro Artikel - gibt das als Ergebnis 36).
Zähle ich die Artikel über "SELECT SELECT * FROM tblcms_artikel_content WHERE artikelid=$artikelid AND cmsbox=$cbnr" AND cmsboxtype=$tmpid1" erhalte ich immer 1 pro Teilbereich (ist ja so auch richtig, es gibt ja dann pro Datensatz immer einen, der genau auf artikelid, cbnr und tmpid1 und auf artikelid, cbnr und tempid2 und auf artikelid, cbnr und tempid3 zutrifft).
Um ein "limit" und eine "pos" zu erhalten, über die dann die Menge eines Artikels (der aus drei Teilbereichen besteht) gezählt und die Links zum Blättern erzeugt werden können, stellt die Herausforderung dar. Vielleicht muss ich für das zählen/limitieren der Artikel gleich vorgehen, wie bei der Ausgabe (also auch xmal für jeden Punkt durchlaufen lassen)?
Ich hoffe, den Ablauf verständlich erläutert zu haben. Arbeite weiter daran (hab ja einige weitere Inputs erhalten). Vielleicht hast Du aber eine weitere Idee...
Danke und Gruss, Michael
als Antwort auf: [#255222]