ugrás a tartalomhoz

Szavazás új ablakban

Anonymous · 2006. Szep. 18. (H), 21.29
Sziasztok!

Kellenne egy kis segítség!

Van egy weblapom melyen van szavazás. Azt szeretném megoldani, hogy mikor a felhasználó elküldi a szavazást, az eredmény egy pop-up ablakban ugorjon fel. Most sajna úgy működik, hogy a ugyanabban az ablakban hozza fel az eredményt. A szavazást egy inpust type=submittal küldöm el.
Ha tudnátok segíteni megköszönném.
 
1

JS

Szekeres Gergő · 2006. Szep. 18. (H), 21.46
Ahelyett, hogy a szavazás helyén megjelenítenéd az eredményt, JS-el nyitsz egy ablakot, ahol dinamikusan kiirod az eredményt. (gyk: meghívod azt a függvényt, ami eddig is kiirta)
2

Kicsit pontosabban

Anonymous · 2006. Szep. 19. (K), 08.47
Szia!

Kifejtenéd bővebben!

A kódom most ilyen: van egy classom amiben vannak definiálva a szavazás függvényei:


class szavazo {

var $csikmeret = 1.5; // eredményeknél a csíkok mérete

function open_szavazo_txt() {
// adatok beolvasása
if (file_exists("szavazo.txt")) {
$fajl = fopen("szavazo.txt", "r");
$sor = fgets($fajl, 4096); $sor = trim($sor); $this->adatok = explode("|", $sor);
fclose($fajl);
}
}

function open_kerdes_txt() {
// adatok beolvasása
$a = -1;
if (file_exists("kerdes.txt")) {
$fajl = fopen("kerdes.txt", "r");
$sor = fgets($fajl, 4096); $this->kerdes = trim($sor);
$a = -1;
while (!feof($fajl)) { $sor = trim(fgets($fajl, 4096)); $a++; $this->valasz[$a] = $sor; }
fclose($fajl);
}
$this->vno = $a;
}

function szavazas($ertek) {
$this->open_kerdes_txt();
$this->open_szavazo_txt();

// megfelelő érték növelése
$this->adatok[$ertek]++;
$fajl = fopen("szavazo.txt", "w");
$string = ""; $b = $this->vno;
for ($a = 0; $a <= $b; $a++) { $string .= $this->adatok[$a]."|"; }
fputs($fajl, $string);
fclose($fajl);
}

function lista() {
$this->open_szavazo_txt();
$this->open_kerdes_txt();

// számolás [összes szavazat, grafikonok hossza, százalék)
$this->ossz = 0; $b = $this->vno;
for ($a = 0; $a <= $b; $a++) { $this->ossz += $this->adatok[$a]; }
if ($this->ossz == 0) { $this->ossz = 1; }
// eredmények kiírása
echo "<body bgcolor=#818188>";
echo "<table align=center width=100% border=1 bordercolor=#cccccc cellpadding=5 cellspacing=2>\n";
echo "<tr><th colspan=2>".$this->kerdes."</th></tr>\n";
for ($a = 0; $a <= $b; $a++) {
$this->szazalek[$a] = round(($this->adatok[$a] / $this->ossz) * 100);
$this->hossz[$a] = $this->szazalek[$a] * $this->csikmeret;
echo "<tr><td width=50%>".$this->valasz[$a]."</td><td><img src=szin$a.gif width=".$this->hossz[$a]." height=10> (".$this->szazalek[$a]." %)</td>\n";
}
echo "<tr><td colspan=2 align=center>Összesen <b>".$this->ossz."</b> szavazat érkezett.</td></tr>\n";
echo "</table>\n";
echo "</body>";
}

}


Illetve a szavazás kiírás:

include "szavazo.php";


//Szavazáshoz szükséges dolgok
$sz = new szavazo;
if ($HTTP_POST_VARS["ertek"] != "") {
$sz->szavazas($ertek); # szavazás
setcookie("szavazas", "1", time()+(1*86400)); # cookie beállítása 1 napra
header("location: eredmeny.php"); # oldal újratöltése, eredmények kiírásával
}
if ($QUERY_STRING == "eredmeny.php") { $sz->lista(); }
else { if ($HTTP_COOKIE_VARS["szavazas"] == "") { $sz->kerdes(); }


}

.........
// kérdés és válaszok kiírása

$sz->open_kerdes_txt();
print($sz->kerdes);
print('<BR>');
print('</TD></TR> ');
print('<TR vAlign=top align=left>
<TD class=rightBarLinklist>');
$b = $sz->vno;
for ($a = 0; $a <= $b; $a++) { echo " <input type=radio name=ertek value=$a>&nbsp;".$sz->valasz[$a]."<br>\n";}
print('<TR vAlign=top align=center>
<TD class=rightBarLinklist>');
?>

<input type=submit onclick="return open_window('eredmeny.php','SERIE',500,400,250,150)" value="Szavazás"><br>
</TD></TR>
<TR vAlign=top align=center>
<TD>
[<A class=szavazas onclick="return open_window('eredmeny.php','SERIE',500,400,250,150)" href="about:blank">Eredmény </a>
......

Megpróbálkoztam a gomb onclick eseményébe helyezni egy előre megírt js függvényt. De ebben az esetben csak megnyitja új ablakban az eredményt, de nem szavaz.

Egyébként az eredmény.php-ban a $sz->lista() hivatkozás szerepel csak.

Előre is köszönöm.
3

php ok

Szekeres Gergő · 2006. Szep. 19. (K), 09.40
1, az oldalon megjelníted valahol a szavazó formot, mint eddit.

2, miután elküldted a szavazatot, nem a lista metódust hívod meg, hanem csinálsz pl egy openWindowt, ahol kiiratsz egy JavaScriptkódot. (http://www.quirksmode.org/js/popup.html)

3, Ez a script megnyit egy php-oldalt, ahol mehívod a lista metódusod.
4

:(

Anonymous · 2006. Szep. 19. (K), 11.13
Sajna nem működik. Az eredmény ablakra a header(location: ...) utasítással ugrik. Gondolom ehelyett kellenne az új ablak. de sajna nem nyit új ablakot.