datenbank werte auslesen

mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

datenbank werte auslesen

Beitrag 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
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams
stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag 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 ;)
Zuletzt geändert von stese am Mi 28. Dez 2005, 19:02, insgesamt 1-mal geändert.
mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Beitrag 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
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams
stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag 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.
mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Beitrag 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";
}
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams
stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag von stese »

danke, habs mal im script oben entsprechend abgeändert, dass es gehen müsste
mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Beitrag von mvf »

stese hat geschrieben:..habs mal im script oben entsprechend abgeändert
:? und natürlich eleganter ;)
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams
mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Beitrag 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
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams
stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag von stese »

schreib die letzte zeile mal so:

Code: Alles auswählen

echo "<div style=\"clear:both;float:left;\">" . htmlentities($output) . "</div>";
mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Beitrag 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 :(
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams
stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag von stese »

dann schreibe es mal so:

Code: Alles auswählen

echo "<div style=\"clear:both;float:left;\"><pre>" . htmlentities($output) . "</pre></div>";
mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Beitrag 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
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams
stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag 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
mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Beitrag 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
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams
7UPandDown
Beiträge: 59
Registriert: Di 14. Feb 2006, 15:06
Kontaktdaten:

Inhalte

Beitrag 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
Contenido 4.6.15
PHP 4.4.1
MySQL 5.0.18
Host Domainfactory
Browser FireFox
Gesperrt