daniel: Dateiupload und Überprufung desselben

hallo alle zusammen,

irgendwie steh ich gerade ziemlich auf dem schlauch.

ich will dem besucher die möglichkeit geben, per file-feld ein GIF oder JPG hochzuladen. mit folgendem teil will ich feststellen, ob es wirklich eine solche datei ist:

<schnipp>

//DATEIUPLOADFELD
elseif($bild!="none") {
 $prop=getimagesize($bild);
 if($prop[2]!=1 || $prop[2]!=2) {
  show_error("6","Die angegebene Datei stimmt nicht mit den vorgegebenen Parametern überein<br>$prop[2]");
 }

</schnapp>

aber egal was ich hochlade, er springt immer zu der show_error-Funktion?? hab mir auch schon &prop[2] ausgeben lassen, das _IST 2_ !
da steht doch ganz klar, daß er nur in den Teil springen soll, wenn $prop[2] UNGLEICH 2 ist ?????

kann mir mal gerade `bitte jemand auf die sprünge helfen?
ich checks gerade echt nicht.. ;-)

vielen dank,
grüße
daniel

  1. Hallo Daniel,

    if($prop[2]!=1 || $prop[2]!=2) {
    aber egal was ich hochlade, er springt immer zu der show_error-Funktion?? hab mir auch schon &prop[2] ausgeben lassen, das _IST 2_ !
    da steht doch ganz klar, daß er nur in den Teil springen soll, wenn $prop[2] UNGLEICH 2 ist ?????

    ja, aber da steht auch dass er dahin springen soll wenn $prop[2] ungleich 1 ist, also springt er immer dahin, weil eine der Bedingungen immer zutrift.

    Grüße aus Nürnberg
    Tobias

    1. hi tobias,

      ohmann, das hätte mir auch selber auffalllen können ;-))
      jaja, die liebe logik, die war noch nie soooo sehr mein freund... ;-))

      aber wie kann ich ihm dann möglichst kurz ohne weitere verschachtelungen in einer einzigen bedingung beibringen, daß er nur dann in die if-verzweigung springen soll, wenn $prob[2] ENTWEDER 2 ODER 1 ist?

      grüße,
      daniel

      1. Hi Daniel,

        ohmann, das hätte mir auch selber auffalllen können ;-))

        tja, die liebe Betreibsblindheit :-)

        aber wie kann ich ihm dann möglichst kurz ohne weitere verschachtelungen in einer einzigen bedingung beibringen, daß er nur dann in die if-verzweigung springen soll, wenn $prob[2] ENTWEDER 2 ODER 1 ist?

        if ($prob[2]==1 || $prob[2]==2){...?

        Grüße aus Nürnberg
        Tobias

      2. Hi,

        aber wie kann ich ihm dann möglichst kurz ohne weitere verschachtelungen in einer einzigen bedingung beibringen, daß er nur dann in die if-verzweigung springen soll, wenn $prob[2] ENTWEDER 2 ODER 1 ist?

        naja, genauso[1] wie Du es sagst - das ODER hast Du schon, nur solltest Du etwas mehr betonen, dass der Wert GLEICH 1 oder 2 sein soll.

        [1] Wobei die Übersetzung "$prob[2]==2 OR 1" schon deswegen nicht stimmt, weil "1" immer wahr ist. Boole'sche Operatoren _trennen_[2] Wahrheitswerte, d.h. links und rechts vom "OR" steht jeweils eine Bedingung, die Du einzeln betrachten musst.

        [2] Und verbinden sie gleichzeitig ;-)

        Kleine Boole'sche Algebra für Anfänger, weil ich gerade Bock drauf habe: Deine ursprüngliche Bedingung war "A!=1 OR A!=2", oder auch "X OR Y" (reine Umbenennung, nichts magisches). Verneint man dies, bekommt man "NOT (NOT X AND NOT Y)" (beachte den Wechsel zwischen OR und AND). Dies zurücksubstituiert heißt dann: "NOT (A==1 AND A==2)". Jetzt wird Dir vielleicht deutlicher, warum das Ergebnis immer das gleiche ist...

        !(X AND Y) == (!X OR !Y)
        !(X OR Y)  == (!X AND !Y)

        Cheatah

        --
        X-Will-Answer-Email: No
      3. Hallo!

        Aber wie kann ich ihm dann möglichst kurz ohne weitere verschachtelungen in einer einzigen bedingung beibringen, daß er nur dann in die if-verzweigung springen soll, wenn $prob[2] ENTWEDER 2 ODER 1 ist?

        Lies am besten mal:

        http://www.php3.de/manual/de/control-structures.php#control-structures.if
          http://www.php3.de/manual/de/language.operators.comparison.php
          http://www.php3.de/manual/de/language.expressions.php

        Ich kann Dir wirklich nur empfehlen das einmal zu lesen und zu verstehe und Du hast nie wieder solche Probleme!

        Grüße
        Andreas

  2. Hallo Daniel

    irgendwie steh ich gerade ziemlich auf dem schlauch.

    Nicht schlimm, passiert jedem mal ;-)

    if($prop[2]!=1 || $prop[2]!=2) {
      show_error("6","Die angegebene Datei stimmt nicht mit den vorgegebenen Parametern überein<br>$prop[2]");
    aber egal was ich hochlade, er springt immer zu der show_error-Funktion?? hab mir auch schon &prop[2] ausgeben lassen, das _IST 2_ !

    Klar: if ( 2 != 1 oder 2 != 2 ) (Auswertung)
    2!=1 ist war, deswegen wird der ganze Ausdruck wahr, deswegen wird show_error ausgeführt

    da steht doch ganz klar, daß er nur in den Teil springen soll, wenn $prop[2] UNGLEICH 2 ist

    Nein!

    Deine Bedingung ist grundsätzlich immer wahr!

    Was Du willst ist wohl:

    if !($prop[2] == 1 or $prop[2] == 2) {
    ...

    Gruß,

    vinzenz

  3. danke euch beiden.... !!

    manchmal tut so ein kleiner klapps auf den hinterkopf ganz gut ;-)

    ist wohl doch schon etwas spät, aber jetzt funktioniert es zumindest.
    vielleicht mach ich lieber morgen früh weiter ;-))

    danke auf jeden fall nochmal !!

    grüße,
    daniel

  4. Guten [Tageszeit],

    hallo alle zusammen,

    irgendwie steh ich gerade ziemlich auf dem schlauch.

    ich will dem besucher die möglichkeit geben, per file-feld ein GIF oder JPG hochzuladen. mit folgendem teil will ich feststellen, ob es wirklich eine solche datei ist:

    <schnipp>

    //DATEIUPLOADFELD
    elseif($bild!="none")

    {

    $prop=getimagesize($bild);

    if($prop[2]!=1 and $prop[2]!=2)
         {

    show_error("6","Die angegebene Datei stimmt nicht mit den

    vorgegebenen Parametern überein<br>$prop[2]");

    }

    </schnapp>

    Empfehle, Dir vom Weihnachtsmann ein Buch über Boolsche Algebra bringen zu lassen und eine andere Schreibweise für Quellcode... *gg*

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Mut die, eigene zu machen.