0

i have the problem about ESP8266 to 000webhost this is my arduino serial monitor

19:03:38.806 -> closing connection
19:03:54.834 -> connecting to plantdoctortopic.000webhostapp.com
19:03:55.235 -> Client Connected!
19:03:55.235 -> hello
19:03:55.515 -> HTTP/1.1 200 OK
19:03:55.515 -> Date: Wed, 07 Jul 2021 11:03:54 GMT
19:03:55.515 -> Content-Type: text/html; charset=UTF-8
19:03:55.515 -> Transfer-Encoding: chunked
19:03:55.515 -> Connection: close
19:03:55.515 -> refresh: 1
19:03:55.515 -> Server: awex
19:03:55.515 -> X-Xss-Protection: 1; mode=block
19:03:55.562 -> X-Content-Type-Options: nosniff
19:03:55.562 -> X-Request-ID: 5dc8e2d2a64b028ecca11159a852d551
19:03:55.562 -> 
19:03:55.562 -> 5
19:03:55.562 -> hello
19:03:55.562 -> 0
19:03:55.562 -> 
19:03:55.562 -> 
19:03:55.562 -> closing connection

and this is my php code

<?php header( "refresh:1" );

$servername = "localhost";
$username = "id17187180_root_nkust";
$password = "@Lastcool0628";
$dbname = "id17187180_plantdoctor_db";

// Create connection
$link = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$link) {
  die("Connection failed: " . mysqli_connect_error());
}
$data1 = $_GET["data1"];

$sql = "UPDATE sensor SET humid = ('$data1')";
$result = mysqli_query($link, $sql) or die(mysqli_error($link));

$sql2 = "SELECT humid from sensor";
$result2 = mysqli_query($link, $sql2) or die(mysqli_error($link));

while ($row = mysqli_fetch_assoc($result2)){
    echo $row["humid"];
}
echo $data1;

?>

and this is my arduino code

#include <ESP8266WiFi.h> // important libraries for wifi
#include <ESP8266HTTPClient.h> //important libraries for wifi


char* ssid = "Tenda_561790"; // your wifi connection 
char* password = "bwujf96613";
char* host = "plantdoctortopic.000webhostapp.com";
String data;
void setup()
{
    Serial.begin(115200);
    
    Serial.println();
    Serial.print("Connecting to ");
    Serial.println(ssid);

    WiFi.begin(ssid, password);
    Serial.println("Starting Wifi");
    while (WiFi.status() != WL_CONNECTED) {
        Serial.print(WiFi.status());
        delay(500);
        Serial.print(".");
    }

    Serial.println("");
    Serial.println("WiFi connected");
    Serial.println("IP address: ");
    Serial.println(WiFi.localIP());
}



void loop()
{
  
    data = "hello";
    // Use WiFiClient class to create TCP connections
    WiFiClient client;
    const int httpPort = 80;
    Serial.print("connecting to ");
    Serial.println(host);
    if (!client.connect(host, httpPort)) {
        //Serial.println(client.connect(host,httpPort));
        Serial.println("connection failed");
        return;
    } 
    Serial.println("Client Connected!");
    Serial.println(data);
    // This will send the request to the server
    client.print(String("GET /sensor/index.php?") + 
                          ("&data1=") + data +
                          " HTTP/1.1\r\n" +
                 "Host: " + host + "\r\n" +
                 "Connection: close\r\n\r\n");
                 
    unsigned long timeout = millis();
    while (client.available() == 0) {
        if (millis() - timeout > 1000) {
            Serial.println(">>> Client Timeout !");
            client.stop();
            return;
        }
    }

    while(client.available()){
   
    char c = client.read();
    Serial.print(c);
    }

    Serial.println();
    Serial.println("closing connection");

    delay(16000);
}

and my problem is why the host was connected and my web always say

Notice: Undefined index: data1 in /storage/ssd3/180/17187180/public_html/sensor/index.php on line 14

i try to change the GET or POST on arduino and php but it doesn't work well

client.print(String("GET /sensor/index.php?") + 
                          ("&data1=") + data +
                          " HTTP/1.1\r\n" +
                 "Host: " + host + "\r\n" +
                 "Connection: close\r\n\r\n");

can everyone help me to solve the problem?

Rudy Yeh
  • 9
  • 1
  • It is a very bad idea to use `die(mysqli_error($conn));` in your code, because it could potentially leak sensitive information. See this post for more explanation: [mysqli or die, does it have to die?](https://stackoverflow.com/a/15320411/1839439) – Dharman Jul 07 '21 at 11:57
  • Your Arduino GET request isn't correctly formed. Do a `Serial.print` to the Serial Monitor for `String("GET /sensor/index.php?") + ("&data1=") + data +" HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"` to see what went wrong? – hcheung Jul 07 '21 at 12:30
  • this is my serial monitor to print GET request `22:24:51.880 -> GET /sensor/index.php?data1=hello HTTP/1.1 22:24:51.880 -> Host: plantdoctortopic.000webhostapp.com 22:24:51.927 -> Connection: close ` – Rudy Yeh Jul 07 '21 at 14:25
  • i can't find what this isn't correctly formed – Rudy Yeh Jul 07 '21 at 14:42
  • Remove the `()` in your `("&data1=")`. – hcheung Jul 09 '21 at 12:46

1 Answers1

0

first check if the data is store in database by using url directly from browser Dont use show data syntax on same page (sql2 lines). Use other web page to show data .. like use add.php for adding/ updating data on DB and index.php to see the data ..