Seite 1 von 2
datenbank werte auslesen
Verfasst: Di 27. Dez 2005, 12:32
von mvf
hoffe alle hatten ein frohes fest und sind nicht allzu gesättigt
[voller bauch studiert ja nicht gern

]
ich möchte gerne eine kleine übersicht abbilden
- contenido version
anzahl layouts in use
anzahl templates in use
anzahl module in use
dazu habe ich ein modul 'info' angelegt und nachfolgenden code in den output geschrieben.
3 Fragen dazu:
I.) wie liest man bitte den wert eines 'Memo' feldes aus (für die version) ?
II.) bei mir wird die anzahl der templates nicht ausgegeben, obwohl ein template existiert ?
III.) stelle ich mich da jetzt sehr ... sagen wir ungeschickt

an ... sprich geht das ganze kürzer/eleganter ?
Code: Alles auswählen
<?php
$db = new DB_Contenido;
$db1 = new DB_Contenido;
$db2 = new DB_Contenido;
$db3 = new DB_Contenido;
$sql = "SELECT value as Value FROM " . $cfg["tab"]["system_prop"] ;
$sql1 = "SELECT COUNT(*) as Value1 FROM " . $cfg["tab"]["lay"] ;
$sql2 = "SELECT COUNT(*) as Value2 FROM " . $cfg["tab"]["template"] ;
$sql3 = "SELECT COUNT(*) as Value3 FROM " . $cfg["tab"]["mod"] ;
$db->query($sql);
$db->next_record();
$db1->query($sql1);
$db1->next_record();
$db2->query($sql2);
$db2->next_record();
$db3->query($sql3);
$db3->next_record();
$version = $db1->f("Value");
$count_lay = $db1->f("Value1");
$count_template = $db2->f("Value2");
$count_mod = $db3->f("Value3");
echo "<div style=\"float:left;width:75%;\">Version:</div><div style=\"float:right;width:25%;text-align:right;\">".$version."</div>";
echo "<div style=\"float:left;width:75%;\">Layouts:</div><div style=\"float:right;width:25%;text-align:right;\">".$count_lay."</div>";
echo "<div style=\"float:left;width:75%;\">Templates:</div><div style=\"float:right;width:25%;text-align:right;\">".$count_template."</div>";
echo "<div style=\"float:left;width:75%;\">Module:</div><div style=\"float:right;width:25%;text-align:right;\">".$count_mod."</div>";
?>
'in use' ist im sql noch nicht berücksichtigt

wäre ja froh wenn ich zunächst mal alle daten abbilden hönnte

wie immer besten dank für euren input
Verfasst: Di 27. Dez 2005, 14:05
von stese
bitte sehr:
Code: Alles auswählen
<?php
$db = new DB_Contenido;
$arr_information = array();
$sql = "SELECT value FROM " . $cfg["tab"]["system_prop"] . " WHERE type='system' AND name='version'";
$db->query($sql);
// versionsnummer ist in db vorhanden
if ( $db->num_rows() > 0) {
$db->next_record();
$arr_information["version"] = $db->f("value");
} else {
// wenn nicht, nimm versionsnummer aus der config
$arr_information["version"] = $cfg['version'];
}
$arr_tpl = array();
// alle benutzten templates in kategorien finden:
$sql = "SELECT tc.idtpl from " . $cfg["tab"]["cat_lang"] . " cl left join " . $cfg["tab"]["tpl_conf"] . " tc on cl.idtplcfg = tc.idtplcfg WHERE tc.idtpl <> 'null' Group by (tc.idtpl) order by tc.idtpl asc";
$db->query($sql);
while ( $db->next_record()) {
$arr_tpl[] = $db->f("idtpl");
}
// alle benutzten templates in artikeln finden:
$sql = "SELECT tc.idtpl from " . $cfg["tab"]["art_lang"] . " al left join " . $cfg["tab"]["tpl_conf"] . " tc on al.idtplcfg = tc.idtplcfg WHERE tc.idtpl <> 'null' Group by (tc.idtpl) order by tc.idtpl asc";
$db->query($sql);
while ( $db->next_record()) {
$arr_tpl[] = $db->f("idtpl");
}
// array bereinigen von doppelten elementen
$arr_tpl = array_unique($arr_tpl);
$arr_information["used_templates"] = count($arr_tpl);
// alle layouts herausfinden
$arr_tpl_ids = array();
$arr_lay = array();
foreach ( $arr_tpl as $int_idtpl ) {
$arr_tpl_ids[] = "idtpl = '" . $int_idtpl . "'";
}
if (count($arr_tpl_ids)> 0) {
$sql = "SELECT idlay FROM " . $cfg["tab"]["tpl"] . " WHERE ( " . implode(" OR ", $arr_tpl_ids) . " ) GROUP BY idlay ORDER BY idlay ASC";
$db->query($sql);
while ($db->next_record()) {
$arr_lay[] = $db->f("idlay");
}
$arr_information["used_layouts"] = count($arr_lay);
} else {
$arr_information["used_layouts"] = "0";
}
// finde module
$arr_mod = array();
if (count($arr_tpl_ids)> 0) {
$sql = "SELECT idmod FROM " . $cfg["tab"]["container"] . " WHERE idmod <> 'null' AND ( " . implode(" OR ", $arr_tpl_ids) . " ) GROUP BY idmod ORDER BY idmod ASC";
$db->query($sql);
while ($db->next_record()) {
$arr_mod[] = $db->f("idmod");
}
$arr_information["used_modules"] = count($arr_mod);
} else {
$arr_information["used_modules"] = "0";
}
// ausgabe
echo "<div style=\"float:left;width:75%;\">Version:</div><div style=\"float:right;width:25%;text-align:right;\">".$arr_information["version"]."</div>";
echo "<div style=\"float:left;width:75%;\">Layouts:</div><div style=\"float:right;width:25%;text-align:right;\">".$arr_information["used_layouts"]."</div>";
echo "<div style=\"float:left;width:75%;\">Templates:</div><div style=\"float:right;width:25%;text-align:right;\">".$arr_information["used_templates"]."</div>";
echo "<div style=\"float:left;width:75%;\">Module:</div><div style=\"float:right;width:25%;text-align:right;\">".$arr_information["used_modules"]."</div>";
?>
ich empfehle dir ein mysql buch, wenn du vor hast, contenido öffter einzusetzen und webauftritte über die basis hinaus einsetzen willst, denn dann wird das auch was mit deinen querys

Verfasst: Di 27. Dez 2005, 14:55
von mvf
stese hat geschrieben:ich empfehle dir ein mysql buch, wenn du vor hast, contenido öffter einzusetzen und webauftritte über die basis hinaus einsetzen willst, denn dann wird das auch was mit deinen querys

und wieder ein bier

habe die letzten nicht vergessen, aber ich war seit dem auch noch nicht in muc und wie ich mitbekommen habe, warst auch du nich ganz auf dem posten

hoffe es geht dir wieder besser! ui, und wünsche natürlich fohes fest gehabt zu haben
stese merci! du bist '2 fast 4 me'
ich bin ja fleissig am lernen und als alter autodidakt und selfmademan darf ich Faruk Ates zitieren, der da sagt
In life, there are generally two options you have when you want to learn something: either you learn by reading all the available material, or you learn in a practical, trial-by-error manner through simply doing it. Both have their advantages and disadvantages, but when it comes to learning CSS, the method that I consider works best is the latter approach, also known as the Nike way: just do it.
mit css funktioniert(e) das ganz gut, bei sql und php wird es dann schon enger.
aber dank deiner hilfe, dem board hier und all seinen mitgliedern, dem mysql manual, php.net und und und... werde auch ich step-by-step wiser
thx again
Verfasst: Di 27. Dez 2005, 15:06
von stese

das klappt bei php und mysql auch - allerdings sollte man dort doch schon bissl was dazu lesen, da ein klein wenig umfangreicher.
aber wenn das modul dir hilft isses schön. man kann es sogar dahingehend erweitern, dass er dir auch sagt, welche templates und welche module bzw layouts er verwendet hat. ist vielleicht für eine interne debug funktion ab und an ganz nützlich.
Verfasst: Mi 28. Dez 2005, 18:48
von mvf
in der tabelle '_container' wird beim count der idmod auch '0' mitgezählt, daher gibt der wert immer Module+1 aus, habe daher ein simples -1 zum count($arr_mod) hinzugefügt.
Code: Alles auswählen
// finde module
$arr_mod = array();
if (count($arr_tpl_ids)> 0) {
$sql = "SELECT idmod FROM " . $cfg["tab"]["container"] . " WHERE ( " . implode(" OR ", $arr_tpl_ids) . " ) GROUP BY idmod ORDER BY idmod ASC";
$db->query($sql);
while ($db->next_record()) {
$arr_mod[] = $db->f("idmod");
}
$arr_information["used_modules"] = (count($arr_mod)-1); // einzige änderung
} else {
$arr_information["used_modules"] = "0";
}
Verfasst: Mi 28. Dez 2005, 19:02
von stese
danke, habs mal im script oben entsprechend abgeändert, dass es gehen müsste
Verfasst: Mi 28. Dez 2005, 19:18
von mvf
stese hat geschrieben:..habs mal im script oben entsprechend abgeändert

und natürlich eleganter

Verfasst: Do 29. Dez 2005, 16:10
von mvf
stese hat geschrieben:man kann es sogar dahingehend erweitern, dass er dir auch sagt, welche templates und welche module bzw layouts er verwendet hat. ist vielleicht für eine interne debug funktion ab und an ganz nützlich.
hallo stese
servus community
eine liste der namen der aktuell eingesetzten module habe ich bereits umsetzen können (
http://contenido.funjumping.de/cms/fron ... hp?idcat=8 ), allerdings habe ich ein neues problem mit dem auslesen des input und outputcodes
ich kann den code zwar einigemassen abbilden (so wie dieser z.b. im memofeld output eines moduls in der tabelle mod steht) allerdings werden kommentare z.b. nicht abgebildet.
beispiel - original output des moduls HTML(Headline) in der DB
Code: Alles auswählen
<?php
/***********************************************
* Headline Output
*
* Author : Andreas Lindner
* Copyright : four for business AG
* Version : 1.0
* Created : 05-08-2005
************************************************/
$editmode = false;
if($contenido&&($view=="edit")){
$editmode = true;
}
if (!editmode) {
echo "<h1 class="content">".strip_tags("CMS_HTMLHEAD[1]")."</h1>";
} else {
echo "<h1 class="content">"."CMS_HTMLHEAD[1]"."</h1>";
}
?>
mein versuch der original abbildung:
Code: Alles auswählen
<?php
$db = new DB_Contenido;
$arr_information = array();
// finde module 'name'
$sql = "SELECT output FROM " . $cfg["tab"]["mod"] . " WHERE idmod = '1' ";
$db->query($sql);
$db->next_record();
$output = $db->f("output");
$output = nl2br($output);
// ausgabe
echo "<h1>Modul:</h1>";
echo "<div style="clear:both;float:left;">" . $output . "</div>";
?>
resultiert aber nur in einer ausgabe die folgendermassen aussieht
http://contenido.funjumping.de/cms/fron ... hp?idcat=9
wie man sieht nicht 1:1 und vor allem wird der code nicht nur abgebildet sondern auch teilweise abgearbeitet (z.b. <?php fehlt und <h1> wird auch als h1 ausgegeben ...)
ich hoffe ich erkläre mich verständlich
ziel ist den output aus dem db feld 1:1 abzubilden so wie hier im board als code z.b.
merci für eure unterstützung
Verfasst: Do 29. Dez 2005, 16:20
von stese
schreib die letzte zeile mal so:
Code: Alles auswählen
echo "<div style=\"clear:both;float:left;\">" . htmlentities($output) . "</div>";
Verfasst: Do 29. Dez 2005, 16:29
von mvf
besser aber eben nicht ganz, denn jetzt zerschmeisst es wieder den nl2br
http://contenido.funjumping.de/cms/fron ... hp?idcat=9
und macht aus den zeilenumbrüchen <br />
habe mit meinen bescheidenen php kenntnissen gestern nacht schon viel mit
# html_entity_decode
# htmlentities
# htmlspecialchars_decode
# htmlspecialchars
# nl2br
versucht aber noch will es nicht

Verfasst: Do 29. Dez 2005, 16:33
von stese
dann schreibe es mal so:
Code: Alles auswählen
echo "<div style=\"clear:both;float:left;\"><pre>" . htmlentities($output) . "</pre></div>";
Verfasst: Do 29. Dez 2005, 16:36
von mvf
Code: Alles auswählen
<?php
$db = new DB_Contenido;
$arr_information = array();
// finde module 'name'
$sql = "SELECT output FROM " . $cfg["tab"]["mod"] . " WHERE idmod = '1' ";
$db->query($sql);
$db->next_record();
$output = $db->f("output");
$output = htmlentities($output);
// ausgabe
echo "<h1>Modul:</h1>";
echo "<div style=\"clear:both;float:left;\">" . nl2br($output) . "</div>";
?>
jetzt habe ich's

danke stese !!!
htmlentities und nl2br in umgekehrter reihenfolge dann passt es
http://contenido.funjumping.de/cms/fron ... hp?idcat=9
Verfasst: Do 29. Dez 2005, 16:38
von stese
naja es geht auch mit dem pre tag - dafür isser ja da ... ausserdem kann man den dann noch explizip per css formatieren
Verfasst: Do 29. Dez 2005, 16:39
von mvf
stese hat geschrieben:naja es geht auch mit dem pre tag - dafür isser ja da ... ausserdem kann man den dann noch explizip per css formatieren
verstehe, werde das auch mal versuchen, danke
Inhalte
Verfasst: Mi 17. Mai 2006, 09:49
von 7UPandDown
Hallo,
Könnte man diese Ausgabe noch auf die Anzahl der Kategorien und Artikel erweitern??
Im Adminbereich wird zwar die Artikelanzahl angezeigt, aber im Modul währe es noch besser.
Gruss
Michael