Премини към съдържанието
От 1-ви септември 2021 г., вход във форумите ще е възможен само с имейл адрес вместо потребителско име. Ако не помните имейла с който сте се регистрирали, вижте го в настройките на профила си. ×
  • Добре дошли!

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

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

     

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


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 Имам си база данни за Системата за гласуване,както и за качването на снимки(информативно го казвам,да не ми задавате такива въпроси)  

 

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

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

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

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

  • Разглеждащи това в момента   0 потребители

    Няма регистрирани потребители разглеждащи тази страница.

  • Горещи теми в момента

  • Подобни теми

    • от Franko_BG
      Купих си от новите NVMe дискове и стария ми лаптоп потръгна. Наскоро обаче прочетох, че на ССД дисковете има лимит на запис и триене. Опитах да преместя системните папки temp bin на втория диск, но под Windows 10 не намерих тази опция. И дали изобщо NVMe и M.2 дисковете имат този проблем, както първите ССД-та? Ще бъда благодарен ако някой помогне със съвет. Благодаря!
    • от Марио Проданов
      Здравей, колеги! Днес съседа ми докара лаптоп Asus SonicMaster и моето задължение е да му го преинсталирам на Windows 7. Понеже лаптопа няма външно устройство за DVD, защото общо взето моите инсталационни дискове са на Windows -  реших да си улесня нещата като си записах USB бутваща флашка с помощта на Windows 7 USB/DVD Tool. Всичко е ок. 
      BIOS - първо бутваща у-во на USB и запазих промените и напред. До тук добре. След като зареди надписа "Windows is loading files", когато зареди напълно сивата лентичка ми излиза синия екран, който ще видите на снимката. И до там. Пробвах всичко:
      - изключих всякаква защита на BIOS.
      -проверих бутващата флашка и на моите машини - всичко е точно 
      -опитах да въвеждам най-различни команди от advanced options в command prompt. 
      Лаптопът не е отварян. В момента има инсталирана ОС на Windows 10.
      Понеже не преинсталирам за първи път компютър или лаптоп ще помоля хората, които ще реагират с неадекватни въпроси и коментари - ДО ТУК! Просто излезте от форума. Трябват ми сериозни хора по въпроса.
      Моля Ви за помощ!
      Ако съм забравил нещо да добавя - моля да ме извините!
      Благодаря Ви за вниманието! 

    • от Марио Проданов
      Здравейте, колеги!
      На скоро родителите ми дадоха техен стар лаптоп Asus F5 закупен през 2009 година и използван до 2014г. 
      Първоначално лаптопа стартира и ми показа още от началото само черен екран. Оставих го 5мин. да вдигне температура и сам потръгна и стартира. Направих профилактика(почистване и добавяне на нова термопаста на CPU и GPU.) Почистване на плочките на  RAM паметта с Brake Cleaner, както и слотовете.  След това го преинсталирах на Windows 7 64bit и всичко си беше наред. 
      Въпреки всичко това още от самото начало лаптопа не записваше датата и часа - нито в BIOS, нито и в ОС. Знаех от къде е проблема - плоската батерия.
      Разглобих лаптопа на цяло - бавно и много внимателно. Смених старата плоска батерия с нова и върнах всичко обратно, както трябва(всички кабели свързани и няма нищо скъсано и счупено, защото не разглобявам за първи път лаптоп или декстоп машина. )
      Както споменах върнах всичко на мястото и не иска да стартира. Като го стартирам - черен екран и не показва нищо повече. 
      Всичко прегледах - RAM, HDD и т.н. Всичко работи, но продължава да дава черен екран.
      Направи ми впечатление, че чипсета на дъното на лаптопа прегрява. 
      Попитах едно момче, което също като мен се занимава с компютри от доста години. Погледнах ме го и ми спомена, че чипсета е изгорял, но аз не съм много съгласен с него. 
      Това е общо взето всичко. 
      Дайте съвет и си изкажете мнението по темата.
      Съжалявам, ако съм забравил нещо да добавя.
      Благодаря за вниманието! 🙂
    • от KiNGSTON97
      Здравейте! До сега не бях срещал такова нещо. При инсталацията на Windows 10 реших да си направя пълен формат и на двата диска SSD+HDD (мощно пречистване на всичко). Правил съм го поне 15 пъти това нещо, но тоя път при инсталацията не ми даде да продължа напред, защото бях заредил GPTм а не MBR формат и оттам нещата станаха кошмарни. Издразних се и разпокъсах дисковете на парчета при менюто за избиране къде да се инсталира Windows-a, след това изтриване, форматиране и куп други глупащини на дисковете. Сега се мъча от два дни да форматирам диска и да се върнат в "default" състояние.Даже нямам икона на втория диск (HDD) в Моят компютър. Имам платена програма за форматиране, създаване, разделяне и др. неща на дискове AOMEI partition assistant UNLIMITED. Със сигурност може да се оправят нещата с нея, ама като си немам понятие от тва...
      Моля, който е компетентен по темата да ми помогне възможно най-скоро и ще съм длъжник. Бих почерпил лицето, което помогне напълно с проблема.
      Може да се работи с Team Viewer версията, дискорд да ви споделя екран и каквото е нужно за поправката.
      Ето снимки на нещата.
      Поздрави.




    • от Марио Проданов
      Здравейте на всички! 
      Опитах се да напиша програмата, която имам от училище, но не успях и имам грешки и не стигам до отговора от условието долу, както съм описал. 
      Може ли някой да ми помогне? Ще бъда много благодарен.  
      Коментари от типа : не можеш ли сам да я напишеш и подобни са излишни. Нямам такъв опит и все още се уча. 
       
      Ето го условието.
      Условие: Да се напише програма, която въвежда от клавиатурата цяло число 2<=n<=25 и редица от реални числа a0,a1,a2,...an-a, след което намира и отпечатва колко пъти в масива се среща максималният му елемент.
      Примерен вход: 6                                                   Примерен изход: 3
                                      2.6 9 -5 9 19 9
       
  • Дарение

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

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите Условия за ползване