• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

If-Abfrage Problem

RS_FISI

New member
Hallo Leute,

Ich habe folgende If-Abfrage, wo ich die Kalenderwochen vergleiche und dann jeweils daten ausgeben lasse oder halt nicht.
Bei den Werten
$KWwertanf1=27
$KWwertende1=31
$KW=27
geht es nicht. Aber bei:
$KWwertanf1=27
$KWwertende1=31
$KW=29
geht es.

if ((($KW==$KWwertanf1) || ($KW==$KWwertende1)) || (($KW>=$KWwertanf1) && ($KW<=$KWwertende1)))
{
...
}

Was ist an dieser Abfrage falsch?

Gruß RS_FISI
 
Hallo Leute,

Ich habe folgende If-Abfrage, wo ich die Kalenderwochen vergleiche und dann jeweils daten ausgeben lasse oder halt nicht.

Wenn ich mich nicht komplett irre machst du bei
PHP:
if ((($KW==$KWwertanf1) || ($KW==$KWwertende1)) || (($KW>=$KWwertanf1) && ($KW<=$KWwertende1)))

eine doppelt gemobbelte abfrage heißt:
(($KW==$KWwertanf1) || ($KW==$KWwertende1))
heißt ja,
KW GLEICH KWwertanfang ODER KW GLEICH KWwertende

(($KW>=$KWwertanf1) && ($KW<=$KWwertende1))
heißt,
KW GÖSSER/GLEICH KWwertanfang UND KW KLEINER/GLEICH KWwertende

So ich wie das von dir verstehe möchtest du, wenn zum beispiel ferien sind die über 3 wochen gehen diese Tage vllt bunt angezeit werden

Veruschs mal nur mit der IF abfage:
PHP:
if($KW >= $KWwertanfang && $KW <= $KWwertende){
[...]
}

falls noch was ist, informier dich mal hier PHP-Operatoren

mfg Kenny
 
$abfrage4 = "SELECT * FROM Stand WHERE User_User_ID=".$row->User_ID."";
$erg4=mysql_query($abfrage4);
while ($row = mysql_fetch_object($erg4))
{

$StandDatum=$row->Stand_Datum;
$KW=strftime("%V", strtotime($StandDatum));
echo "KW1: ".$KW.", Anf:".$KWwertanf1.", Ende:".$KWwertende1." <br><br>";
if ($KW>=$KWwertanf1 AND $KW<=$KWwertende1){
....

Ich lasse ein Datum aus der Datenbank für ein User auslesen und dann in eine KW umrechnen. Danach will ich vergleichen ob es mit der Anfangs- oder EndKW vom Monat in der Anzeige übereinstimmt ODER dazwischen liegt.
Je nachdem soll es dann angezeigt werden oder halt nicht aber das interessiert ja nicht. Mir nur die If-Abrgae wichtig. Ich bräucht halt sowas wie ein NOR, aber es gibt halt nur ein XOR....wieso auch immer.....

PS: Das was du hast hilft nur wenn es dazwischen liegt aber nicht wenn es gleich ist, denn wenn es gleich wäre düfte kein "&&" dastehen sondern ein "||".
 
Jetzt verstehe ich was du meinst, ich hab des auf größere art gelöst jetzt:
PHP:
<?
$KWweranf1 = 27;
$KWwerende1 = 31;
$KW = 27;

if($KW==$KWwertanf1 || $KW==$KWwertende1){
echo 'irgendwas';
//kannst ja auch eine Funktion ausführen
}elseif($KW>=$KWwertanf1 && $KW<=$KWwertende1){
echo 'irgendwas';
//kannst ja auch eine Funktion ausführen
}

?>

würdeste des so auch machen?
 
Danach will ich vergleichen ob es mit der Anfangs- oder EndKW vom Monat in der Anzeige übereinstimmt ODER dazwischen liegt.

Die Abfrage von Coyboc tut genau dies.

27 >= 27 -> true
27 <= 31 -> true

Nen && ist also genau richtig. Bei einem || wäre die Abfrage immer wahr. Bei Zahlen größer 31 würde die erste Aussage wahr werden, bei Zahlen kleiner 27 die Zweite. Für alles dawzischen beide.
 
PHP:
if($KW==$KWwertanf1 || $KW==$KWwertende1){
echo 'irgendwas';
//kannst ja auch eine Funktion ausführen
}elseif($KW>=$KWwertanf1 && $KW<=$KWwertende1){
echo 'irgendwas';
//kannst ja auch eine Funktion ausführen
}
?>
Ich habe die beiden If Abragen andersrum aber das dürfte ja kein unterschied machen oder?- Aber aus irgendein Grund geht es trotzdem nicht...
Hat er ein Problem mit den Werten, vielleicht?
PHP:
$KW=strftime("%V", strtotime($StandDatum));
$KWwertanf1=date("W", mktime(0, 0, 0, $Monat, 1, $Jahr));
$KWwertende1=date("W", mktime(0, 0, 0,$Monat, $Tag, $Jahr));
 
Ich habe die beiden If Abragen andersrum aber das dürfte ja kein unterschied machen oder?- Aber aus irgendein Grund geht es trotzdem nicht...
Hat er ein Problem mit den Werten, vielleicht?
PHP:
$KW=strftime("%V", strtotime($StandDatum));
$KWwertanf1=date("W", mktime(0, 0, 0, $Monat, 1, $Jahr));
$KWwertende1=date("W", mktime(0, 0, 0,$Monat, $Tag, $Jahr));

Da ich nich jetzt genau weiß wie deine vor definierten variablen aussehen, sag ich mal, lass dir mal die wetre per echo ausgeben und schreib sie hier rein, weil ich vermute das die Ausgaben nicht den Werten unserer Beispiele ensprechen...

PHP:
echo "Ausgabe der werte:<p>";
$KW=strftime("%V", strtotime($StandDatum));
echo "\$KW= ".$KW."<br>";
$KWwertanf1=date("W", mktime(0, 0, 0, $Monat, 1, $Jahr));
echo "\$KWwertanf1= ".$KWwertanf1."<br>";
$KWwertende1=date("W", mktime(0, 0, 0,$Monat, $Tag, $Jahr));
echo "\$KWwertende1= ".$KWwertende1."<br>";
 
PHP:
if($KW==$KWwertanf1 || $KW==$KWwertende1){
echo 'irgendwas';
//kannst ja auch eine Funktion ausführen
}elseif($KW>=$KWwertanf1 && $KW<=$KWwertende1){
echo 'irgendwas';
//kannst ja auch eine Funktion ausführen
}
?>
Ich habe die beiden If Abragen andersrum aber das dürfte ja kein unterschied machen oder?- Aber aus irgendein Grund geht es trotzdem nicht...

Wenn du mit andersrum meinst, dass das die else if bei dir die if ist schon. In dem Fall müßtest du aus dem <= bzw dem >= ein < bzw > machen. Mit dem gleich fängst du den Fall das $kw direkt auf den grenzen liegt schon ab.
 
Wenn du mit andersrum meinst, dass das die else if bei dir die if ist schon. In dem Fall müßtest du aus dem <= bzw dem >= ein < bzw > machen. Mit dem gleich fängst du den Fall das $kw direkt auf den grenzen liegt schon ab.

War ja das Ziel gewesen direkt an der grenze u beginnen, jupp hast aber recht wenn man die "=" in der else if entfernt hat die if-formel am ende das gleiche ergebeniss
 
Ich habe habe den fehler gefunden...^^ Es war Freitag schon Feierabend und hatte kein Zeit es mehr zu posten. Denn als ich oben die Variablen mit...

PHP:
$KW=strftime("%V", strtotime($StandDatum));
$KWwertanf1=date("W", mktime(0, 0, 0, $Monat, 1, $Jahr));
$KWwertende1=date("W", mktime(0, 0, 0,$Monat, $Tag, $Jahr));

...setzte ist mir aufgefallen das ich ein paar Zeichen noch angehangen hatte, welche wiederum von ein alten echo stammten. Als ich aber die Variablen unten anzeigen ließ waren sie gleich bzw. richtig. Oder mit anderen Worten, wenn ich die Variablen mir anzeigen ließ waren die Zeichen net mehr drin.

sah so aus:

PHP:
$KW=strftime("%V", strtotime($StandDatum));." | "
$KWwertanf1=date("W", mktime(0, 0, 0, $Monat, 1, $Jahr));." "
$KWwertende1=date("W", mktime(0, 0, 0,$Monat, $Tag, $Jahr));." <br> "

machte sich anscheinend nicht gut aber danke auf jeden fall, denn ich habe beide abfragen jetzt gtrennt gemacht wie ihr beschrieben hattet und es geht auf jeden fall.
 
Zurück
Oben