Премини към съдържанието
  • Добре дошли!

    Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

    Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

     

Система за гласуване с палци нагоре и на долу! Помагайте!


profch0

Препоръчан отговор

Здравейте,вчера така си играх малко да направя една страничка на която да качвам снимки(gif,jpeg) И тя стана каквато я исках,след това потърсих как да сложа система за гласуване и горе-долу сложих една. Сега проблема ми е,че от както съм сложил системата за гласуване,мога да гласувам само 1 път на(което е добре) , но само на 1 снимка,а после този глас се отразява на всички други снимки и не ми дава да гласувам. Ето го index.php:

<?php
error_reporting(E_ERROR | E_PARSE);
 $id = trim(htmlspecialchars($_GET['id']));
 $random_key = (int)$_GET['rnd'];
 // --------------------------- RANDOM KEY 
 if(strlen($random_key) > 3 && ($random_key > time() ) )
 {
 	$where = " ORDER BY RAND() ";
 }
 else
 	 {
 	 	$where = " WHERE `id` = '".$id."' ";
 	 }
 $q = mysql_query("SELECT * FROM `images` ".$where." LIMIT 1") or die(mysql_error());
 $n = mysql_num_rows($q);
 // ------------------------------ PRINT RESULTS
 if($n == 0){ header("Location: ./?p=404");exit;}
 $r = mysql_fetch_array($q);
 $the_author = $r['author'];
 $timestamp_ = $r['timestamp'];
 $likes = $r['likes'];
 $cat_id = $r['cat_id'];
 // с цел малко по реални гледания .. няма да става номера с рефреш, а на 2 часа == 1 гредане 
 $chasa = 2; // от тука казваш ан колко 
 if(!$_COOKIE['view-'.$id])
 { 	
 	mysql_query("UPDATE `images` SET `views`=`views`+1 WHERE `id`='".$id."'");
 	setcookie("view-".$id,"true", (time() + ($chasa * 3600))); // 1den
 }
?>
<head>
<script type="text/javascript" src="js/jquery-1.9.0.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
	
	//####### on page load, retrive votes for each content
	$.each( $('.voting_wrapper'), function(){
		
		//retrive unique id from this voting_wrapper element
		var unique_id = $(this).attr("id");
		
		//prepare post content
		post_data = {'unique_id':unique_id, 'vote':'fetch'};
		
		//send our data to "vote_process.php" using jQuery $.post()
		$.post('vote_process.php', post_data,  function(response) {
		
				//retrive votes from server, replace each vote count text
				$('#'+unique_id+' .up_votes').text(response.vote_up); 
				$('#'+unique_id+' .down_votes').text(response.vote_down);
			},'json');
	});

	
	
	//####### on button click, get user vote and send it to vote_process.php using jQuery $.post().
	$(".voting_wrapper .voting_btn").click(function (e) {
	 	
		//get class name (down_button / up_button) of clicked element
		var clicked_button = $(this).children().attr('class');
		
		//get unique ID from voted parent element
		var unique_id 	= $(this).parent().attr("id"); 
		
		if(clicked_button==='down_button') //user disliked the content
		{
			//prepare post content
			post_data = {'unique_id':unique_id, 'vote':'down'};
			
			//send our data to "vote_process.php" using jQuery $.post()
			$.post('vote_process.php', post_data, function(data) {
				
				//replace vote down count text with new values
				$('#'+unique_id+' .down_votes').text(data);
				
				//thank user for the dislike
				alert("Thanks! Each Vote Counts, Even Dislikes!");
				
			}).fail(function(err) { 
			
			//alert user about the HTTP server error
			alert(err.statusText); 
			});
		}
		else if(clicked_button==='up_button') //user liked the content
		{
			//prepare post content
			post_data = {'unique_id':unique_id, 'vote':'up'};
			
			//send our data to "vote_process.php" using jQuery $.post()
			$.post('vote_process.php', post_data, function(data) {
			
				//replace vote up count text with new values
				$('#'+unique_id+' .up_votes').text(data);
				
				//thank user for liking the content
				alert("Thanks! For Liking This Content.");
			}).fail(function(err) { 
			
			//alert user about the HTTP server error
			alert(err.statusText); 
			});
		}
		
	});
	//end 
	
	
	
});


</script>
<style type="text/css">
<!--
.content_wrapper{width:500px;margin-right:auto;margin-left:auto;}
h3{color: #979797;border-bottom: 1px dotted #DDD;font-family: "Trebuchet MS";}

/*voting style */
.voting_wrapper {display:inline-block;margin-left: 20px;}
.voting_wrapper .down_button {background: url(images/thumbs.png) no-repeat;float: left;height: 14px;width: 16px;cursor:pointer;margin-top: 3px;}
.voting_wrapper .down_button:hover {background: url(images/thumbs.png) no-repeat 0px -16px;}
.voting_wrapper .up_button {background: url(images/thumbs.png) no-repeat -16px 0px;float: left;height: 14px;width: 16px;cursor:pointer;}
.voting_wrapper .up_button:hover{background: url(images/thumbs.png) no-repeat -16px -16px;;}
.voting_btn{float:left;margin-right:5px;}
.voting_btn span{font-size: 11px;float: left;margin-left: 3px;}

-->
</style>
</head>
<div class="left">

	<div class="pannel">
		<div class="upper">Преглед на картинка </div>
		<div class="lower">
			
					<div class="big-item">

						<div class="title"><?php echo $r['title'];?></div>
						<img src="<?php echo $r['url'];?>"  />
					</div>
			   
			
				<div class="clear"></div>
				
		<!-- voting markup -->
        <div class="voting_wrapper" id="1001">
            <div class="voting_btn">
                <div class="up_button">&nbsp;</div><span class="up_votes">0</span>
            </div>
            <div class="voting_btn">
                <div class="down_button">&nbsp;</div><span class="down_votes">0</span>
            </div>
        </div>
        <!-- voting markup end -->
				
		</div>
	</div>

<?php
if($_SESSION['is-logged'] == true)
  {
?>
	<div class="pannel">
		<div class="upper">Напиши коментар:</div>
		<div class="lower">
			 <form method="post" action="">
			 	<textarea style='margin-bottom:5px;width:670px;height:70px;' name='commentd'></textarea>
			 	<input type='submit' name='add-comment' value="Добави коментара ми">
			 </form>
			<?php 
			  if(isset($_POST['add-comment']))
			  {
			  	
				$me = $_SESSION['u']['username']; // SESSION 
			  	$comment = trim(htmlspecialchars($_POST['commentd']));
			  	if(strlen($comment) > 3 && $me)
			  	 {
			  	 	mysql_query("INSERT INTO `comments` 
			  	 		 (`pic_id`,`author`,`comment`,`timestamp`)
			  	  VALUES('".$id."','".$me."','".$comment."',".(time()).")") or die(mysql_error());

			  	  header("Location: ./?".$_SERVER['QUERY_STRING']."#comments");
			  	  	exit;
			  	 }
			  	 else
			  	 	{
			  	 		echo "<br/> Моля, напишете нещо .. ";
			  	 	}
			  }
			?>
		</div>
	</div>
 <?php
}
 ?>
	<div class="pannel">
		<div class="upper">Коментари:</div>
		<div class="lower">
			<?php 
			 include "includes/comments.php";
			?>
		</div>
	</div>

</div>
<div class="right">



	<div class="pannel">
		<div class="upper">Категории:</div>
		<div class="lower">
			<div class='categories'>
			<?php
			$qc = mysql_query("SELECT * FROM `cats` ORDER BY `name` ASC");
			while ($r = mysql_fetch_array($qc)) {
				echo "<a href=\"./?p=cat&c=".$r['id']."\">".$r['name']."</a>";
			}
			?>
			</div>
		</div>
	</div>

</div>

А това е другия файл,който съм изтеглил с име vote_prоcess.php :
 

<?php
	####### db config ##########
	$db_username = 'root';
	$db_password = 'parola12';
	$db_name = 'gif';
	$db_host = 'localhost';
	####### db config end ##########

if($_POST)
{
		
	### connect to mySql
	$sql_con = mysqli_connect($db_host, $db_username, $db_password,$db_name)or die('could not connect to database');

	//get type of vote from client
	$user_vote_type = trim($_POST["vote"]);
	
	//get unique content ID and sanitize it (cos we never know).
	$unique_content_id = filter_var(trim($_POST["unique_id"]),FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH);
	
	//Convert content ID to MD5 hash (optional)
	$unique_content_id = hash('md5', $unique_content_id);
	
	//check if its an ajax request, exit if not
    if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
        die();
    } 
	

	switch ($user_vote_type)
	{			
		
		##### User liked the content #########
		case 'up': 
			
			//check if user has already voted, determined by unique content cookie
			if (isset($_COOKIE["voted_".$unique_content_id]))
			{
				header('HTTP/1.1 500 You already vote!'); //cookie found, user has already voted
				exit(); //exit script
			}
			
			//get vote_up value from db using unique_content_id
			$result = mysqli_query($sql_con,"SELECT vote_up FROM voting_count WHERE unique_content_id='$unique_content_id' LIMIT 1");
			$get_total_rows = mysqli_fetch_assoc($result);
			
			if($get_total_rows)
			{
				//found record, update vote_up the value
				mysqli_query($sql_con,"UPDATE voting_count SET vote_up=vote_up+1 WHERE unique_content_id='$unique_content_id'");
			}else{
				//no record found, insert new record in db
				mysqli_query($sql_con,"INSERT INTO voting_count (unique_content_id, vote_up) value('$unique_content_id',1)");
			}
			
			setcookie("voted_".$unique_content_id, 1, time()+7200); // set cookie that expires in 2 hour "time()+7200".
			echo ($get_total_rows["vote_up"]+1); //display total liked votes
			break;	
		
		##### User disliked the content #########
		case 'down': 
			
			//check if user has already voted, determined by unique content cookie
			if (isset($_COOKIE["voted_".$unique_content_id]))
			{
				header('You already vote!'); //cookie found, user has already voted
				exit(); //exit script
			}

			//get vote_up value from db using unique_content_id
			$result = mysqli_query($sql_con,"SELECT vote_down FROM voting_count WHERE unique_content_id='$unique_content_id' LIMIT 1");
			$get_total_rows = mysqli_fetch_assoc($result);
			
			if($get_total_rows)
			{
				//found record, update vote_down the value
				mysqli_query($sql_con,"UPDATE voting_count SET vote_down=vote_down+1 WHERE unique_content_id='$unique_content_id'");
			}else{
				
				//no record found, insert new record in db
				mysqli_query($sql_con,"INSERT INTO voting_count (unique_content_id, vote_down) value('$unique_content_id',1)");
			}
			
			setcookie("voted_".$unique_content_id, 1, time()+7200);  // set cookie that expires in 2 hour "time()+7200".
			echo ($get_total_rows["vote_down"]+1);//display total disliked votes
			break;	
		
		##### respond votes for each content #########		
		case 'fetch':
			//get vote_up and vote_down value from db using unique_content_id
			$result = mysqli_query($sql_con,"SELECT vote_up,vote_down FROM voting_count WHERE unique_content_id='$unique_content_id' LIMIT 1");
			$row = mysqli_fetch_assoc($result);
			
			//making sure value is not empty.
			$vote_up 	= ($row["vote_up"])?$row["vote_up"]:0; 
			$vote_down 	= ($row["vote_down"])?$row["vote_down"]:0;
			
			//build array for php json
			$send_response = array('vote_up'=>$vote_up, 'vote_down'=>$vote_down);
			echo json_encode($send_response); //display json encoded values
			break;

	}

}
?>

снимките ми са с линк подобен на този(разбира се само цифрите накрая се сменят) : index.php?p=view&t=&id=30

 

Та въпросът ми е,можете ли да ми кажете(по възможност с пример да ми покажете) как да направя гласуването да се прави по id и да може да се гласува на всяка снимка? :) 
 

П.С. Новак съм в сферата на HTML,PHP и т.н. и работя с xampp! Просто моля ако може да ми покажете чрез пример как да свържа id-то със системата за гласуване. Мога да предоставя файловете(всичките) ако искате,но не мисля,че има нужда,дадох ви най-важните с който аз направих (до колкото можах) първия вот(така да се каже) , от вас искам само да ми направите или покажете чрез примера както казах по-горе как да ги свържа.  :)

 

П.С.2 Имам си база данни за Системата за гласуване,както и за качването на снимки(информативно го казвам,да не ми задавате такива въпроси)  

 

Благодаря! :)

Линк към коментара
Сподели в други сайтове

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

×
×
  • Добави ново...