dynamicznie zmieniajacy sie wykres

0

Witam ma nastepujący problem napisalem prosty system glosowania w ktorym dane sa w pliku XML, w pliku index.php znajduje się reprezentacja systemu do glosowania z przyciskiem glosuj oraz plik results.php w ktroym sa wyniki glosowania i jest generowany wykres. Chodzi mi o to zeby na jednej stronie ładował mi sie i uaktulanial wykres po wcisnieciu przycisku glosuj oraz zliczal glosy i dawal procent danego wyboru.
Kod index.php

 <?php
if(isset($_POST['vote']))
{
	if(isset($_COOKIE["voted"]))
	{
		$message = 'Już głosowałeś. Można głosować raz na dobę!';
	}
	else
	{
		$message = 'Twój głos został zapisany';
		$dom = new DOMDocument();
		$dom->load('browsers.xml');

		$xpath = new DOMXPath($dom);
		$units = $xpath->query('//browser');

		foreach ($units as $unit)
		{
			$value = $unit->getAttribute('value');
			if($value == $_POST['browser'])
			{
				$votes = $unit->getAttribute('votes');
				$unit->setAttribute('votes', ++$votes);
				
				setcookie("voted", true);  
				break;
			}
		}
		$dom->save('browsers.xml');
	}
}
else{
    $message = '';
}
  
?>
<html>
	<head>
		<title></title>
		<style type="text/css">
		body{font-family:"Trebuchet MS",verdana; width:350px;}
		ul{list-style:none;}
                li{height:25px;}
                span{background-color:red; color:#fff; float:left;}
		</style>
                <script type="text/javascript" src="JS/jquery.js"></script>
                <script type="text/javascript">
//                    wersja 1
//                $(document).ready(function()
//                {
//                   $('#loadFooter').click(function()
//                   {
//                      $('#footer').load('results.php'); 
//                   }); 
//                });

//                    wersja 2
                function loadPage(file){
                    $('#content').html("<div></div>");
                    $('#content').load(file);
                    return false;
                }
                </script>
                
	</head>
	<body>
		<form method="post">
			<fieldset>
				<legend>Wybierz ulubioną przeglądarkę</legend>
				<ul>
		<?php
				$dom = new DOMDocument();
				$dom->load('browsers.xml');
				$xpath = new DOMXPath($dom);
				$browsers = $xpath->query('//browser');

				foreach ($browsers as $browser)
				{
                                    if(isset($_POST['browser']))
                                    {
                                        $checked = $_POST['browser'] == $browser->getAttribute('value')? 'checked': '';
                                    }
                                    else{
                                        $checked = false;
                                    }
                                        
                                    echo '<li><input type="radio" '.$checked.' name="browser" value="'.$browser->getAttribute('value').'">'.$browser->getAttribute('name').'</li>';
				}
		?>
					<li style="color:red;"><?php echo $message; ?></li>
<!--                                        <li><input  type="submit" name="vote" value="Głosuj" /></li>-->
                                        
				</ul>
                                
			</fieldset>
		</form>
            
            <!--wersja1-->
<!--            <div id="footer">
                <a href="#" id="loadFooter"><input  type="submit" name="vote" value="Głosuj" /></a>
            </div>-->
            
            <!--wersja2-->
                <a href="#" onClick="return loadPage('results.php');"><input  type="submit" name="vote" value="Głosuj" /></a>
            
	</body>
</html>

Kod pliku XML .browsers.xml

<?xml version="1.0" encoding="UTF-8"?>
<browsers>
<browser name="Firefox" value="FF" votes="1"/>
<browser name="Google Chrome" value="GC" votes="1"/>
<browser name="Microsoft Edge" value="ME" votes="0"/>
<browser name="Opera" value="OP" votes="2"/>
</browsers>
 

kod pliku results.php

<fieldset>
    <legend>Wyniki głosowania</legend>
<?php
	$dom = new DOMDocument();
	$dom->load('browsers.xml');
	$xpath = new DOMXPath($dom);
	$browsers = $xpath->query('//browser');
	
	echo '<ul>';
	
	foreach ($browsers as $browser)
	{
		$name = $browser->getAttribute('name');
		$votes = $browser->getAttribute('votes');
		echo '<li>'.$name.' - '.$votes. ' votes</li>';
		echo '<li><span style="width:'.$votes.'px;">&nbsp;</span></li>';
	}
	echo '</ul>';

?>
</fieldset>
 

jak sprawić był załadowany na stronie index.php i sie zmienial dynamicznie bez przeladowania strony ?
z góry dziekuje za pomoc

0

Domyślam się, że poza cookie zapisujesz głosy w bazie danych? Musisz pobrać daną aktualną ilość głosów i dodać oddany głos. Samo dodanie, tzn wykres już musisz przez js. A najlepiej jak zrobisz to przez ajaxa, bo wtedy pobierasz aktualne wartości z db. zawsze user może wejść na stronę i iść po piwo do sklepu. Wraca po półgodziny i wtedy oddaje głos. Wiec, ajax, zeby pobierać aktualne dane.

1 użytkowników online, w tym zalogowanych: 0, gości: 1