@Christoph-get und get_next konstrukt 2 mal durchlaufen - geht es auch anders? - baseportal Forum - Web-Anwendungen einfach, schnell, leistungsfähig!
baseportal
English - Deutsch "Es gibt keine dummen Fragen - jeder hat einmal angefangen"

 baseportal-ForumDie aktuellsten 10, 30, 50, 100 Einträge anzeigen.  

 
 Ausgewählter Eintrag: Zur Liste 
    Beitrag von Ruben (403 Beiträge) am Mittwoch, 7.März.2001, 13:39.
    @Christoph-get und get_next konstrukt 2 mal durchlaufen - geht es auch anders?

      Hallo,
      hab leichte Bauchschmerzen bei dem Gedanken, daß in meiner DB mal einige hundert Datensätze drin stehen und diese im Template mittels
      get "Filterbedingung", "DB";
      while(get_next("DB")
      {if Feldinhalt>= var1 && Feldinhalt<= var2
       {if Feldinhalt>= var3 && Feldinhalt<= var4
        {if Feldinhalt>= var5 && Feldinhalt<= var6
         {$cnt++;
         }   
        }
       }
      }
      
      zum Zählen der auszugebenden Datensätze einmal abgearbeitet wird und dann für die Ausgabe nochmal das gleiche, halt dann anstatt zu Zählen die Ausgabe, die selbst noch paar Abfragen enthält (aber nur auf Vorhandensein von Inhalten des akt.Feldes und abhängig davon halt dann ne Tabellenzeile ausgibt)

      Geht das auch anders - ich krieg den Inhalt der Zählvariable nicht "über" den Ausgabebereich (eigentlich logisch), oder ist Perl so schnell mit den Vergleichen und dem Durchlauf, daß das zu keinen Problemem führen kann?
      Will ja auch lernen, effektiv zu programmieren, braucht halt immer mal nen Tip.
      Ansonsten denk ich, ist der Veranstaltungskalender ein gutes Beispiel für die hervorragende Nutzbarkeit von Baseportal.
      Sieh mal zu, daß du eine Variante findest, die für solche "Vereine" wie Kirchen, Gemeinnützige Einrichtungen und soziale Dienste möglichst kostenfrei oder halt mit "dezenter" Werbung weiterzuführen geht.

      Danke

      Ruben


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von Ruben (403 Beiträge) am Mittwoch, 7.März.2001, 13:39.
    @Christoph-get und get_next konstrukt 2 mal durchlaufen - geht es auch anders?

      Hallo,
      hab leichte Bauchschmerzen bei dem Gedanken, daß in meiner DB mal einige hundert Datensätze drin stehen und diese im Template mittels
      get "Filterbedingung", "DB";
      while(get_next("DB")
      {if Feldinhalt>= var1 && Feldinhalt<= var2
       {if Feldinhalt>= var3 && Feldinhalt<= var4
        {if Feldinhalt>= var5 && Feldinhalt<= var6
         {$cnt++;
         }   
        }
       }
      }
      
      zum Zählen der auszugebenden Datensätze einmal abgearbeitet wird und dann für die Ausgabe nochmal das gleiche, halt dann anstatt zu Zählen die Ausgabe, die selbst noch paar Abfragen enthält (aber nur auf Vorhandensein von Inhalten des akt.Feldes und abhängig davon halt dann ne Tabellenzeile ausgibt)

      Geht das auch anders - ich krieg den Inhalt der Zählvariable nicht "über" den Ausgabebereich (eigentlich logisch), oder ist Perl so schnell mit den Vergleichen und dem Durchlauf, daß das zu keinen Problemem führen kann?
      Will ja auch lernen, effektiv zu programmieren, braucht halt immer mal nen Tip.
      Ansonsten denk ich, ist der Veranstaltungskalender ein gutes Beispiel für die hervorragende Nutzbarkeit von Baseportal.
      Sieh mal zu, daß du eine Variante findest, die für solche "Vereine" wie Kirchen, Gemeinnützige Einrichtungen und soziale Dienste möglichst kostenfrei oder halt mit "dezenter" Werbung weiterzuführen geht.

      Danke

      Ruben

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Donnerstag, 8.März.2001, 15:14.
    Re: @Christoph-get und get_next konstrukt 2 mal durchlaufen - geht es auch anders?

      Aaaaaalso, Deinen Wunsch nach effektiver Programmierung kann ich natürlich nur unterstützen und Du hast das schon richtig erfasst: Man sollte nicht zweimal dasselbe machen.

      Es gibt ein paar Ansatzpunkte für Dein Problem:

      a) Du musst Deine Ausgaben nicht zwangsläufig "von oben nach unten", so wie die Befehle in Deinem Template angeordnet sind, machen. Du kannst stattdessen Ausgaben einfach in einer Variablen speichern und diese dann ausgeben, wann Du willst... Also machst Du nur eine Schleife für das Zählen und die Ausgabe. Anstatt:

      out <<EOF;
      
      ...
      EOF

      schreibst Du:

      $out.= <<EOF;
      
      ...
      EOF

      Anstatt also gleich alles auszugeben, schreibst Du Deine Sachen in eine Variable. Gleichzeitig zählst Du mit "$cnt+++" in der Schleife mit und wenn alles durch ist, gibst Du zuerst $cnt aus und dann $out.

      (Ich hoffe das war das was Du bezweckst, ich hab mir Deinen Code nicht im Detail angeschaut)

      b) Nur eine Kleinigkeit, aber Du kannst Deine verschachtelten Bedingungen mit && zusammenschmeissen (sieht, meiner Meinung nach, etwas besser aus, wird kaum schneller sein):

      if(Feldinhalt>=var1 && Feldinhalt<=var2 && Feldinhalt>=var3 && Feldinhalt<=var4 && Feldinhalt>=var5 && Feldinhalt<=var6) ...
      

      c) An sich wäre es viel, viel effizienter, baseportal das Finden der richtigen Einträge zu überlassen. baseportal schreibt jedes Datum in ein einziges Feld, mit der Wertigkeit von "oben herab", also Jahr.Monat.Tag... Damit kann man dann aber nur z.B. nach Monaten in einem bestimmten Jahr suchen, nicht nach Monaten in egal welchem Jahr - Normalerweise stellt das kein Problem dar, mir scheint es so, als ob das bei Dir auch nich das eigentliche Problem ist - ich hab Deine diesbezüglichen Einträge in letzter Zeit zwar mitbekommen, aber nicht näher untersucht, was spricht dagegen eine Abfrage z.B. nach "nächster Woche" so zu machen:

      <loop ... Datumsfeld\<+7>
      

      Beim Datum gibts bestimmt noch Lücken, einfach weil das Datum so eine unglaublich komplizierte Angelegenheit ist...

     Antworten

    Beitrag von Ruben (403 Beiträge) am Donnerstag, 8.März.2001, 15:50.
    Re: @Christoph-get und get_next konstrukt 2 mal durchlaufen - geht es auch anders?

      Danke,
      probier das mal aus mit der Variablen für die Ausgabe.
      Mit dem Datum ist wirklich verzwickt - Sinn der Angelegenheit ist, daß die Abfrage nach Zeiträumen geht, und das noch variabel.
      aktuelle Woche - immer die Woche vom (vergangenen) Montag bis (kommenden) Sonntag in der man sich befindet, und das ist halt leider nicht Datumfeld<+7.
      Und in dem Strickmuster dann auch halt nächste Woche, dieser Monat, nächster Monat, dieses Jahr, nächstes Jahr - deshalb die Bocksprünge mit der Berechnung und dem Auslesen der Datumsteile.
      Mit der Ausgabe ist schon richtig so, ich will die Anzahl der gefundenen Einträge mit dem Zähler ausgeben.
      Nur ist das Problem, daß in der Ausgabe noch weitere Bedingungen abgefragt werden, die bei Erfüllung wieder was ausgeben - also so bspw.:
      out<<EOF;
      
      ... Ausgabe immer"
      EOF
      if $text ne ""
      out<<EOF;
      Tabelle - $text - /tabelle
      EOF
      out<<EOF
      
      ... "Ausgabe immer"
      EOF
      Ich versuch das mal mit der Variablen, mal sehn, ob ich das hinkrieg.
      Na dann,
      Ruben

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Donnerstag, 8.März.2001, 16:44.
    Re: Ausgabe in Var speichern / Abfrage nach nächster Woche

      Auch bei bedingten Ausgaben geht das, das macht keinen Unterschied...

      Bzgl. Datum: Es wäre schon sinnvoll, wenn baseportal das zur Verfügung stellen würde ;-) Wie berechnest Du denn jetzt den Zeitpunkt "bis max. nächster Woche" ? Dürfte garnicht so einfach sein... "bis max. Ende diesen Monats" wiederum schon, da muss man prinzipiell ja nur auf den Wert des Monats achten...

     Antworten

    Beitrag von Ruben (403 Beiträge) am Freitag, 9.März.2001, 07:51.
    Re: Ausgabe in Var speichern / Abfrage nach nächster Woche

      Hat paar Stunden gedauert, bis ich es hatte, aber ist eigentlich ganz einfach, hier der Code:

       --Berechnung Zeitraum aktuelle Woche/nächste Woche --- #
      # Variable mit akt. Datum belegen #
      $date = jetzt;
      # Wochentagszahl ermitteln #
      $tagzahl = datum("$date", "Wochentagzahl");
      

      # Differenzzahl für Wochenanfang (Montag) #
      $dz_wa = $tagzahl - 1 if $tagzahl ne 0; # Differenzzahl zum Wochenanfang wenn akt. Tag kein Sonntag #
      # wenn Sonntag, dann Wochenanf. Woche -6 Tage (verg.Montag)#
      $dz_wa = 6 if $tagzahl eq 0; # Differenzzahl zum Wochenanfang wenn akt. Tag Sonntag #
      

      # Differenz zum letzten Wochentag errechnen #
      $dz_we = (7 - $tagzahl); # Differenzzahl zum Wochenende #
      # Datumsausgabe des ersten Tages formatieren #
      $wanf = datum("-$dz_wa", "Tag.Monat.Jahr"); # Wocheanfangstag #
      

      # Letzten Tag der Woche errechnen #
      $wend = datum("+$dz_we", "Tag.Monat.Jahr"); # Wochenendtag #
      

      # Nächste Woche errechnen: - Anfangstag einen Tag später als Endtag akt. Woche #
      $az2 = $dz_we + 1; # Anfangstag nächste Woche (Montag)
      # Ende sieben Tag später als der Wochenendtag aktuelle Woche #
      $ez2 = $dz_we + 7; # Endtag nächste Woche (Sonntg)
      # Wochenanfangstag für 2. Woche errechnen und formatiert in Var speichern #
      $wanf2 = datum("+$az2", "Tag.Monat.Jahr");
      # Wochenendtag für 2. Woche errechnen und formatiert in Var speichern #
      $wend2 = datum("+$ez2", "Tag.Monat.Jahr");
      

      ### Variablen zur Auswahl des Datums/Berechnung der Filterzeiträume ####
      $jar= datum ("jetzt","Jahr"); # Jahreszahl #
      $mon = datum ("jetzt","Monat"); # Monatszahl #
      $dag = datum ("jetzt", "Tag"); # Tageszahl (Datum)#
      $n_jar = $jar + 1;
      $n_mon = $mon + 1;
      

      # Filter für Jahreszahl(jar_a und jar_e) Monatszahl (mon_a und mon_e) #
      # Tagesdatum (dag_a und dag_e) - Suffix a für Anfang Zeitr., Suffix e für Ende Zeitr.#
      # Belegung je nach Übergabewert Formularfeld za=  #
      # Vorbelegung bei Erstaufruf bzw. Wechsel der Suchkriterien                          #
      $jar_a = datum ("$fzeit_a", "Jahr") if $za ne "";
      $jar_a = $jar if $za eq "";
      $jar_e = datum ("$fzeit_e", "Jahr") if $za ne "";
      $jar_e = $jar if $za eq "";
      

      $mon_a = datum ("$fzeit_a", "Monat") if $za ne "";
      $mon_a = $mon if $za eq "";
      $mon_e = datum ("$fzeit_e", "Monat") if $za ne "";
      $mon_e = $mon if $za eq "";
      

      $dag_a = datum ("$fzeit_a", "Tag") if $za ne "";
      $dag_a = $dag if $za eq "";
      $dag_e = datum ("$fzeit_e", "Tag") if $za ne "";
      $dag_e = 31 if $za eq "";
      

      Sollte eigentlich ohne Probleme allgemeingültig funktionieren, ob die Abfrage richtig ist, wenn grad Sonntag ist, wird sich übermorgen zeigen -:), konnte ich nicht simulieren.
      Na dann, viel Spaß beim Nutzen

      Ruben

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Freitag, 9.März.2001, 15:18.
    Re: Ausgabe in Var speichern / Abfrage nach nächster Woche

      Ok, und wie würde eine direkte Abfrage wunschgemäss aussehen? So etwa?

      <loop _Datum_Monat==diesen_Monat>
      

      oder

      <loop _Datum_Woche==diese_Woche>
      

      oder

      <loop Datum>=jetzt Datum<=diese_Woche>
      

      oder

      <loop Datum>=jetzt Datum<naechste_Woche>
      

      Weiss nicht, ob die Begriffe "diese_Woche" schon so richtig toll gewählt sind, aber sollte klar sein, worums geht... Würdest Du damit Deine Anwendung umsetzen können?

      Grüsse,

      Christoph

      PS: Mir fällt auf, dass Du oft einzelne Variablen in Anführungsstriche setzt, also sowas: "$date" - das ist nicht nötig, Du kannst/solltest die schon alleine schreiben, also einfach $date oder z.B. datum ($fzeit_a, "Tag") - die Anführungsstriche brauchts nur bei richtigem Text...

     Antworten

    Beitrag von Ruben (403 Beiträge) am Freitag, 9.März.2001, 17:51.
    Re: Abfrage nach nächster Woche - Include in Perl-Abschnitten

      Mhm, wäre ne gute Idee, solche "Schlagworte" einzusetzen, müßte man mal den "Bedarf" ermitteln.
      Denke das wär schon was - weiß ja nicht, ob das noch jemand brauchen kann.
      Hätte da schon Ideen, würde bspw. für News-System gut gehen, und dann halt fragen nach Machrichten dieser Woche, Nachrichten dieser Monat, Nachrichten vergangene Woche....
      Oder aber auch für einfache Gestaltung von Auswertungen wie bspw. für die hervorragende Shoplösung von Stefan Skalla, könnte man auch für Rückstandsartikel vom Großhändler ntuzen, wo Liefertermine in der Zukunft liegen, und, und, und.
      Also wenn du das mit einbauen willst, Nutzen würde es schon bringen....

      2) Nun noch mal zu Includes in Perl-Scripts. Geht nicht, hab heut mal mit ner extra Datenbank, in der dann die jeweiligen Passagen für Includes in einem Datensatz stehen und mit einem Namen angesprochen werden können, experimentiert.
      Nur da ist wieder das Prob, daß man da keine Vars mit nutzen kann.
      Dateien zum lesen öffenen ist wohl gesperrt? Habs mit htx-Dateien und mit txt sowie htm-Dateien auf fremden Servern probiert, geht irgendwie nicht.
      Wollte auch ne Variable mit ner Datei füllen, geht auch nicht, Listen füllen geht auch nicht.
      Gibts da ne Lösung, oder muß man sich mit "ellenlangem" Code behelfen (meinetwegen ja auch Listen, die dann bedingt ausgegeben werden - nur krieg ich da momentan keine Vars, die belegt werden können rein)
      Laß mal bitte hören, ob du möglicherweise eine Lösung hast
      Danke und Ciau
      Ruben

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Freitag, 9.März.2001, 23:14.
    Re: Abfrage nach nächster Woche - Include in Perl-Abschnitten

      1) Ja, so ne kleine Liste, was alles Sinn macht, wäre nicht schlecht ;-)

      2) Nein, Dateien einlesen geht nicht (wäre eine Sicherheitslücke), was Du mit "...da keine Vars mit nutzen..." meinst, versteh ich nicht - Du kannst in den Includes selbstverständlich Vars nutzen und die auch durchreichen (da gibts irgendwo ein entsprechendes Beispiel in der Doku)

     Antworten

    Beitrag von Ruben (403 Beiträge) am Samstag, 10.März.2001, 15:38.
    Re: Include in Perl-Abschnitten

      ok, dateien öffnen ist aus den Gedanken raus.
      Jetzt halt nur noch das Prob mit den Includes.
      "Normale" gehen ja auch, auch Variablen gehen da.
      Aaaber: ich will in Perl-Scripts bedingt verschiedene Includes aufrufen, das geht im Moment nicht.
      Wenn ich die Inhalte der betreffenden Includedateien in eine Datenbank schreibe und dann je nach Bedingung den Inhalt abrufe, kann ich aber die in den DB-Inhalten enthaltenen Variablen nicht nutzen.
      Bsp.:
      Datensatz 1:
      Feld1 - include1 Feld2 - <p>Sie sind der $nr Besucher</p>
      Datensatz 2:
      Feld1 - include2 Feld2 - <p>Bitte melden Sie sich an</p>
      Und im Programmcode:
      if ($name eq "")
      {get "Feld1==include1","includes";
      out $feld2;
      }
      if ($name ne "")
      {get "Feld2==inclide2,"includes";
      out $feld3;
      }
      Da wird aber leider die Variable nr, die in include1 steht nicht übernommen.
      
      Gibt es da irgendeine Lösung?

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Montag, 12.März.2001, 20:12.
    Re: Include in Perl-Abschnitten

      Das war vor kurzem mal Thema im Forum, mir fallen spontan 3 Lösungen ein:

      1. Du wartest bis zur neuen Version, die ich die nächsten Tage als Beta online stelle, dort gibt es dann einen Perl-Befehl include "...";

      2. Warum machst Du die Bedingung nicht in EIN Template, also so:

      if($name eq "")
      { out "<p>Sie sind der $nr Besucher</p>";
      } else
      { out "<p>Bitte melden Sie sich an</p>";
      }
      

      Das kannst Du dann einfach includen und alles funzt...

      3. Du könntest den Inhalt der Felder auf Variablen testen etc. - aber das erscheint mir keine gute Idee für das Problem an sich...

     Antworten


     
 Liste der Einträge von 64350 bis 64500:Einklappen Zur Eingabe 
Neueste Einträge << 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | Neuere Einträge < Zur Eingabe  > Ältere Einträge | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >> Älteste Einträge


Zurück zur Homepage

© baseportal.de. Alle Rechte vorbehalten. Nutzungsbedingungen



powered in 0.06s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!