hilfdirselbst.ch
Facebook Twitter gamper-media

"Geht nicht" ist keine gültige Fehlermeldung!

r a c
Beiträge: 955
17. Jun 2002, 20:12
Beitrag #1 von 13
Bewertung:
(1987 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

werte zuordnen (oder so)


Hallo,
ich verstehe leider noch nichts von Perl.
Ich habe erst gerade ein Formular-Scribt installiert.
Nun mochte ich bei der Danke-Seite, die das Scribt ausgibt, einen der eingegebenen Werte zuordnen.
Kurz: Ich will das es Danke Hans, statt nur Danke sagt.

print "<b>Danke $Namefield[1]:</b><br><br><br><br>\n";

Es ordnen nun Namefield1=Vorname zu. Aber ich möchte den Wert von Vorname haben.

Wie mache ich das? Top
 
X
r a c
Beiträge: 955
18. Jun 2002, 12:32
Beitrag #2 von 13
Beitrag ID: #5517
Bewertung:
(1987 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

werte zuordnen (oder so)


Halllo
ich hab's selbst rausgefunden:

$in{$Namefield[1]}

gibt den wert des 1.namefied (statt nur den namen) aus.
Sorry, das ich mich in der Frage nicht so klahr ausdrücken konnte.

als Antwort auf: [#5463] Top
 
SabineP  M 
Beiträge: 7586
18. Jun 2002, 12:33
Beitrag #3 von 13
Beitrag ID: #5519
Bewertung:
(1987 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

werte zuordnen (oder so)


Zitat:
print "<b>Danke $Namefield[1]:</b><br><br><br><br>n";
Es ordnen nun Namefield1=Vorname zu. Aber ich möchte den Wert von Vorname haben.
Du meinst sicher allform.pl von xwolf.
Den Inhalt kannst Du so ausgeben:
print "<b>Danke $in{$Namefield[1]}</b>\n";

Grüße von Sabine
als Antwort auf: [#5463] Top
 
SabineP  M 
Beiträge: 7586
18. Jun 2002, 12:34
Beitrag #4 von 13
Beitrag ID: #5520
Bewertung:
(1987 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

werte zuordnen (oder so)


Das war ja fast gleichzeitig
Dummerweise klappts nur mit dem ersten Feld.
Ich schau noch mal nach, wie man jedes Feld einzeln ausgeben kann.

[ Diese Nachricht wurde geändert von: SabineP am 2002-06-18 12:36 ]
als Antwort auf: [#5463] Top
 
r a c
Beiträge: 955
18. Jun 2002, 14:27
Beitrag #5 von 13
Beitrag ID: #5536
Bewertung:
(1987 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

werte zuordnen (oder so)


Danke Sabine,
Ja es geht immer noch um allform.pl
Ich will nur ein Feld ausgeben (das habe ich schon angepasst). Im Scribt ist schon eine Seite vorgesehen, die alle Werte zurück gibt (da habe ich das $in gefunden), die gefällt mir aber nicht so gut.
Auf meinem eigenen print " ...html...";-erguss brauche ich nur einen Wert. Alles Bestens

Aber ganz restlos glücklich bin ich noch nicht. Weil ich in die .html Seite mit dem Formular einen hiddentag "mailto" und dann meine mailadresse angeben muss.
Bis jetzt habe ich alle mailto's maskiert (SPAM) und jetzt werde ich von allform überlistet.
Ich würde gerne:
<input type="hidden" name="mailto" value="1" border="0">
im Formular haben und dann im Scribt der 1 die Adresse zuordnen. So was macht es schon mit dem dateiname. Ich weiss noch nicht, ob ich so was einfach mit copie/past und ein wenig anpassen hinbringe.



als Antwort auf: [#5463] Top
 
SabineP  M 
Beiträge: 7586
18. Jun 2002, 15:34
Beitrag #6 von 13
Beitrag ID: #5544
Bewertung:
(1987 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

werte zuordnen (oder so)


Zitat:
Aber ganz restlos glücklich bin ich noch nicht. Weil ich in die .html Seite mit dem Formular einen hiddentag "mailto" und dann meine mailadresse angeben muss.
Das finde ich auch nicht so besonders gut.
Ich habe die Sache nun so gelöst:

Das hidden-Feld mit der E-Mail-Adresse aus dem Formular erstmal komplett löschen.

Die Zeile 72 in der allform.pl mit dem Gartenzaun auskommentieren

# $mailto=$in{'mailto'};

Ganz oben, wo die Variablen definiert werden die Variable $mailto hinzufügen, also ungefähr an dieser Stelle

$mailprog = '/usr/sbin/sendmail';
# The location of sendmail

$mailto= "name\@domain.de" ;

Jetzt klappt das ohne hidden-Feld im Formular.

Grüße von Sabine
als Antwort auf: [#5463] Top
 
r a c
Beiträge: 955
18. Jun 2002, 16:45
Beitrag #7 von 13
Beitrag ID: #5550
Bewertung:
(1987 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

werte zuordnen (oder so)


funktioniert prima und ging ganz schnell!
Danke
als Antwort auf: [#5463] Top
 
SabineP  M 
Beiträge: 7586
18. Jun 2002, 19:45
Beitrag #8 von 13
Beitrag ID: #5562
Bewertung:
(1987 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

werte zuordnen (oder so)


Hab mich nochmal schlau gemacht bei oesi50 wie man die einzelnen Formularfelder ausgeben kann.
Wenn bei $in{$Namefield[1]} wirklich das erste Feld herauskommt, dann ist das reiner Zufall und nicht sicher. Ich hatte mir auch schon gedacht, daß da etwas nicht stimmt weil das mit dem zweiten Feld nicht geklappt hat.
So ist es richtig:
print "Danke $in{'Vorname'} $in{'Nachname'}\n";

Grüße von Sabine
als Antwort auf: [#5463] Top
 
r a c
Beiträge: 955
19. Jun 2002, 15:03
Beitrag #9 von 13
Beitrag ID: #5618
Bewertung:
(1987 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

werte zuordnen (oder so)


Hallo Sabine,
Hab's gleich ausprobiert. Klappt sehr gut.

ps. Kann die Reihenfolge, wie die Variablen den Namefield's zugeordnet werden, beeinflusst werden?

Im Moment ist das alphabetisch. Könnte es auch die Reihenfolge sein, wie die Daten an's Scribt übergeben werden? So dass Namefield0 immer auch das erste Feld im Formular ist und so weiter. Es geht jetzt nicht mehr um die Danke-Seite, sondern das Mail, dass verschickt wird.
als Antwort auf: [#5463] Top
 
SabineP  M 
Beiträge: 7586
20. Jun 2002, 11:34
Beitrag #10 von 13
Beitrag ID: #5679
Bewertung:
(1987 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

werte zuordnen (oder so)


Hallo r a c,
ich habe jetzt mal die allform.pl so umgeschrieben, damit Du die Reihenfolge der Felder in der Mail selbst bestimmen kannst. Dazu muß ab Zeile 317 folgendes geändert werden:

# {print MAIL "$Namefield[$i] : $in{$Namefield[$i]}\n";}
{"$Namefield[$i] $in{$Namefield[$i]}\n";}

}
print MAIL "Vorname : $in{'Vorname'}\n";
print MAIL "Nachname : $in{'Nachname'}\n";
print MAIL "Mail : $in{'Mail'}\n";

print MAIL "------------------------------------------------------\n";
close (MAIL);
}
############################################################

Das Beispiel bezieht sich auf ein Formular mit den Feldnamen Nachname, Vorname und Mail. Grüße von Sabine
als Antwort auf: [#5463] Top
 
r a c
Beiträge: 955
20. Jun 2002, 16:48
Beitrag #11 von 13
Beitrag ID: #5709
Bewertung:
(1987 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

werte zuordnen (oder so)


Hallo Sabine,
Danke für Deine Vorschlag. Ich benutze das Scribt für verschiedene Formulare, da kommt jedesmal "Nachname", "Vorname" und "e-mail" vor, aber auch noch anderes (jeweils unterschiedlich).

Meine Versuche bisher:
1) kleiner Beschiss mit "1 Nachname", "2 Vorname" etc. Das hat sehr gut funktioniert!!! Aber ich habe dann bei SELFHTML gelesen: keine Zahlen am Anfang, keine Leerzeichen. Schade. Aber ich möchte schon eine "saubere Lösung".
2) ich habe die Kodierung auf "multipart/form-data" eingestellt: Hatte keine sichbare Veränderung zu standart oder gar nichts.
3) ich habe bei 370
sub MakeNameField {
my ($out, $key);
$UseData =0;
$i=0;
foreach $key (sort keys(%in)) {
foreach (split("\0", $in{$key})) {
if (($key eq 'filename') || ($key eq 'bodytag')
|| ($key eq 'title') || ($key eq 'mailto')
|| ($key eq 'homelocation') || ($key eq 'url')
|| ($key eq 'needed_parameters')) {}
else {
$Namefield[$i++]=$key;
$Checkfield{$key}=0;
}
}
}
$UseData=$#Namefield + 1;
}

das "sort" rausgenommen. Das hat die Reihenfolge verändert, allerdings nicht wie gewünscht.
Ich suche also einen Befehl "sort_wie_es_reinkommt". Das müsste es doch geben?

und wenn doch, nicht bliebe noch
4) Dein Vorschlag, aber anschliesend noch print den rest, mit Ausnahmen. Etwa so:
print MAIL "------------------------------------------------------\n";

print MAIL "Vorname : $in{'Vorname'}\n";
print MAIL "Nachname : $in{'Nachname'}\n";
print MAIL "Mail : $in{'Mail'}\n";

for ($i=0;$i<=$#Namefield;$i++) {
if (($Namefield[$i] ne 'filename')
&& ($Namefield[$i] ne 'bodytag')
&& ($Namefield[$i] ne 'title')
&& ($Namefield[$i] ne 'mailto')
&& ($Namefield[$i] ne 'needed_parameters')
&& ($Namefield[$i] ne 'homelocation')
&& ($Namefield[$i] ne 'mailinfotext')
&& ($Namefield[$i] ne 'url'))
{print MAIL "$Namefield[$i] : $in{$Namefield[$i]}\n";}
}
print MAIL "------------------------------------------------------\n";
close (MAIL);
Dann wäre der Anfang schön sortiert und der Rest kommt halt irgendwie.

Am meisste hoffe ich auf einen anderen "sort"-Befehl. Ich müsste nur ein Wort ändern und alles wär Bestens.
als Antwort auf: [#5463] Top
 
SabineP  M 
Beiträge: 7586
20. Jun 2002, 18:47
Beitrag #12 von 13
Beitrag ID: #5722
Bewertung:
(1987 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

werte zuordnen (oder so)


!-- BBCode Quote Start -->
Zitat:
Meine Versuche bisher:
1) kleiner Beschiss mit "1 Nachname", "2 Vorname" etc. Das hat sehr gut funktioniert!!! Aber ich habe dann bei SELFHTML gelesen: keine Zahlen am Anfang, keine Leerzeichen. Schade. Aber ich möchte schon eine "saubere Lösung".
Dann verwende doch einfach für die Feldnamen:
avorname, bnachname, cmail, dirgendwas
oder
feld1, feld2, feld3, feld4
Das Skript sortiert die Felder nach dem Alphabet
Zitat:
Ich suche also einen Befehl "sort_wie_es_reinkommt".
Das müsste es doch geben?
Nein das gibts nicht. Die Felder und der Inhalt der Felder befinden sich in einem Hash. Das kannst Du Dir vorstellen wie eine Buchstabensuppe. Feldname und Inhalt kleben dabei jedoch noch zusammen.

Code:

print MAIL "------------------------------------------------------\n";
print MAIL "Vorname : $in{'Vorname'}\n";
print MAIL "Nachname : $in{'Nachname'}\n";
print MAIL "Mail : $in{'Mail'}\n";

for ($i=0;$i<=$#Namefield;$i++) {
if (($Namefield[$i] ne 'filename')
&& ($Namefield[$i] ne 'bodytag')
&& ($Namefield[$i] ne 'title')
&& ($Namefield[$i] ne 'mailto')
&& ($Namefield[$i] ne 'needed_parameters')
&& ($Namefield[$i] ne 'homelocation')
&& ($Namefield[$i] ne 'mailinfotext')
&& ($Namefield[$i] ne 'url'))
{print MAIL "$Namefield[$i] : $in{$Namefield[$i]}\n";}
}
print MAIL "------------------------------------------------------\n";
close (MAIL);



So erhältst Du mit Sicherheit einen Error 500.

Ich könnte ja dem xwolf mal eine Mail schicken.
Der Thread wird ihn vielleicht interessieren.
Möglicherweise hat er ja sogar noch einen Tip.

Grüße von Sabine
als Antwort auf: [#5463] Top
 
r a c
Beiträge: 955
21. Jun 2002, 01:35
Beitrag #13 von 13
Beitrag ID: #5735
Bewertung:
(1987 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

werte zuordnen (oder so)


Hallo Sabine,
ich lass es!
Das ganze ist ja intern, nur ich seh das Mail.

Wenn ich die Felder so benenne, dass daraus eine Reihenfolge entsteht (wie feld1, feld2.... aNachname, bVorname, ce-mail...) nehme ich mir die Möglichkeit eine Feldprüfung mit dem Scribt zu machen. Die Feldnamen werden dann in der Fehlermeldung ausgegeben, was gegebenenfalls unschön aussehen könnte. So wäre es dann keine Verbesserung.

Nun ich kann damit gut leben.
Es läuft (das wichtigste!). Es gibt 'ne persönliche Danke-Seite aus (find ich toll).

Nochmals Danke
Grüsse r a c
als Antwort auf: [#5463] Top
 
X