Schrift
[thread]6682[/thread]

OR / AND anwendung

Leser: 1


<< |< 1 2 >| >> 17 Einträge, 2 Seiten
Kathrin
 2005-02-02 12:46
#51506 #51506
User since
2004-12-15
158 Artikel
BenutzerIn
[default_avatar]
Hi Leute,
ich bin wieder in der Zwickmühle angekommen... Jetzt brauch ich richtige hilfe ;-)
Und zwar soll es speihern, wenn:
$head_de UND $deutsch und der rest angegeben wurde
$head_en UND $englisch und der rest angegeben wurde
$head_fr UND $franz und der rest angegeben wurde

bis heir her klappt ja alles wunderbar...

doch wenn ich z.B. $head_de und $deutsch angebe, und z.B. $head_en aber kein $englisch, dann sollte normal ne fehlermeldung kommen, dass kein $englisch angegeben wurde.

doch es wird einfach nur $head_de mit $deutsch gespeichert und $head_en wird dann nicht berücksichtigt...

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if ($head_de and $deutsch and ($check1 or $check2 or $check3 or $check4) and $ersteller and $werk)
   {
      ....
      $merker = 1;
   }
if ($head_en and $englisch and ($check1 or $check2 or $check3 or $check4) and $ersteller and $werk)
   {
    .....
     $merker = 1;
    }
if ($head_fr and $franz and ($check1 or $check2 or $check3 or $check4) and $ersteller and $werk)
    {
   .....
    $merker = 1;
    }
renee
 2005-02-02 13:04
#51507 #51507
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
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
my $merker_deutsch = 1;
my $merker_englisch = 1;
my $merker_franz = 1;

if ($head_de and $deutsch and ($check1 or $check2 or $check3 or $check4) and $ersteller and $werk)
{
....
}
else{
$merker_deutsch = 0;
}
if ($head_en and $englisch and ($check1 or $check2 or $check3 or $check4) and $ersteller and $werk)
{
.....
}
else{
$merker_englisch = 0;
}
if ($head_fr and $franz and ($check1 or $check2 or $check3 or $check4) and $ersteller and $werk)
{
.....
}
else{
$merker_franz = 0;
}

if($merker_deutsch && $merker_englisch && $merker_franz){
# speichern
}
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/
Kathrin
 2005-02-02 13:09
#51508 #51508
User since
2004-12-15
158 Artikel
BenutzerIn
[default_avatar]
aber es kann ja auch sein dass nur head_de und deutsch gespeichert werden...

also keine headline ohne text und kein text ohne headline

ich habs momentan so:
Code: (dl )
1
2
3
4
5
6
if ($head_de and $deutsch and ($check1 || $check2 || $check3 ||$check4) and $ersteller and $werk)
{
$sth_insert->execute(.....) or die $DBI::errstr;
$merker = 1;
}
........
\n\n

<!--EDIT|Kathrin|1107342655-->
Taulmarill
 2005-02-02 14:17
#51509 #51509
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
ist evtl. das hier was du willst?
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
40
use strict;
use warnings;

my ( $check1, $check2, $check3, $check4, $ersteller ) = ('1') x 5;
my $head_de = '1';
my $deutsch = '1';
my $head_en = '';
my $english = '';
my $head_fr = '1';
my $franz = '';

if ( ( $check1 or $check2 or $check3 or $check4 ) and $ersteller ) {
if ( $head_de and $deutsch ) {
print "deutsch OK\n";
}
elsif ( $head_de or $deutsch ) {
print "deutsch FEHLER\n";
}
else {
print "kein deutsch\n";
}
if ( $head_en and $english ) {
print "english OK\n";
}
elsif ( $head_en or $english ) {
print "english FEHLER\n";
}
else {
print "kein english\n";
}
if ( $head_fr and $franz ) {
print "franz OK\n";
}
elsif ( $head_fr or $franz ) {
print "franz FEHLER\n";
}
else {
print "kein franz\n";
}
}
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
Kathrin
 2005-02-02 14:31
#51510 #51510
User since
2004-12-15
158 Artikel
BenutzerIn
[default_avatar]
es wird doch auch in die schleife gesprungen wenn nur eines von beiden 1 ist in dem fall, da "or" entweder, oder bedeutet... Oder iir ich mich jetzt gewaltig?

Code: (dl )
1
2
3
elsif ( $head_de or $deutsch ) {
print "deutsch FEHLER\n";
}
renee
 2005-02-02 14:38
#51511 #51511
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
if ist _keine_ Schleife...

Ja, Du hast recht. Du willst ja auch, dass es ein Fehler ist, wenn _nur_ $head_de oder _nur_ $deutsch gesetzt ist.

Wenn beides vorhanden ist, dann wird das im if-Block abgearbeitet.

Wurde eine Bedingung erfüllt (z.B. das bei if), dann werden die anderen Bedingungen (elsif(...)) nicht mehr überprüft. Deswegen kann man es so vereinfacht hinschreiben...
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/
Kathrin
 2005-02-02 15:16
#51512 #51512
User since
2004-12-15
158 Artikel
BenutzerIn
[default_avatar]
sorry ich meinte natürlich in die if anweisung...

taulmarill
nicht schlecht, einfach alle gemeinsamkeiten mal in die ertse if anweisung zu packen :)

hmmm aber mein problem ist leider damit nicht gelöst...
wenn z.B. $head_de und $deutsch angegeben wird, und dazu noch $head_fr ohne $franz dann sollte gar nichts gespeichert werden, sondern fehlermeldung, dass eine Headline ohne text eingegeben wurde...

mein code bis jetzt:
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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 and $deutsch and ($check1 || $check2 || $check3 ||$check4) and $ersteller and $werk)
{
$sth_insert->execute(.......) or die $DBI::errstr;
$merker = 1;
}
if ($head_en and $englisch and ($check1 || $check2 || $check3 ||$check4) and $ersteller and $werk)
{
$sth_insert->execute(........) or die $DBI::errstr;
$merker = 1;
}
if ($head_fr and $franz and ($check1 || $check2 || $check3 ||$check4) and $ersteller and $werk)
{
$sth_insert->execute(.........) or die $DBI::errstr;
$merker = 1;
}

if ($merker == 0) {
&warnung();
}
else {
&ausgabe();
}
$sth_insert->finish();
$dbh->disconnect();
}

sub warnung {
print "<HTML>\n";
print "<head><title>Warnung</title></head>\n";
print "<body>\n";
print "Der Eintrag konnte nicht gespeichert werden!\n";
unless (($head_de and $deutsch) or ($head_en and $englisch) or ($head_fr and $franz))
{
print "<p>Bitte geben Sie einen <b>Text</b> zur Überschrift ein.";
}
unless ($check1 or $check2 or $check3 or $check4) {
print "<p>Bitte geben Sie mindestens einen <b>Betreff für die Maschinen</b> ein.";
}
unless ($ersteller) {
print "<p>Bitte geben Sie den <b>Namen des Erstellers</b> ein.";
}
unless ($werk) {
print "<p>Bitte geben Sie den <b>Werksnamen</b> ein.";
}
print '<p><input type="button" value="Zur&uuml;ck" onClick="history.back()">';
print "</body>";
print "</HTML>";
}
renee
 2005-02-02 15:26
#51513 #51513
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
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
40
41
42
43
44
45
46
47
48
49
50
51
use strict;
use warnings;

my ( $check1, $check2, $check3, $check4, $ersteller ) = ('1') x 5;
my ($merker_d, $merker_e, $merker_f) = ('1') x 3;
my $head_de = '1';
my $deutsch = '1';
my $head_en = '';
my $english = '';
my $head_fr = '1';
my $franz = '';

if ( ( $check1 or $check2 or $check3 or $check4 ) and $ersteller ) {
if ( $head_de and $deutsch ) {
print "deutsch OK\n";
}
elsif ( $head_de or $deutsch ) {
print "deutsch FEHLER\n";
$merker_d = 0;
}
else {
print "kein deutsch\n";
}
if ( $head_en and $english ) {
print "english OK\n";
}
elsif ( $head_en or $english ) {
print "english FEHLER\n";
$merker_e = 0;
}
else {
print "kein english\n";
}
if ( $head_fr and $franz ) {
print "franz OK\n";
}
elsif ( $head_fr or $franz ) {
print "franz FEHLER\n";
$merker_f = 0;
}
else {
print "kein franz\n";
}
}

if($merker_d && $merker_e && $merker_f){
# eintragen
}
else{
warnung();
}


Du musst das execute() aus den if-Blöcken rausholen...
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/
Kathrin
 2005-02-02 16:13
#51514 #51514
User since
2004-12-15
158 Artikel
BenutzerIn
[default_avatar]
wie formulier ich in perl eigentlich "a aber nicht b"
in c gehts ja so: "(a && !b)" soweit ich mich noch entsinnen kann :rock:
betterworld
 2005-02-02 16:17
#51515 #51515
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
genau so wie in C...
<< |< 1 2 >| >> 17 Einträge, 2 Seiten



View all threads created 2005-02-02 12:46.