Original geschrieben von h3ll
PHP 4 wurde Ende August offiziell eingestellt. Sollte man so oder so nicht mehr benutzen.
PHP 4 wurde Ende August offiziell eingestellt. Sollte man so oder so nicht mehr benutzen.
... das ist in php4 geschrieben, denn zu der Zeit gab es php5 nicht!
Hey!? Ich bin grad dabei das zu testen! Guck dir mal an wie schnell mein RPLY kam! Da ist's doch klar, dass ich das noch nicht antesten konnte! Nochdazu muss ich mich jetzt erst rumspielen, wie ich das auf MYsql umstricke....
Hey!? Ich bin grad dabei das zu testen! Guck dir mal an wie schnell mein RPLY kam! Da ist's doch klar, dass ich das noch nicht antesten konnte! Nochdazu muss ich mich jetzt erst rumspielen, wie ich das auf MYsql umstricke....
function echoarray($var, $depth=0, &$cnt=1, $sub=0) {

function get_categories() {
$return = array();
$result = mysql_query("
SELECT id, name, subof
FROM site_galleries
WHERE issub=0
"); // element level 0
while ($row = mysql_fetch_assoc($result)) {
$therow = get_sub($row['id']);
if ($therow) { // kind(er) vorhanden
$return[] = array($row, "SUB" => $therow); // beinhaltet array mit kind(ern)
} else { // leeres parent
$return[] = array($row);
}
}
return $return;
}
function get_sub($parent) {
$return = array();
$result = mysql_query("
SELECT id, name, subof
FROM site_galleries
WHERE issub=1
AND subof='".$parent."'
"); // element level >0
while ($row = mysql_fetch_assoc($result)) {
$therow = get_sub($row['id']);
if ($therow) { // kind(er) vorhanden
$return[] = array($row, 'SUB' => $therow); // beinhaltet array mit kind(ern)
} else { // leeres element
$return[] = array($row);
}
}
return $return;
}
function echoarray($var, $depth=0, &$cnt=1, $sub=0, &$stack=array()) {
/**
* $var: array mit aktuellem knoten (& kindern)
* $depth: tiefe dieses knotens
* $cnt: zeilenbg
* $sub: anzahl entries auf gleichem level mit gleichem root
* $stack: wenn array -> line-info fuer jede div-ebene [stack[x] == 0 --> keine linie; stack[x] == 1 --> linie]
*/
$i = 0;
foreach ($var as $val) {
$i++;
/* zeilenbg abwechselnd */
if ($cnt == 0) {
$bgcolor = "#f1f5fa";
$cnt = 1;
} else {
$bgcolor = "#fff";
$cnt = 0;
}
echo "\t<div class=\"galline\" style=\"background-color: ".$bgcolor.";\">\n"; // zeilencontainer
/* vertikale linien zeichnen */
$j = 0;
while ($j < $depth) {
if ($stack[$j]) { // arraystelle = 1 --> vertikale linie
echo "\t\t<div class=\"admsubico\"><img src=\"../pics/icons/therearesubs.gif\" class=\"thesubico\"></div>\n";
} else { // arraystelle = 0 --> leeres div
if ($j) { // kein root-element
echo "\t\t<div class=\"rueck\"></div>\n";
}
}
$j++;
}
/* tree-div */
if ($sub != 0) { // mehr als ein element auf gleicher ebene
if ($i == count($var)) { // aktuelles element = anzahl der element auf ebene
echo "\t\t<div class=\"admsubico\"><img src=\"../pics/icons/itsasub.gif\" class=\"thesubico\"></div>\n"; // letztes sub
} else {
echo "\t\t<div class=\"admsubico\"><img src=\"../pics/icons/itaresub.gif\" class=\"thesubico\"></div>\n"; // zwischensub
}
}
echo "\t\t<div class=\"galname\">".$val[0]["name"]."</div>\n"; // line-text
echo "\t</div>\n"; // ende line
/* kinder der aktuellen zeile ausgeben, sofern vorhanden */
if (isset($val["SUB"])) { // element hat kind(er)
if ($sub>1 and $depth) { // mehr als 1 element in selber ebene && nicht root (-> depth=0)-element
$stack[$depth] = 1; // senkrechte linie ist zu zeichnen
} else { // entweder root oder nur ein element in ebene
$stack[$depth] = 0; // nichts zeichnen
}
echoarray($val["SUB"], $depth+1, $cnt, count($val["SUB"]), $stack); // funktion fuer kinder aufrufen
}
}
}
echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n";
echo "<HTML>\n";
echo "<HEAD>\n";
echo "<TITLE>TEST</TITLE>\n";
echo "<LINK REL=\"stylesheet\" type=\"text/css\" HREF=\"test.css\">";
echo "</HEAD>\n";
echo "<BODY>\n";
echoarray(get_categories());
echo "\t<BR><BR><BR><BR>\n";
// echo "\tDem Baum fehlen noch immer einige senkrechte Linien!\n";
echo "</BODY>\n";
echo "</HTML>\n";
// fat props to TEH HoaX!!! ;)
?>
function galasselect($var, $depth=0, &$cnt=1, $sub=0) {
$i = 0;
FOREACH ($var as $val) {
$i++;
$rueck = $depth * 16;
IF ($sub != 0) { // WENN ES SICH UM EINE SUBgalerie handelt...
$class = "norm";
} ELSE {
$class = "bold";
}
echo "\t\t<OPTION CLASS=\"".$class."\" STYLE=\"padding: 0 0 0 ".$rueck."px;\" VALUE=\"".$val[0]["id"]."\">".$val[0]["name"]."</OPTION>\n";
IF (isset($val["SUB"])) {
$anzahl = isset($val["SUB"]) ? count($val["SUB"]) : 0;
// echo $cnt;
galasselect($val["SUB"], $depth+1, $cnt, $anzahl);
}
}
}
echo "\t<SELECT NAME=\"gallist\" ID=\"gallist\" STYLE=\"width: 550px; border: 1px solid #abc6dd; background-color: #e5effd;\">\n";
echo "\t\t<OPTION CLASS=\"norm\" VALUE=\"nope\" SELECTED>Wählen Sie eine Galerie...</OPTION>\n";
galasselect(get_categories());
echo "\t</SELECT>\n";
Kommentar