php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 14 Stimmen, 5,00 durchschnittlich.
  #16 (permalink)  
Alt 02-11-2008, 17:18
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

So eine Navigation ist aber auch ein Seitenelement, das man gut cachen kann.
Mit Zitat antworten
  #17 (permalink)  
Alt 02-11-2008, 17:52
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von PHP-Desaster
So eine Navigation ist aber auch ein Seitenelement, das man gut cachen kann.
Eben.
Nested Set ist auch sehr schnell beim Abruf.
SHM.
Oder halt eben plain simple old include(...html).

Aber bei 3 Seitenaufrufen in der Stunde sollte man eher Arbeitszeit gering halten, als darauf zu achten, dass der Server 99% statt 98%idle-time hat
Mit Zitat antworten
  #18 (permalink)  
Alt 02-11-2008, 19:41
nichtsooft
 Registrierter Benutzer
Links : Onlinestatus : nichtsooft ist offline
Registriert seit: Apr 2006
Ort: Wien [AUT]
Beiträge: 385
nichtsooft ist zur Zeit noch ein unbeschriebenes Blatt
nichtsooft eine Nachricht über ICQ schicken
Standard

Ok Jungenz! Und was heißt das jetzt für mich!? Ich mein mal ehrlich...
Eure Ansätze haben beide eine Begründung, aber ich will mir den Kopf nicht drüber zerbrechen welcher Server jetzt was zu berechnen hat, sondern ich brauch irgendwie ne Lösung für mein Problem.
Also allein hab ich es nach wie vor noch immer nicht geschafft; Trotzdem mir zwei, drei Posts schon echt ein schönes Stück weiter geholfen haben, darum bitte back to topic; ja!?
__________________
WHILE (!$asleep) { $sheep++; }
Mit Zitat antworten
  #19 (permalink)  
Alt 02-11-2008, 20:31
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Du nimmst einfach die Lösung die du jetzt hast und korrigierst die.
Dafür liest du die Tutorials zu Rekursion so oft, bis du es selbst hin kriegst.
Thema beendet.

In nem Jahr wenn deine Website größer ist sprechen wir uns wieder~
Mit Zitat antworten
  #20 (permalink)  
Alt 03-11-2008, 09:16
nichtsooft
 Registrierter Benutzer
Links : Onlinestatus : nichtsooft ist offline
Registriert seit: Apr 2006
Ort: Wien [AUT]
Beiträge: 385
nichtsooft ist zur Zeit noch ein unbeschriebenes Blatt
nichtsooft eine Nachricht über ICQ schicken
Standard

Also ich lese das von get_categories() zurückgelieferte array jetzt rekursiv aus und lass mir das mal einfach per OL und LI formatieren...

Trotz modifizierter Bedingungen bekomme ich nach wie vor zu viele array-levels zuück... *grummel*
PHP-Code:
function get_categories() {
  
$return = array();
  
$result mysql_query("SELECT id,name FROM site_galleries WHERE issub=0");
  while (
$row mysql_fetch_assoc($result)) {
    IF (
get_sub($row['id'])) {  
      
$return[] = array($row"SUB" => get_sub($row['id']));
    } else {
      
$return[] = array($row);
    }
  }
  return 
$return;
}

function 
get_sub($parent) {
  
$return = array();
  
$result mysql_query("SELECT id,name FROM site_galleries WHERE issub=1 AND subof='".$parent."'");
  while (
$row mysql_fetch_assoc($result)){
    IF (
get_sub($row['id'])) {
      
$return[] = array($row'SUB' => get_sub($row['id']));
    } else {
      
$return[] = array($row);
    }      
  }
  return 
$return;

Was raus kommt: click
__________________
WHILE (!$asleep) { $sheep++; }
Mit Zitat antworten
  #21 (permalink)  
Alt 03-11-2008, 10:48
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

WHERE issub=0 <<--- Was ist das denn?

Du hast do wohl nicht in der DB jeden Menupunkt markiert, ob er ein SUB ist, oder?
Wenn ja, dann ist das wohl unnötig komliziert.

Wenn du rekursiv arbeiten willst, verwende das parent id Konzept. Dann ergibt sich das automatisch. Elemente mit parent=0 sind Wurzelelemente. Die andern haben die ID Parent in dieser Spalte.
__________________
Wir werden alle sterben
Mit Zitat antworten
  #22 (permalink)  
Alt 03-11-2008, 12:40
nichtsooft
 Registrierter Benutzer
Links : Onlinestatus : nichtsooft ist offline
Registriert seit: Apr 2006
Ort: Wien [AUT]
Beiträge: 385
nichtsooft ist zur Zeit noch ein unbeschriebenes Blatt
nichtsooft eine Nachricht über ICQ schicken
Standard

@combie: Da hast du recht! Also ich hab mal die DB-Spalte "issub" entfernt. Die veränderten Queries:
PHP-Code:
function get_categories() {
  
$return = array();
  
$result mysql_query("SELECT id,name FROM site_galleries WHERE subof=0");
  while (
$row mysql_fetch_assoc($result)) {
    IF (
get_sub($row['id'])) {  
      
$return[] = array($row"SUB" => get_sub($row['id']));
    } else {
      
$return[] = array($row);
    }
  }
  return 
$return;
}

function 
get_sub($parent) {
  
$return = array();
  
$result mysql_query("SELECT id,name FROM site_galleries WHERE subof='".$parent."'");
  while (
$row mysql_fetch_assoc($result)){
    IF (
get_sub($row['id'])) {
      
$return[] = array($row'SUB' => get_sub($row['id']));
    } else {
      
$return[] = array($row);
    }      
  }
  return 
$return;

__________________
WHILE (!$asleep) { $sheep++; }
Mit Zitat antworten
  #23 (permalink)  
Alt 03-11-2008, 16:24
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Es ist ganz ungünstig get_sub mehrmals für die gleiche id aufzurufen! Speichere das Ergebnis in einer Variablen und benutze diese.

Funktioniert es jetzt?
Ansonsten poste einen DB-Dump und die Ausgabe von
<pre> print_r(get_categories, 1) . </pre>
Mit Zitat antworten
  #24 (permalink)  
Alt 03-11-2008, 21:28
nichtsooft
 Registrierter Benutzer
Links : Onlinestatus : nichtsooft ist offline
Registriert seit: Apr 2006
Ort: Wien [AUT]
Beiträge: 385
nichtsooft ist zur Zeit noch ein unbeschriebenes Blatt
nichtsooft eine Nachricht über ICQ schicken
Standard

Ok! Habe das jetzt mal abgeändert und die Variable "therow" gesetzt...
PHP-Code:
  while ($row mysql_fetch_assoc($result)){
    
$therow get_sub($row['id']);      
    IF (
$therow) {
      
$return[] = array($row'SUB' => $therow);
    } else {
      
$return[] = array($row);
    }      
  } 
Natürlich ändert sich dadurch nichts!
Hier mal der gewünschte DB-Dump:
PHP-Code:
CREATE TABLE `site_galleries` (
  `
idint(11NOT NULL auto_increment,
  `
namevarchar(100character set latin1 collate latin1_german1_ci NOT NULL default 'N/A',
  `
infotext character set latin1 collate latin1_german1_ci NOT NULL,
  `
issubint(11NOT NULL default '0',
  `
subofint(11NOT NULL default '0',
  `
ownerint(10NOT NULL,
  `
linkedint(10) default NULL,
  `
viewerlvlint(2) default NULL,
  
PRIMARY KEY  (`id`)
ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=18 ;

INSERT INTO `site_galleries` (`id`, `name`, `info`, `issub`, `subof`, `owner`, `linked`, `viewerlvl`) VALUES
(1'Schuljahr 2005/2006''Das gesammelte Bildmaterial aus dem Schuljahr 2005/2006'003NULLNULL),
(
2'Schuljahr 2006/2007''Das gesammelte Bildmaterial aus dem Schuljahr 2006/2007'003NULLNULL),
(
3'Schuljahr 2007/2008''Das gesammelte Bildmaterial aus dem Schuljahr 2007/2008'003NULLNULL),
(
4'Schuljahr 2008/2009''Das gesammelte Bildmaterial aus dem Schuljahr 2008/2009'003NULLNULL),
(
5'TEST''sadsadasd'003NULLNULL),
(
6'sdsadas''dsadsadsadsad'003NULLNULL),
(
7'asdsad''asdasdasd'163NULLNULL),
(
8'Eröffnungsgottesdienst''Eröffnungsgottesdienst beim Bründl'1434NULL),
(
9'TEST SUBSUB'''173NULLNULL),
(
10'TEST SUBSUBSUB'''193NULLNULL),
(
11'TEST SUBSUBSUBSUB'''1103NULLNULL),
(
12'BOR 4a''Berufsinformation für die 4a im September 2008'143NULLNULL),
(
13'TEST SUBSUBSUB'''193NULLNULL),
(
14'mumu''haha'113NULLNULL),
(
15'SUBSUBSUB HAHA''I lold because it works fine!'003NULLNULL),
(
16'Next episode....''The loling was funny because i loled verry much!'1113NULLNULL),
(
17'Another Brick in the Wall''Hehe! I'm testin' this shit extensively...'1103NULLNULL); 
Außerdem noch das Ergebniss von <pre>print_r(get_categories())</pre>:

http://www.marianum-steinberg.at/2009/test/gall.php
__________________
WHILE (!$asleep) { $sheep++; }
Mit Zitat antworten
  #25 (permalink)  
Alt 03-11-2008, 22:14
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das Array entspricht deinem Dump.
Deine Ausgabe muss falsch sein, oder du hast nicht das in die DB eingespeist was du haben willst.
Mit Zitat antworten
  #26 (permalink)  
Alt 04-11-2008, 07:57
nichtsooft
 Registrierter Benutzer
Links : Onlinestatus : nichtsooft ist offline
Registriert seit: Apr 2006
Ort: Wien [AUT]
Beiträge: 385
nichtsooft ist zur Zeit noch ein unbeschriebenes Blatt
nichtsooft eine Nachricht über ICQ schicken
Standard

Die Ausgabe:
PHP-Code:
function echoarray($var) {
  if(
is_array($var)) {
    echo 
"<ul>\n";
    foreach(
$var as $value) {
      echo 
"<li>\n";
      
echoarray($value);
      echo 
"</li>\n";
    }
    echo 
"</ul>\n";
  } else {
    echo 
$var;
  }

__________________
WHILE (!$asleep) { $sheep++; }
Mit Zitat antworten
  #27 (permalink)  
Alt 04-11-2008, 08:44
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das war idT etwas tricky, weil wir den Daten keinen Key zugewiesen haben.
PHP-Code:
// statt
$return[] = array($row, ...);
// besser
$return[] = array("daten" => $row, ...); 
Lösen lässt es sich allerdings dann doch, z.B. so

PHP-Code:
function echoarray($var) {
    echo 
"<ul>\n";
    foreach (
$var as $val) {
        echo 
"<li>" $val[0]["name"];
        if (isset(
$val["SUB"])) {
            echo 
"<br />\n";
            
echoarray($val["SUB"]);
        }
        echo 
"</li>";
    }
    echo 
"</ul>\n";

Mit Zitat antworten
  #28 (permalink)  
Alt 04-11-2008, 09:06
nichtsooft
 Registrierter Benutzer
Links : Onlinestatus : nichtsooft ist offline
Registriert seit: Apr 2006
Ort: Wien [AUT]
Beiträge: 385
nichtsooft ist zur Zeit noch ein unbeschriebenes Blatt
nichtsooft eine Nachricht über ICQ schicken
Standard

Das ist also des Rätsel's Lösung!

Vielen, vielen Dank für deine Geduld ghost!

Jetzt muss ich das nur noch ein wenig überarbeiten, dass der ausgegebene HTML-Source auch passt und dann...

Juhu!
__________________
WHILE (!$asleep) { $sheep++; }
Mit Zitat antworten
  #29 (permalink)  
Alt 04-11-2008, 13:32
nichtsooft
 Registrierter Benutzer
Links : Onlinestatus : nichtsooft ist offline
Registriert seit: Apr 2006
Ort: Wien [AUT]
Beiträge: 385
nichtsooft ist zur Zeit noch ein unbeschriebenes Blatt
nichtsooft eine Nachricht über ICQ schicken
Standard

Noch ein Problem:

Irgendwie schaffe ich es nicht die Rekursionstiefe mit zu geben! Irgend ne Idee wie ich die mitzählen kann!?
__________________
WHILE (!$asleep) { $sheep++; }
Mit Zitat antworten
  #30 (permalink)  
Alt 04-11-2008, 13:51
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
function echoarray($var$depth=1) {
  
// ...
  
echoarray($value$depth+1);
  
// ...

Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:25 Uhr.