Schrift
[thread]6656[/thread]

if anweisung

Leser: 2


<< |< 1 2 >| >> 17 Einträge, 2 Seiten
Kathrin
 2005-01-24 12:34
#51199 #51199
User since
2004-12-15
158 Artikel
BenutzerIn
[default_avatar]
Moin moin alle miteinander,
bin gerade in ner Zwickmühle... Wie bekomme ich es hin dass in die sub warnung gesprungen wird, wenn keines der drei if anweisungen durchgeführt wurde! So wie unten angegeben funktioniert es zwar, aber ausgabe() wird jedesmal aufgerufen. ist ja logisch.
also quasi entweder ausgabe() oder warnung()
und ich kann ausgabe() auch nicht in die if anweisung schreiben, sonst wird es ja drei mal ausgegeben...
Tja eben eine richtige Zwickmühle ;-)
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
sub tab_einf  {
       &check_doctype();
       my $dbh = DBI->connect($DBN,$DBUSER,$DBPASS) or die $DBI::errstr;

       my $statement_insert="INSERT INTO $TABELLE VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?)";
       my $sth_insert=$dbh->prepare($statement_insert) or die $DBI::errstr;
       if ($head_de) {
               $sth_insert->execute($identnr,'DE',$doctyp,$docname,$head_de,$deutsch,$date,$ersteller,$werk,$check1,$check2,$check3,$check4) or die $DBI::errstr;
       }
       if ($head_en) {
               $sth_insert->execute($identnr,'EN',$doctyp,$docname,$head_en,$englisch,$date,$ersteller,$werk,$check1,$check2,$check3,$check4) or die $DBI::errstr;
       }
       if ($head_fr) {
               $sth_insert->execute($identnr,'FR',$doctyp,$docname,$head_fr,$franz,$date,$ersteller,$werk,$check1,$check2,$check3,$check4) or die $DBI::errstr;
       }

else  {
        &warnung();
             }
               ausgabe();
       $sth_insert->finish();
       $dbh->disconnect();
}
\n\n

<!--EDIT|Kathrin|1106562881-->
ronald
 2005-01-24 13:07
#51200 #51200
User since
2003-08-15
76 Artikel
BenutzerIn
[default_avatar]
Du kannst dir einen Merker definieren, der gesetzt wird sobald du in einem if bist.
GwenDragon
 2005-01-24 13:10
#51201 #51201
User since
2005-01-17
14542 Artikel
Admin1
[Homepage]
user image
Natürlich in die if-Abfrage.

&check_doctype();
$head_de ...

Du prüfst wohl die Sprache des Browser-Users ab, oder?
Es kann ja nicht vorkommen, dass das HTML-Dokument sowohl DEutsch als auch FRancais als auch ENglish kodiert ist, oder?

statt else {...}
warnung() if not ($head_de or $head_en or $head_fr);\n\n

<!--EDIT|GwenDragon|1106565255-->
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

format_c
 2005-01-24 13:13
#51202 #51202
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Soll denn immer nur eine if-Anweisung zutreffen?

Wenn ja dann so ähnlich:
Code: (dl )
1
2
3
4
5
6
7
use strict;

if ($head_de) {do_sth();}
elsif ($head_en) {do_sth_else();}
elsif ($head_fr) {do_sth_gay();}
elsif (!$head_de && !$head_en && !$head_fr) {warnung();}
else {ausgabe();}

Ansonsten:
Code: (dl )
1
2
3
4
5
6
7
use strict;

if ($head_de) {do_sth();}
if ($head_en) {do_sth_else();}
if ($head_fr) {do_sth_gay();}
if (!$head_de && !$head_en && !$head_fr) {warnung();}
else {ausgabe();}


Gruß Alex
Kathrin
 2005-01-24 13:13
#51203 #51203
User since
2004-12-15
158 Artikel
BenutzerIn
[default_avatar]
Nein ist nur ein Eintrag in eine DB in mehreren Sprachen. Es können alle drei auftauchen
Crian
 2005-01-24 13:17
#51204 #51204
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Dann nimm die untere Variante von format_c.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Kathrin
 2005-01-24 13:24
#51205 #51205
User since
2004-12-15
158 Artikel
BenutzerIn
[default_avatar]
genau das ist es was ich gesucht habe alex ;-))
(die untere lösung)
danke dir
polkana
 2005-01-24 14:40
#51206 #51206
User since
2004-06-18
74 Artikel
BenutzerIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
sub tab_einf  {
my ($lng, $head_type) = @_;
my $type = 'DE';
$type = $head_type if ($head_type);
&check_doctype();
my $dbh = DBI->connect($DBN,$DBUSER,$DBPASS) or die $DBI::errstr;

my $statement_insert="INSERT INTO $TABELLE VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?)";
my $sth_insert=$dbh->prepare($statement_insert) or die $DBI::errstr;
$sth_insert->execute($identnr,'$lng',$doctyp,$docname,$type,$type_???, $date,$ersteller,$werk,$check1,$check2,$check3,$check4) or die $DBI::errstr;
ausgabe();
$sth_insert->finish();
$dbh->disconnect();
}

und dann in der code einsetzen nicht einfach
Code: (dl )
tab_einf;
sondern
Code: (dl )
tab_einf($lang, $type);

Hier gewinnt man möglichkeit mehre sparce einfügen und Codeflexibilitet

Alexander.
Kathrin
 2005-01-24 15:00
#51207 #51207
User since
2004-12-15
158 Artikel
BenutzerIn
[default_avatar]
hab mal bisschen rumgespielt :D
ich wollte nen merker setzen, wenn die if anweisung durchgeführt wird.
doch irgend was hab ich falsch gemacht...
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
sub tab_einf  {
       &check_doctype();
       my $dbh = DBI->connect($DBN,$DBUSER,$DBPASS) or die $DBI::errstr;

       my $statement_insert="INSERT INTO $TABELLE VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?)";
       my $sth_insert=$dbh->prepare($statement_insert) or die $DBI::errstr;
       my $de="0";
       my $en="0";
       my $fr="0";

     if ($head_de && $deutsch && ($check1 || $check2 || $check3 ||$check4) && $ersteller && $werk)
       {
               do_sth1();
               $de="1";
       }
    if ($head_en && $englisch && ($check1 || $check2 || $check3 ||$check4) && ersteller && $werk)
       {
                   do_sth2();
                   $en="1";
       }
       if ($head_fr && $franz && ($check1 || $check2 || $check3 ||$check4) && $ersteller && $werk)
       {
                     $do_sth3();
                     $fr="1";
       }
       if ($de="0" && $en="0" && $fr="0")  {          #Zeile 171
               &warnung();
       }
       else  {
               &ausgabe();
       }
       $sth_insert->finish();
       $dbh->disconnect();
       }

es kommt immer folgende fehlermeldung: Software error:
Can't modify constant item in scalar assignment at /usr/local/httpd/cgi-bin/frontl.cgi line 171, near ""0")  "
Execution of /usr/local/httpd/cgi-bin/frontl.cgi aborted due to compilation errors.


EDIT: alles klappt wunderbar, bis auf die ausgabe von &ausgabe und &warnung...
ich will eigentlich nur, dass wenn nicht in die if anweisungen gesprungen wird, warnung() ausgegeben wird. und wenn in irgend eine if anweisung gesprungen wird, sei es auch nur eine, dann soll ausgabe() ausgegeben werden\n\n

<!--EDIT|Kathrin|1106571810-->
renee
 2005-01-24 15:07
#51208 #51208
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
1. Vergleiche mit Zahlen macht man mit == (also if $de == 0). Du versuchst eine Zuweisung zu machen. Das klappt nicht...
1 a) Vergleiche mit Strings macht man mit eq...
2. nimm doch nur einen Merker:
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
sub tab_einf  {
      &check_doctype();
      my $dbh = DBI->connect($DBN,$DBUSER,$DBPASS) or die $DBI::errstr;

      my $statement_insert="INSERT INTO $TABELLE VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?)";
      my $sth_insert=$dbh->prepare($statement_insert) or die $DBI::errstr;
      my $merker = 0;

    if ($head_de && $deutsch && ($check1 || $check2 || $check3 ||$check4) && $ersteller && $werk)
      {
              do_sth1();
              $merker = 1;
      }
   if ($head_en && $englisch && ($check1 || $check2 || $check3 ||$check4) && ersteller && $werk)
      {
                  do_sth2();
                  $merker = 1;
      }
      if ($head_fr && $franz && ($check1 || $check2 || $check3 ||$check4) && $ersteller && $werk)
      {
                    $do_sth3();
                    $merker = 1;
      }
      if ($merker == 0)  {          
              &warnung();
      }
      else  {
              &ausgabe();
      }
      $sth_insert->finish();
      $dbh->disconnect();
      }
\n\n

<!--EDIT|renee|1106572078-->
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/
<< |< 1 2 >| >> 17 Einträge, 2 Seiten



View all threads created 2005-01-24 12:34.