Author Topic: Verknüpfen von Loops und if-Anweisungen  (Read 3203 times)

0 Members and 1 Guest are viewing this topic.

sister_sourcecode

  • Guest
Verknüpfen von Loops und if-Anweisungen
on: Sun, 19. October 2003 - 21:04:56
Hi, ich habe die Doku durchgearbeitet und soweit auch verstanden (...hoffe ich zumindest). Aber kaum versuche ich mich an eigenen Aufgaben, hänge ich auch schon.



Mein Ziel war, einige Passagen eines Arrays z. B. in rot auszugeben, wenn sie eine bestimmte Bedingung erfüllen.



So sieht mein Array aus:



Code: [Select]

?php

 $menue_array = array

1 = array'menue_w' = 'home',

     'menue_l' = 'Wir über uns',

     'menue_z' = 1,

     'menue_k' = 0

     ,

2 = array'menue_w' = 'aufgaben',

     'menue_l' = 'Aufgaben und Ziele',

     'menue_z' = 1,

     'menue_k' = 1

     ,

3 = array'menue_w' = 'haltung',

     'menue_l' = 'Haltung',

     'menue_z' = 1,

     'menue_k' = 1

     ,

20 = array'menue_w' = 'Unsere Tiere',

     'menue_l' = 'Unsere Tiere',

     'menue_z' = 2,

     'menue_k' = 0

     ,

21 = array'menue_w' = 'Pferde',

     'menue_l' = 'Pferde',

     'menue_z' = 2,

     'menue_k' = 1

     ,

22 = array'menue_w' = 'Hunde',

     'menue_l' = 'Hunde',

     'menue_z' = 2,

     'menue_k' = 1

     ,

;





//############################

   $menuearr_basic = array;

   // we need to rebuild the array into the correct format see docs

   foreach $menue_array as $id = $nav

  

      array_push$menuearr_basic,

         array

            'menue_i' = $id,

            'menue_w' = $nav'menue_w',

            'menue_l' = $nav'menue_l',

            'menue_z' = $nav'menue_z',

            'menue_k' = $nav'menue_k',

          

      ;

  

   $tmpl-setLoop'basic_loop', $menuearr_basic;

//############################





 ?




Das wird auch wunderbar ausgegeben (ist ja auch keine Kunst, ist ja quasi eine veränderte Kopie aus der Doku).

Aber wie bekomme ich das jetzt hin, dass z. B. menue_l in rot erscheint, wenn menue_k == 0 ist? Egal, wo ich meine if-Anweisung einbaue (logisch fände ich es, wenn sie vor der abschließenden geschweiften Klammer reinkäme), es wird mir im Loop immer nur der letzte Wert von menue_k ausgegeben. Dabei müsste nach meinem Verständnis der Wert mal 0 sein und mal 1, da die foreach-Schleife ja mehrmals durchlaufen wird und meine if-Anweisung doch innerhalb der Schleife steht.



Ich entschuldige mich schonmal vorab, wenn das total blöd klingt.  :roll:  Aber im Moment häng ich echt.  :oops:

Offline ClausVB

  • Administrator
  • Hero Member
  • *****
  • Posts: 566
    • Homepage: clausvb.de
Verknüpfen von Loops und if-Anweisungen
Reply #1 on: Mon, 20. October 2003 - 13:41:54
Ich versuche das heute mal zu coden. Sollte für mich so schwer nicht sein. Ich hoffe, habe das Ziel verstanden ... rot einfärben von "menue_k" ...

Du hast Dir schon mal das Beispiel mit TMPL_IF des "vlibTemplate_db_adv.php" angesehen?

So in der Richtung mache ich es.

Gruß
Claus

sister_sourcecode

  • Guest
Verknüpfen von Loops und if-Anweisungen
Reply #2 on: Mon, 20. October 2003 - 14:16:49
Quote
Ich versuche das heute mal zu coden. Sollte für mich so schwer nicht sein. Ich hoffe, habe das Ziel verstanden ... rot einfärben von \"menue_k\" ...


Im Prinzip ist mir gar nicht wichtig, was genau mit menue_k passiert... wichtig ist, das irgendwas passiert, wenn eine bestimmte Bedingung erfüllt ist, und sonst nicht. Eigentlich hatte ich vor, menue_l nur anzuzeigen, wenn menue_k == 1 ist. Aber als das nicht ging (weil menue_k irgendwie immer == 1 war, obwohl im Array was Anderes steht), habe ich meine Ansprüche zurück geschraubt und dachte, rot anzeigen wär erstmal einfacher für das Verständnis.  :roll:



Quote


Du hast Dir schon mal das Beispiel mit TMPL_IF des \"vlibTemplate_db_adv.php\" angesehen?


Angesehen ja, durchstiegen sicher noch nicht ganz. Ich versuche immer, parallel ein bisschen was Eigenes durchzutesten, das ist für mich die beste Methode, was wirklich zu kapieren.



Aber gut, dann warte ich erstmal dein Beispiel ab und hoffe, dass mir das für's Verständnis weiterhilft. Ist ja wirklich was ganz Anderes als die PHP-Sachen, die ich bislang gebastelt habe. Macht aber richtig Spaß (wenn's klappt, jedenfalls...)



Vielen Dank schonmal im Voraus!

Offline ClausVB

  • Administrator
  • Hero Member
  • *****
  • Posts: 566
    • Homepage: clausvb.de
Verknüpfen von Loops und if-Anweisungen
Reply #3 on: Tue, 21. October 2003 - 10:27:36
Beispiel ist da und funktioniert.

http://lamp.clausvb.de/examples/sister_sourcecode.php

Hinweis: Das Template wäre noch einfacher, wenn du nicht im Falle von
menue_k == 0
<tr bgcolor="<tmpl_if name='menue_k' op='==' value='0'>red</tmpl_if>">
reagieren würdest, sondern im Falle von 1.
menue_k == 1
<tr bgcolor="<tmpl_if name='menue_k'>red</tmpl_if>">

Das ist dann besonders einfach.

Gruß
Claus

sister_sourcecode

  • Guest
Verknüpfen von Loops und if-Anweisungen
Reply #4 on: Tue, 21. October 2003 - 13:31:12
Vielen, vielen Dank!

Das funktioniert nicht nur, sondern klappt sogar auch gleich mit "anzeigen/nicht anzeigen" und einigem mehr. Ich war da auf dem v?g falschen Dampfer und bin davon ausgegangen, dass jede if-Anweisung auch erstmal im php-Teil definiert werden muss. So ist das ja wirklich einfach.

Aber noch eine Frage, ganz erst gemeint:
Quote
op='==' value='0'
- hä´´e ich das wissen m? dass es sowas gibt? Wenn ja, wo hä´´e ich das gefunden? Bis jetzt kenne ich ja nur die Doku, da steht's wohl nicht drin. Gibt es irgendsoeine Art Befehlsübersicht, wo ich demnächst erstmal gucken kann, bevor ich frage?

Danke und viele Gr?ister_S  :wink:

Offline ClausVB

  • Administrator
  • Hero Member
  • *****
  • Posts: 566
    • Homepage: clausvb.de
Verknüpfen von Loops und if-Anweisungen
Reply #5 on: Tue, 21. October 2003 - 13:55:56
Du hast recht, in meiner Doku steht das nicht. Wird es auch nie, da meine Doku für Template-Einsteiger gedacht ist.

Die komplette Befehlsübersicht von vlibTemplate + Beispiele findest Du hier auf dieser Seite unter

Documentation
(Macht ja auch Sinn, oder?) :lol:
/docs/multihtml/...ag_tmpl_if.html

Bin froh, dass ich Dir helfen konnte. Und wenn Du so etwas hast, stell Deine Fragen ruhig, denn obwohl ich Farbgebungen in meiner Doku behandle, ist Dein Beispiel so anders, dass man sich verheddern kann.

Deine Frage ist also explizit für das Forum hier.
Vielleicht arbeitest Du noch an Deiner Frage-Form: Dein Problem ging im Posting von Code und dem riesen Absatz unter. So konnte ich das Problem erst verstehen, nachdem ich Source-Code plus Absatz konzentriert durchgelesen habe.

Hättest Du gefragt:

In meinem Beispiel-Array ist menue_k entweder
0
oder
1.

Danach soll sich die Farbe der Ausgabe richten:
1 = ROT
0 = keine Farbe

Dann hätte ich Dir in 5 Sekunden die Antwort gepostet.

Übersichtlich schreiben und formulieren ist wichtig. Frag Fisch.Auge, der hat mit mir schon heftig über sowas diskutiert. Das ist aber nur ein Vorschlag für's nächste Mal.
/forum/index.php/topic,213

Gruß
Claus

sister_sourcecode

  • Guest
Verknüpfen von Loops und if-Anweisungen
Reply #6 on: Tue, 21. October 2003 - 14:16:38
Jep, ich gerate zu leicht ins Schwafeln.  :roll: Aber daran kann ich arbeiten.  :D  :D

Danke nochmal, jetzt macht's wieder richtig Spaß!

Sister_S

sister_sourcecode

  • Guest
Verknüpfen von Loops und if-Anweisungen
Reply #7 on: Tue, 21. October 2003 - 15:34:01
Sorry, muss noch ne Frage hinterherschieben, passt aber auch noch in diesen Thread.

Logische Operatoren (speziell was adäquates zu "or"), gibt's die und wo finde ich die?




War schon kürzer, oder?  :wink:
Gruß
Sister_S

sister_sourcecode

  • Guest
Verknüpfen von Loops und if-Anweisungen
Reply #8 on: Tue, 21. October 2003 - 16:23:34
Quote
VALUE is the string or number that you want to compare to (containing any characters except quotes)
Bedeutet das, man kann keine zwei Variablen vergleichen? :(

Offline ClausVB

  • Administrator
  • Hero Member
  • *****
  • Posts: 566
    • Homepage: clausvb.de
Verknüpfen von Loops und if-Anweisungen
Reply #9 on: Thu, 23. October 2003 - 19:35:29
Genauso ist es.

tmpl_if bietet die Möglichkeit für einfache Vergleiche. Alles andere gehört auch nicht ins Template, Sondern in den Source-Code von PHP.

Beispiel: Ich bestimme die Länge und Farbe meiner PHD-Eskalationsbalken nach einer komplizierten Datumsformel.

Mit SWITCH-Case entscheide ich, welche Grafik ausgegeben wird. Dann setze ich einfach eine Templatevariable:
- welche Grafikdatei (images/red.gif)
- wie lang die Grafik sein soll (width="768")

Es gab noch keine Problemstellung, die ich nicht lösen konnte. Entweder mit der einen (tmpl_if) oder der anderen Methode (dynamisches Zusammenstellen).

Gruß
Claus

sister_sourcecode

  • Guest
Verknüpfen von Loops und if-Anweisungen
Reply #10 on: Thu, 23. October 2003 - 19:50:30
Quote
Genauso ist es.
Es gab noch keine Problemstellung, die ich nicht lösen konnte. Entweder mit der einen (tmpl_if) oder der anderen Methode (dynamisches Zusammenstellen).

Ich will dir nicht meine Probleme aufhalsen. Allerdings sieht das so aus, als bekäme ich das alleine nicht hin, denn im PHP-Source habe ich ja zuerst schon genug rumgewurschtelt, ohne dass ich auf die Lösung gekommen wäre.

Falls du Interesse hast, mir beim Knacken dieser Nuss zu helfen, poste ich dir gerne mal den Link zu der Seite oder den Code. Wenn nicht, hätte ich aber vollstes Verständnis dafür, denn du bist ja nicht hier, um mir die Arbeit abzunehmen (und eigentlich will ich es ja auch alleine hinkriegen).

Wieder zu viel gesabbelt?  :wink: Nur ganz kurz noch: es geht dabei um eine dynamische Navigation. In "reinem" PHP läuft die einwandfrei.

Gruß
Sister_S

Offline ClausVB

  • Administrator
  • Hero Member
  • *****
  • Posts: 566
    • Homepage: clausvb.de
Verknüpfen von Loops und if-Anweisungen
Reply #11 on: Fri, 24. October 2003 - 08:46:40
Ich will Dir nicht zu nahe treten Sister, aber ich habe das Gefühl, dass Du meine Doku bzw. Sinn und Struktur von TMPL_IF in Templates nicht ganz verstanden hast.

Ich habe Dir beim ersten Mal gerne geholfen, weil Du nur einen Schubs in die richtige Richtung benötigt hast.
Fakt ist, dass sowohl TMPL_IF abhängig von PHP (dynamisch) in
http://lamp.clausvb.de/kap3.html
erklärt wird und Farbgebungen in
http://lamp.clausvb.de/kap9.html

Ich bin nicht bereit, mich durch seitenlangen Source-Code durchzudenken, der sehr wahrscheinlich nicht mal dem PHP coding standard unterliegt.

Was ich anbieten kann: Du änderst kap3.html so ab, das es Deinem Problem nahekommt, stattest es mit dem "Sourcecode-View" aus (siehe mein Beispiel oben) und ich werfe einen Blick drauf. Denn dann hat auch die vLIB-Community etwas davon.

Gruß
Claus

sister_sourcecode

  • Guest
Verknüpfen von Loops und if-Anweisungen
Reply #12 on: Fri, 24. October 2003 - 10:07:53
Völlig okay! Ich sag ja auch, ich möchte es am liebsten alleine schaffen. Allerdings denke ich schon, dass ich das Prinzip verstanden habe. Das, was ich umsetzen möchte, ist allerdings so komplex, dass es mir kaum was nützen wird, das Kapitel 3 umzubauen.

Ich hab's hier im Forum leider falsch angefangen und versucht, aus meinem komplexen Problem ein einfaches Beispiel zu machen, in der Hoffnung, dass ich den Rest dann alleine schaffe. Deine Lösung ließ sich aber leider nicht auf mein Problem anwenden.

Helfen könntest du mir dennoch, und da hätte auch die Community was von. Bei dem einfachen Beispiel von der rot eingefärbten Zeile bleibend:
Die Zeile soll nur rot werden, wenn menue_z == menue_k ist.
Das würde mir absolut reichen und wäre sicher auch ein hilfreiches Beispiel für andere.

Grüße
Sister_S  8)

Offline ClausVB

  • Administrator
  • Hero Member
  • *****
  • Posts: 566
    • Homepage: clausvb.de
Verknüpfen von Loops und if-Anweisungen
Reply #13 on: Fri, 24. October 2003 - 16:22:23
Nun, da diese Lösung zu dem Problem sehr einfach ist (siehe kap3), gebe ich das mal an die vLIB-Community ab, weil ich jetzt keine Zeit habe das online zu stellen.
- Tip (PHP-Code):
if ($menue_z == $menue_k)
// setvar ... 1
else
// setvar ... 0

Preisfrage: Ändert sich was am Template?

Gruß
Claus

PS: Ich setze einen imaginären, wertvollen Preis aus, für die Lösung des Problems, ansonsten poste ich sie bis Sonntag!

sister_sourcecode

  • Guest
Verknüpfen von Loops und if-Anweisungen
Reply #14 on: Fri, 24. October 2003 - 22:34:33
Ich habe ja gar kein Problem mit den if's, sondern eher mit dem loop. Ich glaube, bevor wir wieder aneinander vorbeireden (wie ich vermute), folge ich lieber deinem Rat und poste meinen Code:

http://www.freehostingservice.de/space/use...est_sisters.php

Das stimmt irgendwie im Ansatz, aber irgendwas verschachtele ich da falsch. Und ich komm verdammtnochmal auch nach Stunden noch nicht drauf.  Ich bitte wirklich niemanden, die Arbeit für mich zu übernehmen, aber wenn man stundenlang vor dem gleichen Problem sitzt, hat man irgendwann so einen Klotz vor'm Kopf, dass einem das beste Tutorial nix mehr hilft.

Also... letzter Versuch? Irgendwer?

Danke

Sister_s

Offline ClausVB

  • Administrator
  • Hero Member
  • *****
  • Posts: 566
    • Homepage: clausvb.de
Verknüpfen von Loops und if-Anweisungen
Reply #15 on: Sat, 25. October 2003 - 01:11:31
Das sieht ganz danach aus, also ob die Loop-Struktur nicht richtig zusammengebaut wird. Schon mal vlibTemplateDebug versucht?

Ich schau mir das an, weil Du Dir die Mühe gemacht hast, es ordentlich darzustellen. Aber ich werde es an meinem Beispiel machen, weil Du Dich hoffnungslos mit array_push verzettelt hast.

Ich würde sagen, die LOOP-Array Struktur ist falsch.

Und trotz Müdigkeit würde ich sagen: Das ist auf jeden Fall nicht richtig:

Code: [Select]
if ($farbe[menue_z] ==  $farbe[menue_k]) {
            array_push($faerbenarr,
            array(
                faerben => 1
                )
            );
            }
            else {
            array_push($faerbenarr,
            array(
                faerben => 0
                )
            );

Ich geh jetzt erstmal ins Bett.

Morgen abend oder Sonntag Mittag versuche ich mir Zeit zu nehmen.
Last Edit: Sat, 17. February 2007 - 13:53:20 by ClausVB

Offline ClausVB

  • Administrator
  • Hero Member
  • *****
  • Posts: 566
    • Homepage: clausvb.de
Verknüpfen von Loops und if-Anweisungen
Reply #16 on: Sat, 25. October 2003 - 12:00:44
Nächstes Beispiel:

Beispiel für LOOP mit TMPL_IF

Ich habe mal einen "Datensatz" hinzugefügt.

Achte darauf, dass Dein Array durchgängig ist. Du springst von 3 auf 20. Das ist nicht sonderlich logisch (zumindest mir nicht ersichtlich :-).

Gruß
Claus

PS: Das ist eine kurze IF-ELSE Struktur (siehe php.net)

$farbe = ($nav[menue_z] == $nav[menue_k]) ? 1 : 0;
Last Edit: Sat, 17. February 2007 - 13:52:51 by ClausVB

sister_sourcecode

  • Guest
Verknüpfen von Loops und if-Anweisungen
Reply #17 on: Sat, 25. October 2003 - 12:59:58
So, erstmal tiefempfundenes Dankeschön! Jetzt, wo ich das vor mir sehe, ist das alles ganz logisch und vor allem wirklich einfach. Von allein wäre ich aber wohl kaum drauf gekommen, weil ich mich zu sehr mit gar nicht notwendigen verschachtelten Loops verwurschtelt habe.

Quote
Achte darauf, dass Dein Array durchgängig ist. Du springst von 3 auf 20. Das ist nicht sonderlich logisch (zumindest mir nicht ersichtlich

Das liegt daran, dass das Array aus einer MySQL-Tabelle erzeugt wird. Die Zahlen sind die ID's, und da sind halt zwischendurch mal einige Datensätze rausgeflogen. Aber das ist doch im Prinzip egal, oder? Ich könnte statt 1, 2, 20 auch Bohnen, Karotten, Kartoffeln schreiben, das ist doch richtig?

Jetzt lasse ich dich hoffentlich lange Zeit in Ruhe, was deinem Schlafdefizit und meinem Gewissen bestimmt gut tun wird.  :D

Schönes WE
Sister_S