Есть ли способ обмена переменными между JavaScript и PHP - PullRequest
0 голосов
/ 05 февраля 2012

Уважаемые участники stackoverflow,

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

это сценарий, который я написал для магазина, с небольшой обработкой ошибок, но я застрял с проблемой,

в моем javascript у меня есть функция buyitem () с 2 переменными, которую я хочу использовать в моих функциях php, которые проверяют все в моей базе данных, есть ли способ получить эти переменные из javascript в функцию php, которую я написал не переходя на внешний файл PHP?

спасибо заранее, Ионафан

<?php
    include "php-scripts/DBConnection.php";
    $con = getconnection();
    mysql_select_db("brokendi_BD", $con);


    function getKarma()
    {
           $result = mysql_query("SELECT * FROM userpoints WHERE uid='getUID()'");
           $row = mysql_fetch_array($result);
           $currentkarma = (int)$row['points'];

          return $currentkarma;
    }

    function getUID()
    {
         global $user;
         if ($user->uid) 
         { 
              $userID=$user->uid;
              return $userID;
         }
         else
        {
              header('Location: http://brokendiamond.org/?q=node/40');
        }
    }

    function hasRole($roleID)
    {
           $usersid = getUID();
           $returnValue = false;
           $result = mysql_query("SELECT * FROM users_roles");
           while ($row = mysql_fetch_array($result))
          { 
               if ($row['uid'] == $usersid)
               {
                      if ($row['rid'] == $roleID)
                      {
                              $returnValue = true;
                              break;
                      }
               }
          }
          return $returnValue;
    }

    function enoughKarma()
    {
            if ( getKarma() >= $requiredKarma)
            {
                     return true;
            }
            else
            {
                    return false;
            }      
    }

    function buyRole()
    {
           $currentKarma = getKarma();
           $newkarma = $currentKarma - $requiredKarma;
           $userID = getUID();
           mysql_query("UPDATE userpoints SET points = '$newkarma' WHERE uid='$userID'");
           mysql_query("INSERT INTO users_roles (uid, rid) VALUES ($userID, $roleID)");
    }
    ?>

    <script type="text/javascript">
    buyItem(1 , 0);
    function SetStore()
    {


    }

    Function buyItem(itemID,reqKarma)
    {
           if (<?php enoughKarma(); ?>)
           {
                 <?php buyRole(); ?>
           }
           else
           {
                alert('You do not have enough Karma to buy this title.');
           }
    }
    </script>

Ответы [ 2 ]

4 голосов
/ 05 февраля 2012

PHP - это сценарий на стороне сервера, а javascript - на стороне клиента. Сценарии на стороне сервера выполняются до загрузки страницы. Это означает, что ваш javascript не может передавать на него переменные, НО вы можете передавать переменные php в js.

Лучшее решение в вашем случае - использовать ajax для отправки этих переменных в php и иметь переменные php set на своей стороне, это не совсем решит вашу проблему, но с некоторой креативностью в вашем коде вы можете это осуществить.

1 голос
/ 05 февраля 2012

вы можете либо перезагрузить страницу (что я сомневаюсь в том, что вы ищете), либо сделать ajax-вызов в ваш php-скрипт, отправив 2 переменные.
если вы используете jQuery, это должно дать вам представление о том, как это сделать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...