Проблем с анкета при рефреш.

stanimir_95

Registered
Опитвам се да си направя система за анкети, но имам малък проблем: при презареждане на страницата се добавят гласове за последния избран отговор. Ето кода:
PHP:
<div id="poll1">
				<div id="poll1top">
				</div>
				<div id="poll1cont">
				<?php
						
				if(!isset($_POST['submit']))
				{
					?>
							
					<?php
						$sql='SELECT * FROM polls LIMIT 1';									
						$result=mysql_query($sql);
									while($row=mysql_fetch_assoc($result))
									{
					
								?>
								
						<div class="blue2">Въпросът е:</div>
						<div class="green2"><?php echo $row['question'];?></div>
					<div id="form">
									<form action="index.php" method="post">
										<input type="radio" name="radio" value="1"/><span class="blue3"><?php echo $row['ans1'];?><br /></span>
										<input type="radio" name="radio" value="2"/><span class="blue3"><?php echo $row['ans2'];?><br /></span>
										<input type="radio" name="radio" value="3"/><span class="blue3"><?php echo $row['ans3'];?><br /></span>
										<input type="radio" name="radio" value="4" /><span class="blue3"><?php echo $row['ans4'];?><br /></span>
									<div id="vote"><div><input type="submit" value="" name="submit" /></div></div>
										<div id="results"><div><input type="button" value=""  /></div></div>
									<div style="clear:both;"></div>
									</form>
								</div>
						<?php
									}
						}
						else
						{
							$resource='SELECT * FROM polls LIMIT 1';
							$result=mysql_query($resource);		
							while($row2=mysql_fetch_assoc($result))
							{		
								$ab=$_POST['radio'];
								mysql_query('UPDATE polls SET `'.$ab.'`='.$row2[$ab].'+1 WHERE `poll_id`='.$row2['poll_id'].'');
								
							?>
							<br />
							<?php
								$sum=$row2['1']+$row2['2']+$row2['3']+$row2['4'];
								$a=($row2['1']*200)/$sum;
								$b=($row2['2']*200)/$sum;
								$c=($row2['3']*200)/$sum;
								$d=($row2['4']*200)/$sum;
								?>
								<div class="blue3"><?php  echo $row2['ans1'];?> - <u><?php  echo $row2['1']?></u> глас(а)</div>
								<div class="show_results" style="width:<?php if($a>=1||$a==0)echo $a; else echo '1';?>px"></div>
								<div class="blue3"><?php  echo $row2['ans2'] ?>- <u><?php  echo $row2['2']?></u> глас(а)</div>
								<div class="show_results" style="width:<?php if($b>=1||$b==0)echo $b; else echo '1';?>px"></div>
								<div class="blue3"><?php  echo $row2['ans3']?> - <u><?php  echo $row2['3']?></u> глас(а)</div>
								<div class="show_results" style="width:<?php if($c>=1||$c==0)echo $c; else echo '1';?>px"></div>
								<div class="blue3"><?php  echo $row2['ans4']?> - <u><?php  echo $row2['4']?></u> глас(а)</div>
								<div class="show_results" style="width:<?php if($d>=1||$d==0)echo $d; else echo '1';?>px"></div>
								<?php
							}
						}
						
						?>
						</div>
Ако някой има идея как да се оправи, да пише. Мерси предварително!
 
PHP:
<div id="poll1">
                                <div id="poll1top">
                                </div>
                                <div id="poll1cont">
                                <?php
                                                
                                if(!isset($_POST['submit']))
                                {
                                        ?>
                                                        
                                        <?php
                                                $sql='SELECT * FROM polls LIMIT 1';                                                                     
                                                $result=mysql_query($sql);
                                                                        while($row=mysql_fetch_assoc($result))
                                                                        {
                                        
                                                                ?>
                                                                
                                                <div class="blue2">Въпросът е:</div>
                                                <div class="green2"><?php echo $row['question'];?></div>
                                        <div id="form">
                                                                        <form action="index.php" method="post">
                                                                                <input type="radio" name="radio" value="1"/><span class="blue3"><?php echo $row['ans1'];?><br /></span>
                                                                                <input type="radio" name="radio" value="2"/><span class="blue3"><?php echo $row['ans2'];?><br /></span>
                                                                                <input type="radio" name="radio" value="3"/><span class="blue3"><?php echo $row['ans3'];?><br /></span>
                                                                                <input type="radio" name="radio" value="4" /><span class="blue3"><?php echo $row['ans4'];?><br /></span>
                                                                        <div id="vote"><div><input type="submit" value="" name="submit" /></div></div>
                                                                                <div id="results"><div><input type="button" value=""  /></div></div>
                                                                        <div style="clear:both;"></div>
                                                                        </form>
                                                                </div>
                                                <?php
                                                                        }
                                                }
                                                else
                                                {
                                                        $resource='SELECT * FROM polls LIMIT 1';
                                                        $result=mysql_query($resource);         
                                                        while($row2=mysql_fetch_assoc($result))
                                                        {               
                                                                $ab=$_POST['radio'];
                                                                mysql_query('UPDATE polls SET `'.$ab.'`='.$row2[$ab].'+1 WHERE `poll_id`='.$row2['poll_id'].'');
                                                                
header("Location:".$_SERVER['PHP_SELF']);
                                                        ?>
                                                        <br />
                                                        <?php
                                                                $sum=$row2['1']+$row2['2']+$row2['3']+$row2['4'];
                                                                $a=($row2['1']*200)/$sum;
                                                                $b=($row2['2']*200)/$sum;
                                                                $c=($row2['3']*200)/$sum;
                                                                $d=($row2['4']*200)/$sum;
                                                                ?>
                                                                <div class="blue3"><?php  echo $row2['ans1'];?> - <u><?php  echo $row2['1']?></u> глас(а)</div>
                                                                <div class="show_results" style="width:<?php if($a>=1||$a==0)echo $a; else echo '1';?>px"></div>
                                                                <div class="blue3"><?php  echo $row2['ans2'] ?>- <u><?php  echo $row2['2']?></u> глас(а)</div>
                                                                <div class="show_results" style="width:<?php if($b>=1||$b==0)echo $b; else echo '1';?>px"></div>
                                                                <div class="blue3"><?php  echo $row2['ans3']?> - <u><?php  echo $row2['3']?></u> глас(а)</div>
                                                                <div class="show_results" style="width:<?php if($c>=1||$c==0)echo $c; else echo '1';?>px"></div>
                                                                <div class="blue3"><?php  echo $row2['ans4']?> - <u><?php  echo $row2['4']?></u> глас(а)</div>
                                                                <div class="show_results" style="width:<?php if($d>=1||$d==0)echo $d; else echo '1';?>px"></div>
                                                                <?php
                                                        }
                                                }
                                                
                                                ?>
                                                </div>
 
stanimir_95 каза:
Изкарва това:
Warning: Cannot modify header information - headers already sent by (output started at...
И гласовете пак се трупат...

Направо като го вида това и ми става лошо :D
Всяка трета тема е казано че като неможете да ползвате header слогайте това:
ob_start();
Използвай html relocation вмeсто header
Ти за echo и print не си ли чувал.
 
HTML:
 <form action="index.php" method="post">
го замени с :
HTML:
 <form action="index.php?vote=1" method="post">
След това :

PHP:
  $ab=$_POST['radio'];

                                                                mysql_query('UPDATE polls SET `'.$ab.'`='.$row2[$ab].'+1 WHERE `poll_id`='.$row2['poll_id'].'');


замести с това :
PHP:
          $ab=$_POST['radio'];
		  if((int)$GET['vote'] == 1 || $_COOKIE['vote'] == NULL){
          mysql_query('UPDATE polls SET `'.$ab.'`='.$row2[$ab].'+1 WHERE `poll_id`='.$row2['poll_id'].'');
		  setcookie('vote','glasuvano',time()+time());
		  }
HTML:
 <form action="index.php?vote=1" method="post">


Би трябвало да работи без проблем.



Един съвет. Когато имаш SELECT * FROM nesho LIMIT 1 , общо взето вадиш само един резултат Не ползвай while.
Принципно отежнява скипта.
И така вместо : $row['question'] ще имаш $row[0]['question']
 

Back
Горе