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

  • Gast-Avatar
    Ein Gast erstellte das Thema Nur ne Frage zum Verständniss....

    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

  • Gast-Avatar
    Ein Gast antwortete
    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

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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);

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Wenn Du uns noch verrätst, was "einwandfrei funktioniert" bedeutet und inwiefern Version 1 davon abweicht, vielleicht.

    Einen Kommentar schreiben:

Lädt...
X