Ankündigung

Einklappen
Keine Ankündigung bisher.

Variable richtig einbinden aus mysqli_fetch_array

Einklappen

Neue Werbung 2019

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

  • Variable richtig einbinden aus mysqli_fetch_array

    Halli Hallo,

    für ein Studienprojekt musste ich mich mal wieder etwas mit PHP auseinandersetzen.
    Bis jetzt hat auch alles ganz gut geklappt und es muss letzten Endes auch nur funktionieren.

    Nun zu meiner Frage:

    Ich habe ein Formular erstellt, womit man seinen eigenen Verbrauch ausrechnen kann.
    Die eingegeben Werte werden auch in eine Datenbank eingepflegt, damit man am Ende nicht nur seinen eigenen Verbrauch sieht, sondern auch den durchschnittlichen aller Teilnehmer.

    PHP-Code:
    //Abfrage ausführen
    $ergebnis=mysqli_query($link,$abfrage);

    //Falls die Abfrage nicht ausgeführt wurde Fehlermeldung anzeigen
    if(!$ergebnis){
        echo 
    "Fehler bei Abfrage: ".mysqli_connect_errno();
        }

    echo 
    "<b>Der durchschnitt verbraucht </b>";

    //Ergebnis der Abfrage ausgeben
    while($row  mysqli_fetch_array($ergebnis)) {
       
    print_r ($row ['total']);
        }

    while(
    $row  mysqli_fetch_array($ergebnis)) {
       
    print_r ($row ['total']);
        }

    echo 
    "<br>"
    Soweit funktioniert es auch, nur möchte ich danach den Durchschnittswert noch einmal verwenden, um damit einen Graphen zu erstellen. Leider kann ich die $row Variable nicht einfach übernehmen.

    PHP-Code:
    echo     
            
    "<div id='chart'>
            <ul id='bars'>
            <li><div data-percentage='"
    .$eigenverbrauch."' class='bar'></div><span>Eigenverbrauch</span></li>
            <li><div data-percentage='HIER DURCHSCHNITTWERT EINFÜGEN' class='bar'></div><span>Durchschnittsverbrauch</span></li>
            </ul>
            </div>"

    Kann man den Wert sonst irgendwie zwischenspeichern oder habe ich evtl. die Variable einfach nur falsch eingebunden?
    Probiere jetzt schon ewig rum, komme aber einfach nicht weiter.

    Ich hoffe, ihr könnt mein Problem verstehen und mir evtl. sogar helfen.

    Vielen Dank

    800gramm.

  • #2
    $eigenverbrauch ist doch gar nicht definiert. Und die letzte Zeile von $row bleibt erhalten.
    [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

    Kommentar


    • #3
      $eigenverbrauch ist definiert und funktioniert auch. Ich habe es aufgrund der Übersicht zur liebe nicht aufgeführt.

      Kommentar


      • #4
        Dann zeige mal den entsprechenden Code. Sind das zwei verschiedene PHP Dateien oder eine?
        sorry, shift-taste kaputt

        Kommentar


        • #5
          PHP-Code:
          <?php
          echo "
          <script>
          $(function(){
            $('#bars li .bar').each(function(key, bar){
              var percentage = $(this).data('percentage');

              $(this).animate({
                'height':percentage+'%'
              }, 4000);
            })
          })
          </script>
          "
          ;



          $eigenverbrauch round(($shower_head $shower_time $shower_quantity)+($bath_quantity 120)+($toilet_age $toilet_stop)+($washer_age $washer_quantity)+($dishwasher_age $dishwasher_quantity)+($food_quantity $food_meat)+($food_cheese 3.2)+($food_milk 1.02)+($food_egg 200)+($food_potato 287)+($food_tomato 285)+($food_rice 2500)+($food_soy 2300)+($food_soymilk 300)+($food_weed 1300)+($food_legumes 1250)+($food_apple 820)+($food_mango 1900)+($food_banana 600)+(18900/$outfit)+(1000/$smartphone)+(20000/$computer));

          echo 
          "    <div id='content'>
                  <div id='container1'>
                      <div class='wrapper'>
                      <div class='form-group'>
                          <div class='form-row'>
                  <div class='form-question'>

                      "
          ;
          echo 
          "Sie verbrauchen " $eigenverbrauch " Liter Wasser";
          echo 
          "<br>";


          mysqli_report(MYSQLI_REPORT_STRICT);

          //Variablendeklaration
          include ("variablendeklaration.php");

          $abfrage =  
              
          "SELECT ROUND(AVG((shower_head * shower_time * shower_quantity)+(bath_quantity * 120)+(toilet_age * toilet_stop)+(washer_age * washer_quantity)+(dishwasher_age * dishwasher_quantity)+(food_quantity * food_meat)+(food_cheese * 3.2)+(food_milk * 1.02)+(food_egg * 200)+(food_potato * 287)+(food_tomato * 285)+(food_rice * 2500)+(food_soy * 2300)+(food_soymilk * 300)+(food_weed * 1300)+(food_legumes * 1250)+(food_apple * 820)+(food_mango * 1900)+(food_banana * 600)+(18900/outfit)+(1000/smartphone)+(20000/computer))) AS total FROM consume";


          //Verbindung herstellen
          $link mysqli_connect($host,$user,$password)
              OR DIE (
          "Verbindung zum Server fehlgeschlagen.");

          //Datenbank auswählen
          mysqli_select_db($link,$database)
              OR DIE (
          "Datenbank nicht gefunden");    

          //Abfrage ausführen
          $ergebnis=mysqli_query($link,$abfrage);

          //Falls die Abfrage nicht ausgeführt wurde Fehlermeldung anzeigen
          if(!$ergebnis){
              echo 
          "Fehler bei Abfrage: ".mysqli_connect_errno();
              }

          echo 
          "<b>Der durchschnitt verbraucht </b>";

          //Ergebnis der Abfrage ausgeben
          while($row  mysqli_fetch_array($ergebnis)) {
             
          print_r ($row ['total']);
              }

          while(
          $row  mysqli_fetch_array($ergebnis)) {
             
          print_r ($row ['total']);
              }

          echo 
          "<br>";

          echo     
          "<div id='chart'>
                  <ul id='bars'>
                  <li><div data-percentage='"
          .$eigenverbrauch."' class='bar'></div><span>Eigenverbrauch</span></li>
                  <li><div data-percentage='DURCHSCHNITTSWERT' class='bar'></div><span>Durchschnittsverbrauch</span></li>
                  </ul>
                  </div>"
          ;

          //Speicherplatz der Ergebnismenge freigeben, Verbindung schliessen
          mysqli_free_result($ergebnis);
          mysqli_close($link);





          echo 
          "
          </div>
          </div>
          </div>
          </div>

          "
          ;

          ?>
          Das wäre der komplette Code.
          Ich würde gerne die Daten, die in der Variable $abfrage berechnet werden zweimal verwenden. Einmal so als Zahl ausgeben und einmal für die Diagramme.

          Kommentar


          • #6
            Zitat von 800gramm Beitrag anzeigen
            Ich würde gerne die Daten, die in der Variable $abfrage berechnet werden zweimal verwenden. Einmal so als Zahl ausgeben und einmal für die Diagramme.
            Dann speicher die Werte in der while-Schleife erstmal in einem Array und verwende die Werte im Array dann zum Ausgeben und für das Diagramm.

            Kommentar


            • #7
              Du brauchst keine While-Schleife, da nur ein Ergebnis zurück kommt.
              PHP-Code:
              /<?php

              //Verbindung herstellen
              $link mysqli_connect($host,$user,$password,$database)
                  OR DIE (
              "Verbindung zum Server fehlgeschlagen.");

              $sql "SELECT
                      ROUND(AVG((shower_head * shower_time * shower_quantity)+
                          (bath_quantity * 120)+
                          (toilet_age * toilet_stop)+
                          (washer_age * washer_quantity)+
                          (dishwasher_age * dishwasher_quantity)+
                          (food_quantity * food_meat)+
                          (food_cheese * 3.2)+
                          (food_milk * 1.02)+
                          (food_egg * 200)+
                          (food_potato * 287)+
                          (food_tomato * 285)+
                          (food_rice * 2500)+
                          (food_soy * 2300)+
                          (food_soymilk * 300)+
                          (food_weed * 1300)+
                          (food_legumes * 1250)+
                          (food_apple * 820)+
                          (food_mango * 1900)+
                          (food_banana * 600)+
                          (18900/outfit)+
                          (1000/smartphone)+
                          (20000/computer))) AS total
                      FROM consume"
              ;

              //Abfrage ausführen
              $result mysqli_query($link,$ql);

              //Ergebnis der Abfrage ausgeben
              if( $result ){
                  
              $row  mysqli_fetch_array($result);
                  
              $private_consumption $row ['total']);
                  
              //Falls die Abfrage nicht ausgeführt wurde Fehlermeldung anzeigen
              }else{  
                  
              $private_consumption =  "Fehler bei Abfrage: ".mysqli_connect_errno();
              }

              ?>
              Die Variable $private_consumption kannst du dann nutzen, so oft du willst.

              Du solltest aber das EVA-Prinzip einhalten und den Kontextwechsel beachten.
              Datenbankausgaben haben inmitten von HTML-Ausgaben nichts zu suchen.

              Verwende durchgehend englische Variablenbezeichner und keinen Mischmasch aus mehreren Sprachen.

              Kommentar


              • #8
                Vielen Dank protestix, endlich läuft es.
                Du hattest noch zwei kleine Tippfehler in dem Code aber die waren schnell behoben.
                Vielen Dank nochmal!

                Kommentar

                Lädt...
                X