Не ми взима променливата $member_id

dunix

Registered
Здавейте,
пробвам се да направя един код, който първо обикаля цялата таблица за да провери дали има съвпадащи ID. След което, ако има същото ID ъпдейтва vote, а ако няма създава такъв ред с определени стойности

PHP:
$sql = "SELECT member_id FROM members_vote";
$result  = mysql_query($sql);

while($obj = mysql_fetch_array($result)) {
$member_id = $obj["member_id"]; 
}

if ($member_id = $item) {
$sql = "UPDATE members_vote SET vote=vote+15 WHERE member_id = '$item'";
mysql_query($sql); 
} elseif ($member_id != $item) {
$sql = "INSERT INTO members_vote (member_id, vote) VALUES('$item', '15')";	
mysql_query($sql); 
}
 
Не виждам в скрипта който си пуснал променливата $item на какво е равна, но да кажем я имаш някъде по нагоре. Трябва да промениш този ред така if ($member_id == $item) // два пъти равно иначе не правиш никаква проверка

другото $member_id = $obj['member_id']; //може би няма значение но аз винаги ползвам еденични кавички

Това е което виждам на пръв поглед надявам се да съм ти помогнал.
 
PHP:
$item = 5; // id за проверка :) 

$sql = "SELECT member_id FROM members_vote";
$result  = mysql_query($sql);

while($obj = mysql_fetch_array($result)) 
{
   $member_id =  $obj["member_id"]; 
}

   if ($member_id == $item) 
   {
   $sql = "UPDATE members_vote SET vote=vote+15 WHERE member_id =    '$item'";
   mysql_query($sql); 
  }
   else if ($member_id != $item) 
  {
   $sql = "INSERT INTO members_vote (member_id, vote) VALUES('$item',  '15')";      
  mysql_query($sql); 
  }
 
teroristd каза:
Не виждам в скрипта който си пуснал променливата $item на какво е равна, но да кажем я имаш някъде по нагоре.

Да, малко по нагоре съм казал на какво да е равна.

teroristd каза:
Трябва да промениш този ред така if ($member_id == $item)

Сега е ОК.

Както се вижда на снимката отдолу проблема, е че не обхожда цялата таблица за да види дали има вече такова ID.

73299d80772a8a3c.png
 
Пробвай да вкараш проверките в цикъла така :)

PHP:
$item = 5; // id за проверка :) 

$sql = "SELECT member_id FROM members_vote";
$result  = mysql_query($sql);

while($obj = mysql_fetch_array($result)) 
{
   $member_id =  $obj["member_id"]; 

 if ($member_id == $item) 
   {
   $sql = "UPDATE members_vote SET vote=vote+15 WHERE member_id =    '$item'";
   mysql_query($sql); 
  }
   else if ($member_id != $item) 
  {
   $sql = "INSERT INTO members_vote (member_id, vote) VALUES('$item',  '15')";      
  mysql_query($sql); 
  }

}
 
dakata__92 каза:
Пробвай да вкараш проверките в цикъла така :)

Сега проблема е следния - гласувам за потребител с ID 1 и ми казва "1 Glasuva uspeshno za 1!" Което е добре, защото UPDATE таблицата, но като гласувам примерно за ID 15 (за което вече съм гласувал) ми казва "2 Glasuva uspeshno za 15!", което е грешно, защото аз не искам да прави нов ред в таблицата, а да ъпдейтне вече съществуващия.

Сложих стойността LIMIT 1 и се ъпдейтва само записа който трябва, не създава нов, но ме гризе това, че ми изкарва второто съобщение.

Направих го така:


PHP:
// obhojdame bazata danni 
$sql = "SELECT member_id FROM members_vote";
$result  = mysql_query($sql);
	
while($obj = mysql_fetch_array($result)) {
$member_id = $obj["member_id"]; 
	
		
//proverqvame dali sushtestvuva takuva ID
if ($member_id == $item) {

$sql = "UPDATE members_vote SET vote=vote+15 WHERE member_id = '$item' LIMIT 1";
mysql_query($sql); 

$reply = "1 Glasuva uspeshno za $item!";

} elseif ($member_id != $item) {
// ako ne syshtestvuva suzdavame 
		
$sql = "INSERT INTO members_vote (member_id, vote) VALUES('$item', '15') LIMIT 1";	
mysql_query($sql); 

$reply = "2 Glasuva uspeshno za $item!";
		
}
	
}

48451446b25efe95.png
 
Понеже проверяваш дали member_id == item в if при цикъл и следващ запис ти дава, че if(16 == 15){} elese if(16 != 15){ това}
 
dakata__92 каза:
Понеже проверяваш дали member_id == item в if при цикъл и следващ запис ти дава, че if(16 == 15){} elese if(16 != 15){ това}

Нещо не го схванах.

PHP:
if ($member_id == $item) { 1 } elseif ($member_id != $item) { 2 }

Демек - гласувам ли за ID 10 ще изглежда така

PHP:
if (10 == 10) { 1 } elseif (10 != 10) { 2 }
 
Я пробвай е така:

PHP:
$item = 5; // id за проверка :) 
function VerifyID($post) 
{        
	$chek = mysql_query("SELECT * FROM `members_vote` WHERE `member_id`='{$post}';")or die(mysql_error());        
	return mysql_num_rows($chek)? 1 : 0; 
}

if(VerifyID($item) == 1)
{
	$sql = "UPDATE members_vote SET vote=vote+15 WHERE member_id =    '$item'";
	mysql_query($sql); 
}
else
{
	$sql = "INSERT INTO members_vote (member_id, vote) VALUES('$item',  '15')";      
	mysql_query($sql);
}
 

Back
Горе