Um exemplo de como aplicar XML em um código PHP. Simples, para começar e seguir como funciona. Verá que é fácil e com um pouco de idéias vai longe.
Arquivo sistema.xml
<?xml version="1.0" encoding="UTF-8" ?>
<sistemas>
<sistema name="Linux" value="LI" votes="200" />
<sistema name="Windows" value="WI" votes="130" />
<sistema name="MAC-OS" value="MA" votes="30" />
</sistemas>
Vamos criar três arquivos: sistema.xml, votar.php e index.php. Todos no mesmo diretório.
Arquivo votar.php
<?php
if(isset($_POST['vote'])){ /*Verifica se há post*/
if(isset($_COOKIE['voteaqui'])){ /*Verifica se há o cookie voteaqui*/
echo $message = 'Nada de votar de novo';
}
else{
echo $message = 'ok ok ok ok, valeu demais!';
$loaddom = new DOMDocument(); /*Extensão DOM para trabalhar com XML*/
$loaddom->load("sistema.xml"); /*carrega o arquivo*/
$path = new DOMXPath($loaddom); /*Retorna os itens do XML*/
$units = $path->query('//sistema');
foreach($units as $unit){
$value = $unit->getAttribute('value');
if($value == $_POST['sistema']){
$votes = $unit->getAttribute('votes'); /*Retorna o atributo votes do arquivo xml*/
$unit->setAttribute('votes', ++$votes);
setcookie("voteaqui", true, time()+(24*60*60)); /*24hs*/
break;
}
}
$loaddom->save('sistema.xml'); /*Salva a arvore interna do XML e volta ao arquivo*/
}
}
?>
Após criar o arquivo votar, vamos criar o HTML da história:
Arquivo index.php
<form method="post" action="votar.php">
<fieldset>
<legend>Qual sistema você mais gosta?</legend>
<ul>
<?php
$dom = new DOMDocument();
$dom->load('sistema.xml');
$xpath = new DOMXPath($dom);
$sistemas = $xpath->query('//sistema');
foreach($sistemas as $sistema){
$checked = ($_POST['sistema'] == $sistema->getAttribute('value')) ? 'checked' : '';
echo '<li> <input type="radio" name="sistema" '.$checked.' value="'.$sistema->getAttribute('value').'"/>'.$sistema->getAttribute('name').'</li>';
}
?>
</ul>
<input type="submit" value="vote" name="vote"/>
</fieldset>
</form>
Agora é só abrir e ver o resultado. Veja o exemplo aqui
Versão do PHP utilizada: 5.3
0sem comentários ainda