Postingan lainnya
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;
}
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
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.
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;
}
$field datanya kayak gimana? coba cek pakek:
die(var_dump($field));
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) }
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];
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
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";
}
Jawaban Terpilih
udh gk ada error lagi bang,, tp kode ny gk otomatis angkany tetap di nol(0) gk berubah-berubah
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 = "";