Re: gesamtsumme von feld anzahl darf nicht höher... - 99,9% geschafft - 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 markus (1013 Beiträge) am Dienstag, 25.Januar.2005, 11:49.
    Re: gesamtsumme von feld anzahl darf nicht höher... - 99,9% geschafft

      hallo ruben,

      hab mir mal nen "logischen plan" gemacht und habe es für meine zwecke hinbekommen.

      template: resbuch
      hier werden die links mit datum generiert und das datum mit übergeben:

      <loop db=resbuch>
      $Datum:<a href=' http://www.baseportal.de/cgi-bin/baseportal.pl?htx=/markus1/reservierungen&Datum=$Datum'>reservieren</a>
      </loop>
      
      -------------------------
      template: formular
      das datum wird per type=hidden zum prüfen, ob noch einträge möglich übergeben.

      <form action="http://www.baseportal.de/cgi-bin/baseportal.pl?htx=/markus1/res" method=post enctype="multipart/form-data">
      <input type="hidden" name="cmd=" value="add">
      <input type="hidden" name="Datum:=" value="$Datum">
      

      Anzahl:<SELECT NAME="Anzahl:="><option><option selected>
      <option>1<option>2<option>3<option>4<option>5<option>6<option>7<option>8
      </SELECT>
      Name:<INPUT TYPE=TEXT NAME="Name:=">
      Email: <INPUT TYPE=TEXT NAME="Email:=">
      <input type="submit" value="reservieren">
      </form>
      
      ----------------------------------------

      template: prüfen und eintragen mit rubens perl:

      <perl>
      

      $Datum_in = $_put{Datum} if $_put{Datum}; # bedingt, wenn Formular abgeschickt wurde
       
      get "Datum==$Datum_in", "reservierungen", "hol_ds";
      while(get_next("hol_ds")){ 
      $gesamt += $Anzahl;
      }
      $frei = 25 - $gesamt; 
      if ($frei <= 0){ 
      out "ausverkauft<br>";
      }
      else { # ok
       
      if (%_put && $cmd eq "add") {
           put undef, "reservierungen";
        out "Reservierungsdaten:<br> Datum: $Datum<br>Name: $Name<br>Anzahl: $Anzahl<br> Email: $Email<br><br>Danke<br><br><br>";
        out "<br><br>";
        }
        out datum("jetzt", "lang");
        }
      </perl>
      
      ------------------------------------

      link zur ansicht:
      http://www.baseportal.de/cgi-bin/baseportal.pl?htx=/markus1/resbuch


      ein letzes problem, an dem ich noch hänge:

      wenn "put undef, "reservierungen";" die daten in die db schreibt, müßten sie doch auch noch da sein, um sie mit out "..."; auszugeben?!
      da werden mir aber, soweit ich das sehen kann, immer die daten des ersten eintrags angezeigt - die akt. daten sind doch aber noch da, oder??

      danke
      markus


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von markus (1013 Beiträge) am Samstag, 22.Januar.2005, 21:29.
    gesamtsumme von feld anzahl darf nicht höher als 100 sein

      guten abend,

      ich hänge momentan an einem additionsproblem.

      per form kann man tickets für bestimmte daten bestellen.
      num möchte ich die anzahl der bestellbaren tickets begrenzen.

      ich habe in der db ein feld datum und ein feld anzahl (zahl/sort.).
      wenn die summe der feldinhalte $anzahl mit gleichem $datum 100 überschreitet soll kein db-eintrag mehr möglich sein.

      mit dem folgenden perl kriege ich hin, daß gleiche einträge nicht möglich sind, aber am umbauen, daß die gesamtsumme geprüft wird, beiße ich mir die zähne aus.

      markus

      <perl>
      

      get "Anzahl==$Anzahl Datum==$Datum", "reservierungen";
      if ($_amount>0) 
      {
      out "<font face=verdana size=-1>Keine Plätze mehr frei<br>
      
      ";
      }
      else
      {
      put ["Anzahl",$Anzahl,"Datum",$Datum,"Name",$Name,"Email",$Email], "reservierungen";
      

      out "<font face=verdana size=-1>Vielen Dank für Ihre Reservierung.";
      }
      

      </perl>

     Antworten

    Beitrag von Pouraga (1396 Beiträge) am Samstag, 22.Januar.2005, 21:43.
    Re: gesamtsumme von feld anzahl darf nicht höher als 100 sein

      Musst du schon mit ner schleife machen, weil du ja mehrere Datensätze anderen musst.
      so in der art:

      get "Datum==$Datum", "reservierungen";
      while(get_next("reservierungen")){ #zusammenzählen wieviele schon am tag
      $gesamt+=$Anzahl;
      }
      

      $frei = $gesamt-100;
      if ($frei < $Anzahl){ #wenn mehr geordert als da
      out "Nur $frei Plätze noch da";
       }elsif ($frei <= 0){ #keine mehr da
      out "Keine Plätze mehr";
      }else{  #ok
      put .....;
      out "Vielen Dank";
      }
      

     Antworten

    Beitrag von markus (1013 Beiträge) am Samstag, 22.Januar.2005, 22:19.
    Re: gesamtsumme von feld anzahl darf nicht höher als 100 sein

      hallo pourage,

      klingt logisch, aber jetzt schreibt er mir nix mehr in die db :-(

      <perl>
      

      get "Datum==$Datum", "reservierungen";
      while(get_next("reservierungen")){ #zusammenzählen wieviele schon am tag
      $gesamt+=$Anzahl;
      }
       
      $frei = $gesamt-100;
      if ($frei < $Anzahl){ #wenn mehr geordert als da
      out "Nur $frei Plätze noch da";
      }elsif ($frei <= 0){ #keine mehr da
      out "Keine Plätze mehr";
      }else{ #ok
      put ["Anzahl",$Anzahl,"Datum",$Datum,"Name",$Name,"Email",$Email], "reservierungen";
      

      out "Vielen Dank";
      }
       
      </perl>
      

     Antworten

    Beitrag von Claus (4645 Beiträge) am Sonntag, 23.Januar.2005, 10:58.
    Re: gesamtsumme von feld anzahl darf nicht höher als 100 sein

      Hallo Markus,

      nur mal grob überflogen

      sollte wohl richtig heißen

      }else if ($frei <= 0){ #keine mehr da
      $frei = $gesamt-100;
      if ($frei < $Anzahl){ #wenn mehr geordert als da
      out "Nur $frei Plätze noch da";
      }elsif ($frei <= 0){ #keine mehr da
      out "Keine Plätze mehr";
      }else{ #ok
      

      Gruß

      Claus

     Antworten

    Beitrag von markus (1013 Beiträge) am Sonntag, 23.Januar.2005, 12:56.
    Re: gesamtsumme von feld anzahl darf nicht höher als 100 sein

      guten morgen claus,

      habe heute nacht schon einiges ausprobiert, doch leider ohne erfolg.

      wenn ich
      }elsif ($frei <= 0){ #keine mehr da
      
      durch
      }else if ($frei <= 0){ #keine mehr da
      ersetze bekomme ich die fehlemeldung:
      [ Fehler: (perl) in /dorf.de/revue/res: syntax error at (eval 21) line 15, near "else if" ]

      passe ich die klammern an, gibt es keine fehlermeldung, doch das put macht mir keinen eintrag in die db (rechte: schreiben/lesen).
      meldung: Nur -100 Plätze noch da

      markus

      <perl>
      

      get "Datum==$Datum", "reservierungen";
      while(get_next("reservierungen")){ #zusammenzählen wieviele schon am tag
      $gesamt+=$Anzahl;
      }
      $frei = $gesamt-100;
      if ($frei < $Anzahl){ #wenn mehr geordert als da
      out "Nur $frei Plätze noch da";
      

      }else{
      if ($frei <= 0){ #keine mehr da
      

      out "Keine Plätze mehr";
      }else{ #ok
      put ["Anzahl",$Anzahl,"Datum",$Datum,"Name",$Name,"Email",$Email], "reservierungen";
      out "Vielen Dank";
      }
      }
      </perl>
      

     Antworten

    Beitrag von Claus (4645 Beiträge) am Sonntag, 23.Januar.2005, 13:22. WWW: automobilhai.de
    Re: gesamtsumme von feld anzahl darf nicht höher als 100 sein

      Hallo Markus,

      ich weiß nicht wie Deine Struktur aufgebaut ist, aber versuch mal folgendes:



      <perl>
      

      get "Datum==$Datum", "reservierungen";
      if ($Anzahl>=100) 
      {
      out "<font face=verdana size=-1>Keine Plätze mehr frei<br>
       
      
      ";


      }
      else
      {
      $Anzahl++;
      put ["Anzahl",$Anzahl,"Datum",$Datum,"Name",$Name,"Email",$Email], "reservierungen";
      

      out "<font face=verdana size=-1>Vielen Dank für Ihre Reservierung.";
      }
       
      </perl>
      

      Gruß

      Claus

     Antworten

    Beitrag von markus (1013 Beiträge) am Sonntag, 23.Januar.2005, 13:41.
    Re: gesamtsumme von feld anzahl darf nicht höher als 100 sein

      hallo claus,

      die struktur ist eigentlich ganz einfach.

      man wählt datum aus und trägt die anzahl der tickets ein, danz name und email.
      wenn die summe des feldinhaltes "anzahl" für ein datum 100
      überschreiten würde, soll der eintrag nicht angenommen werden,
      d.h. wir haben immer nur 100 tickets und mehr dürfen nicht bestellt
      werden dürfen.

      wenn ich deinen vorschlag nutze, gibt es zwar ein put in die db, aber einen nicht nachvollziehbaren :-)

      gebe ich 30 ein, steht in der db 31. alle nachfolgenden einträge haben
      dann immer 32 und bei name und email immer den inhalt des 1. eintrags,
      egal was ich eingebe ???

      markus

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Sonntag, 23.Januar.2005, 13:50.
    Re: gesamtsumme von feld anzahl darf nicht höher als 100 sein

      Na nimm doch einfach $_amount_query als Referenzwert, da hast du doch die Anzahl der DS nach Filterkriterium.
      Und die Zahl speicherst du zwischen, und vergleichst sie mit deiner maximal zulässigen Anzahl, wenn kleiner, dann speichern, wenn größer-gleich, dann Medlung des Bedauerns....

      Alles Klar? - den Code solltest du schon hinkriegen, wenn nicht, nochmal melden und das posten, was du zusammengebaut hast
      Ruben

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Sonntag, 23.Januar.2005, 13:56.
    Fehlerberichtigung - Re: gesamtsumme von feld anzahl darf nicht höher...

      ja klar - es kann ja auch einer mehrere bestellen, also ganz anders, so wie Pouraga das gepostet hatte:

      get "Datum==$Datum", "reservierungen";
      while(get_next("reservierungen")){ #zusammenzählen wieviele schon am tag
      $gesamt += $Anzahl;
      }
      outr "Es liegen bereits $gesamt Bestellungen vor<br>";
      $frei = $gesamt - 100;
      

      if ($frei < $Anzahl){ #wenn mehr geordert als da
      out "Es sind nur $frei Plätze noch da<br>";
      }elsif ($frei <= 0){ #keine mehr da
      out "Keine Plätze mehr<br>";
      }else{ #ok
      put ["Anzahl",$Anzahl,"Datum",$Datum,"Name",$Name,"Email",$Email], "reservierungen";
      out "Vielen Dank<br>;
      }
      

     Antworten

    Beitrag von markus (1013 Beiträge) am Sonntag, 23.Januar.2005, 14:10.
    Re: Fehlerberichtigung - Re: gesamtsumme von feld anzahl darf nicht höher...

      hi ruben,

      genau, es sind ja nicht die anzahl der einträge, sondern die summe deren inhalte.
      um zu prüfen, ob es klappt, müßte der db-eintrag gehen, doch
      das put... puttet mir nix in die db?!

      markus

      <perl>
      

      get "Datum==$Datum", "reservierungen";
      while(get_next("reservierungen")){ #zusammenzählen wieviele schon am tag
      $gesamt += $Anzahl;
      }
      out "Es liegen bereits $gesamt Bestellungen vor<br>";
      $frei = $gesamt - 100;
      

      if ($frei < $Anzahl){ #wenn mehr geordert als da
      out "Es sind nur $frei Plätze noch da<br>";
      }elsif ($frei <= 0){ #keine mehr da
      out "Keine Plätze mehr<br>";
      }else{ #ok
      put ["Anzahl",$Anzahl,"Datum",$Datum,"Name",$Name,"Email",$Email], "reservierungen";
      out "Vielen Dank";
      }
      

      </perl>

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Sonntag, 23.Januar.2005, 20:19.
    Re: Fehlerberichtigung - Re: gesamtsumme von feld anzahl darf nicht höher...

      mhm - versuchs mal mit Ergebnishash im get, in etwa so:
      ---schnipp
      get "Datum==$Datum", "reservierungen", "hol_ds";
      while(get_next("hol_ds")){ #zusammenzählen wieviele schon am tag
      $gesamt += $Anzahl;
      }
      
      ---schnapp
      Zeigt er denn die Anzahl der vorliegenden Bestellungen richtig an?
      Ruben

     Antworten

    Beitrag von markus (1013 Beiträge) am Sonntag, 23.Januar.2005, 22:43.
    Re: Fehlerberichtigung - Re: gesamtsumme von feld anzahl darf nicht höher...

      hi ruben,

      es ist zum mäuse melken - egal, wie ich es mache:

      es wird KEIN eintrag in die db vorgenommen.

      nach senden des forms wird immer angezeigt:
      Es liegen bereits Bestellungen vor
      Es sind nur -100 Plätze noch da

      markus


      formular:
      <form action="http://www...." method=post enctype="multipart/form-data">
      <input type="hidden" name="cmd=" value="add">
      Datum:<SELECT NAME="Datum:=">
      <loop db=resbuch>
      <OPTION VALUE="$Datum">$Datum</OPTION>
      </loop>
      </SELECT>
      Anzahl: <INPUT TYPE=TEXT NAME="Anzahl:=" VALUE="">
      Name:<INPUT TYPE=TEXT NAME="Name:=" VALUE="">
      Email: <INPUT TYPE=TEXT NAME="Email:=" VALUE="">
      <input type="submit" value="reservieren">
      </form>
      

      ---------------------------------------------------

      <perl>
      get "Datum==$Datum", "reservierungen", "hol_ds";
      while(get_next("hol_ds")){ #zusammenzählen wieviele schon am tag
      $gesamt += $Anzahl;
      }
      out "Es liegen bereits $gesamt Bestellungen vor<br>";
      $frei = $gesamt - 100;
      

      if ($frei < $Anzahl){ #wenn mehr geordert als da
      out "Es sind nur $frei Plätze noch da<br>";
      }elsif ($frei <= 0){ #keine mehr da
      out "Keine Plätze mehr<br>";
      }else{ #ok
      put ["Anzahl",$Anzahl,"Datum",$Datum,"Name",$Name,"Email",$Email], "reservierungen";
      out "Vielen Dank";
      }
      

      </perl>

     Antworten

    Beitrag von Pouraga (1396 Beiträge) am Montag, 24.Januar.2005, 02:17.
    Nicht so negativ ;) Re: gesamtsumme von feld anzahl darf nicht höher...

      ups

      $frei = 100 - $gesamt;
      

      ;)

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Montag, 24.Januar.2005, 08:30.
    Re: Fehlerberichtigung - Re: gesamtsumme von feld anzahl darf nicht höher...

      Gut dass du mal das ganze Template gepostet hast - da wissen wir dann mehr....

      Die Erklärung wird jetzt ewas länger, aber ich hoffe, dass sie auch anderen hilft - das ganze hat was mit Logik und gedanklichem Nachvollziehen des Programmablaufes zu tun....

      Beim Erstaufruf sind alle Variablen ohne Werte, ist ja logisch.
      Nun wird als erstes das Formular aufgebaut, dabei wird die DB resbuch durchlaufen und das Optionfeld Datum gefüllt. Nach diesem Loop steht aber dann der letzte in diese DB befindliche Datumswert in der Variable Datum.
      Dann kommt der Perl-Teil.
      Hier werden die Datensätze mit dem Datumswert der Variable Datum geholt, da immer der letzte Datumswert aus der db resbuch in dieser steht, also auch nur diese Datensätze.
      Und auf diese Datensätze läuft auch das Auswerten und die Summenbildung.

      Wenn nun ins Formular was eingetragen und dieses Abgeschickt wird, stehen die Werte aus den Formularfeldern im Hash %_put (das ist eine BP-interne Regelung, alle mit name:= übergebenen Feldnamen und Werte wandern als Schlüssel-Wertpaar in eben diesen Hash)
      Alle im put-Hash übermittelten Namen/Wert-Paare sind automatisch im Template als "normale" Variablen vorhanden, also wären erst mal alle Werte richtig da.
      Aber dann - das loop überschreibt die Variable Datum wieder komplett und es steht wieder der letzte Wert der DB als Wert zur Verfügung....
      Dann das get - wieder auf das falsche Datum, das Zählen, wieder auf die falschen Werte.
      Durch das get get_next werden bei jedem Durchlauf die Variablen gleichen Namens (und damit deine per Formular übergebenen Werte) logischerweise mit den Werten aus der DB überschrieben - und da diese auf ein vollkommen falsches Datum laufen sind sie natürlich leer.
      Deshalb kann das ganze nicht funktionieren.

      Man muss immer bedenken, dass Perl eine Script-Sprache ist, es wird von Oben nach unten abgearbeitet ebenso Wertzuweisungen an Variablen. Das bedeutent dann logischerweise, dass Werte, die am Anfang vorhanden sind von gleichlautenden Variablennamenszuweisungen überschrieben werden.

      Die Lösung für diesen Fall ist folgendes:
      - erstens die Formularausgabe nach der Auswertung, damit als allererstes die ans Template übergebenen Variablen ausgewertet werden und darauf reagiert werden kann
      - zweitens entweder ein Umspeichern der gleichlautenden Variablen oder Umenennen
      - drittens das Abspeichern der Werte nicht über Variablen machen sondern von den put-Hash - Werten. Diese werden benutzt, wenn man ein put auf undef macht (das ist auch bp-intern und halt gegeben)
      - viertens ist es immer gut, die Aktion auf die DP (also hier das put) auch nur bedingt auszuführen, wenn der put-Hash auch wirklich vorhanden und aktiv ist - also über ne Abfrage auf %_put selbst ( if (%_put){....} )
      Bei DB-Aktionen mit put, mod, chg, del ist der Parameter cmd unnötig (wenn man ihn nicht selbst auswerten will) - er bewirkt nur beim do das notwendige ohne spezielle manuelle Auswertung.

      Damit du nun nicht verzweifelst ob der vielen Erläuterungen, hab ich dir mal nachfolgend dein Template berichtigt und kommentiert eingestellt, damit du das auch nachvollzihen kannst:
      ----schnipp
      <perl>
      # Den Perl-Teil an den Anfang des Templates, weil hier die Variablen-
      # und Hashwerte komplett zur Verfügung stehen
      # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -#
      # Den per Formular übergebenen Datumswert in ne Zwischenvariable speichern
      # damit er später nicht überschrieben wird und damit verloren geht
      $Datum_in = $_put{Datum} if $_put{Datum}; # bedingt, wenn Formular abgeschickt wurde
      #. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .#
      # jetzt die Datensätze mit genau diesem Datum holen
      get "Datum==$Datum_in", "reservierungen", "hol_ds";
      while(get_next("hol_ds")){ # und zusammenzählen wieviele schon am Datum bestellt sind
      $gesamt += $Anzahl;
      }
      # Ausgabe wieviel Bestellungen vorliegen, nur zur Kontrolle
      out "Es liegen bereits $gesamt Bestellungen vor<br>";
      $frei = 100 - $gesamt; # freie Bestellungen berechnen
      if ($frei < $Anzahl){ # wenn mehr geordert als da
      out "Es sind nur $frei Plätze noch da<br>";
      } elsif ($frei <= 0){ # keine mehr da
      out "Keine Plätze mehr<br>";
      } else { # ok
        # wenn Formularwerte übergeben wurden und Parameter cmd Wert "add" hat
        if (%_put && $cmd eq "add") {
           put undef, "reservierungen"; # Speichern, Werte aus dem put-Hash nehmen (undef)
        }
        out "Vielen Dank, Ihre Bestellung wurde aufgenommen!";
      }
      

      </perl>
      <!-- --------------------------------------------------- -->
      <!-- Formula erst jetzt ausgeben , weil hier egal ist, wie die -->
      <!-- Variablenwerte überschrieben werden -->
      <form action="$_link" method=post enctype="multipart/form-data">
      <input type="hidden" name="cmd=" value="add">
      Datum:<SELECT NAME="Datum:=">
      <loop db=resbuch>
      <OPTION VALUE="$Datum">$Datum</OPTION>
      </loop>
      </SELECT>
      Anzahl: <INPUT TYPE=TEXT NAME="Anzahl:=" size=5>
      Name:<INPUT TYPE=TEXT NAME="Name:=">
      Email: <INPUT TYPE=TEXT NAME="Email:=">
      

      <input type="submit" value="reservieren">
      </form>
      <!-- -------------------------------------------------- -->
      
      ---schnapp

      Ich hoffe, dass das auch anderen was zum Verständnis hilft, es ist für mich oft erschreckend, wie naiv (oder auch ahnungslos) manche an Programmieraufgaben gehen ohne zu verstehen, was da vor sich geht, und dann die Lust verlieren, weil sie nicht begriffen haben, dass man selbst erst mal verstehen muss, was der Computer machen soll und wie es funktioniert.
      Für jedes gewünschte Ziel muss man alle Einzelschritte logisch durchdenken, immer wieder neu für jede Aufgabe, es gibt niemals Patentrezepte, nur halt gewisse Gegebenheiten, die man beachten muss...
      Ruben

     Antworten

    Beitrag von markus (1013 Beiträge) am Montag, 24.Januar.2005, 09:47.
    Re: Fehlerberichtigung - Re: gesamtsumme von feld anzahl darf nicht höher...

      guten morgen ruben,

      erstmal vielen dank für deine hilfe und erklärung.

      die schritte sind jetzt schon nachvollziehbar, auch mit dem perl
      vor dem formular, wobei ich pourages hinweis auch für logisch hielt :-)

      die daten werden jetzt zwar in die db geschrieben.
      kann es sein, daß die werte des formular im put-hash bleiben?
      wenn ich einen eintrag mache, wird mir das form wieder leer angezeigt.
      klicke ich im browser auf "aktualisieren" wird der letzte eintrag
      immer wieder neu in die db geschrieben?

      markus

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Montag, 24.Januar.2005, 10:23.
    Re: Fehlerberichtigung - Re: gesamtsumme von feld anzahl darf nicht höher...

      ja - das mit dem Reload ist schon logisch, weil ja die komplette HTML-Seite nochmal geladen wird (also mit dem was eingetragen wurde) - Foxi (FireFox) gibt da auch ne Warn-Meldung aus.
      Das kann man verhindern, wenn man noch ne IP-Sperre einbaut, wird aber immer komplexer. Es gab dazu mal vor paar Jahren nen Frorumsthread, musste mal suchen.
      IP-Sperre heisst, dass die IP des Bestellers mit abgespeichert wird und vorm Speichern auf das Vorhandensein der IP abgefragt wird, zusätzlich noch auf Zeit, sonst wäre ja die IP für immer gesperrt und das ist ja Käse.
      Eine Möglichkeit wäre noch, die Formularausgabe nach dem Speichern zu verhindern, da muss das aber mit in den Perl-Block und es muss ein internes Flag gesetzt werden, das wieder ausgewertet wird.
      Mach dir doch mal nen "logischen Plan" und dann versuchs zu proggen
      Viel Erfolg ;-)
      Ruben

     Antworten

    Beitrag von markus (1013 Beiträge) am Dienstag, 25.Januar.2005, 11:49.
    Re: gesamtsumme von feld anzahl darf nicht höher... - 99,9% geschafft

      hallo ruben,

      hab mir mal nen "logischen plan" gemacht und habe es für meine zwecke hinbekommen.

      template: resbuch
      hier werden die links mit datum generiert und das datum mit übergeben:

      <loop db=resbuch>
      $Datum:<a href=' http://www.baseportal.de/cgi-bin/baseportal.pl?htx=/markus1/reservierungen&Datum=$Datum'>reservieren</a>
      </loop>
      
      -------------------------
      template: formular
      das datum wird per type=hidden zum prüfen, ob noch einträge möglich übergeben.

      <form action="http://www.baseportal.de/cgi-bin/baseportal.pl?htx=/markus1/res" method=post enctype="multipart/form-data">
      <input type="hidden" name="cmd=" value="add">
      <input type="hidden" name="Datum:=" value="$Datum">
      

      Anzahl:<SELECT NAME="Anzahl:="><option><option selected>
      <option>1<option>2<option>3<option>4<option>5<option>6<option>7<option>8
      </SELECT>
      Name:<INPUT TYPE=TEXT NAME="Name:=">
      Email: <INPUT TYPE=TEXT NAME="Email:=">
      <input type="submit" value="reservieren">
      </form>
      
      ----------------------------------------

      template: prüfen und eintragen mit rubens perl:

      <perl>
      

      $Datum_in = $_put{Datum} if $_put{Datum}; # bedingt, wenn Formular abgeschickt wurde
       
      get "Datum==$Datum_in", "reservierungen", "hol_ds";
      while(get_next("hol_ds")){ 
      $gesamt += $Anzahl;
      }
      $frei = 25 - $gesamt; 
      if ($frei <= 0){ 
      out "ausverkauft<br>";
      }
      else { # ok
       
      if (%_put && $cmd eq "add") {
           put undef, "reservierungen";
        out "Reservierungsdaten:<br> Datum: $Datum<br>Name: $Name<br>Anzahl: $Anzahl<br> Email: $Email<br><br>Danke<br><br><br>";
        out "<br><br>";
        }
        out datum("jetzt", "lang");
        }
      </perl>
      
      ------------------------------------

      link zur ansicht:
      http://www.baseportal.de/cgi-bin/baseportal.pl?htx=/markus1/resbuch


      ein letzes problem, an dem ich noch hänge:

      wenn "put undef, "reservierungen";" die daten in die db schreibt, müßten sie doch auch noch da sein, um sie mit out "..."; auszugeben?!
      da werden mir aber, soweit ich das sehen kann, immer die daten des ersten eintrags angezeigt - die akt. daten sind doch aber noch da, oder??

      danke
      markus

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Dienstag, 25.Januar.2005, 17:20.
    Re: gesamtsumme von feld anzahl darf nicht höher... - 99,9% geschafft

      hey - das sieht ja schon sehr gut aus...
      Für die Anzeige ist es vielleicht günstig, die Elemente des put-Hashs direkt anzusprechen, in etwa so:
      ---schnipp
      ....
       put undef, "reservierungen";
      out<<EOF;
      Reservierungsdaten:<br>
      Datum: $_put{Datum}<br>
      Name: $_put{Name}<br>
      Anzahl: $_put{Anzahl}<br> 
      Email: $_put{Email}<br><br>
      Danke<br><br><br>
      <br><br>
      EOF
      }
      
      ....
      ---schnapp

     Antworten

    Beitrag von markus (1013 Beiträge) am Dienstag, 25.Januar.2005, 19:56.
    Re: gesamtsumme von feld anzahl darf nicht höher... - 100% geschafft

      hallo ruben,

      danke für die hilfe & geduld.

      auch an claus & pourage, die sich meinem problem gewidmet
      hatten.

      markus

     Antworten

    Beitrag von markus (1013 Beiträge) am Montag, 24.Januar.2005, 10:06.
    Re: Fehlerberichtigung - Re: gesamtsumme von feld anzahl darf nicht höher...

     Antworten

    Beitrag von richard (1187 Beiträge) am Montag, 24.Januar.2005, 10:11. WWW: posaunenchor-rhoden.de
    Re: Fehlerberichtigung - Re: gesamtsumme von feld anzahl darf nicht höher...

      hempelr schrieb:

      ... es ist für mich oft erschreckend, wie naiv (oder auch ahnungslos) manche an Programmieraufgaben gehen ohne zu verstehen, was da vor sich geht, ...


      Das liegt natürlich auch daran, daß hier für Einsteiger so ein bißchen der Eindruck erweckt wird, es gehe alles von allein. Das ist dann vielleicht auch am Anfang so, ändert sich aber sofort, sobald die Ansprüche etwas ansteigen.

      Grüße, Richard

     Antworten


     
 Liste der Einträge von 25800 bis 25950: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!