erst bei input skript starten
HerrGute
- perl
hi!!!
Wa ihr mir letztens so super geholfen habt dacht ich ich wend mich wieder an euch hehe.
Wusste nicht wo meine frage nun hingehört in die kategorie perl oder html aber ich frag einfach mal hier!
Also ich habe ein programm geschrieben und sobald man auf einen link klickt sollte erst das skript starten aber da die variable schon anfangs deklariert wird ist eine if abfrage unsinn und anders weiss ich es nicht hier ein kleiner codeschnipsel zur verständlichkeit
BEISPIEL EINS:
use CGI;
my $variable = new CGI;
my $ausgabe = $cgi->param("ausgabe");
print '<input type=submit name=ausgabe>';
Jetzt sollte geprüft werden ob submit angeklickt wurde wenn ja dann erst das skript starten wenn nein dann NICHTS ausgeben wie mache ich das?
BEISPIEL ZWEI:
use CGI;
my $variable = new CGI;
my $ausgabe = $cgi->param("ausgabe");
print '<input type=button name=ausgabe>';
Das klappt auch nicht????
Wie kann ich das machen???
DANKESCHÖN!!!!!
mfg Herr Gute
Mahlzeit HerrGute,
use CGI;
my $variable = new CGI;
my $ausgabe = $cgi->param("ausgabe");print '<input type=submit name=ausgabe>';
Jetzt sollte geprüft werden ob submit angeklickt wurde wenn ja dann erst das skript starten wenn nein dann NICHTS ausgeben wie mache ich das?
Informiere Dich über die Grundlagen von HTTP, Client-Server-Architektur und insbesondere, wann ein (Perl-)Skript auf dem Webserver ausgeführt wird, was es als Rückgabe an den Browser schickt, was der erwartet und was er insbesondere NICHT kann ...
MfG,
EKKi
Also ich habe ein programm geschrieben und sobald man auf einen link klickt sollte erst das skript starten aber da die variable schon anfangs deklariert wird ist eine if abfrage unsinn und anders weiss ich es nicht hier ein kleiner codeschnipsel zur verständlichkeit
BEISPIEL EINS:
use CGI;
my $variable = new CGI;
my $ausgabe = $cgi->param("ausgabe");
print '<input type=submit name=ausgabe>';
Jetzt sollte geprüft werden ob submit angeklickt wurde wenn ja dann erst das skript starten wenn nein dann NICHTS ausgeben wie mache ich das?
BEISPIEL ZWEI:
use CGI;
my $variable = new CGI;
my $ausgabe = $cgi->param("ausgabe");
print '<input type=button name=ausgabe>';Das klappt auch nicht????
Wie kann ich das machen???
Ein Script besteht bei mir aus verschiedenen Schritten
Initialisierung
Daten einlesen und validieren
Aufgrund der Daten entscheiden, welche der folgenden Subfunktionen ausgeführt wird.
Das ist ein ganz kurzer aber wichtiger Programm-Abschnitt
Abgeschlossen durch eine Aufräum-Aktion
Dann folgen die langen Listen von Subroutinen.
z.B.
Formularausgabe
Aufgabe 1
Aufgabe 2
------------------
In deinem Beispiel geht es darum, dass du ein Formular nur dann bereitstellst, wenn die Bedingungen stimmen.
Wenn durch Submit ein param=wert übertragen wird, welchen du mit einer Bestimmten Aktion assoziieren kannst, dann kannst du auf dieser Grundlage eine Subroutine ausführen.
Ich gebe Formularen meist ein hidden Feld mit, dessen parameter und wert mir sagt, welche Funktion erwünscht ist.
<input type=hidden name=task value=memberlist>
Es kommt dann am server an
task=memberlist
( oder im Fall des CGI Moduls
my $user{task} = $cgi->param("task");
)
Und ich weiss dann, dass die anderen Angaben in diesem Formular dazu dienen, eine Mitgliederliste anzuzeigen nach bestimmten Filterkriterien (z.B.)
In der oben genannten Weiche habe ich:
if( $user{task} = memberlist ){ memberlist(); }
(%user ist bei mir der hash, der alle Userdaten und die Bereinigeten Userinputs enthält.)
Es gibt viele Wege.
mfg Beat
Hi!!!!
Danke für die klasse Antwort hat mir wirklich sehr sehr viel weitergeholfen.
aber jetzt hab ich eine andere frage: wie komm ich an einen value wert ran der vom benutzer eingegeben wird? also
<input type=text name=eingabe>
<input type=submit>
wie komm ich an den wert von text ran also woher kann ich wissen was er eingibt? habe mich durch google gelesen aber nur lösungen mit JS gefunden und ich möchte das aber so gerne in PERL lösen.
DANKE!!!!!
mfg Herr Gute
wie komm ich an den wert von text ran also woher kann ich wissen was er eingibt?
http://perldoc.perl.org/CGI.html#FETCHING-THE-VALUE-OR-VALUES-OF-A-SINGLE-NAMED-PARAMETER%3A
Siechfred
Hi!!!!!!!
Erstmal besten dank an dich aber ich werde aus dem link nicht schlau (vielleicht weil ich kein englisch in der schule hatte?).
dort steht beschrieben wie man eine value setzt das kann ich ja aber
use CGI;
$cgi = new CGI;
$eingabe = $cgi->param("eingabe");
$varvalue = $cgi->param("valuename"); <-- Hier ist Value "valuename" also wurde schon deklariert
<input type=text name=eingabe> <-- Hier sollte vom user SELBST ein value angelegt werden und diesen möcht ich auslesen.
würd ich schreiben
<input type=text name=eingabe value=valuename> <-- da wäre ja dann das ganze skript über das value "valuename".
nochmal zum verständniss:
Ich habe eine Datei die gefolgt aufgebaut ist
(datum uhrzeit tätigkeit) also zum beispiel:
Do 18.09.08,14.00,putzen
Do 18.09.08,19.40,forum schreiben
Do 18.09.08,22.00,schlafen
Fri 19.09.08,05.00,aufstehen
und jetzt möchte ich das man in das eingabefeld <input> ein datum reinschreiben kann also zum beispiel Fr 19.09.08 dann auf submit klicken und dann will ich alles ausgeben was ich an dem tag gemacht habe.
die ausgabe ist kein problem das kann ich inzwischen alles aber wie kann ich den input mit dem tag vergleichen wenn ich nicht an den input hinkomme?
tut mir wirklich leid wenn der link mir bei dem problem helfen sollte aber ich finde da echt keine lösung!!!!!!!
habt gnade ;-) DANKE !!!!!!!!
Hallo HerrGute!
Vorab: Du solltest Dich für einen Nick entscheiden, Sockenpuppen werden hier nicht gerne gesehen.
use CGI;
$cgi = new CGI;
$eingabe = $cgi->param("eingabe");
$varvalue = $cgi->param("valuename"); <-- Hier ist Value "valuename" also wurde schon deklariert<input type=text name=eingabe> <-- Hier sollte vom user SELBST ein value angelegt werden und diesen möcht ich auslesen.
Ja, was stellst Du mit dem Formular, in welchem dieses Inputfeld steht, denn an? Das submittest Du doch auf irgendeine Weise oder? Wenn Du im Attribut »action« die URI Deines CGI-Skripts notiert hast, und diese enthält diese Anweisung:
$eingabe = $cgi->param("eingabe");
dann enthält $eingabe eben den Inhalt des Textfeldes.
<input type=text name=eingabe value=valuename> <-- da wäre ja dann das ganze skript über das value "valuename".
Das ist Quatsch, erst wäre das Feld vorbelegt (eben mit dem Wert »valuename«, dann würde $eingabe eben »valuename« enthalten (es sein denn, der User ist so schlau es zu überschreiben), und Deine Variable $valuename ist eh sinnlos.
und jetzt möchte ich das man in das eingabefeld <input> ein datum reinschreiben kann also zum beispiel Fr 19.09.08 dann auf submit klicken und dann will ich alles ausgeben was ich an dem tag gemacht habe.
Dann tu das. Submitte endlich Dein Form an Dein Skript und lass Dir $eingabe ausgeben (klingt gut: eingabe ausgeben *g*).
Viele Grüße aus Frankfurt/Main,
Patrick
Hi!!!!
erstmal danke für deine antwort ich bin bisschen blöd heute hab ich gerade gemerkt des ist doch ganz leicht hehe aber zuerst würd ich gerne wissen was eine sockenpuppe ist??? denkst du ich wechsel meine namen immer oder wie darf ich das verstehen???
tut mir leid aber ich mag solche unterstellungen nicht!!!!
ich hab in meinem ersten beitrag doch geschrieben das ihr mir letztes mal so gut geholfen habt und auch wen ihr hier die suche benutzt werdet ihr sehen das es schon einen oder zwei beiträge von mir gibt!!!
Da heiss ich wie im richtigen leben HerrGute manchmal mit leerzeichen zwischen herr gute und manchmal ohne. aber wie kommst du darauf????
also zurück zu meinem problem ich hab eine feststellung gemacht und bin erstaunt darüber wie dumm ich doch bin hehhe
ich habe folgenden aufbau gehabt
#!/usr/bin/perl
use CGI;
my $cgi = new CGI;
my $eingabe = $cgi->param("eingabe");
sub eingabe {
print "Datum eingeben:";
print "<form action=prog.cgi>";
print "<input type=text name=eingabe>";
print "<input type=submit>";
print "</form>";
print "Datum ist $eingabe";
}
jetzt hab ich mir gedacht ich lass die subrutine mal weg und probiers ohne und sie da es hat geklappt!!!
aber warum klappt es nicht in der subrutine? Wie kann ich das machen?
DANKE !!!!! und danke für das beschuldigen von oben hehehe
mfg Herr Gute
Hallo HerrGute!
erstmal danke für deine antwort ich bin bisschen blöd heute hab ich gerade gemerkt des ist doch ganz leicht hehe aber zuerst würd ich gerne wissen was eine sockenpuppe ist??? denkst du ich wechsel meine namen immer oder wie darf ich das verstehen???
tut mir leid aber ich mag solche unterstellungen nicht!!!!
Durch einen Vergleich des Schreibstils des OPs in diesem Thread mit Deinem Schreibstil hier einerseits, dank meiner Eigenschaft als Mitmoderator andererseits, liegt für mich der Verdacht nahe.
Was eine Sockenpuppe ist, verrät Dir Google, eher gesagt: Wikipedia.
Da heiss ich wie im richtigen leben HerrGute manchmal mit leerzeichen zwischen herr gute und manchmal ohne.
Durch eine Registrierung (die aber keineswegs Pflicht ist) kannst Du Deine eigene Forumsansicht so einstellen, dass bestimmte Felder, unter anderem das Feld »Name«, vorbelegt sind, was Tippfehler in diesen Feldern schon mal vermeidet.
#!/usr/bin/perl
use CGI;
my $cgi = new CGI;
my $eingabe = $cgi->param("eingabe");sub eingabe {
print "Datum eingeben:";
print "<form action=prog.cgi>";
print "<input type=text name=eingabe>";
print "<input type=submit>";
print "</form>";print "Datum ist $eingabe";
}
aber warum klappt es nicht in der subrutine? Wie kann ich das machen?
$eingabe ist erst dann mit einem Wert belegt, wenn das Formular abgesendet wird. Beim ersten Aufruf des Skripts ist es natürlich leer - es sei denn, Du rufst das erste Mal das Skript mit einem Parameter in der URI - wie folgt - auf:
http://example.com/cgi-bin/prog.cgi?eingabe=was_auch_immer
Viele Grüße aus Frankfurt/Main,
Patrick
sub eingabe {
print "Datum eingeben:";
print "<form action=prog.cgi>";
print "<input type=text name=eingabe>";
print "<input type=submit>";
print "</form>";print "Datum ist $eingabe";
}
Bitte beschäftige Dich mit den Grundlagen! Dir fehlen offenkundig grundlegende Kenntnisse über das HTTP-Protokoll und über das Client-Server-Modell. Wenn Du das verstanden hast, schau Dir die Funktionsweise eines Affenformulars an, das ist genau das, was Du suchst.
Siechfred