[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как вставить xajax функцию в php
Sadalsky
Существует файл php "View_Korzina", содержащий xajax функцию:

<?PHP
function View_Korzina()
{
$objResponse = new xajaxResponse();
$objResponse->assign("flag_ajax","value",'yes');
$content2=f_view_korzina();
$objResponse->assign("center1","innerHTML",$content2);
$objResponse->assign("flag_korzina","value",'yes');
$objResponse->assign("flag_ajax","value",'no');
return $objResponse;
}

?>

Никак не могу не найти, не понять как это вкрутить в php, типа:

<div id=center1>
<?php
echo View_Korzina();
?>
</div>




Спустя 2 минуты (8.04.2012 - 19:11) Игорь_Vasinsky написал(а):
к кохане тоже смарти прикручивают?

Спустя 2 минуты, 18 секунд (8.04.2012 - 19:14) Sadalsky написал(а):
Игорь_Vasinsky
Не понял?

Спустя 5 минут, 40 секунд (8.04.2012 - 19:19) Invis1ble написал(а):
Korzina != Kohana laugh.gif

Спустя 3 минуты, 38 секунд (8.04.2012 - 19:23) Sadalsky написал(а):
Invis1ble
Да нет - это не kohana.....пытаюсь ковыряться в xajax библиотеке.....

Спустя 1 минута, 15 секунд (8.04.2012 - 19:24) Invis1ble написал(а):
Да я какбы догадался, это для Игоря коммент был

Спустя 1 минута, 21 секунда (8.04.2012 - 19:26) Sadalsky написал(а):
Invis1ble
Вы случайно не знаете.....как енто прикрутить?

Спустя 2 минуты, 31 секунда (8.04.2012 - 19:28) Invis1ble написал(а):
без понятия

Спустя 28 минут, 19 секунд (8.04.2012 - 19:57) Игорь_Vasinsky написал(а):
Цитата
Да я какбы догадался, это для Игоря коммент был

:lol: замылился.

Цитата
new xajaxResponse()

это же инициализация объекта класса внутри функции.

если в конечный метод должен вернуть массив - то попробуй так:

echo '<pre>' . print_r(View_Korzina(), 1) . '<pre>';


вообще трудно судить без листинга самого класса.

и чёт мутное и одноразовое делает функция без аргументов с инициализацией объекта внутри. - видимо что строчек в кое было по меньше.

Спустя 3 минуты, 35 секунд (8.04.2012 - 20:00) Sadalsky написал(а):
Игорь_Vasinsky
нет ничего не выдал...сейчас заброшу класс

Спустя 2 минуты, 24 секунды (8.04.2012 - 20:02) Sadalsky написал(а):

function f_view_korzina()
{
require_once("mybaza.php");
$text1="";
$file1="tmp1/f-".$_SESSION['session']."-".$_SESSION['user'].".txt";
$fp=fopen($file1,"r");
$text1.="<form id='FormKorzina' action='javascript:void(null);' onsubmit='
xajax.$(
\"ButtonFormKorzina\").disabled=true;
xajax.$(
\"ButtonFormKorzina\").value=\"Подождите...\";
xajax_Create_Zakaz(xajax.getFormValues(
\"FormKorzina\"));'>";
$text1.="<div id=block_zakaz1>";
$text1.="<table width=100%>";
$text1.="<tr><td class='str0'></td>";
$text1.="<td class='str0'>Товар</td>";
$text1.="<td class='str0' align=right>Кол-во</td>";
$text1.="<td class='str0' align=right>Цена,<br>руб</td>";
$text1.="<td class='str0' align=right>Сумма,<br>руб</td>";
$text1.="<td class='str0'></td>";
$text1.="</tr>";

$i=0;$summa=0;$count=0;
while($str=fgetcsv($fp,1000,";"))
{$i++;
$text1.="<tr>";
$text1.="<td class='str".($i%2+1)."' width=5%>".$i."
<input type=hidden name=korzina_id id=korzina_id value='"
.$str[0]."' >
</td>"
;
$query1="SELECT name FROM tovars WHERE id='".$str[0]."' ";
$text1.="<td class='str".($i%2+1)."' width=60%>".mysql_result(mysql_query($query1),0)."</td>";
$text1.="<td class='str".($i%2+1)."' width=10%><input type=text name=korzina_kol".$str[0]."
id=korzina_kol"
.$str[0]." value='".$str[1]."' size=3 maxlength=3 ".READONLYK."
onchange='var x=new Array();x[0]="
.$str[0].";x[1]=this.value;
xajax_Change_Kol_Korzina(x);'>
</td>"
;
$text1.="<td class='str".($i%2+1)."' width=10%><input type=text name=korzina_pay".$str[0]."
id=korzina_pay"
.$str[0]." value='".$str[2]."' size=3 maxlength=6 readonly
onclick='document.getElementById(
\"korzina_kol".$str[0]."\").focus();
return false;'></td>"
;
$text1.="<td class='str".($i%2+1)."' width=10%><input type=text name=korzina_summa".$str[0]."
id=korzina_summa"
.$str[0]." value='".$str[2]*$str[1]."' size=6 maxlength=6 readonly
onclick='document.getElementById(
\"korzina_kol".$str[0]."\").focus();
return false;' ></td>"
;
$text1.="<td class='str".($i%2+1)."' width=5%><a href='javascript:void();' onclick='
xajax_Delete_From_Korzina("
.$str[0].")'><img src='img/delete.png'>
</a></td>"
;
$text1.="</tr>";
$summa+=$str[1]*$str[2];
$count+=$str[1];
}
$text1.="</table>";
$text1.="</div>";
$text1.="<br>
<div id='itogo_korzina'>Итого - товаров - "
.$count." , на сумму ".$summa." руб.</div>
<br>"
;
$text1.="<div id=block_zakaz2>";
$text1.="<center><input type='button' value='Адрес доставки' onclick='xajax_Address_Korzina(1);'></center>";
$text1.="</div>";
$text1.="<center><input type='submit' id='ButtonFormKorzina' value='Оформить заказ'></center>";

$text1.="</form>";

return $text1;
}

?>

Спустя 1 минута (8.04.2012 - 20:03) nugle написал(а):
echo f_view_korzina();

и все. смотри что возвращает ф-ия

Спустя 3 минуты, 33 секунды (8.04.2012 - 20:07) Игорь_Vasinsky написал(а):
функция инициалицирована в отдельной переменной. а класс видимо как то должен всё это добро передавать от сервера клиенту чтоли..

Спустя 49 секунд (8.04.2012 - 20:08) Игорь_Vasinsky написал(а):
функция инициализирована в отдельной переменной. а класс видимо как то должен всё это добро передавать от сервера клиенту чтоли..

Спустя 3 минуты, 11 секунд (8.04.2012 - 20:11) Sadalsky написал(а):
Игорь_Vasinsky
Извините не понял....

Спустя 4 минуты, 51 секунда (8.04.2012 - 20:16) Sadalsky написал(а):
Игорь_Vasinsky
Есть файл cart.php, который и содержит вот эту злосчастную функцию View_Korzina
Он как вы догадались открывает другую функцию....f_view_korzina
который содержит форму отправки на сервер группу товаров, которые отправил в корзину клиент....

Спустя 3 минуты, 20 секунд (8.04.2012 - 20:19) Sadalsky написал(а):
nugleЕстественно я так и делал изначально....и меня все устраивало...но он не вставлял в таблицу MySQL переменные адресса, которые содержаться в xajax_Address_Korzina(1)

Спустя 29 минут, 45 секунд (8.04.2012 - 20:49) Sadalsky написал(а):
Игорь_Vasinsky
я дико извиняюсь за свою назойливость но начну по порядку....думаю так будет надежнее...
Есть файл cart.php:

<div id=center1>
<?php
echo f_view_korzina();
?>


он открывает в себе функцию f_view_korzina:

<?php
// Корзина подробно

function f_view_korzina()
{
require_once("mybaza.php");
$text1="";
$file1="tmp1/f-".$_SESSION['session']."-".$_SESSION['user'].".txt";
$fp=fopen($file1,"r");
$text1.="<form id='FormKorzina' action='javascript:void(null);' onsubmit='
xajax.$(
\"ButtonFormKorzina\").disabled=true;
xajax.$(
\"ButtonFormKorzina\").value=\"Подождите...\";
xajax_Create_Zakaz(xajax.getFormValues(
\"FormKorzina\"));'>";
$text1.="<div id=block_zakaz1>";
$text1.="<table width=100%>";
$text1.="<tr><td class='str0'></td>";
$text1.="<td class='str0'>Товар</td>";
$text1.="<td class='str0' align=right>Кол-во</td>";
$text1.="<td class='str0' align=right>Цена,<br>руб</td>";
$text1.="<td class='str0' align=right>Сумма,<br>руб</td>";
$text1.="<td class='str0'></td>";
$text1.="</tr>";

$i=0;$summa=0;$count=0;
while($str=fgetcsv($fp,1000,";"))
{$i++;
$text1.="<tr>";
$text1.="<td class='str".($i%2+1)."' width=5%>".$i."
<input type=hidden name=korzina_id id=korzina_id value='"
.$str[0]."' >
</td>"
;
$query1="SELECT name FROM tovars WHERE id='".$str[0]."' ";
$text1.="<td class='str".($i%2+1)."' width=60%>".mysql_result(mysql_query($query1),0)."</td>";
$text1.="<td class='str".($i%2+1)."' width=10%><input type=text name=korzina_kol".$str[0]."
id=korzina_kol"
.$str[0]." value='".$str[1]."' size=3 maxlength=3 ".READONLYK."
onchange='var x=new Array();x[0]="
.$str[0].";x[1]=this.value;
xajax_Change_Kol_Korzina(x);'>
</td>"
;
$text1.="<td class='str".($i%2+1)."' width=10%><input type=text name=korzina_pay".$str[0]."
id=korzina_pay"
.$str[0]." value='".$str[2]."' size=3 maxlength=6 readonly
onclick='document.getElementById(
\"korzina_kol".$str[0]."\").focus();
return false;'></td>"
;
$text1.="<td class='str".($i%2+1)."' width=10%><input type=text name=korzina_summa".$str[0]."
id=korzina_summa"
.$str[0]." value='".$str[2]*$str[1]."' size=6 maxlength=6 readonly
onclick='document.getElementById(
\"korzina_kol".$str[0]."\").focus();
return false;' ></td>"
;
$text1.="<td class='str".($i%2+1)."' width=5%><a href='javascript:void();' onclick='
xajax_Delete_From_Korzina("
.$str[0].")'><img src='img/delete.png'>
</a></td>"
;
$text1.="</tr>";
$summa+=$str[1]*$str[2];
$count+=$str[1];
}
$text1.="</table>";
$text1.="</div>";
$text1.="<br>
<div id='itogo_korzina'>Итого - товаров - "
.$count." , на сумму ".$summa." руб.</div>
<br>"
;
$text1.="<div id=block_zakaz2>";
$text1.="<center><input type='button' value='Адрес доставки' onclick='xajax_Address_Korzina(1);'></center>";
$text1.="</div>";
$text1.="<center><input type='submit' id='ButtonFormKorzina' value='Оформить заказ'></center>";

$text1.="</form>";

return $text1;
}

?>



Это корзина интернет магазина - в нее клиент складывает товар...
После этого он может ее редактировать - изменять колличество товара и удалять
Это выполняют функции function_change_kol_korzina и function_delete_from_korzina

После того как клиент закончил измываться над своей корзиной он должен ввести адресс, куда его товаты ему доставить - за это отвечает function Address_Korzina($arg)

<?php
// Адрес заказа в корзине
function Address_Korzina($arg)
{
$objResponse = new xajaxResponse();
$objResponse->assign("flag_ajax","value",'yes');


$content2="Адрес доставки<br>";

$content2.="улица <input id='street' name=street type=text size=20 maxlength=20><br>";
$content2.="дом <input id='house' name='house' type=text size=6 maxlength=6><br>";
$content2.="квартира <input id='apartament' name='apartament' type=text size=4 maxlength=4><br>";


$objResponse->assign("block_zakaz2","innerHTML",$content2);



$objResponse->assign("flag_ajax","value",'no');

return $objResponse;
}

?>


После ввода адресса нажимаем "оформить заказ" и вся информация из формы попадает в таблицу MySQL - за это отвечает файл function f_create_zakaz($Id):
 
<?php
// Создание заказа из корзины
// по кнопке Оформить заказ

function f_create_zakaz($Id)
{
require_once("mybaza.php");
$text1="";$text01="";

// извлечение из корзины и запись в базу
$file1="tmp1/f-".$_SESSION[session]."-".$_SESSION[user].".txt";
// создание заказа и получение id нового заказа
$query1="INSERT INTO zakaz SET id_user='".$_SESSION[user]."' ";
$rez1=mysql_query($query1);
if(!$rez1)
$text01.=$query1;
$id=mysql_insert_id();
// вставка позиций в zakaz_table и вычисление суммы заказа
$fp=fopen($file1,"r");
$summa=0;
while($str=fgetcsv($fp,1000,";"))
{
$id_zakaz=$id;
$id_tovar=$str[0];
$kol=$str[1];
$pay_rub=$str[2];
$summa_rub=$str[1]*$str[2];
$summa_rub_oplata=0;
$link="0";
$count_download=0;
$kol=change_kol($id_tovar,$kol);
$query2="INSERT INTO zakaz_table SET
id_zakaz='"
.$id_zakaz."',id_tovar='".$id_tovar."',
pay_rub='"
.$pay_rub."',kol='".$kol."',
summa_rub='"
.($pay_rub*$kol)."' ";
$rez2=mysql_query($query2);
$summa+=$pay_rub*$kol;
$query02="SELECT name FROM tovars WHERE id='".$str[0]."' ";
$text01.=mysql_result(mysql_query($query02),0)." - ".$str[1]."<br>";
}
// запись а таблицу zakaz
$id_user=$_SESSION[user];
$summa_rub=$summa;
$summa_rub_oplata=0;
$visible='yes';
$address=$Id[street]." ".$Id[house]." ".$Id[apartament];
$query3="UPDATE zakaz SET data='".date('Y-m-d H:i:s')."',
id_user='"
.$id_user."',summa_rub='".$summa_rub."',
pay='no',visible='"
.$visible."',address='".$address."'
WHERE id='"
.$id."' ";
$rez3=mysql_query($query3);
// message_header4
fclose($fp);
// очистка файла корзины
$fp=fopen($file1,"w");
fwrite($fp,"");
fclose($fp);
// формирование страницы вывода
$text1.="<center>";
$text1.="<br><br><b>Заказ ".$id."</b><br><br>";
$text1.=$text01;
$text1.="<br> Сумма к оплате : <br><b>".$summa." руб. </b> или <br>";
$text1.="</center>";

return $text1;
}
function change_kol($id,$arg)
{
require_once("mybaza.php");
$query91="SELECT kol FROM tovars WHERE id='".$id."' ";
$rez91=mysql_query($query91);
$row91=mysql_fetch_assoc($rez91);
$kol=$row91[kol];
$arg1=min($kol,$arg);
$query92="UPDATE tovars SET kol='".($kol-$arg1)."' WHERE id='".$id."' ";
$rez92=mysql_query($query92);


return $arg1;
}
?>


Собственно говоря вот так....
Но почему то в этом случае не передаются данные из function Address_Korzina($arg) - т.е. адресс клиента.....
А вот если что нить изменить в корзине или удалить из нее то все попадает. Уже все излазил - прямо не знаю в чем дело...

Спустя 1 минута, 2 секунды (8.04.2012 - 20:50) Sadalsky написал(а):
sad.gif

Спустя 37 минут, 1 секунда (8.04.2012 - 21:27) bodja написал(а):
Цитата
sad.gif

Да уж,всю жизнь считал,что корзина - это монополия яваскрипта.
Такой огород ,да еще и с прикрученым аяксом редко увидиш.
Спасибо ,потешили старика. biggrin.gif

Спустя 15 минут, 20 секунд (8.04.2012 - 21:42) Sadalsky написал(а):
bodja
Это всё из книги "Сайт на Ajax под ключ"
Автор Петин Виктор Александрович. Знаю, что книга - один сплошной косяк....но хочется разобраться...

Спустя 4 минуты, 48 секунд (8.04.2012 - 21:47) Invis1ble написал(а):
а меня радуют названия подобного рода - Delete_From_Korzina biggrin.gif

Спустя 6 минут, 2 секунды (8.04.2012 - 21:53) Sadalsky написал(а):
Invis1ble
Наверное, чтоб понятней было........ biggrin.gif

Спустя 1 минута, 44 секунды (8.04.2012 - 21:55) Sadalsky написал(а):
$address=$Id[street]." ".$Id[house]." ".$Id[apartament];

Мне просто интересно почему в одном случае эти переменные попадают и передаются, а в другом - нет!!!

Спустя 2 минуты, 24 секунды (8.04.2012 - 21:57) bodja написал(а):
Цитата
Это всё из книги "Сайт на Ajax под ключ"

ФИГАСЕ!!!
Это такое пишут,куда катится мир?
Ну зачем это все?
Есть JS есть аякс-сделайте.
Зачем так все мешать? Для чего? Жизнь себе усложнять,что бы крыша совсем ушла?
При аяксе сессии даже не потребуются,просто все собрали в кучу ,заполнили форму все скопом отправили на ПХП.
ПХП только схавать,переправить на мыло или в базу и все,тут даже "спасибо за покупку" сможет сказать JS .
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.