javascript / ajax / php poll foutje

Status
Niet open voor verdere reacties.

tomdelonge

Gebruiker
Lid geworden
2 mei 2007
Berichten
11
Hi all,

Ik wil twee en later drie polls op mijn site en heb de code voor een ajax poll gekopieerd van w3schools. Nu lukt dat goed voor 1 poll, maar bij het aanpassen van de code voor 2 polls moet ik iets verkeerd doen.

Ik heb een poll voor date en een poll voor location. Het resultaat wordt opgeslagen in een txt file. De files vind je onder http://www.storylinedesign.be/tesst/poll.zip. De poll zelf kan je testen op http://www.storylinedesign.be/tesst. Je zal zien dat het resultaat van de bovenste poll getoond wordt in het vak van de tweede poll. De div's rond de forms heten nochtans anders.

Hieronder de code.

Kunnen jullie mij helpen?

Groetjes,
Tom



Mijn html pagina ziet er als volgt uit:

Head:
Code:
<script src="poll_date.js"></script>
<script src="poll_location.js"></script>

Body:
Code:
<table border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td>Datum:</td>
    <td>
    <div id="poll_date">
        <form>
          <input type="radio" name="voted" value="0" onclick="getVoteDate(this.value)">
          21/02<br/>
          <input type="radio" name="voted" value="1" onclick="getVoteDate(this.value)">
          07/03
        </form>
      </div></td>
  </tr>
  <tr>
    <td>Locatie:</td>
    <td>
      <div id="poll_location">
        <form>
          <input type="radio" name="votel" value="2" onclick="getVoteLocation(this.value)">
          ICC<br/>
          <input type="radio" name="votel" value="3" onclick="getVoteLocation(this.value)">
          ARTCUBE
        </form>
      </div>
    </td>
  </tr>
</table>

De js files:

poll_date.js
Code:
var xmlHttp

function getVoteDate(int)
{
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
 {
 alert ("Browser does not support HTTP Request")
 return
 }
var url="poll_vote_date.php"
url=url+"?voted="+int
url=url+"&sid="+Math.random()
xmlHttp.onreadystatechange=stateChanged
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}

function stateChanged()
{
 if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
 {
 document.getElementById("poll_date").innerHTML=xmlHttp.responseText;
 }
}

function GetXmlHttpObject()
{
var objXMLHttp=null
if (window.XMLHttpRequest)
 {
 objXMLHttp=new XMLHttpRequest()
 }
else if (window.ActiveXObject)
 {
 objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
 }
return objXMLHttp
}

poll_location.js

Code:
var xmlHttp

function getVoteLocation(int)
{
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
 {
 alert ("Browser does not support HTTP Request")
 return
 }
var url="poll_vote_location.php"
url=url+"?votel="+int
url=url+"&sid="+Math.random()
xmlHttp.onreadystatechange=stateChanged
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}

function stateChanged()
{
 if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
 {
 document.getElementById("poll_location").
 innerHTML=xmlHttp.responseText;
 }
}

function GetXmlHttpObject()
{
var objXMLHttp=null
if (window.XMLHttpRequest)
 {
 objXMLHttp=new XMLHttpRequest()
 }
else if (window.ActiveXObject)
 {
 objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
 }
return objXMLHttp
}


De php files die het resultaat weergeven:

poll_vote_date.php
Code:
<?php
$vote = $_REQUEST['voted'];

//get content of textfile
$filename = "poll_result_date.txt";
$content = file($filename);

//put content in array
$array = explode("||", $content[0]);
$yes = $array[0];
$no = $array[1];

if ($vote == 0)
 {
 $yes = $yes + 1;
 }
if ($vote == 1)
 {
 $no = $no + 1;
 }

//insert votes to txt file
$insertvote = $yes."||".$no;
$fp = fopen($filename,"w");
fputs($fp,$insertvote);
fclose($fp);
?>

<table>
<tr>
<td>21/02</td>
<td>
<img src="poll.gif"
width='<?php echo(100*round($yes/($no+$yes),2)); ?>'
height='20'>
<?php echo(100*round($yes/($no+$yes),2)); ?>%
</td>
</tr>
<tr>
<td>07/03</td>
<td>
<img src="poll.gif"
width='<?php echo(100*round($no/($no+$yes),2)); ?>'
height='20'>
<?php echo(100*round($no/($no+$yes),2)); ?>%
</td>
</tr>
</table>

poll_vote_location.php
Code:
<?php
$vote = $_REQUEST['votel'];

//get content of textfile
$filename = "poll_result_location.txt";
$content = file($filename);

//put content in array
$array = explode("||", $content[0]);
$yes = $array[0];
$no = $array[1];

if ($vote == 2)
 {
 $yes = $yes + 1;
 }
if ($vote == 3)
 {
 $no = $no + 1;
 }

//insert votes to txt file
$insertvote = $yes."||".$no;
$fp = fopen($filename,"w");
fputs($fp,$insertvote);
fclose($fp);
?>

<table>
<tr>
<td>ICC</td>
<td>
<img src="poll.gif"
width='<?php echo(100*round($yes/($no+$yes),2)); ?>'
height='20'>
<?php echo(100*round($yes/($no+$yes),2)); ?>%
</td>
</tr>
<tr>
<td>ARTCUBE</td>
<td>
<img src="poll.gif"
width='<?php echo(100*round($no/($no+$yes),2)); ?>'
height='20'>
<?php echo(100*round($no/($no+$yes),2)); ?>%
</td>
</tr>
</table>


De tekstfiles zijn simpelweg als volgt opgebouwd: voorbeeld: 13||56
 
en de oplossing was... :rolleyes:
 
in beide javascript files gebruikte ik dezelfde functienamen (zie stateChanged en GetXmlHttpObject) waardoor hij dezelfde functie nam, die van poll_location.js.

Grtzz
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan