Tolong pilih kategori sesuai, jenis posting (pertanyaan atau bukan) dan sertakan tag/topik yang sesuai misal komputer, php, mysql, dll.
Promosi atau posting tidak pada tempatnya akan kami hapus.
Klik link berikut untuk informasi cara menyisipkan kode program supaya tampil rapi dan terformat dengan baik di diskusiweb.com: http://www.diskusiweb.com/discussion/50415/cara-menyisipkan-kode-program-di-diskusiweb-com

Baca cara posting gambar/image di post Anda: http://www.diskusiweb.com/discussion/47345/cara-menyisipkan-menyertakan-image-pada-posting/p1

Update field pada database gagal menggunakan checkbox



Salam Suhu.....

Newbie mau nanya ni...
ceritanya gini

1. gua mau update table "po_tb" di databse
tepatnya di "id 3" ==> no_tb menjadi 800 dan kembali menjadi 2

2. kemudian gua buka form editnya seperti di gambar sudah di contreng
pas di checkbox 700 dan nilainya sudah di ubah jadi 800, dan di simpan kemudian muncul pesan berhasil

3. nah yang jadi masalah pas di cek di database no_tb berhasil berubah jadi 800,
tapi field kembali tetap 0 tapi malah mengupdate field kembali pada id ke 1

dan itu juga kejadian jika di ubah pada id ke 2, untuk value kembali selalu mengedit dari id ke 1 terus


berikut scrip form-nya check.php :
<?php
mysql_connect('localhost','root','');
mysql_select_db('wew');

$po = mysql_query("SELECT * FROM tb_po");
$data_po = mysql_fetch_array($po);
?>

<form class='w3-small' method='POST' action='input.php'>
<table>
<tr>
<td colspan='4'><b><u>NO TABUNG DITERIMA</b></u></td>
</tr>

<?php
$no=1;
$sql_supplier = mysql_query("SELECT * FROM po_tb");
while($x = mysql_fetch_assoc($sql_supplier))
{
echo"
<tr>
<td width='240px' colspan='4'>

"; echo" <input type='checkbox' name='kembali[]' value='2'>
<input type='text' size='4' name='tabung[]' value='";echo $x['no_tb']; echo "' required> "; echo $x['id_tabung'];
echo "<input type='hidden' size='4' name='id_po[]' value='";echo $x['id']; echo "' required>

</td>

</tr>";
$no++;
}

?>
<tr>
<td colspan='4'> </u></td>
</tr>
<tr>
<td colspan='3'><button type='submit' name='submit' value='next' class='w3-btn'><i class='fa fa-save'></i> Simpan</button></td>
</tr>
</table>
</form>

dan ini script actionnya input.php:
<?php
mysql_connect('localhost','root','');
mysql_select_db('wew');

//variable input

$kembali= $_POST['kembali'];
$id_po= $_POST['id_po'];
$tabung=$_POST['tabung'];

$count = count($tabung);

for( $i=0; $i <= $count; $i++ )
{
$isi=mysql_query("UPDATE po_tb SET kembali='$kembali[$i]', no_tb='$tabung[$i]' WHERE id='$id_po[$i]'");
}
if($isi)
{
echo "Update berhasil";
}
else
{
echo "Update gagal";
}
?>
mohon pencerahannya suhu
Tagged:

Comments

  • edited April 29
    [1]
    gw ngeliat koding elo ini

    <input type='text' size='4' name='tabung[]' value='";echo $x['no_tb']; echo "' required> "; echo $x['id_tabung'];

    tapi gw ngeliat tampilan hasil form elo (no 2 & 3)
    $x['id_tabung'] ... ndak tercetak

    gw liat table elo (no 1 & 5), emang ndak ada field 'id_tabung'

    dari situ gw simpulin, error reporting elo kalo ndak dimatikan, ya settingnya bukan E_ALL
    karena harusnya muncul pesan notice ...
    Notice: Undefined index: id_tabung in ...\check.php on line ...

    kalo lagi koding, lagi development, hidupkan error reporting dan set error reporting ke E_ALL
    itu akan sangat membantu kalo ada kesalahan

    kalo aplikasi sudah jalan, silakan dimatikan

    kalo mau menghidupkan, ubah setting di php.ini
    cari :
    error_reporting=... apa pun nilainya ...
    ubah jadi
    error_reporting=E_ALL

    cari :
    display_errors=... apa pun nilainya ...
    ubah
    display_errors=On

    simpan php.ini, lalu jangan lupa restart web server

    [2]
    	echo"
    <tr>
    <td width='240px' colspan='4'>

    "; echo" <input type='checkbox' name='kembali[]' value='2'>
    <input type='text' size='4' name='tabung[]' value='";echo $x['no_tb']; echo "' required> "; echo $x['id_tabung'];
    echo "<input type='hidden' size='4' name='id_po[]' value='";echo $x['id']; echo "' required>

    </td>

    </tr>";
    pake concatenate string to mas, biar bacanya enak ... ndak kebanyakan echo
    	echo "
    <tr>
    <td width='240px' colspan='4'>
    <input type='checkbox' name='kembali[]' value='2'>
    <input type='text' size='4' name='tabung[]' value='".$x['no_tb']."' required> ".$x['id_tabung']."
    <input type='hidden' size='4' name='id_po[]' value='".$x['id']."' required>
    </td>
    </tr>";

    [3]
    elo bikin
    $no=1;
    $no++;
    buat apa yah ?

    biasanya yg kaya gitu kalo niat nya bikin
    - nomor baris
    - atau nambah index pake nomor berurut

    tapi kalo liat koding elo di atas, ndak ada pemanfaatannya

    kalo emang ndak dipake ya dihapus saja

    [4]
    ... ini gw men-simulasi-kan form elo jadinya kaya apa ...
    <pre><?php print_r($_POST); ?></pre>

    <form class='w3-small' method='POST'>
    <table>
    <tr>
    <td colspan='4'><b><u>NO TABUNG DITERIMA</b></u></td>
    </tr>
    <tr>
    <td width='240px' colspan='4'>
    <input type='checkbox' name='kembali[]' value='2'>
    <input type='text' size='4' name='tabung[]' value='13' required>
    <input type='hidden' size='4' name='id_po[]' value='1' required>
    </td>
    </tr>
    <tr>
    <td width='240px' colspan='4'>
    <input type='checkbox' name='kembali[]' value='2'>
    <input type='text' size='4' name='tabung[]' value='36' required>
    <input type='hidden' size='4' name='id_po[]' value='2' required>
    </td>
    </tr>
    <tr>
    <td width='240px' colspan='4'>
    <input type='checkbox' name='kembali[]' value='2'>
    <input type='text' size='4' name='tabung[]' value='700' required>
    <input type='hidden' size='4' name='id_po[]' value='3' required>
    </td>
    </tr>
    <tr>
    <td colspan='4'> </u></td>
    </tr>
    <tr>
    <td colspan='3'><button type='submit' name='submit' value='next' class='w3-btn'><i class='fa fa-save'></i> Simpan</button></td>
    </tr>
    </table>
    </form>
    coba elo simpan jadi file php sembarang, lalu coba elo panggil ...
    itu kalo elo check pilihan ke-3 (700) & elo ganti nilai 700 => 800
    lalu elo submit ...

    isi $_POST yg elo terima sudah muncul ...
    Array
    (
    [tabung] => Array
    (
    [0] => 13
    [1] => 36
    [2] => 800
    )

    [id_po] => Array
    (
    [0] => 1
    [1] => 2
    [2] => 3
    )

    [kembali] => Array
    (
    [0] => 2
    )

    [submit] => next
    )
    'kembali' cuma ada 1 elemen, karena yg elo check emang cuma 1

    dan karena elo pake name="...[]"
    index nya pasti mulai dari 0
    biarpun yg elo check pilihan ke-3, tetep dapatnya index 0

    otomatis kalo pake UPDATE model elo, ya yg sama-sama index 0 itu
    tabung[0] = 13
    id_po[0] = 1
    kembali[0] = 2

    perintah UPDATE elo kalo diurut jadi nya :
    UPDATE po_tb SET kembali='2', no_tb='13' WHERE id='1'
    UPDATE po_tb SET kembali='', no_tb='36' WHERE id='2'
    UPDATE po_tb SET kembali='', no_tb='800' WHERE id='3'

    coba lewat phpmyadmin elo ganti salah satu field 'kembali'-nya data nomor 2 atau 3
    jadikan 100 atau berapa saja terserah

    lalu coba elo jalankan koding elo sendiri ...
    yg semula elo ubah nilainya, pasti balik semua jadi 0
    karena ini : SET kembali=''

    [5]
    ... balik ke nomor [1] ...

    kalo error reporting elo hidup ... koding elo sudah teriak salah ...

    saat elo loop for( $i=0; $i <= $count; $i++ )
    lalu elo coba baca isi kembali='$kembali[$i]'

    koding elo sudah ngomong sendiri :
    Notice: Undefined index: 1 in ...\input.php on line ...
    Notice: Undefined index: 2 in ...\input.php on line ...

    karena $kembali[1] & $kembali[2] emang ndak ada
    dan elo pasti langsung tau bahwa $kembali[] isinya cuma 1 elemen

    itu gunanya error reporting dihidupkan

    [6]
    ... solusinya sih banyak ...
    tapi kalo mengikuti pola pikir elo ...

    [a]
    elo bisa pake nomor [3] yg ndak elo manfaatkan
    	echo "
    <tr>
    <td width='240px' colspan='4'>
    <input type='checkbox' name='kembali[".$no."]' value='2'>
    <input type='text' size='4' name='tabung[".$no."]' value='".$x['no_tb']."' required> ".$x['id_tabung']."
    <input type='hidden' size='4' name='id_po[".$no."]' value='".$x['id']."' required>
    </td>
    </tr>";
    $_POST yg elo terima bakal jadi :
    Array
    (
    [tabung] => Array
    (
    [1] => 13
    [2] => 36
    [3] => 800
    )

    [id_po] => Array
    (
    [1] => 1
    [2] => 2
    [3] => 3
    )

    [kembali] => Array
    (
    [3] => 2
    )

    [submit] => next
    )
    'kembali' tetap 1 elemen, tapi nomor index nya sama dgn yg semestinya
    tapi nomor index-nya mulai dari 1, soalnya $no elo juga mulai dari 1

    tapi tetep bakal ada notice
    Notice: Undefined index: 1 in ...\input.php on line ...
    Notice: Undefined index: 2 in ...\input.php on line ...
    karena index 1 & 2 elo emang kagak ada

    dan kalo 'kembali' elo sudah ada nilainya, semua bakal balik jadi 0
    karena kena perintah SET kembali=''


    [b]
    selain diubah jadi [a], elo ubah sekalian UPDATE elo
    looping bukan pake for( $i=0; $i <= $count; $i++ )
    tapi foreach
    dan yg di foreach $kembali-nya, soalnya itu isinya yg tidak pasti dan nomor index nya bisa ndak urut ...

    misal elo check nomor 1 & 3, dgn $no mulai dari 1
    'kembali' isinya bakal jadi :
    [kembali] => Array
    (
    [1] => 2
    [3] => 2
    )

    jadi elo pake foreach
    foreach($kembali as $index=>$value) {
    ...
    UPDATE po_tb SET kembali='$kembali[$index]', no_tb='$tabung[$index]' WHERE id='$id_po[$index]'
    ...
    }

    itu yg berubah hanya yg 'kembali' elo check

    kembali utk data yg lain ndak bakal berubah
    notice juga ndak bakal nungul
  • Super sekali...
    maksi suhu, masih tahap belajar....

    sangat membantu sekali... o:) o:)
    langsung coba eksekusi instruksinya
    :D :D :D
  • Problem solved

    terimakasih banyak ilmunya Suhu... o:) o:) o:)
    sudah menjabarkan dengan sangat detail...

    3 hari gua mikirin ini, karena ilmunya masih dangkal

    :)
  • hidupkan error reporting, sudah itu saja

    kalo ada masalah, php pasti sudah bilang ada masalah di file apa baris yg mana
  • Siap suhu...
Sign In or Register to comment.