Chris Weber: Wenn Datei leer ist, etc.

Hallo mal wieder,

ich bin gerade dabei ein ganz simples Warenkorbsystem mit Perl zu programmieren.  Das ganze funktionniert in etwa so (is' aber noch extrem simpel):

1. Auf der Hauptseite ist ein Texteingabefeld.  Wenn man
   da z.B. Auto eingibt und das ganze abschickt wird vom
   CGI-Programm eine Textdatei geöffnet, Auto hineinge-
   schrieben, die Datei geschlossen, und "Danke" auf dem
   Bildschirm ausgegeben.  Unter dem "Danke" ist dann
   ein Link zum Warenkorb, also quasi zu einem weiteren
   CGI-Script, das den Inhalt der Texdatei ausgibt.

Jetzt zu meinen Fragen:

1. Wie kann ich letzteres Script checken lassen, ob nix
   in der Datei steht und dann einen Text wie:  "Nix
   da!" ausgibt?

2. Ich habe es geschafft, daß die gekauften Gegenstände
   untereinander in die Textdatei geschrieben werden,
   aber ich kann sie nicht untereinander wieder in einer
   HTML-Datei ausgeben.  Wie schaffe ich das?

3. Das mit dem Texteingabefeld, war nur zu experimentier
   zwecken gedacht, wie kann ich z.B. ein Image einbauen
   welches, wenn man es anklickt wird einen
   entsprechenden Text in die Datei schreibt.  Geht das
   auch mit Checkboxen neben den Bildern?  Wenn ja wie?

Ich wäre wirklich über jede Hilfe dankbar.

Chris

    1. Ich habe es geschafft, daß die gekauften Gegenstände
         untereinander in die Textdatei geschrieben werden,
         aber ich kann sie nicht untereinander wieder in einer
         HTML-Datei ausgeben.  Wie schaffe ich das?

    print FILE "$variable\n";
    print FILE "<br>\n";
    print FILE "$variable2\n";
    print FILE "<br>\n";

    oder alle möglichen varianten davon :-)

    1. Das mit dem Texteingabefeld, war nur zu >experimentier
         zwecken gedacht, wie kann ich z.B. ein Image >einbauen
         welches, wenn man es anklickt wird einen
         entsprechenden Text in die Datei schreibt.  Geht das
         auch mit Checkboxen neben den Bildern?  Wenn ja wie?

    mmhh <a href="/cgi-bin/skript.pl?AUTO"><img src="auto.gif"></a>

    könnt mir vorstellen so, das skript muß dann halt den ausruf auswerten damit du weißt was derjenige geklickt ("gekauft") hat.

    zu den andern Fragen kann dir sicher jemand anders helfen, soweit bin ich mit meinen Perl erfahrungen noch nciht :-)

    Ciao
    Ludwig

    1. Hallo Ludwig,

      print FILE "$variable\n";
      print FILE "
      \n";
      print FILE "$variable2\n";
      print FILE "
      \n";

      erst schon mal danke, aber was meinst Du mit $variable und $variable2 (vor allem die 2 hat mich verwirrt)?

      Chris

      1. Hallo Ludwig,

        print FILE "$variable\n";
        print FILE "
        \n";
        print FILE "$variable2\n";
        print FILE "
        \n";

        erst schon mal danke, aber was meinst Du mit $variable und $variable2 (vor allem die 2 hat mich verwirrt)?

        Chris

        zb. variable1 = die produkte
        variable2 = "sie möchten insgesagmt $count Produkte kaufen";
        ohne <br> wirst jedenfalls in keinem HTML document einen umbruch bekommen. und um das geht es dir doch oder?

        Ciao

  1. Hi,

    1. Wie kann ich letzteres Script checken lassen, ob nix
         in der Datei steht und dann einen Text wie:  "Nix
         da!" ausgibt?

    perldoc -f -X sagt:
    -e  File exists.
    -z  File has zero size.
    -s  File has nonzero size (returns size).

    Das heißt:
    if (-e "/pfad/zur/datei.txt") { print "Datei existiert"; }
    if (-z "/pfad/zur/datei.txt") { print "Datei ist leer"; } # schon ein "\n" verhindert dies!
    else { print "Datei ist " . (-s "/pfad/zur/datei") . " Bytes groß"; }

    1. Ich habe es geschafft, daß die gekauften Gegenstände
         untereinander in die Textdatei geschrieben werden,
         aber ich kann sie nicht untereinander wieder in einer
         HTML-Datei ausgeben.  Wie schaffe ich das?

    Du hast die gekauften Gegenstände z.B. in einem @array. Dann gibst Du aus:
    foreach $foo (@array) { print "$foo<BR>\n"; }

    1. Das mit dem Texteingabefeld, war nur zu experimentier
         zwecken gedacht, wie kann ich z.B. ein Image einbauen
         welches, wenn man es anklickt wird einen
         entsprechenden Text in die Datei schreibt.

    Wie Ludwig schon sagt, geht das wohl am besten, indem Du jedes Image mit einem Link auf ein Script versiehst. Das Script schreibt dann (je nach übergebenen Parameter) eine Zeile in eine Datei.

    »»  Geht das auch mit Checkboxen neben den Bildern?  Wenn ja wie?

    Ja, wenn Du die Grafiken innerhalb eines Formulars haben willst, ist das kein Problem. Du schreibst z.B.:
    <input type="checkbox" name="box001"><img ...>
    Ist die Checkbox markiert, wird im Script der Parameter "box001=on" auszulesen sein.

    Cheatah

    1. Hallo Cheatah,

      Du hast die gekauften Gegenstände z.B. in einem @array. Dann gibst Du aus:
      foreach $foo (@array) { print "$foo<BR>\n"; }

      Und wie schaffe ich die "gekauften" Gegestände in ein Array abzulegen?

      Chris

      1. Hi Chris,

        Du hast die gekauften Gegenstände z.B. in einem @array. Dann gibst Du aus:
        foreach $foo (@array) { print "$foo<BR>\n"; }

        Und wie schaffe ich die "gekauften" Gegestände in ein Array abzulegen?

        Gegenfrage: Wie hast Du's geschafft, sie in eine Datei zu schreiben? Mit dieser Basis sollte es eigentlich kein Problem sein. Ansonsten kannst Du einfach die Datei einlesen:

        open(READ,"/pfad/zur/datei.txt");
        @array = <READ>;
        close(READ);

        Cheatah