मैं इसे अजाक्स और 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
के बारे में देखें विशिष्टता।