Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Daten aus Array in DB ?

  1. #1
    Registrierter Benutzer
    Registriert seit
    26.03.2002
    Ort
    Berlin
    Beiträge
    114

    Daten aus Array in DB ?

    Hi,

    ich hab ein kleines Problem mit Perl.
    Habe ein HTML Formular, welches die Daten an ein Perl-Script übergibt.
    Ich benutze CGI.pm und greife auf die Daten per
    $p->param("variable");
    zu.
    Das klappt auch gut soweit.
    Jetzt möchte ich diese Daten aber gleich in eine mysql DB speichern.
    Setze ich aber $p->param("variable") in ein Feld von dem INSERT Kommando ein, bekomme ich folgende Fehlermeldung:
    [Sat May 22 00:07:40 2004] [error] syntax error at /DatenI/Homepage/leckerschmecker/web/cgi-bin/hinzufuegen.pl line 62, near ""INSERT INTO t_rezept (kommentar, rezept_name, autor, email, bild) VALUES ('$q->param('kommentar')', '$q->param("rezept_name"

    Also er stört sich an den " (Hochkommas) in der Variable.
    Jetzt hab ich versucht erst alle in ein Array zu schaufeln mit
    @data = $q->param;
    und danach versucht das Array mit $data[0] usw. auszulesen. Das geht auch, nur bekomme ich nur die Feldnamen aus dem Formular, nicht den Inhalt !?

    Wie spreche ich das Array korrekt an? bzw. wie kann ich die Daten direkt in die DB speichern?

    Vielen Dank Gruss Andi

  2. #2
    Registrierter Benutzer
    Registriert seit
    29.12.2001
    Ort
    Berlin
    Beiträge
    231
    Also mal von hinten Anfangen:
    Wen du das Ganze in ein Array willst, dann mach doch mal dies:
    @data=split(/[\=\&]/,$ENV{'QUERY_STRING'});
    Die Ungeraden sind dann die Werte, die Geraden die Feldnamen.
    Geht aber nur bei GET !!!

    Bei POST nimmst du einfach:
    @data=$cgi->Vars;
    Hier sind auch die Ungeraden dann die Werte.


    Aber warum schreibst du die uebergebenen Werte nicht in ein Scalar
    my $variable=$p->param("variable");

    tomes
    Geändert von tomes (22-05-2004 um 16:45 Uhr)
    ************************************************
    Man(n oder Frau) muss nicht alles wissen,
    Man(n oder Frau) muss nur wissen wo es steht !
    ************************************************
    http://www.sandtom.net
    ICQ 176436259

  3. #3
    Registrierter Benutzer
    Registriert seit
    26.03.2002
    Ort
    Berlin
    Beiträge
    114
    Hi tomes,

    an das mit dem Scalar hatte ich überhaupt nicht gedacht...damit gehts wunderbar.
    Nur zum Verständnis nochmal allgemein:
    Ich habe ein Array welches ich durch GET übergebene Werte füllen lasse:
    @data = $q->param;

    Wie kann ich jetzt die einzelnen Felder im Array ansprechen?
    Also Name des Feldes im HTML-Formular und der entsprechende Wert dazu?
    Wenn ich so drauf zugreife:
    print $data[0].":".$data[1] usw. bekomme ich immer nur die Feldnamen aber nicht die Inhalte

    Danke Gruss Andi

  4. #4
    Registrierter Benutzer
    Registriert seit
    29.12.2001
    Ort
    Berlin
    Beiträge
    231
    Ich habe ein Array welches ich durch GET übergebene Werte füllen lasse:
    @data = $q->param;
    the param() method will return the parameter names as a list.
    Deshalb wird es nie so gehen, wie du es versuchst

    Wie kann ich jetzt die einzelnen Felder im Array ansprechen?
    Also ich benutze wie schon in meinem vorigen Beitrag geschrieben, zwei verschiedene Methoden, um die Werte in ein Array oder ein Hash zu bekommen.
    s.o.
    Wobei du $cgi->Vars; bestimmt auch bei GET benutzen kannst. Ich benutze dann immer die env-Variablen (Die braucht man ja auch fuer andere Sachen).

    Die Werte allein, bekommst du mit keiner??? Methode in ein Array. Ausser du schreibst dir eine selber, was den Aufwand nicht lohnen wuerde

    Du hast also immer beide Werte. Entweder speicherst du sie in einem Hash, dann bekommst du:
    %data=(name1 => 'wert1', name2 => 'wert2');
    Oder du speicherst sie in ein Array, dann bekommst du:
    @data=('name1','wert1','name2','wert2');

    Wie du sie dann ansprechen kannst, weist du ja.
    Aber noch einmal kurz:
    Array => $data[$i]
    Hash => $data{'name'}

    tomes
    ************************************************
    Man(n oder Frau) muss nicht alles wissen,
    Man(n oder Frau) muss nur wissen wo es steht !
    ************************************************
    http://www.sandtom.net
    ICQ 176436259

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •