Ankündigung

Einklappen
Keine Ankündigung bisher.

Nur ne Frage zum Verständniss...

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Nur ne Frage zum Verständniss...

    Hi,

    kann mir evtl. jemand erklären, warum
    PHP-Code:
    // zweimal == 
    <?php 
    if ( (is_numeric($var1) == true) || ($var1 1) ) {
            
    $error true;

            
    $messageStack->add('create_account'ENTRY_VAR1_ERROR);
            }

    if ( (
    is_numeric($var2) == true) || ($var2 1) ) {
            
    $error true;

            
    $messageStack->add('create_account'ENTRY_VAR2_ERROR);
            }

    ?>
    nicht funktioniert, hingegen
    PHP-Code:
    // != & ==
    <?php 
    if ( (is_numeric($var1) != true) || ($var1 1) ) {
            
    $error true;

            
    $messageStack->add('create_account'ENTRY_VAR1_ERROR);
            }

    if ( (
    is_numeric($var2) == true) || ($var2 1) ) {
            
    $error true;

            
    $messageStack->add('create_account'ENTRY_VAR2_ERROR);
            }

    ?>
    einwandfrei funktioniert!?

    Besten Dank und viele Grüße

    Andreas

  • #2
    Wenn Du uns noch verrätst, was "einwandfrei funktioniert" bedeutet und inwiefern Version 1 davon abweicht, vielleicht.

    Kommentar


    • #3
      auch verdammt,

      eigentlich sollte es so aussehen:
      PHP-Code:
      <?php
      //*zweimal*==* 
      <?php* 
      if*
      (*(is_numeric($var1)*==*false)*||*($var1*<*1)*)*
      ********$error*=*true
       
      ********$messageStack->add('create_account',*ENTRY_VAR1_ERROR); 
      ********
       
      if*(*(is_numeric($var2)*==*false)*||*($var2*<*1)*)*
      ********$error*=*true
       
      ********$messageStack->add('create_account',*ENTRY_VAR2_ERROR); 
      ********
       



             
      //*!=*&*== 

      if*(*(is_numeric($var1)*!=*true)*||*($var1*<*1)*)*
      ********$error*=*true
       
      ********$messageStack->add('create_account',*ENTRY_VAR1_ERROR); 
      ********
       
      if*(*(is_numeric($var2)*==*false)*||*($var2*<*1)*)*
      ********$error*=*true
       
      ********$messageStack->add('create_account',*ENTRY_VAR2_ERROR); 
      ********

      ?>
      Und zur Erklärung des ganzen ist evtl auch die Class interessant:
      PHP-Code:
      <?php

       
      class messageStack extends tableBox {

      // class constructor
          
      function messageStack() {
            global 
      $messageToStack;

            
      $this->messages = array();

            if (
      tep_session_is_registered('messageToStack')) {
              for (
      $i=0$n=sizeof($messageToStack); $i<$n$i++) {
                
      $this->add($messageToStack[$i]['class'], $messageToStack[$i]['text'], $messageToStack[$i]['type']);
              }
              
      tep_session_unregister('messageToStack');
            }
          }

      // class methods
          
      function add($class$message$type 'error') {
            if (
      $type == 'error') {
              
      $this->messages[] = array('params' => 'class="messageStackError"''class' => $class'text' => tep_image(DIR_WS_ICONS 'error.gif'ICON_ERROR) . '' $message);
            } elseif (
      $type == 'warning') {
              
      $this->messages[] = array('params' => 'class="messageStackWarning"''class' => $class'text' => tep_image(DIR_WS_ICONS 'warning.gif'ICON_WARNING) . '' $message);
            } elseif (
      $type == 'success') {
              
      $this->messages[] = array('params' => 'class="messageStackSuccess"''class' => $class'text' => tep_image(DIR_WS_ICONS 'success.gif'ICON_SUCCESS) . '' $message);
            } else {
              
      $this->messages[] = array('params' => 'class="messageStackError"''class' => $class'text' => $message);
            }
          }

          function 
      add_session($class$message$type 'error') {
            global 
      $messageToStack;

            if (!
      tep_session_is_registered('messageToStack')) {
              
      tep_session_register('messageToStack');
              
      $messageToStack = array();
            }

            
      $messageToStack[] = array('class' => $class'text' => $message'type' => $type);
          }

          function 
      reset() {
            
      $this->messages = array();
          }

          function 
      output($class) {
            
      $this->table_data_parameters 'class="messageBox"';

            
      $output = array();
            for (
      $i=0$n=sizeof($this->messages); $i<$n$i++) {
              if (
      $this->messages[$i]['class'] == $class) {
                
      $output[] = $this->messages[$i];
              }
            }

            return 
      $this->tableBox($output);
          }

          function 
      size($class) {
            
      $count 0;

            for (
      $i=0$n=sizeof($this->messages); $i<$n$i++) {
              if (
      $this->messages[$i]['class'] == $class) {
                
      $count++;
              }
            }

            return 
      $count;
          }
        }
      ?>
      sowie der Code zum anzeigen der Error-Meldungen:
      PHP-Code:
      <?php

        
      if ($messageStack->size('create_account') > 0) {
      ?>
            <tr>
              <td><?php echo $messageStack->output('create_account'); ?></td>
            </tr>

      ?>
      Hoffe, jetzt macht meine Frage mehr Sinn.

      Viele Grüße

      Andreas

      Kommentar


      • #4
        Nö. Ich guck mir doch jetzt nicht den ganzen Code an, nur um zu erraten, warum Du ein = durch ein ! austauschst.
        Sag einfach, was es machen soll und was es nicht tut.
        Aus welchem Grund tauscht Du == durch != aus? Was erwartest Du davon? In wie weit weicht das Ergebnis von Deinen Erwartungen ab?
        Einfach so untereinandergeschrieben sind es nur zwei unterschiedliche Anweisungen. Klar machen die dann auch was unterschiedliches.

        Kommentar


        • #5
          OK,
          folgender Code fügt messageStack eine Error-Meldung hinzu wenn is_numeric($var1)*==*false...
          PHP-Code:
          <?php

          if*
          (*(is_numeric($var1)*==*false)*||*($var1*<*1)*)*{
          ********$error*
          =*true;

          ********$messageStack
          ->add('create_account',*ENTRY_VAR1_ERROR);
          ********
          }

          ?>
          habe ich jetzt diesen Code zweimal in einem Dokument (natürlich mit anderen Variablen) wird keine Meldung hinzugefügt,
          erstetze ich aber einmal ==*false durch !=*true werden beide Meldungen hinzugefügt (gesetzt dem Fall sie sollen auf Grund der Gegebenheiten hinzugefügt werden).

          Viele Grüße

          Andreas

          Kommentar


          • #6
            Re: Nur ne Frage zum Verständniss...

            Also in Deinem ersten Post hast Du (is_numeric($var1) == true) durch (is_numeric($var1) != true) ausgetauscht.
            Damit drehst Du die Bedeutung um.

            Kommentar


            • #7
              Zitat von Bruchpilot
              Also in Deinem ersten Post hast Du ==true durch !=true ausgetauscht.
              Damit drehst Du die Bedeutung um.
              Ja, ist mir ja dann auch aufgefallen und habe daher folgendes gepostet:
              Zitat von fur
              auch verdammt,

              eigentlich sollte es so aussehen:
              PHP-Code:
              <?php
              //*zweimal*==* 
              <?php* 
              if*
              (*(is_numeric($var1)*==*false)*||*($var1*<*1)*)*
              ********$error*=*true
               
              ********$messageStack->add('create_account',*ENTRY_VAR1_ERROR); 
              ********
               
              if*(*(is_numeric($var2)*==*false)*||*($var2*<*1)*)*
              ********$error*=*true
               
              ********$messageStack->add('create_account',*ENTRY_VAR2_ERROR); 
              ********
               



                     
              //*!=*&*== 

              if*(*(is_numeric($var1)*!=*true)*||*($var1*<*1)*)*
              ********$error*=*true
               
              ********$messageStack->add('create_account',*ENTRY_VAR1_ERROR); 
              ********
               
              if*(*(is_numeric($var2)*==*false)*||*($var2*<*1)*)*
              ********$error*=*true
               
              ********$messageStack->add('create_account',*ENTRY_VAR2_ERROR); 
              ********

              ?>
              hier tausche ich ==*false gegen !=*true aus.
              Also ändere ich nicht zum Gegenteil sondern schreibe zweimal das selbe, nur anders. (so denke ich zumindest)

              Viele Grüße

              Andreas

              Kommentar


              • #8
                Also mal auf das wesentliche beschränkt:
                PHP-Code:
                <?php
                $a 
                is_numeric($var1) != true;
                $b is_numeric($var1) == false;
                ?>
                ist dann $a immer gleich $b? Ja. Wenn eine Aussage nicht wahr ist dann ist sie falsch. So einfach ist das in der Aussagenlogik mit boolschen Werten.

                Kommentar


                • #9
                  so reduziert würde meine Frage dann, glaube ich, so lauten:

                  Warum stört sich folgendes gegenseitig?
                  PHP-Code:
                  <?php 
                  is_numeric
                  ($var1)*==*false
                  is_numeric($var2)*==*false
                  ?>
                  Wenn das hier sich nicht stört?
                  PHP-Code:
                  <?php 
                  is_numeric
                  ($var1)*=!*true
                  is_numeric($var2)*==*false
                  ?>
                  (aber ich glaube bei dem Punkt wird dann der Rest von Code doch wieder interessant, oder?)

                  Viele Grüße

                  Andreas

                  Kommentar


                  • #10
                    Keine Ahnung. $var1 und $var2 und die dazugehörigen Test sind unabhängig voneinander. Darüber kann man nur Aussagen treffen, wenn $var1 und $var2 miteinander verknüpft sind.
                    Der Code der Klasse messageStack ist offenkundig völlig egal, da er keinerlei Einfluss auf $var1 oder $var2 nimmt.
                    Starke Vermutung: Du machst einfach nur was falsch.
                    Ansonsten den Code so stark wie möglich zusammenschrumpfen. Gerade so, dass der Fehler noch auftritt und dann ab damit nach http://bugs.php.net

                    Kommentar


                    • #11
                      Zitat von fur
                      (aber ich glaube bei dem Punkt wird dann der Rest von Code doch wieder interessant, oder?)

                      interessant wären mal die zuweisungen von $var1 und $var2 bzw. die ausgaben von var_dump ($var1) bzw. var_dump ($var2);

                      Kommentar


                      • #12
                        Zitat von YaB
                        interessant wären mal die zuweisungen von $var1 und $var2 bzw. die ausgaben von var_dump ($var1) bzw. var_dump ($var2);
                        print_r jeweils ne Zahl zwischen 1 und 10...

                        aber davon abgesehen hab ich grad nochmal alles Mögliche ausprobiert und bin zu dem Schluss gekommen, das ich mich furchtbar schämen, ein bisschen an meinem Verstand zweifeln und mich auch für von Euch sinnlos vergeudete Zeit entschuldigen und für Eure Hilfe bedanken sollte.

                        Vergesst einfach alles was ich geschrieben habe.
                        Bruchpilot hats schon richtig erkannt
                        Starke Vermutung: Du machst einfach nur was falsch.
                        Wie recht Du hattest :wink:

                        Ich wünsch Euch nen schönen Abend...

                        Viele Grüße

                        Andreas

                        Kommentar

                        Lädt...
                        X