Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

PHP MYSQL - HTML तालिका क्रमांकित पंक्तियों को इस आधार पर पॉप्युलेट करें कि क्या वे पंक्ति संख्या से मेल खाते हैं

सीधे समस्या का समाधान करने के लिए (मैं थोड़ा और अधिक प्राप्त करूंगा), आप उपकरणों की पूरी सूची के माध्यम से पुनरावृति कर रहे हैं और फिर - आपके द्वारा उन सभी के माध्यम से लूपिंग करने के बाद - आप उन्हें प्रदर्शित करने का प्रयास करते हैं। इस वजह से, आप केवल उस अंतिम उपकरण को प्रदर्शित कर रहे हैं जिसे छुआ गया था।

आपका वर्तमान कोड, छोटा कर दिया गया है:

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;
    }
    ...
}

अगर मैं समझता हूं कि आप क्या करने की कोशिश कर रहे हैं, तो आपको प्रत्येक डिवाइस को "डिवाइस" एरे में स्टोर करना होगा और अपने के लिए के प्रत्येक पुनरावृत्ति के दौरान इसके माध्यम से लूप करना होगा। फंदा। कुछ इस तरह का प्रयास करें:

$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;
    ...
}

ustartlocation . का उपयोग करके इसी कार्य को पूरा करने का एक और शानदार तरीका किया जा सकता है सरणी के सूचकांक के रूप में, लेकिन इसके लिए यह आवश्यक होगा कि ustartlocation एक व्यक्तिगत डिवाइस/सर्वर के लिए अद्वितीय है:

$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');
    ...
}

यह विधि हर बार उपकरणों की सूची के माध्यम से लूप करने की आवश्यकता को छोड़ देगी, लेकिन फिर से - इसके लिए यह आवश्यक है कि ustartlocation अद्वितीय है।

साइड नोट्स (अतिरिक्त, गैर-उत्तर-विशिष्ट समालोचना)

  1. अपने कोड की शुरुआत में आप $sql_devices="SELECT * FROM . निष्पादित करते हैं डिवाइस"; और $result_devices=mysql_query($sql_devices); , लेकिन इस वस्तु का कभी भी उपयोग न करें। इसे हटाया जा सकता है और हटाया जाना चाहिए क्योंकि यह एक अतिरिक्त (काफी भारी) प्रश्न है।

  2. दूसरे में जबकि -लूप आपके पास लाइन है $num_devices=mysql_numrows($result_devices); . कोई PHP-फ़ंक्शन नहीं है mysql_numrows() , मेरा मानना ​​है कि यह mysql_num_rows() के लिए टाइपो है फ़ंक्शन (वह, या आपके पास वही काम करने के लिए एक कस्टम-लिखित फ़ंक्शन है। साथ ही, $num_devices वेरिएबल का कभी भी उपयोग नहीं किया जाता है इसलिए इस लाइन को वास्तव में पूरी तरह से हटाया जा सकता है।

  3. आप पुराने और अप्रचलित हो रहे mysql_ . का उपयोग कर रहे हैं फ़ंक्शंस (इन कार्यों के लिए किसी भी दस्तावेज़-पृष्ठ के शीर्ष पर चेतावनी-संदेश देखें; यहां mysql_connect() संदर्भ के लिए)। मैं और समुदाय, आपको mysqli_<में अपग्रेड करने की सलाह देते हैं। /कोड> या PDO तरीके।

  4. आपका कोड अस्वच्छ-एसक्यूएल त्रुटियों के लिए खुला है, विशेष रूप से एसक्यूएल-इंजेक्शन तक सीमित नहीं है क्योंकि ऐसा प्रतीत नहीं होता है कि आप सीधे उपयोगकर्ता-इनपुट से इनपुट ले रहे हैं, लेकिन इस कारक को भी खारिज नहीं कर रहे हैं। उदाहरण के लिए, क्या होगा यदि एक कैबिनेट या डेटासेंटर मूल्य में एकल-उद्धरण होता है? चूंकि आप mysql_ का उपयोग कर रहे हैं मेरा सुझाव है कि आप प्रत्येक को mysql_real_escape_string() से रैप करें। डेटाबेस कॉल में उनका उपयोग करने से पहले:$sql_cabinets="SELECT * FROM कैबिनेट्स जहां डेटासेंटर ='" । mysql_real_escape_string($datacenters_sqlrow[0]) । "' कैबिनेट नंबर द्वारा ऑर्डर करें";




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डुप्लिकेट को अनदेखा करते हुए दो कॉलम, एकाधिक पंक्तियों को मर्ज करें - MySQL

  2. MySQL नेस्टेड संसाधन (पिवट टेबल) देखने/अद्यतन/प्रबंधित करने की अनुमति

  3. JTextField सेट से बचनाकार्यक्रम के चारों ओर पाठ पुनरावृत्ति

  4. रेल mysql2 अपरिभाषित विधि शून्य के लिए 'स्वीकार':NilClass

  5. 2 टेबल से जुड़ें और आईडी, प्राथमिकता और संख्या के आधार पर प्रदर्शित करें