php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 11.10.2005, 20:13  
Gast
 
Beiträge: n/a
Standard 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
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 11.10.2005, 20:54  
Gast
 
Beiträge: n/a
Standard

Wenn Du uns noch verrätst, was "einwandfrei funktioniert" bedeutet und inwiefern Version 1 davon abweicht, vielleicht.
 
Alt 11.10.2005, 21:25  
Gast
 
Beiträge: n/a
Standard

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
 
Alt 11.10.2005, 21:49  
Gast
 
Beiträge: n/a
Standard

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.
 
Alt 11.10.2005, 22:00  
Gast
 
Beiträge: n/a
Standard

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
 
Alt 11.10.2005, 22:04  
Gast
 
Beiträge: n/a
Standard 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.
 
Alt 11.10.2005, 22:09  
Gast
 
Beiträge: n/a
Standard

Zitat:
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:
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
 
Alt 11.10.2005, 22:18  
Gast
 
Beiträge: n/a
Standard

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.
 
Alt 11.10.2005, 22:28  
Gast
 
Beiträge: n/a
Standard

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
 
Alt 11.10.2005, 22:36  
Gast
 
Beiträge: n/a
Standard

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
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Frage zu Session SmileMan PHP Tipps 2008 1 08.10.2007 11:22
Ein kleine Frage zum posten hier im Forum Kein Genie Off-Topic Diskussionen 3 20.03.2006 13:40
Frage zu Counter PHP Tipps 2006 1 17.02.2006 21:45
Access Frage - Datenbankverbindung abfragen reimondo Off-Topic Diskussionen 1 01.10.2005 18:24
Blöde Frage " oder ' FireFIghter PHP Tipps 2005-2 7 22.09.2005 07:06
[Erledigt] Einfache Frage! Datenbanken 2 21.09.2005 08:27
Frage zu Speicherreservierung in PHP FiSiHRO PHP Tipps 2005-2 4 13.09.2005 12:00
Performence Frage PHP-Fortgeschrittene 10 06.05.2005 19:00
Frage zu einem Editformular PHP Tipps 2005 3 25.04.2005 14:58
Technische Frage zur Realisation einer Online-Umfrage Stefano PHP Tipps 2005 5 16.03.2005 17:39
Frage zu einer Liste? HTML, Usability und Barrierefreiheit 2 15.02.2005 16:56
[Erledigt] Frage zur Funkrionen? PHP Tipps 2004-2 10 01.12.2004 09:42
Frage zur Formatierung von Text obi PHP Tipps 2004 1 03.11.2004 13:35
Frage zum Einfügen von Fotos PHP Tipps 2004 11 26.09.2004 14:28
[Erledigt] Frage! PHP Tipps 2004 4 27.07.2004 11:25

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
messagestack tablebox, class messagestack extends tablebox, php abfrage if <?php echo tep_image

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:59 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.