Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP Skript trägt Daten nicht in MySQL ein (erledigt)

Einklappen

Neue Werbung 2019

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

  • PHP Skript trägt Daten nicht in MySQL ein (erledigt)

    Hallo an alle,

    mein Name ist Stephan. Ich bin im Umgang mit PHP noch komplett ungeübt. Ich Moment bin ich aber dabei für meine Frau einen Garten Blog einzurichten, in dem sie auch jederzeit das aktuelle Wetter sehen kann. Dazu habe ich eine Arduino Wetterstation gebaut, die über einen UMTS Router die Messdaten aus dem Schrebergarten ins Netz streamt. Als Tutorial für den Eintrag vom Arduino in eine MySQL Datenbank habe ich folgende Seite genutzt:
    http://jleopold.de/2011/03/16/arduin...ger-mysql-php/

    Nun habe ich aber wie gesagt quai keine Erfahrungen mit PHP und es ist gekommen wie es kommen musste, irgendwie klappt das ganze nicht. Da ich nun aber durch fehlendes Grundwissen auch nicht genau weiß, an welcher Stelle es hakt, kann ich auch schlecht das Problem ergooglen.

    Ich wollte erst einmal einfach an die Sache herangehen und eine einzige Variable in die Datenbank schreiben lassen. Sobald das klappt, kann ich mich um die restlichen drei kümmern. Allerdings klappt wie gesagt selbst die erste nicht wirklich.
    Nachdem ich ein paar andere Threads hier gelesen habe, habe ich auf jeden Fall schon mal den Code um folgenden Bestandteil erweitert, damit die Fehlersuche einfacher wird:

    PHP-Code:
    error_reporting(E_ALL); 

    Hier sind nun die angepassten Codes:


    1. Das Skript, das die Daten in Empfang nimmt:

    PHP-Code:
    <?php

    include("db.php");

    error_reporting(E_ALL);  

    // GET mit Prüfung (durch Aufruf von "http://elviras-garten.de/arduino_push_data.php?BODEN=21.9&key=PASSWORT")

    if ((isset($_GET['BODEN'])) and (($_GET['key']) == "PASSWORT")) {    
        
    $TEMP = ($_GET['BODEN']);
        echo 
    $BODEN;
        
    $eintragen mysql_query("INSERT INTO mySQL_Garten (BODEN,DATE)    VALUES ($BODEN, NOW())");    
        
        
    } else {

        
    $ergebnis mysql_query("SELECT * FROM mySQL_GARTEN ORDER BY id DESC LIMIT 1");     //nur letzten Datensatz
        
    while($row mysql_fetch_object($ergebnis))
        {
            echo 
    "Aktuellster Wert in der Datenbank: <br><br>";
            echo 
    "ID \t\t\t","<b>","<font color = 'red'>",$row->ID,"</b><br>";
            echo 
    "<font color = 'black'>","Temp \t\t","<b>","<font color = 'red'>",$row->TEMP,"</b><br>";
            echo 
    "<font color = 'black'>","Datum / Uhrzeit \t","<b>","<font color = 'red'>",$row->DATE,"</b><br>";
        }
    }

    ?>

    2. Die db.php (ich habe hier nur den Nutzername und das Passwort zur MySQL "geschwärzt":

    PHP-Code:
    <?php
    mysql_connect
    ("localhost","web***","*****") or die ("Keine Verbindung moeglich");
    mysql_select_db("usr_web619_1") or die ("Die Datenbank existiert nicht.");
    ?>

    Im Anhang ist noch ein Screenshot von der MySQL Tabelle und der Fehlermeldung, die ich bekomme, wenn ich versuche durch das PHP Skript Daten an die Datenbank zu schicken.


    Es wäre schön, wenn mir jemand helfen könnte, oder mich irgendwie auf die richtige Bahn lenken könnte, wie ich mir selbst helfen kann.


    Viele Grüße


    Stephan
    Angehängte Dateien

  • #2
    Du holst Dir den "Boden" als $TEMP, willst aber $BODEN speichern?!

    PHP-Code:
    $TEMP = ($_GET['BODEN']); 
    echo 
    $BODEN
    $eintragen mysql_query("INSERT INTO mySQL_Garten (BODEN,DATE)    VALUES ($BODEN, NOW())"); 

    Kommentar


    • #3
      Hallo Crazynet,

      vielen Dank für den Tipp! Da hat sich wohl ein Flüchtigkeitsfehler eingeschlichen. Nach der Änderung funktioniert das Skript zuerst einmal ohne offensichtlichen Fehler. Nach der Eingabe der Werte durch die Adressleiste des Browsers erscheint als einzelne Zahl der Wert, den ich eingegeben habe. (Siehe Bild unten)

      PHP-Code:
      <?php

      include("db.php");

      error_reporting(E_ALL);  

      // GET mit Prüfung (durch Aufruf von "http://elviras-garten.de/arduino_push_data.php?BODEN=21&key=PASSWORT")

      if ((isset($_GET['BODEN'])) and (($_GET['key']) == "PASSWORT")) {    
          
      $BODEN = ($_GET['BODEN']);
          echo 
      $BODEN;
          
      $eintragen mysql_query("INSERT INTO mySQL_GARTEN (BODEN,DATE)    VALUES ($BODEN, NOW())");    
          
          
      } else {

          
      $ergebnis mysql_query("SELECT * FROM mySQL_GARTEN ORDER BY id DESC LIMIT 1");     //nur letzten Datensatz
          
      while($row mysql_fetch_object($ergebnis))
          {
              echo 
      "Aktuellster Wert in der Datenbank: <br><br>";
              echo 
      "ID \t\t\t","<b>","<font color = 'red'>",$row->ID,"</b><br>";
              echo 
      "<font color = 'black'>","Temp \t\t","<b>","<font color = 'red'>",$row->TEMP,"</b><br>";
              echo 
      "<font color = 'black'>","Datum / Uhrzeit \t","<b>","<font color = 'red'>",$row->DATE,"</b><br>";
          }
      }

      ?>

      In der Datenbank taucht aber trotzdem kein Wert auf. Und wenn ich nun durch die Eingabe der PHP Seitenadresse ohne Werte die zuletzt eingefügten Werte bekommen möchte, erscheint wieder eine Fehlermeldung:

      Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /var/www/web619/html/arduino_push_data.php on line 18

      (auch hier siehe Bild unten).

      Hier habe ich ja nichts verändert, der Code ist genau der gepostete aus dem Tutorial, nur der Tabellenname ist angepasst worden.


      Viele Grüße


      Stephan



      Edit:

      nachdem ich zur Kontrolle noch folgenden Codeschnipsel in die PHP Datei eingeschirben habe, kommt auch die Rückmeldung, das der Eintrag nicht erfolgreich war:

      PHP-Code:
      if($eintragen == true)
       {
      echo 
      "eintrag erfolgreich";
      }
      else
      {
      echo 
      "nicht erfolgreich";

      Angehängte Dateien

      Kommentar


      • #4
        Auf Basis meiner Hoffnung das du dem englischen mächtig bist ein Link zur Lösung deines Problems:
        http://stackoverflow.com/questions/5...ql-query-error

        Du musst prüfen ob der Query erfolgreich war (das tust du nach dem Edit auch) aber du gibst dir im Fehlerfall nicht den eigentlichen Fehler aus!
        Gruß,
        SebTM

        Kommentar


        • #5
          Heißt es jetzt TEMP oder BODEN?
          PHP-Code:
          echo "<font color = 'black'>","Temp \t\t","<b>","<font color = 'red'>",$row->TEMP,"</b><br>"

          Kommentar


          • #6
            Ähhhm - qualifizerte Frage!
            Natürlich Boden weil deine Splate so heißt ...

            Und mal wieder:
            http://www.php.de/php-einsteiger/489...nsammlung.html

            Ich hoffe ja tr0y, nikosch, cycap, lstegelitz etc. haben einen Shortcut dafür - sollte ich mir ggf. langsam auch anlegen ...
            Gruß,
            SebTM

            Kommentar


            • #7
              So, dass Problem ist erst mal gelöst. Mein Hostinganbieter erlaubt keinen externen MySQL Zugriff, damit hat sich die Sache erst einmal erledigt. Ich muss mir was neues überlegen...

              Vielen Dank für die Hilfe!

              Kommentar

              Lädt...
              X