Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Berechnung mit 2 Werten aus unterschiedlichen Tabellen durchführen

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Berechnung mit 2 Werten aus unterschiedlichen Tabellen durchführen

    hey @all,
    hab mal ne frage zu dem ablauf einer berechnung: ich möchte mir die gravitationskraft (idealisiert) zwischen 1 planeten und der sonne berechnen (formel ist (g*(m1*m2/r²)), wobei g die gravitatinskonstante ist (ca.6,673*10^-11), damit lässt sich bestimmt nicht gut rechnen oder geht das?
    hier mal mein code:
    PHP-Code:
    <?
    if(isset($_POST['rechnen']))
    {        
    $SQL="SELECT
            planeten.masse as masse1, planeten.abstands as radius
            bezugssystem.name, bezugssystem.masse as masse2,
            (
               SELECT
                (6,673*10^(-11)*(masse1*masse2/radius^2))
                FROM    
                planeten
                WHERE    
                masse1=planeten.masse and 
                radius=planeten.abstands
            ) as gravitation
                            
          FROM
            planeten, bezugssystem
          WHERE
            planeten.name = ".$_POST['DDPlanet']." AND
            bezugssystem.name='.Sonne.'";
            
            $result=@mysql_query($SQL);
    ?>
    <table class="style2" >
        <tr>        
            <td style="width: 60px"><strong><center>Gravitation</center>
             </strong></td>
        </tr>    
        <?  
            while($row=mysql_fetch_row($result)) //hier kommt fehler
            {            
        ?>
        
        <tr>        
            <td><center><? echo $row["gravitation"]; ?></center></td>        
        </tr>
    <?    
            }
        }
    ?>
    </table>
    die fehlermeldung lautet: mysql_fetch_row() expects parameter 1 to be resource, boolean given on line 58 (while-schleife).
    nun isses ja so das ich noch nicht lange dabei bin und nur mit diesem fetch_row gearbeitet hab...wie würde es besser funktionieren? so wie ich es versucht habe oder mit ner anderen variante.

    gruß
    slim jim

  • #2
    PHP-Code:
    $result=@mysql_query($SQL) or die(mysql_error()); 
    außerdem solltest du dich mal über SQL-Injections informieren^^

    Kommentar


    • #3
      Naja, ich frage mich, warum du die Berechnung der Gravitationskraft nicht einfach in den Php-Code auslagerst ?
      Das macht die Query sehr viel einfacher. Wenn es dann nicht funktionieren sollte, check mal, ob es den Planeten auch wirklich gibt, denn ohne die Subquery sehe ich keine Probleme.

      Gruß
      Gemouen

      Kommentar


      • #4
        so, hab kurz nochmal die attribute geändert und diesen code von dir eingegeben und jetzt kommt dieser fehler: 'bezugssystem.bezname, bezugssystem.bezmasse as masse2, ( SELECT ' at line 3.

        ja, und injections wird´s bei mir erstmal nicht geben, da es nur lokal läuft, aber für später is das n guter tipp, da kann mir ja die ganze datenbank gelöscht werden...aber ich arbeite ja mit $_POST, da is das nich so einfach ne?

        Kommentar


        • #5
          Da Fehlt aber was bei dem Fehler.

          Kommentar


          • #6
            Zitat von slim jim Beitrag anzeigen
            und jetzt kommt dieser fehler: 'bezugssystem.bezname, bezugssystem.bezmasse as masse2, ( SELECT '
            Dann schau dir dein Statement genau vor dieser Stelle an - was fehlt da wohl?

            Kommentar


            • #7
              hey @all,
              beim fehler fehlte nix und hab grad nachgeguckt, da fehlte einfach n komma, man man man, da hatte ich wohl tomaten auf den augen, sry...

              hab von Gemouen n guten lösungsansatz bekommen und wollte jetzt meine lösung hier präsentieren, um auch besser nachvollziehen zu können:
              PHP-Code:
              <?  
              if(isset($_POST['rechnen']))  
              {          
              $SQL="SELECT  
                      planeten.masse as masse1, planeten.abstands as radius,  
                      bezugssystem.bezname, bezugssystem.bezmasse as masse2,
                      planeten.name
                    FROM  
                      planeten, bezugssystem  
                    WHERE  
                      planeten.name = '".$_POST['DDPlanet']."' AND  
                      bezugssystem.bezname='Sonne'";  
                       // Query dadurch einfacher
                      $result=@mysql_query($SQL);  
              ?>  

              <table class="style2" >  
                       
                  <?    
                      while($row=@mysql_fetch_row($result))
                      {  
              //echo ($row[0]); //masse planet 
              //echo ($row[1]); //radius in ae
              //echo ($row[2]); //bezname
              //echo ($row[3]);//masse sonne
              //echo ($row[4]);//name planet
                  ?>  
                  <br/>
                  <br/>
                  <tr>          
                      <td style="width: 600px">
                      <strong><center>Gravitationskraft zwischen <? echo $row[4]; ?> und  der Sonne (ohne Beruecksichtigung der Planeten dazwischen!)
                      </center></strong></td>  
                  </tr> 
                  <tr>          
                      <td><center><? echo ((6.673*$row[0]*$row[3]/(($row[1])^2*149^2))*10000) ;?> * 10^33 Newton Gravitationskraft</center></td>          
                  </tr>  
              <?      
                      }  
                  }    
              ?>  
              </table>
              habe jetzt also ne einfachere query verwendet und später erst die rechnung durchgeführt, funktioniert super, danke nochmal an alle!

              ps: $row["masse1"] und soweiter hat nicht funktioniert, woran kann das liegen? hab ich jetz nämlich schon öfter gehabt...

              gruß
              slim jim

              Kommentar


              • #8
                Zitat von slim jim Beitrag anzeigen
                ps: $row["masse1"] und soweiter hat nicht funktioniert, woran kann das liegen?
                Daran, dass es gar kein Array ist.

                Bitte lese zu den Funktionen, die du in deinem Code verwendest, im Manual nach, wenn du nicht weißt, was sie dir zurückgeben!

                Kommentar


                • #9
                  Zitat von slim jim Beitrag anzeigen
                  aber ich arbeite ja mit $_POST, da is das nich so einfach ne?
                  Da irrst du dich leider gewaltig. Nimm das Thema nicht auf die leichte Schulter, solltest du mal etwas machen wollen, was nicht nur lokal läuft.

                  Kommentar

                  Lädt...
                  X