Tim: Rechenproblem

Hi sagt mal warum kann ich folgendes nicht machen:

$va1 = $menge / $va2;

Da bekomme ich eine Meldung:
Fatal error: Unsupported operand types in .......

Was mach ich denn da falsch?

  1. Mhhhh,

    du solltest da schon ein bisl mehr des Codes posten. So hilft mir das zumindest nicht weiter.
    Welche Werte haben die Variablen $menge und $va2?

    LG
    kevin*

    1. Hallo,
      da hätte ich auch mal eine Frage zu.
      Mein Problem ist ähnlich....
      Und zwar habe ich ein Array wo eine Zahl drin steht....
      Ausgegeben sieht es so aus:
      Array ( [0] => Array ( [Count(myID)] => 4 ) )

      Jetzt möchte ich diese Zahl durch 2 teilen. Hab da was mit substr. versucht aber das geht nicht.

      1. Hallo Claudia,

        Greif doch auf das entsprechende Element deines Array zu und teile es durch 2.

        Bsp.:

        $erg = $array[0]['Count(myID)'] / 2;
        echo $erg;

        Schönen Gruß aus München

        die knappschaft

        --
        sh:(  fo:|  ch:?  rl:°  br:$,<,>  n4:&  ie:|  mo:|  va:)  de:]  zu:)  fl:|  ss:|  ls:[,#
      2. echo $begrüßung;

        Und zwar habe ich ein Array wo eine Zahl drin steht....
        Array ( [0] => Array ( [Count(myID)] => 4 ) )

        Wenn man das in PHP-Code schreibt sieht es so aus:

        $claudias_array = array( array('Count(myID)' => 4));

        Du hast also ein Array mit einem Element, das ein weiteres Array ist mit ebenfalls einem Element enthält, welches den Key 'Count(myID)' hat. Willst du auf den Wert zugreifen musst du diese Array dereferenzieren

        $wert = $claudias_array[0]['Count(myID)'];

        Mir scheint aber eher, dass du irgendwo einer Variable das Ergebnis einer Fetch-Funktion zuweisen möchtest, an den Variablennamen aber überflüssigerweise ein [] gehängt hast.
        Wenn du von einem SELECT count(irgendwas) FROM ... nur eine Ergebniszeile erwartest, dann solltest du auch nur einmal Fetchen. Meine Glaskugel sagt mir, dass du wohl aus Gewohnheit das Fetchen dieses einen Wertes in einer while-Schleife untergebracht hast.

        while ($row = fetch(...))
            $rows[] = $row;

        Dabei wäre

        $row = fetch(...);

        ausreichend. (Eventuell kann man noch mit *_num_rows() prüfen, ob wirklich nur wie erwartet eine Zeile zurückkam oder ob vielleicht wegen eines Programmierfehlers oder durch Ausnutzen eines solchen mehr als eine Zeile geliefert wurde.)

        Um nicht Namen wie 'Count(myID)' als Spaltennamen in seinen Datenbankergebnissen zu haben, empfiehlt es sich für solche berechneten Ergebnisspalten einen Alias zu verwenden:

        SELECT count(*) AS aliasname FROM ...

        wobei man das Schlüsselwort AS auch weglassen kann.

        echo "$verabschiedung $name";

  2. Also $menge ist eine Zahl die aus der Datenbank kommt.
    Ich benötige nämlich die Anzahl der Spalten aus der Datenbank:
    $result = mysql_query("SELECT id FROM Tabelle");
    $menge = mysql_num_rows($result);

    Und va2 ist ein fest gelegter Integer Wert
    $va2 = 5;

    1. Ich kann dir nur sagen, das so wie du das postest nicht falsch ist.
      Hier mal ein Beispiel von mir ...
      Funktioniert bei meiner Clankasse ja auch.

        
      $restmonate = $summe/$mtlbeitrag;  
      
      

      Hast du mal versucht die einzelnen Variablen als ~~~php

      echo

        
      Wenn ja, was kommt da zur Anzeige?
      
      1. Ich habe mal etwas versucht. Ist ja nun nichts Großes. Aber versuch mal die Variablen durch die von der DB abgefragten Ergebnisse hart als Zahlen an die Variablen zu schreiben.

        Ich kann mir nicht vorstellen, das das nicht funktionieren sollte.
        Hier mal das was ich vermutet hätte ...

          
        <?php  
          
        $v1 = 10;  
        $v2 = 5;  
          
         echo $v1 . "<br>";  
         echo $v2 . "<br>";  
          
         echo "Die Rechnung mit Zahlen:<br>";  
         $res = $v1 / $v2;  
         echo $res . "<br>";  
          
        $v1 = "Text";  
        $v2 = 5;  
          
         echo $v1 . "<br>";  
         echo $v2 . "<br>";  
          
         echo "Die Rechnung mit einem Text:<br>";  
         $res = $v1 / $v2;  
         echo $res . "<br>";  
          
        ?>  
        
        

        Und hier das Ergebnis dazu:

        10
        5
        Die Rechnung mit Zahlen:
        2
        Text
        5
        Die Rechnung mit einem Text:
        0

        Passt also.

  3. echo $begrüßung;

    $va1 = $menge / $va2;
    Fatal error: Unsupported operand types in .......
    Was mach ich denn da falsch?

    Du versuchst eine offensichtlich Rechenoperation mit Datentypen, die nicht erlaubt ist, z.B: Array geteilt durch Integer. Ermittle zunächst die Typen der beteiligten Variablen mit var_dump() oder gettype().

    echo "$verabschiedung $name";

    1. Also es handelt sich hier tatsächlich um ein Arry was ich aus der Datenbank bekomme.

      Nun kann man ja keine Int Werte durch ein Arry teilen.
      Was mach ich denn jetzt?

      1. Also es handelt sich hier tatsächlich um ein Arry was ich aus der Datenbank bekomme.

        Nun kann man ja keine Int Werte durch ein Arry teilen.

        Andere Abfrage, oder Array zerlegen. Was willst du den mit dem Array machen?
        Was willst du aussrechnen?
        Vielleicht eine andere Struktur deiner Daten ...

        Mehr Informationen sind notwendig.

      2. echo $begrüßung;

        Also es handelt sich hier tatsächlich um ein Arry was ich aus der Datenbank bekomme.

        Nun kann man ja keine Int Werte durch ein Arry teilen.
        Was mach ich denn jetzt?

        Als erstes wirst du wohl herausfinden müssen, wo das Array herkommt. Normalerweise sollte $menge kein Array sein, wenn du ihm das Ergebnis von mysql_num_rows() zuweist, denn das gibt nur Integer-Werte (oder false im Fehlerfall) zurück.
        Schau mal was direkt nach der Zuweisung in $menge steht (var_dump($menge);) und schiebe denn das var_dump() immer weiter in Richtung deiner Rechenoperation, bis du die Stelle findest, die $menge zum Array macht.

        echo "$verabschiedung $name";

        1. hi,

          Als erstes wirst du wohl herausfinden müssen,

          Als allererstes sollte er mal überlegen, ob er jetzt "Tim" oder "Markus" sein will ...

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }
          1. echo $begrüßung;

            Als allererstes sollte er mal überlegen, ob er jetzt "Tim" oder "Markus" sein will ...

            Ach, wahsaga, das sind doch nur unwichtige Bezeichner ...
            Allerdings: wenn er mit seinen Variablennamen genauso umgeht wie mit seinen Nicknamen wundert mich nichts :-)

            echo "$verabschiedung $name";

            1. Okej ich habs gelöst. Vielen Dank nochmal für eure Gedult :O)

              1. Das ist schön das du es gelöst hast. Was war falsch?
                Ich kann es nicht leiden, wenn man nach Hilfe sucht, möglicherweise den Fehler beschrieben oder erklärt bekommt, vielleicht auch durch die Tips und Fragen der anderen User hier die Lösungen selber findet, und dann nicht in der Lage ist das Wissen welches man erhalten hat mit anderen zu teilen.

                Kurz ....

                Erklär was du anders gemacht hast, damit es funktioniert!

                Danke