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

जब किसी आइटम को ड्रॉपडाउन सूची से चुना जाता है तो फॉर्म फ़ील्ड को ऑटो पॉप्युलेट करने के लिए PHP\HTML स्क्रिप्ट

मैं इसे अजाक्स और jQuery का उपयोग करके करूँगा। आपको 3 काम करने होंगे - head . में Ajax/JQuery कोड जोड़ें दस्तावेज़ का, अजाक्स से कनेक्ट करने के लिए php फ़ाइल बनाएँ, और जोड़ें onChange , id &value फ़ील्ड के लिए विशेषताएँ।

आपके <head></head> . में इस जावास्क्रिप्ट को अपने <title></title> . के बाद जोड़ें -

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script type="text/javascript">
function check(){   
    var pipeno = $('#pipeno').val();
    if(pipeno != "pipeno"){
      jQuery.ajax({
      type: "POST",
      url: "check.php",
      data: 'pipeno='+pipeno,
      cache: false,
      success: function(response){
     var response_array = JSON.parse(response);
     $('#wallthickness').val(response_array['wallthickness']);  
     $('#jointno').val(response_array['jointno']);
     $('#measuredlength').val(response_array['measuredlength']);
     $('#serialno').val(response_array['serialno']);}
    });
    }
    else{
         $('#wallthickness').val('');   
     $('#jointno').val('');
     $('#measuredlength').val('');
     $('#serialno').val('');}
    }
</script>

फिर check.php . नाम की एक फाइल बनाएं कोड के साथ -

<?php
 //Php Code to connect to postgresqldatabase
 include ("connection.php");
 // Code to pull data from the database and load onto the form  
 $pipeno = pg_escape_string($_POST['pipeno']);
 $query = "SELECT * FROM fieldtally WHERE pipeno = $pipeno ";
 $result = pg_query($db_handle,$query); 
 $row = pg_fetch_row($result))
 $row_info = array('wallthickness'=>$row[1],'jointno'=>$row[2],'measuredlength'=>$row[3],'serialno'=>$row[4]);

 $row_info = json_encode($row_info);
 print_r($row_info); 
?>

और अंत में, id जोड़ें &value आपके प्रपत्र फ़ील्ड में विशेषताएँ (अपनी फ़ाइल न बदलें, बस इन पंक्तियों को अपडेट करें)

Select Pipe No:<select name="pipeno" id="pipeno" onChange="check()"><option value="pipeno"> --Select-- </option> 
...  (keep your database connection / how you create your dropdown, etc here, just edit the option below)
 echo "<option value=\"$pipeno\"> $pipeno</option>";
... (keep your database connection / how you create your dropdown, etc. here)
</select> 
...
Input Joint No: <input type="text" name="jointno" id="jointno">
Input Wall Thickness: <input type="text" name="wallthickness" id="wallthickness">
Input measured Length: <input type="text" name="measuredlength" id="measuredlength">
Input Serial No: <input type="text" name="serialno" id="serialno">

अद्यतन 10/19 कोड बदले जाने के कारण -

मैंने आपके कोड में क्रमांकित एंकर लगाए हैं, और नोट्स अंत में हैं। आप यह सब 2 फाइलों में कर सकते हैं, लेकिन दूसरी फाइल check1.php , केवल 1 डेटाबेस क्वेरी हो सकती है, या आपके अजाक्स में त्रुटियां होंगी।

autopopulate.php-

<!-- #1 -->
<?php
//Php Code to connect to postgresqldatabase
$PGHOST = "localhost:25376";
$PGDATABASE = "Pipeline";
$PGUSER = "postgres";
$PGPASSWORD = "Casa2009";
$PGPORT = 5432;
$db_handle = pg_connect("dbname=$PGDATABASE user=$PGUSER password=$PGPASSWORD");

//<!-- #2 -->
 if(isset($_POST['submit_1'])){
 //Code to post data to the database
 $pipeno = pg_escape_string( $_POST['pipeno']);
 $wallthickness = pg_escape_string($_POST['wallthickness']);
 $heatno1 = pg_escape_string( $_POST['heatno1']);
 $pipeno2 = pg_escape_string( $_POST['pipeno2']);
 $heatno2 = pg_escape_string($_POST['heatno2']);
 $jointno = pg_escape_string($_POST['jointno']);
 $measuredlength = pg_escape_string($_POST['measuredlength']);
 $serialno = pg_escape_string($_POST['serialno']); 
 $wthick= pg_escape_string($_POST['wthick']);

//<!-- #3 -->
 $query = "INSERT INTO fieldtally1(pipeno,wallthickness,heatno1,pipeno2,heatno2,jointno,measuredlength,serialno,wthick)VALUES ('$pipeno','$wallthickness','$heatno1','$pipeno2','$heatno2','$jointno','$measuredlength','$serialno','$wthick') ON DUPLICATE KEY UPDATE wallthickness='$wallthickness',heatno1='$heatno1',pipeno2='$pipeno2',heatno2='$heatno2',jointno='$jointno',measuredlength='$measuredlength',serialno='$serialno',wthick='$wthick'";

//<!-- #4a -->
 $result = pg_query($query);
 if (!$result) {
 $errormessage = pg_last_error();
 $message = "Error with query: " . $errormessage;
 }
 $message = sprintf ("These values were inserted into the database - %s %s %s %s %s %s %s %s %s",$pipeno,$wallthickness,$heatno1,$pipeno2,$heatno2,$jointno,$measuredlength,$serialno,$wthick);
 }

 // Code to pull data from the database and load onto the form
 $query = 'select pipeno, wallthickness from fieldtally1 order by pipeno asc'; 
 $result = pg_query($db_handle,$query); 
 while ($row = pg_fetch_row($result))
 {
    // Creates Arrays to use in dropdowns
     $pipeno_array[] = $row[0];
     $wallthickness_array[] = $row[1];
 } 

  // This function creates dropdowns that can be used in your forms
 function dropdown($field_name, $num){
     // Creates the Dropdown
 //<!-- #5a -->
     $c = ($field_name == 'pipeno') ? ' onChange="check('.$num.');"' : '';
     echo "<select name=\"".$field_name."\" id=\"".$field_name.$num."\"$c>\n";
     echo "<option value=\"\"> --- Select --- </option>\n";
     // Chooses which array to use for Dropdown options
     global $pipeno_array, $wallthickness_array;
     $name_array = ($field_name == 'pipeno') ? $pipeno_array : $wallthickness_array;
     // Creates the Dropdown options based off the array above
     foreach($name_array as $k){
         echo "<option value=\"$k\">$k</option> \n"; }
     // Ends the Dropdown
     echo "</select>\n";
 }

 ?>
 <html>
     <head><title>UG Pipeline Field Data Capture</title></head>
      <body>
       <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
       <script type="text/javascript">
 <!-- #5b -->
        function check(num){
           var pipeno_id = '#pipeno_'+num;
           var pipeno = $(pipeno_id).val();
           if(pipeno != ""){
             jQuery.ajax({
             type: "POST",
             url: "check1.php",
             data: 'pipeno='+pipeno,
             cache: false,
             success: function(response){
             var response_array = JSON.parse(response);
             $('#heatno1').val(response_array['heatno1']);
             $('#pipeno2').val(response_array['pipeno2']); 
             $('#heatno2').val(response_array['heatno2']);
             $('#jointno').val(response_array['jointno']);
             //$('#measuredlength').val(response_array['measuredlength']); // this should be input from the user
            // $('#serialno').val(response_array['serialno']);  //This should also be input from the user
            }           
            });
           }
           else{
           $('#heatno1').val('');
           $('#pipeno2').val('');
           $('#heatno2').val('');
           $('#jointno').val('');}
            }
  </script> 

 <!-- #4b -->
 <?php printf($message);?>
 <!-- #6.1 -->
 <form action="" method="post">
 <table width="800" cellpadding= "10" cellspacing="1" border="2">
 <tr align="center" valign="top">
 <td align="center" colspan="1" rowspan="1" bgcolor="#64b1ff">
 <h3>Input Field Tally Information</h3>
      Select Pipe Thickness:<select name="wthick" id="wthick">
 <!-- #7.1 -->
  <option value=""> --Select-- </option> 
  <option value="9.8">  9.8  </option>
  <option value="13.5"> 13.5 </option>
  <option value="15.9"> 15.9 </option>
  </Select>           
 Select Pipe No:<?php dropdown('pipeno', 1); ?>  Select Wall Thickness:<?php dropdown('wallthickness', 1); ?><br /><br /> 
 HeatNo1: <input type="text" name="heatno2" id="heatno1"> PipeNo2: <input type="text" name="pipeno2" id="pipeno1"> HeatNo2: <input type="text" name="heatno2" id="heatno2"><br /><br /> 
 Joint No: <input type="text" name="jointno"> Input measured Length: <input type="text" name="measuredlength"> Input Serial No: <input type="text" name="serialno"><br><br> 
 <!-- #8.1 -->
 <input type="Submit" name="submit_1" value="Submit">
 <!-- #9.1 -->
 </td></tr></table></form>
 <p></p>

 <!-- #6.2 -->
 <form action="" method="post">
 <table width="800" cellpadding= "10" cellspacing="1" border="2">
 <tr align="center" valign="top">
 <td align="center" colspan="1" rowspan="1" bgcolor="#ff9d9d">
 <h3>Input Field Bend Information</h3>
  Select Wall Thickness:<select name="wallthickness" id="wallthickness">
 <!-- #7.2 -->
     <option value=""> --Select-- </option> 
     <option value="9.8">  9.8  </option>
     <option value="13.5">13.5 </option>
     <option value="15.9"> 15.9 </option>
  </select>
 <!-- #10.1 -->           
 Select Pipe No:<?php dropdown('pipeno', 2); ?>  Select Wall Thickness:<?php dropdown('wallthickness', 2); ?><br /><br /> 
 HeatNo1: <input type="text" name="heatno1" id="heatno1_2"> PipeNo2: <input type="text" name="pipeno2" id="pipeno2_2"> HeatNo2: <input type="text" name="heatno2" id="heatno2_2"><br /><br /> 
 Joint No: <input type="text" name="jointno"> Input Measured Distance: <input type="text" name="measureddistance"><br><br> 
 Input Bend Angle: <input type="text" name="benddegree"> Input Bend Type: <input type="text" name="bendtype"><br><br>
 <!-- #8.2 -->
 <input type="Submit" name="submit_2" value="Submit">
 <!-- #9.2 -->
 </td></tr></table></form>
 <p></p>

 <!-- #6.3 -->
 <form action="" method="post">
 <table width="800" cellpadding= "10" cellspacing="1" border="2">
 <tr align="center" valign="top">
 <td align="center" colspan="1" rowspan="1" bgcolor="#66CC66">
 <h3>Input App. Tally Information</h3>
 <!-- #11 -->
      Select Wall Thickness:<select name="wallthickness1" id="wallthickness1">
 <!-- #7.3 -->
     <option value=""> --Select-- </option> 
     <option value="9.8">  9.8  </option>
     <option value="13.5"> 13.5 </option>
     <option value="15.9"> 15.9 </option>
  </select>
 <!-- #10.2 -->             
 Select Pipe No:<?php dropdown('pipeno', 3); ?>  Select Wall Thickness:<?php dropdown('wallthickness', 3); ?><br /><br />            
 Input Tally Type: <input type="text" name="type">   Input Serial No: <input type="text" name="serialno"><br><br>
 Input Reference ID: <input type="text" name="referenceid"><br><br>
 <!-- #8.3 -->
 <input type="Submit" name="submit_3" value="Submit">
 </td></tr></table>
 </form>
 </body>
 </html>

check1.php-

<?php
//Php Code to connect to postgresqldatabase
$PGHOST = "localhost:25376";
$PGDATABASE = "Pipeline";
$PGUSER = "postgres";
$PGPASSWORD = "Casa2009";
$PGPORT = 5432;
$db_handle = pg_connect("dbname=$PGDATABASE user=$PGUSER password=$PGPASSWORD");

// Code to pull data from the database and load onto the form  
$pipeno = pg_escape_string($_POST['pipeno']);
$query = "SELECT * FROM fieldtally1 WHERE pipeno = $pipeno ";
$result = pg_query($db_handle,$query); 
$row = pg_fetch_row($result);
$row_info = array('heatno1'=>$row[1],'pipeno2'=>$row[2],'heatno2'=>$row[3],'jointno'=>$row[4]);
$row_info = json_encode($row_info);
print_r($row_info); 
?>

ये रहे मुद्दे-

1 - सभी को मूव करें <?php ?> पृष्ठ के शीर्ष पर स्क्रिप्ट। यह:(1) आपके कोड को साफ करेगा, (2) एक ही समय में सभी डेटाबेस प्रश्नों को संसाधित करने में सक्षम होगा।

2 - अपडेट करने के लिए आपकी क्वेरी fieldtally1 अब आपके द्वारा डेटाबेस से ड्रॉपडाउन प्राप्त करने से पहले किया जाता है।

3 - इनपुट फ़ील्ड में डेटा दर्ज करने के बाद after entering data into the input fields and click submit. it creates a new record in the database instead of populating the required columns in the database INSERT INTO ... VALUES ... ON DUPLICATE KEY UPDATE ... का उपयोग करें . अगर pipeno पहले से ही डेटाबेस में है (चूंकि यह एक Primary Key है ) यह UPDATE होगा INSERT . के बजाय ।

4 - मैं आपकी error saving को सहेजने की अनुशंसा करता हूं या success संदेश (#4a) और इसे अपने html (#4b) के शीर्ष पर प्रतिध्वनित करें।

5a - आप एक हार्ड कोडित pipeno . से बदल गए हैं ड्रॉपडाउन, फ़ंक्शन का उपयोग करके गतिशील रूप से ड्रॉपडाउन पर वापस। तो आप जावास्क्रिप्ट खो रहे हैं - onChange=check(); 5b - अब जब आप अपना pipeno बना रहे हैं &onChange=check(); गतिशील रूप से, आपको अपना check() change बदलना होगा आईडी को गतिशील रूप से भी प्राप्त करने के लिए कार्य करता है।

6 - $PHP_SELF मान्य नहीं है। मुझे लगता है कि आप $_SERVER['PHP_SELF'] . के लिए प्रयास कर रहे थे , लेकिन इसे आसानी से हैक किया जा सकता है, इसलिए केवल action="" . का उपयोग करना बेहतर है . [6.1,6.2,6.3]

7 - अपना <select><option> . करते समय आप उसी value="" . का उपयोग कर रहे थे , लेकिन पोस्ट करते समय मूल्य प्राप्त करने के लिए आपके लिए प्रत्येक का अलग होना आवश्यक है। साथ ही, अधिकांश </option> </optio> . के रूप में गलत वर्तनी की गई थी . [7.1,7.2,7.3]

8 - यदि आपके पास एक ही पेज पर 3 फॉर्म हैं, तो प्रत्येक का एक अलग नाम होना चाहिए, या आप यह नहीं बता पाएंगे कि किस सबमिट बटन पर क्लिक किया गया था। [8.1,8.2,8.3]

9 - आपके पहले दो फॉर्म में क्लोजिंग टैग नहीं थे - </td></tr></table></form> . [9.1, 9.2]

10 - आप 2 और 3 रूपों में, आप id . का उपयोग कर रहे हैं जिनका प्रयोग प्रथम रूप में किया जाता है। यह प्रत्येक id . के रूप में अमान्य है अद्वितीय होना चाहिए। [10.1,10.2]

11 - तीसरा रूप id="wallthickness" . का उपयोग करता है जिसका उपयोग प्रपत्र 2 में किया गया था। ऊपर id के बारे में देखें विशिष्टता।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. django फ़िल्टर में से कम या बराबर और बराबर से अधिक कैसे करें?

  2. Postgresql -bash:psql:कमांड नहीं मिला

  3. उचित पूर्ण पाठ अनुक्रमणिका रेल/PostgreSQL/pg_search

  4. Postgresql क्वेरी एक वर्ष के भीतर प्रति माह गिनती पाने के लिए

  5. एसक्यूएल:उन रिकॉर्ड्स का चयन करें जहां सभी जुड़े हुए रिकॉर्ड कुछ शर्तों को पूरा करते हैं