Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

PHP MYSQL - Mengisi baris bernomor tabel HTML berdasarkan apakah mereka cocok dengan nomor baris

Untuk mengatasi masalah secara langsung (saya akan membahas lebih lanjut sebentar lagi), Anda mengulangi daftar lengkap perangkat dan lalu - setelah Anda selesai mengulang semuanya - Anda mencoba untuk menampilkannya. Karena itu, Anda hanya menampilkan perangkat terakhir yang disentuh.

Kode Anda saat ini, terpotong, adalah:

while($row = mysql_fetch_array($result_devices)) {
    $server = $row['devicename'];
    $ustart = $row['ustartlocation'];
}
for ($i = 0; $i < $cabinets_sqlrow[2]; $i++) {
    $u = $cabinets_sqlrow[2] - $i;
    ...
    if ($u == $ustart) {
        echo $server;
    }
    ...
}

Jika saya mengerti apa yang Anda coba lakukan, Anda harus menyimpan setiap perangkat ke dalam larik "perangkat" dan mengulanginya selama setiap iterasi for Anda lingkaran. Coba sesuatu seperti:

$devices = array();
while($row = mysql_fetch_array($result_devices)) {
    $devices[] = array(
        'server' => $row['devicename'],
        'ustart' => $row['ustartlocation']
    );
}
for ($i = 0; $i < $cabinets_sqlrow[2]; $i++) {
    ...
    $output = 'empty';
    foreach ($devices as $device) {
        if ($u == $device['ustart']) {
            $output = $device['server'];
            break;
        }
    }
    echo $output;
    ...
}

Cara yang lebih elegan untuk menyelesaikan tugas yang sama ini dapat dilakukan dengan menggunakan ustartlocation sebagai indeks larik, tetapi akan memerlukan ustartlocation unik untuk perangkat/server individual:

$devices = array();
while($row = mysql_fetch_array($result_devices)) {
    $devices[$row['ustartlocation']] = $row['devicename'];
}
for ($i = 0; $i < $cabinets_sqlrow[2]; $i++) {
    ...
    echo (isset($devices[$u]) ? $devices[$u] : 'empty');
    ...
}

Metode ini akan menghilangkan kebutuhan untuk mengulang daftar perangkat setiap kali, tetapi sekali lagi - metode ini mengharuskan ustartlocation unik.

Catatan Samping (tambahan, kritik non-jawaban-spesifik)

  1. Di awal kode Anda, jalankan $sql_devices="SELECT * FROM perangkat"; dan $result_devices=mysql_query($sql_devices); , tetapi jangan pernah menggunakan objek ini. Itu dapat dan harus dihapus karena merupakan satu kueri tambahan (cukup berat).

  2. Di while kedua -loop Anda memiliki baris $num_devices=mysql_numrows($result_devices); . Tidak ada fungsi PHP mysql_numrows() , saya yakin ini salah ketik untuk mysql_num_rows() function (itu, atau Anda memiliki fungsi yang ditulis khusus untuk melakukan hal yang sama. Juga, $num_devices variabel tidak pernah digunakan sehingga baris ini benar-benar dapat dihapus seluruhnya.

  3. Anda menggunakan mysql_ yang lama dan sudah tidak digunakan lagi fungsi (lihat pesan peringatan di atas salah satu halaman dokumen untuk fungsi-fungsi ini; inilah mysql_connect() sebagai referensi). Saya, serta komunitas, menyarankan Anda untuk meningkatkan ke mysqli_ atau PDO metode.

  4. Kode Anda terbuka untuk kesalahan SQL yang tidak bersih, tidak secara khusus terbatas pada injeksi SQL karena tampaknya Anda tidak mengambil input langsung dari input pengguna, tetapi juga tidak mengesampingkan faktor ini. Misalnya, apa yang akan terjadi jika cabinet atau datacenter nilai berisi tanda kutip tunggal? Karena Anda menggunakan mysql_ metode, saya sarankan Anda membungkus masing-masing dengan mysql_real_escape_string() sebelum menggunakannya dalam panggilan database:$sql_cabinets="SELECT * FROM cabinets WHERE datacenter = '" . mysql_real_escape_string($datacenters_sqlrow[0]) . "' ORDER BY cabinetnumber";




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Masukkan KESALAHAN ke fungsi UPDATE kunci duplikat ON

  2. SQL pilih urutan kueri berdasarkan hari dan bulan

  3. Bagaimana cara mendapatkan jumlah baris yang terpengaruh, saat menjalankan kueri MySQL dari bash?

  4. Subquery MySQL - Temukan hanya record pertama di LEFT JOIN

  5. Pilihan tertimbang acak dari suatu acara