2015-04-18 6 views
-1

У меня есть таблица, отображающая извлеченные данные из SQL для одного из столбцов, в которых я использую функцию onclick = "sendVal (this.value)" для переключателя, для которого она отправляет значение переключателя.Использование javascript и php в одном документе

Затем я выполняю некоторые вычисления и удаляю связанные теги, чтобы вставить новый тег.

Моя проблема: мне нужно новое значение (после вычисления), которое нужно добавить в MYSQL.

Мой подход (не самый эффективный) заключался в том, чтобы сохранить его как файл cookie и получить в PHP в том же файле, однако иногда мне требуется перезагрузить страницу, возможно, потому, что его POSTING, как только страница загружается, не отключает COOKIES.

 <script type="text/javascript"> 
     function sendVal(item) {  

     yessize=Math.round(100*(voteyes/(voteno+voteyes))) + random; 
     nosize=Math.round(100*(voteno/(voteno+voteyes))) + random; 
     alert("Thank you for your contribution"); 

     document.cookie= totalyes + yessize+ ";"; 
     document.cookie= totalno + nosize +";"; 

     } 

(* Где всего да или нет это имя куки, например totalyes = «имя =»;)

на том же документе, в конце концов, я есть код PHP:

<?php 

    if(!is_null($_COOKIE['name']) && !is_null($_COOKIE['name2'])){  
     echo "in"; 
     echo $example= "INSERT INTO example-table(id,ip,value1,value2) VALUES (".$id.",".$ip.",".$_COOKIE['name'].",".$_COOKIE['name2'].")"; 
     $con->query($example); 
     unset($_COOKIE['name']); 
     unset($_COOKIE['name2']); 

    } 
    ?> 

(я попробовал, если IsSet тоже)

+0

В каком порядке эти операции, произошедшим? Любой PHP-код на этой странице будет выполнен до того, как страница будет отображаться в браузере, а затем никогда больше, пока страница не будет перезагружена. На самом деле не совсем ясно, какова общая область вашей операции. – David

+0

Я хотел бы получить файл cookie после того, как он был установлен –

+3

@hass .: Ну, * * вы извлекаете его после того, как он был установлен? Это мой вопрос. Если все, что вы хотите сделать, это отправить значение серверу один раз, то почему бы просто не опубликовать значение в запросе AJAX? Написание в файл cookie и ожидание загрузки следующей страницы кажется неудобным. – David

ответ

0

Если вы хотите хранить данные в MySQL после вычислений в JS, почему бы вам не использовать AJAX-запросы и анализировать переменные в PHP скрипт, в этом случае вы можете получить ответ от PHP и отображение результатов на странице без обновления страницы.

Также было бы проще сделать это с помощью jQuery.

Например:

// JavaScipt 
yessize = Math.round(100 * (voteyes/(voteno + voteyes))) + random; 
nosize = Math.round(100 * (voteno/(voteno + voteyes))) + random; 

$.ajax({ 
    method: 'POST', 
    url: 'action.php', 
    data: { ys: yessize, ns: nosize }, 
    success: function(response) { 
     data = JSON.parse(response); 
     if(data == 'ok') { 
      alert("Thank you for your contribution"); 
     } else { 
      alert("There was a ploblem, please try again :("); 
     } 
    } 
}); 

// PHP - action.php 
<?php 
    if(isset($_POST['ys']) && isset($_POST['ns'])) { 
     // Perform SQL query 
     // You can get variables from JavaScript via $_POST['data_name'] 
     if($query->save()) { 
      $status = 'ok'; 
     } else { 
      $status = 'false'; 
     } 
     echo json_encode($status); 
    } 
?> 
Смежные вопросы