Re: verzweiflung: eintrag nur bis bestimmten zeitpunkt möglich - 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 hempelr (1976 Beiträge) am Sonntag, 12.September.2004, 17:43.
    Re: verzweiflung: eintrag nur bis bestimmten zeitpunkt möglich

      mhm - also leider muss ich hier mal etwas ausholen - es liegt offensichtlich ein grundlegendes Verständnisproblem vor.
      1. Doku zu get mal anschaun - dein get geht komplett ins leere, welcher Datensatz soll denn nun geholt werden? Es muss eine klare Filterbedingung rein , also in der Art: Hole alle Datensätze mit wo die Obstfarbe rot ist, hieße in bp-Perl, wenn das Feld Obstfarbe heisst:
      get "Obstfarbe==rot", "dbname";
      bei dir wird nix als Filterbedingung eingetragen, weil die Variable $Datum nirgendwo belegt wurde! das get holt dann alle Datensätze und füllt die Feldvariablen mit den Werten des neuesten Datensatzes, weil zur Sccriptlaufzeit dann 
      get "", "db4"; 
      evaluiert wird - (in der Variabel $bisDatum steht ja noch nix zu dem Zeitpunkt) und das holt halt alle Datensätze.
      
      Weiterhin sind die Datumsfunktionen von bp nur in bp-eigenen Befehlen und Vergleichsopreatoren anwendbar, in normalem Perl ist das bp-interne Datum zwingend als String zu betrachten und auch so zu vergleichen, also
      anstatt < - lt (für lower then)
      anstatt <= - le (für lower equal)
      anstatt == - eq (für equal)
      anstatt > - gt (für greater then)
      anstatt >= - ge (für greater equal)
      Es kann auch nicht einfach so mit den Datumswerten "gerechnet" werden....
      Nun ist mir immer noch nicht klar, wie der Datensatz mit dem Vergleichsdatum geholt werden soll bzw. welcher Datensatz das ist und nach welchen Kriterien man den holen könnte - du schreibst alle User aus db3 haben das gleiche, hast du also mehrere User-DBs mit unterschiedlichen Zeiten und musst den Datensatz für alle User der db3 holen? - ich geh mal davon aus.
      Unter dieser Prämisse solltest du folgendes als Anregung nehmen können:
      Ich nehme mal folgendes an:
         Felder in der db4:
         Usergruppe - Typ Text, Sortierung auf Text
         vonDatum - Typ Datum, sortiert
         bisDatum - dito.
      ---schnipp
        get "Usergruppe==db3", "db4"; # heisst, dass der Datensatz geholt wird, in dessen Feld "Usergruppe" der Wert "db3" steht, Groß/Kleinschreibung wird ignoriert
      $vergl_datum = datum("jetzt","intern");
        if($vonDatum lt $vergl_datum && $bisDatum gt $vergl_datum)
        {
          do_all "db=db1 ...", "Name", "pwrein";
        } else {
          out "geht nicht mehr";
          $namerein="";
        }
      
      ---schnapp


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von bernd (25 Beiträge) am Freitag, 10.September.2004, 20:16.
    verzweiflung: eintrag nur bis bestimmten zeitpunkt möglich

      hallo,

      ich bastel schon seit stunden um mein problem rum,
      mit dem wissen, nicht zu wissen, was ich da wirklich
      mache, da perl für mich totales neuland ist.

      bin schon recht weit gekommen, doch die letzte hürde bringt
      mich zum verzweifeln.

      user können über einen pw-bereich einträge in "db1"vornehmen.
      in der "db4" habe ich ein datumsfeld.
      ab dem zeitpunkt, wenn dieses "datum" abgelaufen ist, soll
      kein eintrag mehr in "db1" möglich sein.

      ich hatte mir das ungefähr so gedacht, was aber ignoriert wird:
      -------------------------
        get "$Datum", "db4"; 
       
        if($Datum>jetzt)
        {
          do_all "db=db1 ...
      
      -------------------------

      nachfolgend der ganze perlblock.

      ich hoffe, mir kann jemand helfen.

      danke

      bernd





      <perl>
      if($Name ne "") 
      {
       
      get "Name==!$Name", "db3"; 
      
        if($Passwort ne "" && $Passwort eq $pwrein)   { if (%_put ){ if ($cmd eq "add"){   put undef, "db2"; } elsif ($cmd eq "mod"){        mod undef, "db2";        }    }   get "$Datum", "db4";     if($Datum>jetzt)   {     do_all "db=db1 ...", "Name", "pwrein";  
        } else {     out "geht nicht mehr";       $namerein="";   } } } </perl>

     Antworten

    Beitrag von herbert (549 Beiträge) am Samstag, 11.September.2004, 14:39.
    Re: verzweiflung: eintrag nur bis bestimmten zeitpunkt möglich

      soll das ueber 4 datenbanken funktionieren ??

     Antworten

    Beitrag von bernd (25 Beiträge) am Samstag, 11.September.2004, 19:08.
    Re: verzweiflung: eintrag nur bis bestimmten zeitpunkt möglich

      hallo,

      in db3 sind die nutzer registriert
      in db 1 und 2 werden die daten gespeichert
      den part mit db2 kann ich auch weglassen
      und in db4 steht das datum von-bis, was abhängig
      machen soll, ob in db1 geschrieben werden darf.

      im grunde so:

      wenn user in db3 registriert ist, darf er in der
      zeit, die in db4 eingetragen ist, in db1 schreiben.

      mir fehlt momentan nur die einhaltung, bzw. prüfung der
      datumsfelder.

      hoffe, mir kann da jemand helfen.

      danke
      bernd

     Antworten

    Beitrag von bernd (25 Beiträge) am Sonntag, 12.September.2004, 01:39.
    Re: verzweiflung: eintrag nur bis bestimmten zeitpunkt möglich

      hallo,

      ich hätte nicht gedacht, so ein großes problem zu haben.

      im grunde habe ich eine pw-schutz aus der bib, d.h.
      in db1 dürfen nur einträge gemacht werden, wenn der user
      in db3 registriert ist.

      zusätzlich sollen diese einträge nur in der zeit zwischen datum1 und
      datum2 möglich sein, die in der db4 gespeichert sind.

      das ist ein wirklich dringendes problem.
      hoffe, mir kann da jemand weiterhelfen.

      danke
      bernd

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Sonntag, 12.September.2004, 09:42.
    Re: verzweiflung: eintrag nur bis bestimmten zeitpunkt möglich

      mhm - da wäre noch was unklar - hat jeder in db3 eigetragene User die gleiche Zeit oder sind die Zeiten auch noch unterschiedlich, so dass erst mal der zum jeweiligen User gehörige DS geholt werden muss?

      Vom Prinzip:
      datum1 und datum2 holen und in Zwischenvariablen sichern.
      Abfragen, ob %_put vorhanden ist, wenn ja, vergleichen, ob das ins interne Format gewandelte aktuelle Datum größer als datum1 und kleiner als datum2 ist. Wenn das der Fall ist, dann speichern/ändern/löschen, wenn nicht, %_put auf undef setzen´bzw. cmd von do_del ändern, damit nichts gespeichert/geändert/gelöscht wird.
      Das alles vor dem do_all, damit die Aktionen entsprechend beeinflusst werden können.
      hth
      Ruben

     Antworten

    Beitrag von bernd (25 Beiträge) am Sonntag, 12.September.2004, 11:25.
    Re: verzweiflung: eintrag nur bis bestimmten zeitpunkt möglich

      guten morgen ruben,

      und danke, daß sich jemand meinem hilfeschrei annmimmt.


      das von-bis datum ist für alle user von db3 gleich.
      wichtig ist, daß alle user nur zwischen der "von" und "bis" zeit
      einträge vornehmen können.
      da ich, was perl betrifft, nicht unbedingt weiß, was ich da tue,
      ist es für mich schwierig für mich nachzuvollziehen, wo der fehler
      liegt, bzw. was ich falsch mache.

      hoffe, daß man mir hier im forum helfen kann.

      danke
      bernd


      ich hatte das mal so versucht (kläglich gescheitert):

      <perl>
      if($Name ne "") 
      {
      

      get "Name==!$Name", "db3";
       

        if($Passwort ne "" && $Passwort eq $pwrein)
        {
      if (%_put ){ 
      if ($cmd eq "add"){ 
      

      put undef, "db2";
      } elsif ($cmd eq "mod"){ 
       
      mod undef, "db2";
             }
         } 
      
        get "$bisDatum", "db4";
       
        if($bisDatum>jetzt)
        {
          do_all "db=db1 ...", "Name", "pwrein"; 
       
      
        } else {     out "geht nicht mehr";       $namerein="";   } } } </perl>

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Sonntag, 12.September.2004, 17:43.
    Re: verzweiflung: eintrag nur bis bestimmten zeitpunkt möglich

      mhm - also leider muss ich hier mal etwas ausholen - es liegt offensichtlich ein grundlegendes Verständnisproblem vor.
      1. Doku zu get mal anschaun - dein get geht komplett ins leere, welcher Datensatz soll denn nun geholt werden? Es muss eine klare Filterbedingung rein , also in der Art: Hole alle Datensätze mit wo die Obstfarbe rot ist, hieße in bp-Perl, wenn das Feld Obstfarbe heisst:
      get "Obstfarbe==rot", "dbname";
      bei dir wird nix als Filterbedingung eingetragen, weil die Variable $Datum nirgendwo belegt wurde! das get holt dann alle Datensätze und füllt die Feldvariablen mit den Werten des neuesten Datensatzes, weil zur Sccriptlaufzeit dann 
      get "", "db4"; 
      evaluiert wird - (in der Variabel $bisDatum steht ja noch nix zu dem Zeitpunkt) und das holt halt alle Datensätze.
      
      Weiterhin sind die Datumsfunktionen von bp nur in bp-eigenen Befehlen und Vergleichsopreatoren anwendbar, in normalem Perl ist das bp-interne Datum zwingend als String zu betrachten und auch so zu vergleichen, also
      anstatt < - lt (für lower then)
      anstatt <= - le (für lower equal)
      anstatt == - eq (für equal)
      anstatt > - gt (für greater then)
      anstatt >= - ge (für greater equal)
      Es kann auch nicht einfach so mit den Datumswerten "gerechnet" werden....
      Nun ist mir immer noch nicht klar, wie der Datensatz mit dem Vergleichsdatum geholt werden soll bzw. welcher Datensatz das ist und nach welchen Kriterien man den holen könnte - du schreibst alle User aus db3 haben das gleiche, hast du also mehrere User-DBs mit unterschiedlichen Zeiten und musst den Datensatz für alle User der db3 holen? - ich geh mal davon aus.
      Unter dieser Prämisse solltest du folgendes als Anregung nehmen können:
      Ich nehme mal folgendes an:
         Felder in der db4:
         Usergruppe - Typ Text, Sortierung auf Text
         vonDatum - Typ Datum, sortiert
         bisDatum - dito.
      ---schnipp
        get "Usergruppe==db3", "db4"; # heisst, dass der Datensatz geholt wird, in dessen Feld "Usergruppe" der Wert "db3" steht, Groß/Kleinschreibung wird ignoriert
      $vergl_datum = datum("jetzt","intern");
        if($vonDatum lt $vergl_datum && $bisDatum gt $vergl_datum)
        {
          do_all "db=db1 ...", "Name", "pwrein";
        } else {
          out "geht nicht mehr";
          $namerein="";
        }
      
      ---schnapp

     Antworten

    Beitrag von bernd (25 Beiträge) am Sonntag, 12.September.2004, 18:03.
    Re: verzweiflung: eintrag nur bis bestimmten zeitpunkt möglich

      hallo ruben,

      es ist eigentlich einfacher gedacht:

      in db3 habe ich alle user registriert (name und passwort)
      über den passwortbereich logt sich der user ein und macht
      einen eintrag in db1.
      das ist im grunde das normale standardprozedere eines
      passwortbereichs.

      nun kommt das,was ich zusätzlich einrichten möchte:
      ich habe jetzt eine weitere datenbank (db4) mit 1 eintrag.
      u.a. mit den datumsfeldern $startdatum und $enddatum.

      die userdatenbank (db3) und die datenbank mit den datumsfeldern (db4)
      sind unabhängig voneinandner.

      in den standard-passwortbereich möchte ich es nun so einrichten,
      das der registrierte user NUR innerhalb der zeiten die in den datumsfeldern
      $startdatum und $enddatum der db4 eingetragen sind, einen eintrag
      
      vornehmen kann.

      d.h.: der user kann einen eintrag nur vornehmen, wenn...
      ... er registriert ist
      ... er innerhalb der erlaubten zeit seinen eintrag vornimmt.

      hoffe, die ganze sache verständlich dargestellt zu haben, denn
      ich dachte, daß das ganze nicht so kompliziert ist.

      bernd

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Sonntag, 12.September.2004, 18:39.
    Re: verzweiflung: eintrag nur bis bestimmten zeitpunkt möglich

      okok - bin auch manchmal schwer von kapee,
      also, da ist das dann ohne die Bedingung zu holen, also einfach ein Datensatz (der einzige der drin ist)
      Die Sache mit den registrierten Usern klappt wohl, oder?
      also nur noch die "Zeitfrage", und die ist dann irgendwie so:
      ---schnipp
      ....
      get "", "db4"; 
      $vergl_datum = datum("jetzt","intern");
      if($startdatum lt $vergl_datum && $enddatum gt $vergl_datum)
      {
          do_all "db=db1 ...", "Name", "pwrein";
      } else {
          out "geht nicht mehr";
          $namerein="";
      }
      
      ....
      ---schnapp

     Antworten

    Beitrag von bernd (25 Beiträge) am Sonntag, 12.September.2004, 18:54.
    Re: verzweiflung: eintrag nur bis bestimmten zeitpunkt möglich

      hallo ruben,

      die usersache klappt.
      es war nur das zeitenproblem.

      werden deinen vorschlag nachher gleich mal
      testen.

      vorab schon mal danke.

      bernd

     Antworten

    Beitrag von bernd (25 Beiträge) am Sonntag, 12.September.2004, 23:09.
    danke

      hallo ruben ;-)

      es klappt - vielen, vielen dank!

      bernd

     Antworten


     
 Liste der Einträge von 28351 bis 28501: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.07s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!