Re: mod in loop - 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 Werner Kremer (3 Beiträge) am Montag, 8.Januar.2001, 02:42. WWW: wkremer.de
    Re: mod in loop

      Hallo,
      vielen Dank für die Antwort. Leider ist Sie jedoch nicht die Lösung, da syntaktisch (Perl) alles in Ordnung ist. Wenn ein Syntaxfehler vorläge, gäbe es auch eine entsprechende Fehlermeldung.

      Vielleicht muß hier ein Baseportal-Insider antworten.
      Besten Dank
      Werner


    Ihre Antwort:

    Name: EMail: EMail bei Antwort? WWW:
    Titel:
    Text:

    Neuer Eintrag


 Alle Einträge zum Thema: Zur Liste 
    Beitrag von Werner Kremer (3 Beiträge) am Sonntag, 7.Januar.2001, 11:46. WWW: wkremer.de
    mod in loop

      Hallo,
      ich möchte für ein Shop-System den Aufruf in ein Feld namens Ordern vor der Anzeige generieren. Dazu habe ich einen loop mit der Erstellung des benötigten Orderaufrufs. Bei der Ausführung des mod Befehls werden alle Indizes zerstört, manchmal auch die Daten vervielfacht oder gelöscht. Je nachdem muß ich dann die Daten neu aufbauen. Die Datenbank enthält folgende Felder:
      Artikelbezeichnung, Hersteller, Updateinformation, VKPreis, Ordern

      Die Daten wurden per Textupload eingespeichert, wobei das Feld Ordern nicht übertragen wurde.

      Anbei das Template:

      <loop code=perl db=main sort^=Hersteller range^=0,20 
      >
      $VKPreis = 'auf Anfrage' if $VKPreis == '';
      $orderlink ='<a href="http://www.xxxxxxx.com/cf/add.cfm?userid=xxxxxx&product=' . convert_url($Artikelbezeichnung) . '&price=' . $VKPreis . '">Ordern</a>';
      mod "Id==$_Id",["Ordern","$orderlink","VKPreis","$VKPreis"],"main";
      </loop>
      

      <do db=main action=all listfields=Artikelbezeichnung,VKPreis,Ordern sort^=Hersteller,Artikelbezeichnung range^=0,20 >

     Antworten

    Beitrag von Andreas (396 Beiträge) am Sonntag, 7.Januar.2001, 12:29.
    Re: mod in loop

      Hallo Werner,

      zum einen glaube ich, daß das if-Konstrukt so nicht funktionieren kann, Perl-konform wäre wohl:
      if($VKPreis eq "")
      
      oder
      if($VKPreis == 0)
      {
       $VKPreis = 'auf Anfrage';
      };
      

      Zum anderen würde ich probieren, bei der mod-Anweisung die übergebenen Variablen nicht in Anführungszeichen zu setzen, also
      mod "Id==$_Id",["Ordern",$orderlink,"VKPreis",$VKPreis],"main";
      

      Vielleicht hilft das ja etwas weiter...

      Gruß, Andreas

     Antworten

    Beitrag von Werner Kremer (3 Beiträge) am Montag, 8.Januar.2001, 02:42. WWW: wkremer.de
    Re: mod in loop

      Hallo,
      vielen Dank für die Antwort. Leider ist Sie jedoch nicht die Lösung, da syntaktisch (Perl) alles in Ordnung ist. Wenn ein Syntaxfehler vorläge, gäbe es auch eine entsprechende Fehlermeldung.

      Vielleicht muß hier ein Baseportal-Insider antworten.
      Besten Dank
      Werner

     Antworten

    Beitrag von Andreas (396 Beiträge) am Montag, 8.Januar.2001, 10:07.
    Re: mod in loop

      Hallo Werner,

      'syntaktisch in Ordnung' heißt lediglich, daß der Perl-Interpreter in der Lage ist, den vorliegenden Programmcode zu interpretieren, also irgendetwas auszuführen, ohne die ihm vorgegebenen Regeln zu verletzen - es heißt noch lange nicht, daß er auch nur annähernd das tut, was Du Dir beim Programmieren gedacht hast. Insofern kann ich Dir nur raten, probeweise in den Programmcode Ausgaben einzubauen, mit denen Du überprüfen kannst, ob tatsächlich das passiert, was Du Dir gedacht hast.
      Aber Du kannst gerne auf den Insider warten...

      Gruß, Andreas

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Dienstag, 9.Januar.2001, 13:16.
    Re: mod in loop - code ok...

      Doch, der Code ist ok, auch das if (ist ne kurzform das so zu machen), die " um die Variablen kann man aber tatsächlich weglassen, ist aber nicht weiter wichtig...

      Zum Problem: Mmh, muss ich mir mal näher anschauen, liegt wohl am "mod", da scheint es noch Fehler zu geben... ;-(

      ---> Wollts mir grade anschauen, kann es sein, dass Du das jetzt anders gelöst hast, kann da nichts entsprechendes mehr finden...?

     Antworten

    Beitrag von Werner Kremer (3 Beiträge) am Dienstag, 9.Januar.2001, 17:37. WWW: http.//dips.de
    Re: mod in loop - code ok...

      Ich habe die Daten jetzt neu eingestellt. Im Moment löse ich das Problem über eine eigene Ausgabe. Ich würde aber lieber die Lösung über mod durchführen.

      Vielen Dank

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Dienstag, 9.Januar.2001, 18:17.
    Re: mod in loop - code ok... Anderer Ansatz = besser

      Das bei der Ausgabe zu behandeln (also so wie's jetzt ist) ist aber besser... Grund: Sonst wird ja bei jedem Abruf jeder Datensatz gelesen UND modifiziert, egal obs notwendig ist oder nicht (denn beim 2.Mal Lesen sind die Daten ja schon so wie sie sein sollen) - Datensatz-Mdifikation gehört zu den Dingen die am meisten Zeit brauchen (merkt man bei 1 oder 10 oder 50 Datensätzen natürlich nicht, aber es belastet halt den Server unnötig)...

      Wenn Du die Daten immer per Import aufspielst und dann einfach anpassen willst, wäre folgender Ansatz am Besten. Neues Template mit folgendem Code anlegen:

      <loop code=perl db=main_neu sort^=Hersteller range^=0,20>
      $VKPreis = 'auf Anfrage' if $VKPreis == '';
      $orderlink='<a href="http://www.xxxxxxx.com/cf/add.cfm?userid=xxxxxx&product='. convert_url($Artikelbezeichnung) . '&price=' . $VKPreis . '">Ordern</a>';
      

      put ["Ordern","$orderlink","VKPreis","$VKPreis",...(die weiteren felder)...],"main";
      </loop>
      

      Und nach dem Import aufrufen. Damit konvertierst Du alle Felder EINMALIG (vorher main bei Bedarf löschen) - bei der Anzeigeseite brauchst Du das "loop" dann garnicht mehr, sondern nur noch

      <do db=main action=all listfields=Artikelbezeichnung,VKPreis,Ordern sort^=Hersteller,Artikelbezeichnung range^=0,20>
      

      Viel Erfolg!

     Antworten


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