i have a Question & Answer website as a part of my graduation project , so am still fresh to such languages but i will try to be specific as much as i can ,,, well i got voting for both Question and answers at each special question page ,, i use the same voting code with changing queries to retrieve desired data ,, but the problem is one of the voting system only works (Question voting or Answers voting) i suppose the problem is action listener is listen to the same btn or the span or smth like that i tried to change values but without any mentioned result,, i will provide all the code am using and am ready to replay to any comment to make stuff clear so i hope you guys help me out to make both voting systems work in the same page ,, thnx you very much ... ^^
srip.js > script for questions
$(document).ready(function(){
// ajax setup
$.ajaxSetup({
url: 'ajaxvote.php',
type: 'POST',
cache: 'false'
});
// any voting button (up/down) clicked event
$('.vote').click(function(){
var self = $(this); // cache $this
var action = self.data('action'); // grab action data up/down
var parent = self.parent().parent(); // grab grand parent .item
var postid = parent.data('postid'); // grab post id from data-postid
var score = parent.data('score'); // grab score form data-score
// only works where is no disabled class
if (!parent.hasClass('.disabled')) {
// vote up action
if (action == 'up') {
// increase vote score and color to orange
parent.find('.vote-score').html(++score).css({'color':'orange'});
// change vote up button color to orange
self.css({'color':'orange'});
// send ajax request with post id & action
$.ajax({data: {'postid' : postid, 'action' : 'up'}});
}
// voting down action
else if (action == 'down'){
// decrease vote score and color to red
parent.find('.vote-score').html(--score).css({'color':'red'});
// change vote up button color to red
self.css({'color':'red'});
// send ajax request
$.ajax({data: {'postid' : postid, 'action' : 'down'}});
};
// add disabled class with .item
parent.addClass('.disabled');
};
});
});
ajaxvote.php for opertion inside the questions
<?php
include('config.php');
# start new session
dbConnect();
session_start(); /* changes will occuar here */
if ($_SERVER['HTTP_X_REQUESTED_WITH']) {
if (isset($_POST['postid']) AND isset($_POST['action'])) {
$postId = (int) mysql_real_escape_string($_POST['postid']);
# check if already voted, if found voted then return
//if (isset($_SESSION['vote'][$postId])) return;
# connect mysql db
dbConnect();
# query into db table to know current voting score
$query = mysql_query("
SELECT rate
from qa
WHERE id = '{$postId}'
LIMIT 1" ); /* changes will occuar here */
# increase or dicrease voting score
if ($data = mysql_fetch_array($query)) {
if ($_POST['action'] === 'up'){
$vote = ++$data['rate'];
} else {
$vote = --$data['rate'];
}
# update new voting score
mysql_query("
UPDATE qa
SET rate = '{$vote}'
WHERE id = '{$postId}' "); /* changes will occuar here */
# set session with post id as true
$_SESSION['vote'][$postId] = true;
# close db connection
dbConnect(false);
}
}
}
?>
printing code : QR.php
<?php
require ("coonection.php");
if(isset($_GET['start']) )
{
$FURL = $_GET['start'];
$data=mysql_query("SELECT * FROM qa WHERE id=($FURL)");
while($d=mysql_fetch_assoc($data)) { ?>
<div class="item" data-postid="<?php echo $d['id'] ?>" data-score="<?php echo $d['rate'] ?>">
<div class="vote-span"><!-- voting-->
<div class="vote" data-action="up" title="Vote up">
<i class="glyphicon glyphicon-thumbs-up"></i>
</div><!--vote up-->
<div class="vote-score"><?php echo $d['rate'] ?></div>
<div class="vote" data-action="down" title="Vote down">
<i class="glyphicon glyphicon-thumbs-down"></i>
</div><!--vote down-->
</div>
<div class="title"><!-- post data -->
<p><?php echo $d['question'] ?></p>
</div>
</div><!--item-->
<?php } } ?>
</div>
</p>
</div>
<div class="single-post-title" align="center">
<h2>Answers</h2>
</div>
<!-- Comments -->
<?php
require ("coonection.php");
if(isset($_GET['start']) )
{
$FURL = $_GET['start'];
$data=mysql_query("SELECT * FROM answers WHERE question_id=($FURL)");
while($d = mysql_fetch_assoc($data))
{
echo'<div class="shop-item">';
echo'<ul class="post-comments">';
echo'<li>';
echo'<div class="comment-wrapper">';
echo'<h3>';
echo $d['answerer'] ;
echo'</h3>';
echo '</div>'; ?>
<div class="item" data-postid="<?php echo $d['answer_id'] ?>" data-score="<?php echo $d['rate'] ?>">
<div class="vote-span"><!-- voting-->
<div class="vote" data-action="up" title="Vote up">
<i class="icon-chevron-up"></i>
</div><!--vote up-->
<div class="vote-score"><?php echo $d['rate'] ?></div>
<div class="vote" data-action="down" title="Vote down">
<i class="icon-chevron-down"></i>
</div><!--vote down-->
</div>
<div class="post"><!-- post data -->
<p><?php echo $d['answer'] ?></p>
</div>
</div><!--item-->
<?php
echo'<div class="comment-actions"> <span class="comment-date">';
echo $d['dnt'] ;
echo'</div>';
echo'</li>';
echo'</ul>';
echo'</div>';
}
}
?>
i got ajaxvote2.php and also got scrip2.js for settings in answer ,,, i think using the same code make the printing page confused and only listen to one of voting systems
i will add ajaxvote2.php and scrip2.js just in case some one need to look at them ...
ajaxvote2.php
<?php
include('config.php');
# start new session
dbConnect();
session_start(); /* changes will occuar here */
if ($_SERVER['HTTP_X_REQUESTED_WITH']) {
if (isset($_POST['postid']) AND isset($_POST['action'])) {
$postId = (int) mysql_real_escape_string($_POST['postid']);
# check if already voted, if found voted then return
//if (isset($_SESSION['vote'][$postId])) return;
# connect mysql db
dbConnect();
# query into db table to know current voting score
$query = mysql_query("
SELECT rate
from answers
WHERE answer_id = '{$postId}'
LIMIT 1" ); /* changes will occuar here */
# increase or dicrease voting score
if ($data = mysql_fetch_array($query)) {
if ($_POST['action'] === 'up'){
$vote = ++$data['rate'];
} else {
$vote = --$data['rate'];
}
# update new voting score
mysql_query("
UPDATE answers
SET rate = '{$vote}'
WHERE answer_id = '{$postId}' "); /* changes will occuar here */
# set session with post id as true
$_SESSION['vote'][$postId] = true;
# close db connection
dbConnect(false);
}
}
}
?>
scrip2.js
$(document).ready(function(){
// ajax setup
$.ajaxSetup({
url: 'ajaxvote2.php',
type: 'POST',
cache: 'false'
});
// any voting button (up/down) clicked event
$('.vote').click(function(){
var self = $(this); // cache $this
var action = self.data('action'); // grab action data up/down
var parent = self.parent().parent(); // grab grand parent .item
var postid = parent.data('postid'); // grab post id from data-postid
var score = parent.data('score'); // grab score form data-score
// only works where is no disabled class
if (!parent.hasClass('.disabled')) {
// vote up action
if (action == 'up') {
// increase vote score and color to orange
parent.find('.vote-score').html(++score).css({'color':'orange'});
// change vote up button color to orange
self.css({'color':'orange'});
// send ajax request with post id & action
$.ajax({data: {'postid' : postid, 'action' : 'up'}});
}
// voting down action
else if (action == 'down'){
// decrease vote score and color to red
parent.find('.vote-score').html(--score).css({'color':'red'});
// change vote up button color to red
self.css({'color':'red'});
// send ajax request
$.ajax({data: {'postid' : postid, 'action' : 'down'}});
};
// add disabled class with .item
parent.addClass('.disabled');
};
});
});
Aucun commentaire:
Enregistrer un commentaire