[ask] Notice: Undefined variable

Discussion in 'Desain Web dan Programming' started by xpreborn, 29 Sep 2015.

Thread Status:
Not open for further replies.
  1. xpreborn

    xpreborn Poster 2.0

    Messages:
    183
    Likes Received:
    4
    Trophy Points:
    18
    Saya ada coba seperti ini namun nilainnya ko dibaca Undefined variable yach, kira2 saya salahnya dmn? karena jika saya echo hasilnya muncul
    Tujuannya yaitu, saya ada beberapa IP address yang telah saya coba daftar di database [$ipaddress], kemudian script test.php di bawah akan dijalankan dgn crond setiap 30 menit, jd dia akan ngecek dgn ping semua IP address yang ada di $ipaddress, nah jika bisa diping maka dia akan insert ke table updown dan begitu juga jika tidak bisa diping maka akan diinsert ke table updown, dgn catatan satu IP Address stausnya hanya ada satu saja jadi jika bisa diping maka statusnya alive jika ga bisa diping akan berubah ke down

    koneksi.php
    Code:
    <?php
    $con=mysqli_connect("localhost","root","123abc","test");
    if (mysqli_connect_errno())
      {
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
      }
    
    ?>
    test.php
    Code:
    <?php
    include("koneksi.php");
    include("ipaddress.php");
    
    $date = date("Y-m-d H:i:s");
    
    function pingAddress($ip) {
        $pingresult = exec("ping -c3 $ip", $outcome, $status);
        if (0 == $status) {
    mysqli_query($con,"INSERT INTO updown (ipaddr,status,tglalive)
    VALUES ('$ip','ALIVE','$date')");
    mysqli_close($con);
    
        } else {
    mysqli_query($con,"INSERT INTO updown (ipaddr,status,tgldown)
    VALUES ('$ip','DOWN','$date')");
    mysqli_close($con);
          }
    }
    pingAddress("$ipaddress");
    Error :
    Notice: Undefined variable: con in /var/www/html/test.php on line 9
    Notice: Undefined variable: date in /var/www/html/test.php on line 10
    Warning: mysqli_query() expects parameter 1 to be mysqli, null given in /var/www/html/test.php on line 10
    Notice: Undefined variable: con in /var/www/html/ping.php on line 11
    Warning: mysqli_close() expects parameter 1 to be mysqli, null given in /var/www/html/test.php on line 11
     
  2. masiqbal

    masiqbal Expert 2.0

    Messages:
    862
    Likes Received:
    249
    Trophy Points:
    43
    Karena variable $con di luar function pingAddress
    cara tambahkan:
    global $con;
     
    xpreborn likes this.
  3. xpreborn

    xpreborn Poster 2.0

    Messages:
    183
    Likes Received:
    4
    Trophy Points:
    18
    Sudah saya coba tapi masih undefined variabel juga Mas [bisa jadi saya yang salah penggunaannya],

    lalu saya coba buat simple saja dgn menggunakan satu IP lalu susunannya saya ubah dikit, sudah tidak undefined variabel namun ko ga diinsert ke databasenya yach [tanpa error]
    Code:
    <?php
    function pingAddress($ip) {
    $date = date("Y-m-d H:i:s");
    include("koneksi.php");
    
        $pingresult = exec("ping -c3 $ip", $outcome, $status);
        if (0 == $status) {
            mysqli_query($con,"INSERT INTO updown (ipaddress,status,tglalive)
            VALUES ('$ip','ALIVE',$date)");
            mysqli_close($con);
        } else {
            mysqli_query("INSERT INTO updown (ipaddress,status,tgldown)
            VALUES ('$ip','DOWN',$date)");
            mysqli_close($con);
        }
    }
    
    pingAddress("127.0.0.1");
    Field tablenya ada 4 :
    ipaddress | status | tglalive | tgldown

    Edit:
    Ternyata tdk terinser kurang tanda petik ' '
     
    Last edited: 29 Sep 2015
  4. xpreborn

    xpreborn Poster 2.0

    Messages:
    183
    Likes Received:
    4
    Trophy Points:
    18
    @masiqbal
    Oh yach tanya satu lagi Mas,
    Untuk penggunaan ON DUPLICATE KEY UPDATE gmn yach Mas ?
    Tujuannya agar jika ada IP Address yang reply akan dirubah statusnya ke ALIVE dan jika statusnya ga bs diping maka statusnya dirubah ke DOWN termasuk datenya juga diupdate
    karena yang saya buat skrg :
    1. Test satu IP saja,
    2. Saya coba jalankan test.php dgn kondisi IP tujuannya bisa diping, terinsert ke database : IP | status | date ,----->>aman
    3. lalu IP tersebut saya matikan lalu saya coba jalankan lagi namun tidak ada perubahan dari hasil nomor 2 td
    saya inginnya ketika down/ga bs diping statusnya dirubah juga dan date downya juga dicatat dan seperti itu ketika sdh bisa diping kembali
     
  5. masiqbal

    masiqbal Expert 2.0

    Messages:
    862
    Likes Received:
    249
    Trophy Points:
    43
    kalau pakai MYSQL ada perintah REPLACE (INSERT jika belum ada, UPDATE jika sudah ada)
     
Loading...
Thread Status:
Not open for further replies.

Share This Page

Loading...