Schrift
[thread]637[/thread]

texfield bei Aktion füllen...: Ist das überhaupt möglich? (Seite 4)



<< |< 1 2 3 4 5 >| >> 42 Einträge, 5 Seiten
renee
 2006-01-10 11:17
#6478 #6478
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wenn ich Dich richtig verstandten habe, dann erstell vor der Datenbankabfrage eine Hashreferenz, die fuer die angegebenen Felder einen Leerstring als Wert hat...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
zipster
 2006-01-10 15:03
#6479 #6479
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Okay...
Dein Codeschnipsel funktioniert perfekt.

Jetzt hat sich aber ein neues Problem aufgetan. :(
Ich habe in meiner Datenbank auch 'ENUM' Felder, dieses möchte ich für ein popup_menu benutzten.

Im Moment tut er nur einen der Werte einfügen das heißt die Auswahlmöglichkeit fehlt.

Wie kann ich das lösen...
nepos
 2006-01-10 17:27
#6480 #6480
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hm, also ein ENUM-Feld ist ja so, dass nur ein Wert drinsteht und dieser aus einer Aufzaehlung von verschiedenen Werten sein kann. Was du brauchst ist die Moeglichkeit, die verschiednen moeglichen Werte eines ENUM-Feldes auszulesen. Da ich aber mit sowas normal nicht arbeite, kann ich dir da nicht genau sagen, wie man an diese Werte rankommt.
zipster
 2006-01-10 17:51
#6481 #6481
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Also wird ein ENUM-Feld nicht mit dem normalen SELECT ausgelesen?!

Ich habe schon versucht was zu ergooglen bin aber leider auf nichts hilfreiches gestoßen.
pq
 2006-01-10 21:32
#6482 #6482
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
in einem ENUM-feld steht immer nur ein wert. die möglichen werte bekommst du
nur über die tabellendefinition, also etwa über [sql]describe tablename[/sql]
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
renee
 2006-01-11 04:36
#6483 #6483
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Evtl. mit der column_info-Methode von DBI arbeiten, die ist - im Gegensatz zu describe tablename - DBMS-Unabhaengig...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
zipster
 2006-01-11 12:21
#6484 #6484
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Okay... erstmal danke für eure hilfe. Habs hinbekommen und es funktioniert vorzüglich *G* (Danke hilfe eines Buchs...)

Wenn es jemand interessiert...
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 if ($f->{art} eq "popup_menu"){
my @values = lies_spalten_werte ($dbh, "kontakt", "$f->{name}");
push(@fields,td (escapeHTML ($bez)),
td ($f->{art} (-name => $f->{name}, -size => $f->{size}, -value => \@values, -default =>$ref->{$f->{name}})));
}
else{
push(@fields,td (escapeHTML ($bez)),
td ($f->{art} (-name => $f->{name}, -size => $f->{size},-value => $ref->{$f->{name}})));
}
...

sub lies_spalten_werte{
my ($dbh, $tabellen_name, $spalten_name) = @_;
my @werte;
@werte = lies_spalten_info (
$dbh, $tabellen_name, $spalten_name);#
# vorne enum( oder set( entfernen
# hinten ) entfernen
$werte[1] =~ s/^[^(]*\((.*)\)$/$1/;
# an Kommas aufspalten,
# Anführungszeichen rund um jedes Wort entfernen
@werte = split (/,/, $werte[1]);
s/^'(.*)'$/$1/foreach (@werte);
return (@werte);
}

sub lies_spalten_info{
my ($dbh, $tabellen_name, $spalten_name) = @_;
my ($esc_spalten_name, @werte);
# für den Fall, dass ein Spaltenname das %-Zeichen
# enthält: % durch \% ersetzten
($esc_spalten_name = $spalten_name) =~ s/([_%])/\\$1/g;
@werte = $dbh->selectrow_array (
"SHOW COLUMNS FROM $tabellen_name
LIKE '$esc_spalten_name'"
);
# @werte or die escapeHTML ("Keine Infos zu $tabellen_name.$spalten_name\n");
return (@werte);
}



Jetzt muss ich nur noch das schreiben in die Datenbank hinbekommen und das schwerste ist geschafft.
pq
 2006-01-11 15:43
#6485 #6485
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
[quote=zipster,11.01.2006, 11:21]
Code: (dl )
1
2
3
4
    ($esc_spalten_name = $spalten_name) =~ s/([_%])/\\$1/g;
   @werte = $dbh->selectrow_array (
           "SHOW COLUMNS FROM $tabellen_name
           LIKE '$esc_spalten_name'"
[/quote]
sowas macht man besser und sicherer mit platzhaltern oder DBI::quote().
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
zipster
 2006-01-11 17:10
#6486 #6486
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
AHA?!

Ich bin froh das ich es überhaupt hinbekommen habe.
Was ist den DBI::QUOTE?
Strat
 2006-01-11 18:23
#6487 #6487
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
ich kenne nur $dbh->quote($string);
wenn z.B. in $string sonderzeichen wie ' sind, dann schlaegt das sql
[sql]SELECT * from table WHERE x ='$string'
[/sql]
fehl. wenn man $string vorher durch quote durchjagt, werden alle gefahrlichen zeichen escaped, und gleich die richtigen anfuehrungszeichen rumgesetzt:
Code: (dl )
1
2
3
my $stringQ = $dbh->quote($string);
my $sql = "SELECT * FROM table WHERE x=$stringQ";
...

alternativ ist es meist einfacher, Platzhalter zu verwenden...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
<< |< 1 2 3 4 5 >| >> 42 Einträge, 5 Seiten



View all threads created 2006-01-05 19:08.