Автор Тема: Система за гласуване  (Прочетена 14665 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

zaona7

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 15
Re: Система за гласуване
« Отговор #30 -: 21 Декември 2012, 23:19:50 »
Здравейте в момента уча PHP и се подготвям за един проект но като гледам тези уроци винаги има нещо което ми куца и не се получава моля за помощ:
[code]$id =$_GET['choise'];
if($id>0)
{
$rs = mysql_query("SELECT id FROM voting_c WHERE id=".$id);
$row = mysql_fetch_assoc($rs);
if($row['id']==$id)
{
mysql_query('UPDATE voting_c SET total_vots=total_vots+1 WHERE id='.$id);
$message = "Yor vote been confirm";
$sucses=true;
}
[/code]
Пращам ви само тази част от кода защото мисля,че другото не ви е нужно но ако ви трябва целия код ще ви го изпратя
когато се изпълни не ми даша номер на choise="" не е номерирано като в урока (1,2,3,4) и дотам съм стигнал и не мога да продължа.

HD

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 208
  • -Получени: 165
  • Публикации: 3077
Re: Система за гласуване
« Отговор #31 -: 22 Декември 2012, 00:11:05 »
Разгледай този ред в кода
Код: PHP
  1. $rs = mysql_query("SELECT id FROM voting_c WHERE id=".$id);
  2.  
А иначе нещо грешка получаваш ли?

zaona7

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 15
Re: Система за гласуване
« Отговор #32 -: 22 Декември 2012, 00:13:05 »
Не никаква грешка

HD

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 208
  • -Получени: 165
  • Публикации: 3077
Re: Система за гласуване
« Отговор #33 -: 22 Декември 2012, 00:18:17 »
А това май трябва да се напише така
Код: PHP
  1. $rs = mysql_query("SELECT id FROM voting_c WHERE id='".$id."'");
  2.  
  3.  

jazzman

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 25
  • -Получени: 190
  • Публикации: 3624
Re: Система за гласуване
« Отговор #34 -: 22 Декември 2012, 01:32:15 »
Сложи mysql_error() в края след mysql_query.

Код: PHP
  1.  
  2. $rs = mysql_query("SELECT id FROM voting_c WHERE id=".$id) or die(mysql_error());
  3.  
  4.  

Aко изкочи грешка, дай едно еко на заявкта преди да бъде пратена към базата и виж какъв е изхода.

Код: PHP
  1.  
  2. echo   "SELECT id FROM voting_c WHERE id=".$id;  exit;
  3.  
  4.  
Java is to Javascript as fun is to funeral.

http://nau4i.me/forum/index.php/topic,15129.0.html

zaona7

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 15
Re: Система за гласуване
« Отговор #35 -: 22 Декември 2012, 01:35:03 »
Не се получава сега ще пратя целия код
index.php
<?php
include "common.php";

if(
$_SESSION['is_logged']==true)
{
header("Location: voting.php");
}
else
{
if($_POST['login_f']==1)
{
$name=$_POST['login'];
$pass $_POST['pass'];
//if($name>3 && $pass>3)
//{
$rs=mysql_query('SELECT * FROM users WHERE login="'.$name.'"AND pass="'.md5($pass).'"');
$row=mysql_fetch_assoc($rs);
if($row['user_id']>0)
{
$_SESSION['is_logged']=true;
$_SESSION['user_id']=$row['user_id'];
header("Location: voting.php");
}

echo "bravo";
//}
//else
//{
//$err="Wrong username/password";
//}
}
}
?>

<html>
<head>

</head>
<body>
<?php echo $err?>
<form method="post" action="">
Name :<input type="text" name="login" /><br/>
Pass :<input type="text" name="pass" /><br/>
<input type="hidden" value="1" name="login_f" />
<input type="submit" value="login"/>
</form>

</body>
</html>


Voting.php
<?php
include "common.php";
$id $_GET['choise'];
if(
$id>0)
{
$rs mysql_query("SELECT id FROM voting_c WHERE id='".$id."'");
$row mysql_fetch_assoc($rs);
if($row['id']==$id)
{
mysql_query('UPDATE voting_c SET total_vots=total_vots+1 WHERE id='.$id);
$message "Yor vote been confirm";
$sucses=true;
}
else
{

}
}
?>

<html>
<head>

</head>
<body>
<a href="logout.php">Logout</a>
<div id="vots"><div>Кой е най-добричт език за програмиране</div><ul>
<?php
if($sucses==true)
{
echo "Thank you for your vote";
}
$rs mysql_query("SELECT * FROM voting_c");
while(
$row=mysql_fetch_assoc($rs))
{
echo '<li><a href="voting.php?choise="'.$row['id'].'>'.$row['name'].'</li>';
}
?>


</ul>
</div>

</body>
</html>




common.php
<?php
 session_start
();
 
mysql_connect("localhost","root")or die("No server");
 
mysql_select_db("vote")or die("No database");
 
?>

LogOut.php
<?php
session_start
();
session_destroy();
header("Location: index.php");
?>

zaona7

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 15
Re: Система за гласуване
« Отговор #36 -: 22 Декември 2012, 01:39:20 »
не се получава пробвах и двата начина не показват грешки но линка си остава http://localhost/vote/voting.php?choise= не се номерира

jazzman

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 25
  • -Получени: 190
  • Публикации: 3624
Re: Система за гласуване
« Отговор #37 -: 22 Декември 2012, 01:43:12 »
Какъв изход вади екото ?
Java is to Javascript as fun is to funeral.

http://nau4i.me/forum/index.php/topic,15129.0.html

HD

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 208
  • -Получени: 165
  • Публикации: 3077
Re: Система за гласуване
« Отговор #38 -: 22 Декември 2012, 04:01:23 »
Не съм разглеждал кода в детайл, но имаш грешка и на този ред
Код: PHP
  1. mysql_query('UPDATE voting_c SET total_vots=total_vots+1 WHERE id='.$id);
  2.  
Необходимо е да обърнеш внимание на конкатенациите на променливи в sql.
Mисля,че е правилно да се напише така
Код: PHP
  1. mysql_query("UPDATE voting_c SET total_vots=total_vots+1 WHERE id='".$id."' ");
  2.  
Хубаво е да пишеш и коментари в кода. По-лесно ще е за теб, така и за всеки, който ти чете кода в последствие, защото е доста трудно да се чете само код.

jazzman

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 25
  • -Получени: 190
  • Публикации: 3624
Re: Система за гласуване
« Отговор #39 -: 22 Декември 2012, 04:20:50 »
Няма синтактична грешка, дори така написано е по правилно от втория вариант, понеже стойноста към $id отива  като integer към базата!
Java is to Javascript as fun is to funeral.

http://nau4i.me/forum/index.php/topic,15129.0.html

HD

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 208
  • -Получени: 165
  • Публикации: 3077
Re: Система за гласуване
« Отговор #40 -: 22 Декември 2012, 04:49:44 »
Ако не правиш някакви изрични математически операции в базата данни даже не е необходимо да ги запазваш като цели числа, но иначе си прав за това дето казваш. Въпроса е че това не е толкова важно.  Лично аз грешка в спагетите не виждам.

NoBBy

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 4
  • -Получени: 38
  • Публикации: 309
Re: Система за гласуване
« Отговор #41 -: 22 Декември 2012, 09:41:40 »
Това е грешно:
Код: PHP
  1. echo '<li><a href="voting.php?choise="'.$row['id'].'>'.$row['name'].'</li>';

Трябва да е:
Код: PHP
  1. echo '<li><a href="voting.php?choise='.$row['id'].'">'.$row['name'].'</li>';

Затваряш кавичката на href атрибута преди стойността и параметъра остава празен.

Валидирай си генерирани html код да нямаш подобни ядове

zaona7

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 15
Re: Система за гласуване
« Отговор #42 -: 22 Декември 2012, 14:37:26 »
Благодаря много за вниманието грешката е била в кавичките винаги съм ги мразил благодаря много за вниманието което ми обърнахте не,очаквах такова внимание благодаря много всичко работи сега перфектно..