Tahun baru, skill baru! 🚀. Masukkan kupon "skill2025" untuk diskon 30% di kelas apa saja

Selalu keluar,Catchable fatal error: Object of class stdClass could not be converted to string

mohon bantuan nya function buatKode ($tabel, $inisial){ global $koneksidb;

$struktur = mysqli_query ($koneksidb,"SELECT * FROM $tabel"); $field = mysqli_fetch_field_direct($struktur,0); $panjang = mysqli_fetch_field_direct($struktur,0); $qry = mysqli_query ($koneksidb,"SELECT MAX(".$field.") FROM $tabel"); $row = mysqli_fetch_array($qry);

if ($row[0] ==""){ $angka = 0; } else{ $angka = substr($row[0], strlen($inisial)); } $angka++; $angka = strval($angka); $tmp = ""; for($i=1; $i<=($panjang-strlen($inisial)-strlen($angka)); $i++){ $tmp=$tmp."0"; } return $inisial.$tmp.$angka;

}

avatar raidatulk
@raidatulk

5 Kontribusi 0 Poin

Diperbarui 8 tahun yang lalu

10 Jawaban:

keterangannya bisa ditambahkan biar lebih jelas, dapat errornya pada baris yang mana, pada kode yang mana. Disini kalau ada kode bisa ditaro di 'tag kode' biar kelihatan lebih rapi, lebih enak dibaca orang lain

avatar hilmanski
@hilmanski

2702 Kontribusi 2140 Poin

Dipost 8 tahun yang lalu

Sependapat sama Bang Hilman.

Dan, kalau menurut saya, error kayak gitu biasanya karna ada data array/object yang dipanggil secara string. Contoh:

$object = new stdClass;
$array = ['data1', 'data2'];

// Dipanggil secara string
echo $array; // Bakal error
echo $array[0]; // Output; data1
echo $object; // Bakal error
echo $object[0]; // Bakal error, soalnya object bukan array.

Jadi, check dulu setiap data hasil querynya, dan check cara data tersebut dipanggil.

avatar dalikewara
@dalikewara

351 Kontribusi 261 Poin

Dipost 8 tahun yang lalu

function buatKode ($tabel, $inisial){
  global $koneksidb;

  $struktur   = mysqli_query ($koneksidb,"SELECT * FROM $tabel");
  $field      = mysqli_fetch_field_direct($struktur,0);
  $panjang    = mysqli_fetch_field_direct($struktur,0);
  $qry = mysqli_query ($koneksidb,"SELECT MAX(".$field.") FROM $tabel"); //baris ini bang error
  $row = mysqli_fetch_array($qry);

  if ($row[0] ==""){
    $angka = 0;
  }
  else{
      $angka = substr($row[0], strlen($inisial));
  }
  $angka++;
  $angka = strval($angka);
  $tmp = "";
  for($i=1; $i<=($panjang-strlen($inisial)-strlen($angka)); $i++){
    $tmp=$tmp."0";
  }
  return $inisial.$tmp.$angka;

}

avatar raidatulk
@raidatulk

5 Kontribusi 0 Poin

Dipost 8 tahun yang lalu

$field datanya kayak gimana? coba cek pakek:

die(var_dump($field));

avatar dalikewara
@dalikewara

351 Kontribusi 261 Poin

Dipost 8 tahun yang lalu

object(stdClass)#3 (13) { ["name"]=> string(11) "kd_provinsi" ["orgname"]=> string(11) "kd_provinsi" ["table"]=> string(8) "provinsi" ["orgtable"]=> string(8) "provinsi" ["def"]=> string(0) "" ["db"]=> string(13) "toko_bonekadb" ["catalog"]=> string(3) "def" ["max_length"]=> int(2) ["length"]=> int(3) ["charsetnr"]=> int(8) ["flags"]=> int(20483) ["type"]=> int(254) ["decimals"]=> int(0) }

avatar raidatulk
@raidatulk

5 Kontribusi 0 Poin

Dipost 8 tahun yang lalu

Nah, itu masalahnya, pada baris ini:

$qry = mysqli_query ($koneksidb,"SELECT MAX(".$field.") FROM $tabel"); //baris ini bang error

$field di panggil secara string, sedangkan datanya berupa object, alhasil jadi error. Coba pakek ini:

// Kalau ingin menggunakan max_length dari hasil $field
$qry = mysqli_query ($koneksidb,"SELECT MAX(".$field->max_length.") FROM $tabel"); //baris ini bang error

// Atau yang lebih dinamis, sesuai dengan variable $struktur
$qry = mysqli_query ($koneksidb,"SELECT MAX(".$field->$struktur.") FROM $tabel"); //baris ini bang error

Kalau nggak bisa, $field nya bikin gini:

$field = mysqli_fetch_field_direct($struktur,0)[0];

avatar dalikewara
@dalikewara

351 Kontribusi 261 Poin

Dipost 8 tahun yang lalu

function buatKode ($tabel, $inisial){
  global $koneksidb;

  $struktur   = mysqli_query ($koneksidb,"SELECT * FROM $tabel");
  $field      = mysqli_fetch_field_direct($struktur,0);
  $panjang    = mysqli_fetch_field_direct($struktur,0);

  $qry = mysqli_query ($koneksidb,"SELECT MAX(".$field->max_length.") FROM $tabel");
  $row = mysqli_fetch_array($qry);

  if ($row[0] ==""){
    $angka = 0;
  }
  else{
      $angka = substr($row[0], strlen($inisial));
  }
  $angka++;
  $angka = strval($angka);
  $tmp = "";
  for($i=1; $i<=($panjang-strlen($inisial)-strlen($angka)); $i++){ //disini juga error ny bang
    $tmp=$tmp."0";
  }
  return $inisial.$tmp.$angka;

}

maaf bang banyak tanya, soalny pemula banget,, mohon bantuan nya bang masih error std

avatar raidatulk
@raidatulk

5 Kontribusi 0 Poin

Dipost 8 tahun yang lalu

Yang baris ini masih error gak?

$qry = mysqli_query ($koneksidb,"SELECT MAX(".$field->max_length.") FROM $tabel");

Kalau baris ini kasusnya sama, variable $panjang juga object, jadi bikin sama kayak variable $field.

// Misal mau menggunakan max_length di $panjang
for($i=1; $i<=($panjang->max_length - strlen($inisial) - strlen($angka)); $i++){ //disini juga error ny bang
    $tmp=$tmp."0";
}

avatar dalikewara
@dalikewara

351 Kontribusi 261 Poin

Dipost 8 tahun yang lalu

Jawaban Terpilih

udh gk ada error lagi bang,, tp kode ny gk otomatis angkany tetap di nol(0) gk berubah-berubah

avatar raidatulk
@raidatulk

5 Kontribusi 0 Poin

Dipost 8 tahun yang lalu

Maksudnya variable $angka ? Hmm... Karna saya nggak tau otomatisnya kayak gimana, dan nggak bisa ngetes juga. Sedikit tips, dari kode ini:

function buatKode ($tabel, $inisial){
  global $koneksidb;

  $struktur   = mysqli_query ($koneksidb,"SELECT * FROM $tabel");
  $field      = mysqli_fetch_field_direct($struktur,0);
  $panjang    = mysqli_fetch_field_direct($struktur,0);

  $qry = mysqli_query ($koneksidb,"SELECT MAX(".$field->max_length.") FROM $tabel");
  $row = mysqli_fetch_array($qry);

  if ($row[0] ==""){
    $angka = 0;
  }
  else{
      $angka = substr($row[0], strlen($inisial));
  }
  $angka++;
  $angka = strval($angka);
  $tmp = "";
  for($i=1; $i<=($panjang-strlen($inisial)-strlen($angka)); $i++){ //disini juga error ny bang
    $tmp=$tmp."0";
  }
  return $inisial.$tmp.$angka;

}

Check setiap data yang ada. Misal angka tidak berubah, kita cari tahu tidak berubahnya dari bagian mana. Pakek fungsi die(var_dump($angka));

// Misal kita mau cek dari bagian ini
$angka++;
$angka = strval($angka);

die(var_dump($angka)); // Check apa $angka betul atau tidak. Jika tidak, check lagi pada bagian atas atau bawahnya.

$tmp = "";

avatar dalikewara
@dalikewara

351 Kontribusi 261 Poin

Dipost 8 tahun yang lalu

Login untuk ikut Jawaban