2012-06-14 2 views
2

У меня проблема при попытке подсчета на PHP с помощью кнопки и текстового файла для ее сохранения. Я не вижу проблемы в своем коде.Проблемы с подсчетом в тексте

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8"> 
<script src="http://code.jquery.com/jquery-latest.js"></script> 
</head> 
<body> 
    <div id="p">Click here</div> 
    <div id="results"></div> 
<script> 
$('#p').click(function() 
{ 
    $('#results').load("count.php"); 
}); 
</script> 
</body> 
</html> 

count.php содержит следующее:

<?php 

    $clicks = file_get_contents("clicks.txt"); 
    $clicks++; 

     $fp = fopen("clicks.txt", "w+"); 
     fwrite($fp, $clicks); 
     fclose($fp); 

//give the count to the user 
echo "result: $clicks"; 

    ?> 
+0

Вау. Любая причина, по которой вы делаете это через PHP, а не только JavaScript? – iambriansreed

+0

и что не работает? – silly

+0

@iambriansreed Похоже на лучшую идею. Можете ли вы мне помочь? – user1431627

ответ

4

С OP это выглядит, как вы хотите, эти данные должны быть сохранены и накапливаются для всех пользователей, поэтому на стороне сервера компонент необходим.

Вот мой взгляд на него:
HTML

<html> 
    <head> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
    </head> 
    <div id="p">Click here</div> 
    <div id="results"></div> 
    <script> 
    $('#p').click(function() 
    { 
     $.ajax("count.php", { 
       complete: function(jqXHR, status) { 
        $("#results").text(jqXHR.responseText); 
       } 
      }) 
    }); 
    </script> 
    </body> 
</html> 

PHP

<?php 
    $clicks = intval(file_get_contents("clicks.txt")); 
    $clicks++; 

     $fp = fopen("clicks.txt", "w+"); 
     fwrite($fp, $clicks); 
     fclose($fp); 

//give the count to the user 
echo "result: $clicks"; 

уведомление РНР является то же самое, но теперь я могу изменить значение $ щелчки на целое число после того как я понимаю из файла.

Кроме того, необходимо обеспечить файлы для чтения/записи для сервера ... в Linux вы бы просто сделать это:

sudo chown -R www-data:www-data /var/www 
sudo chmod -R g+rw /var/www 

сделать свой www/ каталог (или изменить его в каталог, где Apache (?) использует сервер ..) чтение/запись на сервере (это может быть чрезмерным, вы можете нацеливать определенные файлы с использованием того же метода, просто удалите флаг -R (рекурсивный)).

Я тестировал эту установку локально, и она работает для меня, goodluck!

Edit: Просто быть хорошо ....

Вот решение не-Jquery к JS (это не будет работать во всех браузерах, в частности, более старые версии IE, я дам вам справиться с этим: P)

var p_btn = document.getElementById('p'), 
    results = document.getElementById('results'); 
p_btn.addEventListener('click', function() { 
    var xhr = new XMLHttpRequest(); 
    xhr.open('GET','count.php',false); 
    xhr.onreadystatechange = function() { 
     if(xhr.readyState === 4 && xhr.status === 200) { 
      while(results.hasChildNodes()) { 
       results.removeChild(results.lastChild); 
      } 
      results.appendChild(document.createTextNode(xhr.responseText)); 
     } 
    } 
    xhr.send(); 

}, false); 
// enjoy! 

Live Demo

Игнорируйте добавить код, который получает выплюнуть обратно от сервера .... блин бесплатных хостов

+0

Я не использовал .load(), потому что, честно говоря, я не мог заставить его работать на моем локальном хосте. Однако $ .ajax работал нормально. – rlemon

+0

Могу ли я использовать это без jQuery? –

+0

да, но вам нужно будет написать свои собственные функции XHR (ajax). – rlemon

Смежные вопросы