Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > как передать переменную c js в php не обновляя стр


Автор: XpoHuk 23.9.2012, 06:36
Здравствуйте.
У меня проблема в следующем, есть форма которая обрабатывается JS на количество символов в textarea и с помощью PHP записывается в Базу.
Так вот то что выводится в форме по средствам JS не получается записать в базу (я понимаю что js на стороне клиента а PHP на стороне сервера) но как передать переменную c js в php не обновляя страницы?

Код

$conn = mysql_connect("localhost","root","") or die ("Невозможно соединиться с базой".mysql_error());
mysql_select_db("form"); 
echo 'соединение установленно';


$send = $_POST['send'];
if (@$send){
$sql = "INSERT INTO advert SET FIO='".$_POST['FIO']."', address='".$_POST['address']."', phone='".$_POST['phone']."', rubric='".$_POST['rubric']."', subheading='".$_POST['subheading']."', par1='".$_POST['par1']."',  par2='".$_POST['par2']."', par3='".$_POST['par3']."', par4='".$_POST['par4']."', result1='".$_POST['result1']."', result2='".$_POST['result2']."', text='".$_POST['text']."'";
}
else echo 'Нажмите кнопку записи';
$result = mysql_query($sql, $conn);
mysql_close($conn);


Код

<form name="form" method="post">
<span>Ф.И.О: </span><input name="FIO" size="20" /><br /><br />
<span>Адрес: </span><input name="address" size="20" /><br /><br />
<span>Тел: </span><input name="phone" size="20" /><br /><br />
<span>Стоимость: </span><input size="20" /><br /><br />
<span>Менеджер: </span><input size="20" /><br /><br />

  
<span>Рубрика: </span><input name="rubric" size="20" /><br /><br />
<span>Подрубрика: </span><input name="subheading" size="20" /><br /><br />

<input type="checkbox" onchange="count()" value="20" name="par1" id="par1" onKeyUp="count()" /> <label for="par1">Выделение жирным шрифтом (20р.)</label><br />
<input type="checkbox" onchange="count()" value="70" name="par2" id="par2" onKeyUp="count()" /> <label for="par2">Выделить текст рамкой (70р.)</label><br />
<input type="checkbox" onchange="count()" value="200" name="par3" id="par3" onKeyUp="count()" /> <label for="par3">Выделить текст рамкой (200р.)</label><br />
<input type="checkbox" onchange="count()" value="200" name="par4" id="par4" onKeyUp="count()" /> <label for="par4">Выделить чёрным фоном (200р.)</label><br />

<p class="noindent"><textarea onkeypress="count()" onkeyup="count()" name="text" rows="10" cols="60"></textarea>

<div>Символов: <input id="result2" value="" /></div>
<div>Стоимость: <input id="result1" value="" /> руб.</div>

<input value="Очистить" type="reset">&nbsp;</p>
<input value="Подать объявление" name="send" type="submit">
</form>


Код

function isSpace(s){
}

function count(){

var c=0
var i
var prevspace=true
var str=document.forms.form.text.value

for(i=str.length-1;i>=0;i--){
if(isSpace(str.charAt(i)) && prevspace){
}
else{
c++
}
prevspace=isSpace(str.charAt(i))
}

var par1 = document.getElementById("par1");
var par2 = document.getElementById("par2");
var par3 = document.getElementById("par3");
var par4 = document.getElementById("par4");
var price = 0;
            price += (par1.checked == true) ? parseInt(par1.value) : 0;
            price += (par2.checked == true) ? parseInt(par2.value) : 0;
            price += (par3.checked == true) ? parseInt(par3.value) : 0;
            price += (par4.checked == true) ? parseInt(par4.value) : 0;
            document.forms.form.result2.value=c;
            document.forms.form.result1.value=c * 3 + price;
}


PS: я искал решение в интернете там пишется: "это можно сделать с помощью AJAX", но в силу того что я новичок я не понимаю о чём идёт речь, а реальных примеров я не нашёл.

Автор: XpoHuk 24.9.2012, 06:33
В общем чтоб не мучиться с передачей значения из JS воспроизвёл эту переменную путём php
Код

$length = strlen($_POST["text"]);
$_POST['result1']=($length*3)+$_POST['par1']+$_POST['par2']+$_POST['par3']+$_POST['par4'];

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)