यदि मैं डेटाबेस क्वेरी के परिणामों से PHP का उपयोग करके एक चयन सूची उत्पन्न करता हूं, तो किसी कारण से मैं वर्तमान में चयनित आइटम का मूल्य प्राप्त करने के लिए जावास्क्रिप्ट का उपयोग नहीं कर सकता। मैंने इस कोड को स्थिर सूची के साथ परीक्षण किया और यह कोई समस्या नहीं काम करता है। यहाँ मेरा कोड है:

<?php
    require_once("config.php");

    $sql="SELECT * FROM animals ORDER BY name ASC"; 
    try
    {
        $stmt = $DB->prepare($sql);
        $stmt->execute();
        $results = $stmt->fetchAll(PDO::FETCH_UNIQUE); //each column is addressed by the primary key
    }
    catch (Exception $ex)
    {
        echo $ex->getMessage();
    }
?>
<html>
<head>
    <script
    src="https://code.jquery.com/jquery-3.3.1.min.js"
    integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
    crossorigin="anonymous">
    </script>
    <script>
        $(document).ready(function(){  
            $("#animal_list").change(function(){
                 var animalValue = $(this).val(); 
                 window.location.href="animal_list.php?id=" + animalValue;
            });
        });
    </script>
</head>
<body>
    <select id="animal_list" name="animal_list">
        <?php
            foreach($results as $res)
            {
        ?>
            <?php echo '<option value="'. $res['id'] . '">' ?>
                <?php echo $res['name']  ?>
            </option>

        <?php
            }
        ?>
    </select>
    <br/><br/>
    <?php
        if(isset($_GET['id']))
        {
            echo '<input type="text" id="npsw_code" value="' . $_GET['id'] . '" readonly>';
        }
        else
            echo '<input type="text" id="npsw_code" value="" readonly>';
    ?>

</body>
</html>

एक स्थिर सूची के साथ परीक्षण काम करता है। यहाँ उदाहरण है:

<html>
<head>
    <script
    src="https://code.jquery.com/jquery-3.3.1.min.js"
    integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
    crossorigin="anonymous">
    </script>
    <script>
        $(document).ready(function(){  
            $("#fruits").change(function(){
                 var fruitValue = $(this).val(); 
                 window.location.href="fruits.php?id=" + fruitValue;
            });
        });
    </script>
</head>
<body>
    Fruits
    <select id="fruits" name="fruits">
        <option value="0">Apple</option>
        <option value="1">Pear</option>
        <option value="2">Watermelon</option>
        <option value="3">Orange</option>
    </select>
    <br/><br/>
    <?php
        if(isset($_GET['id']))
        {
            echo 'My Fruit <input type="text" id="myfruit" value="' . $_GET['id'] . '" readonly>';
        }
        else
            echo 'My Fruit <input type="text" id="myfruit" value="" readonly>';
    ?>
</body>
</html>
0
Magearlik 29 मार्च 2018, 05:58

3 जवाब

सबसे बढ़िया उत्तर

कोई बात नहीं यह एक टाइपो था। मेरे डेटाबेस में कॉलम 'कोड' नहीं 'आईडी' था। तो इसे पढ़ना चाहिए था। अपका समय बर्बाद करने के लिए खेद है।

0
Magearlik 1 अप्रैल 2018, 07:16

सबसे पहले मैं इस गंदगी को साफ कर दूंगा।

<select id="animal_list" name="animal_list">
    <?php
        foreach($results as $res)
        {
    ?>
        <?php echo '<option value="'. $res['id'] . '">' ?>
            <?php echo $res['name']  ?> <!-- missing ; -->
        </option>

    <?php
        }
    ?>
</select>
<br/><br/>
<?php
    if(isset($_GET['id']))
    {
        echo '<input type="text" id="npsw_code" value="' . $_GET['id'] . '" readonly>';
    }
    else
        echo '<input type="text" id="npsw_code" value="" readonly>';
?>

क्षमा करें, मैं खराब स्वरूपित कोड से निपट नहीं सकता, यह इसे एक घर का काम करता है। ऐसा लगता है कि इतना व्यर्थ प्रयास।

<select id="animal_list" name="animal_list">
    <?php foreach($results as $res): ?>
       <option value="<?php echo $res['id'];?>"><?php echo $res['name'];  ?></option>
    <?php endforeach; ?>
</select>
<br/><br/>
<?php
    $readonly = '';
    $npsw_code = '';

    if(isset($_GET['id'])){
        $readonly = ' readonly';
        $npsw_code = $_GET['id'];
    }
?>

<input type="text" id="npsw_code" value="<?php echo $npsw_code; ?>" <?php echo $readonly; ?>>

हम इसे भी नज़रअंदाज़ कर देंगे (अनुपलब्ध ; ):

  <?php echo $res['name']  ?>

शायद एक सिंटैक्स त्रुटि है, लेकिन देखें कि जब आप कोड नहीं पढ़ सकते हैं तो क्या होता है।

जावास्क्रिप्ट परवाह नहीं है कि एचटीएमएल पेज में कैसे मिला, केवल एचटीएमएल कैसा दिखता है। यह जाने बिना कि यह कैसा दिखता है, हम केवल अनुमान लगा सकते हैं। आप स्रोत देख सकते हैं और देख सकते हैं कि यह कैसा दिखता है।

अन्यथा, ऑन चेंज हैंडलर में अलर्ट डालें और देखें कि यह क्या कहता है।

   $("#animal_list").change(function(){
       var animalValue = $(this).val(); 
       alert(animalValue);
       window.location.href="animal_list.php?id=" + animalValue;
   });

जावास्क्रिप्ट निष्पादन को रोकने/रोकने का अलर्ट का अच्छा दुष्प्रभाव है, इसलिए यह पृष्ठ रीडायरेक्ट को बाधित करेगा। यह आपको 2 बातें बताएगा,

  1. आपका ईवेंट परिवर्तन पर सक्रिय किया जा रहा है
  2. मान सही है।
0
ArtisticPhoenix 29 मार्च 2018, 03:37

onchange="listChange()" हटाएं क्योंकि परिभाषित नहीं है और हमें इसकी आवश्यकता नहीं है।

और चयनित विकल्प का मूल्य प्राप्त करने के लिए $(this).find('option:selected').val(); का उपयोग करें।

$("#animal_list").change(function(){
    var animalValue = $(this).find('option:selected').val(); 
    window.location.href="animal_list.php?id=" + animalValue;
});
0
Lê Phi 29 मार्च 2018, 03:06