2013-06-27 6 views
0

привет Я действительно начинаю программировать и делать некоторые PHP-разработки для поддержки личных обязательств.Передача значения, возвращаемого с javascript на php

Я написал javascript, чтобы выполнить некоторые вычисления и вернуть ответ. Я хочу получить доступ к этому значению из своего php и распечатать его.

следующие компоненты кода.

<?php include 'dbconnection.php'; ?> 
<?php 

    $Kg=0.00; 
$Rate=0.00; $MinusBags=0.00; $Amount = 0.00; 
$KgIntoRate=0.00; 
//$Amount = $KgIntoRate - $MinusBags; 



//execute the SQL query and return records 
$result = mysql_query("SELECT EmployeeName FROM employees"); 
$result2 = mysql_query("SELECT SRate FROM scraprates where SYear=YEAR(CURRENT_DATE()) AND SMonth=MONTHNAME(CURRENT_DATE())"); 
$temp1 = mysql_fetch_array($result2); 
$Rate = $temp1['SRate']; 
//$Rate=mysql_fetch_array($result2); 


//fetch the data from the database 
try{ 
while ($row = mysql_fetch_array($result)) { 
    echo "<tr><td>".$row{'EmployeeName'}."</td>"; 
    echo "<td><input type='text' name='Kg' id='Kg' onChange='CalcKgIntoRate();'/></td>"; 
    echo "<td>".$Rate."</td>"; 


// $KgIntoRate = $_GET['php_KgIntoRate']; 
    //echo "<td>".$_GET['php_KgIntoRate']."</td>"; 
    echo "<td>".$KgIntoRate."</td>"; 

    echo "<td><input type='text' name='MinusBags'/></td>"; 
    echo "<td>".$Amount."</td></tr>"; 
} 
} 
catch(Exception $e) 
{echo "error".$e;} 
?> 

<script type="text/javascript"> 
//$Kg= $('#Kg').val(); 
function CalcKgIntoRate(){ 
var Kg=document.getElementById('Kg').value; 
var php_rate = "<?php echo $Rate; ?>"; 
var php_KgIntoRate = "<?php echo $KgIntoRate; ?>"; 
//document.write(Kg); 
php_KgIntoRate=Kg*php_rate; 
return php_KgIntoRate; 
} 
</script> 

<?php 
//function CalcKgIntoRate(){ 
//$KgIntoRate = $Kg * $Rate; 
//echo "<td>".$KgIntoRate."</td>"; 
//} 


//close the connection 
mysql_close($dbhandle); 
?> 

что я хочу сделать это. Имена и скорость поступают из двух таблиц базы данных. Я хочу вычислить KgIntoRate на основе введенных Kg (в событии изменения текстового поля) и показать значение в поле Kg * Rate.

Я прочитал, что мне нужно использовать Ajax. но не знаю, как это сделать. Оцените некоторую помощь с кодом.

+1

[** Пожалуйста, не используйте '' * mysql_ функции в новом коде **] (HTTP://bit.ly/phpmsql). Они больше не поддерживаются [и официально устарели] (https://wiki.php.net/rfc/mysql_deprecation). См. [** красное поле **] (http://j.mp/Te9zIL)? Узнайте о [* подготовленных операторах *] (http://j.mp/T9hLWi) и используйте [PDO] (http://php.net/pdo) или [MySQLi] (http://php.net/ mysqli) - [эта статья] (http://j.mp/QEx8IB) поможет вам решить, какой из них. Если вы выберете PDO, [здесь хороший учебник] (http://j.mp/PoWehJ). – h2ooooooo

+0

Вы хотите остановиться на одной странице PHP? Я имею в виду, не возражаете ли вы получить значения переменной php на следующей странице, где будет опубликован JAVASCRIPT? –

+0

, если вы хотите остаться на той же странице, мы должны использовать AJAX ... другой мудрый мы можем просто создать форму с помощью JAVASCRIPT и опубликовать ее на другой странице PHP, где мы можем с радостью принять ее в php Variable –

ответ

1

Вы можете сделать это wihtout AJAX, если ваш расчет обрабатывается в JavaScript:

Проверьте, если это поможет вам.

например. Изменения в PHP код:

$i = 0; // define outside the loop 

echo "<td><input type='text' name='Kg' id='Kg".$i."' onChange='CalcKgIntoRate(".$i.");'/></td>"; 
echo "<td id='rate".$i."'>".$KgIntoRate."</td>"; 
echo "<td id='kg_into_rate".$i."'>".$Amount."</td></tr>"; 
$i++; 

JS код:

function CalcKgIntoRate(i) { 
    var kg = document.getElementById('Kg'+i).value; 
    var rate = document.getElementById('rate'+i).innerHTML; 
    var kg_into_rate = document.getElementById('kg_into_rate'+i); 

    // here is your calculation login 
    // suppose you store the calculation in an another variable 
    var calVal = parseFloat(kg*eval(rate)); 
    kg_into_rate.innerHTML = calVal; 
} 
+0

спасибо за ответ .. но это не сработало .. позвольте мне объяснить немного больше. Я создаю таблицу в php со следующими столбцами. 1. Имя сотрудника -> вытащили из таблицы базы данных, называемой «сотрудники» 2. Kg -> текстовое поле для ввода суммы Kg 3. Rate for the month -> вытащил из таблицы базы данных, называемой «scraprates» 4. Kg * Rate -> Здесь я хочу умножить сумму Kg, введенную пользователем со скоростью и отображением в столбце (для этого нет текстового поля). Я хочу, чтобы этот расчет произошел для события Onchange текстового поля Kg. Код – user2527186

+0

обновлен.теперь проверьте, что это сработает. Я проверил на своей машине. – skparwal

1

Я думаю, что в вашем примере, что ваш недостающее просто передавая значение обратно в поле ввода.

function CalcKgIntoRate(){ 
var Kg=document.getElementById('Kg').value; 
var php_rate = "<?php echo $Rate; ?>"; 
var php_KgIntoRate = "<?php echo $KgIntoRate; ?>"; 
//document.write(Kg); 
php_KgIntoRate=Kg*php_rate; 
//return php_KgIntoRate; 

// here! instead of returning the value, set it as the value of your Input 
document.getElementById('Kg').value = php_KgIntoRate;} 

или вы могли бы просто сделать расчеты в PHP ....

$result1 = $Rate * $KgIntoRate; 
echo "<tr><td>".$row{'EmployeeName'}."</td>"; 
echo "<td><input type='text' name='Kg' id='Kg' value='".$result1."'/></td>"; 
echo "<td>".$Rate."</td>"; 
+0

Позвольте мне объяснить немного больше. Я создаю таблицу в php со следующими столбцами. 1. Имя сотрудника -> вытащили из таблицы базы данных, называемой «служащие» 2. Kg -> текстовое поле для ввода суммы Kg's 3. Ставка за месяц -> вытащили из таблицы базы данных под названием «скребки» 4. Kg * Rate -> Здесь я хочу умножить сумму Kg, введенную пользователем со скоростью и отображением в столбце (для этого нет текстового поля). Я хочу, чтобы этот расчет произошел для события Onchange текстового поля Kg – user2527186

+0

haaa ok теперь я понимаю, поэтому вам нужно обновить столбец скорости, назначить идентификатор этому столбцу, а затем обновить его innerHTMl echo "". $ Rate. ""; в js funtion добавьте это document.getElementById ('rateColumn'). InnerHTML = php_KgIntoRate; –

+0

, если вам нужно обновить любые значения Db, тогда вам понадобится ajax ... или отправьте FORM –