Avatar billede mmmjj Nybegynder
14. marts 2006 - 13:39 Der er 40 kommentarer og
1 løsning

Pointtæller system hvordan?

(Der gives 200 point foruden dem her http://www.eksperten.dk/spm/694698)
Hej.
Jeg er igang med at hjælpe en ven fra en radiokanal med hans hjemmeside. Han ønsker så at få en stemmeting op. Altså der er 20 sange hvor de KUN må stemme på de 10 af dem, De skal give 10 til den de bedst kan lide, derefter 9 til den næste 8 7 6 OSV. Det ved jeg heller ikke hvordan man laver. Derefter så skal pointene tælles sammen i en fx. kim larsen får 4 point og 6 og 10 point. det skal den så selv regne ud og fx. sende resultatet til hans email. altså den skal sende til hans email fx.: kim larsen ialt 50 point, Bamses venner 24 point. osv. Hvordan kan det laves helst så ledt som over hodet muligt!
Avatar billede Slettet bruger
14. marts 2006 - 15:55 #1
Det er ikke tilladt at udlove over 200 point for et spørgsmål.
Avatar billede terrak Nybegynder
14. marts 2006 - 17:27 #2
Er det noget der ligner dette?
http://raev.1go.dk/695046/
Avatar billede mmmjj Nybegynder
15. marts 2006 - 11:42 #3
kan ikke komme ind på siden!
Wicez----> Det vidste jeg ikke. Grunde var at jeg under HTML stilte samme spørgsmål og de sagde at jeg skulle oprette det her. Så udlovede jeg 60 extra da det var et spørgsmål mere.
Avatar billede terrak Nybegynder
15. marts 2006 - 14:48 #4
1go ser ud til at være nede for tiden. Prøv dette midlertidige link i stedet http://83.90.161.4/695046/index.php
Avatar billede mmmjj Nybegynder
17. marts 2006 - 12:25 #5
Ikke helt. Der skal KUN ære mulighed for at stemme på 10 af 20 sange og der må kun gives 10 point til en sanger og 9 til en anden OSV. Kim larsen og bamses venner må ikke begge have fået fx. 5 point.
Avatar billede mmmjj Nybegynder
17. marts 2006 - 12:28 #6
helt ned til 1 point!
Avatar billede terrak Nybegynder
17. marts 2006 - 15:01 #7
Det kan de heller ikke ved det script jeg har lavet. Hvis du giver de to første 5 point, kommer den med en fejl, øverst på siden.
Avatar billede mmmjj Nybegynder
17. marts 2006 - 20:43 #8
Jamen så er det præcis hvad jeg er ude efter! bortset fra at så skal resultat ligges sammen og fx. ligges på en side eller sendes til mail. Nemmest ville nok være at det resulatatet kan ses på en side på hjemmesiden!
Avatar billede terrak Nybegynder
18. marts 2006 - 00:20 #9
Hvis resultatet skal kunne ses på hjemmesiden, hvilket er det letteste, skal du have adgang til en mysql database. Har du det?

Hvordan skal det undgåes at folk stemmer flere gange? Cookies, ip-logning eller.. ? Og skal der gemmes informationer for hver stemme, så der kan laves statistik?

Ind til videre ser koden sådan ud, men der er ikke lavet noget som opbevarer stemmerne:

<?php
$sangerearr = array(
"Kim Larsen",
"Bamses Venner",
"Aqua",
"D-A-D",
"Big Fat Snake",
"MC Einar",
"Nik & Jay",
"Peter Belli",
"Brødrene Olsen",
"EyeQ",
"Johnny Madsen",
"Kandis",
"Lars Lilholt",
"Malk De Koijn",
"Safri Duo",
"Bjørn Svin",
"Shu-bi-dua",
"Thomas Helmig",
"Birthe Kjær",
"Østkyst Hustler",
"Sort sol");

$stemmefordelingsmuligheder = 10;

function checkdatatype($stemmerarr) {

foreach ($stemmerarr as $kunstner => $point) {
if ($point != "" && !is_numeric($point)) {
return 0;
$wrongdatatype = 1;
break;
}
}

if (!isset($wrongdatatype)) {
return 1;
}

}

function checkvotecount($stemmerarr) {
global $sangerearr;

if (count($stemmerarr) == count($sangerearr)) {
return 1;
} else {
return 0;
}

}

function checkpointsgiven($stemmerarr) {
global $sangerearr;
global $stemmefordelingsmuligheder;

for ($i = 1; $i <= $stemmefordelingsmuligheder; $i++) {
if (!in_array($i,$stemmerarr)) {
return 0;
$wrongpointsgiven = 1;
break;
}
}

if (!isset($wrongpointsgiven)) {
return 1;
}

}

function checktotalpoints($stemmerarr) {
global $sangerearr;
global $stemmefordelingsmuligheder;

$totalmuligpoint = (pow($stemmefordelingsmuligheder,2)+$stemmefordelingsmuligheder)*0.5;

$totalstemmepoint = array_sum($stemmerarr);

if ($totalstemmepoint == $totalmuligpoint) {
return 1;
} else {
return 0;
}

}

if (isset($_POST['stemmerarr'])) {

if (checkdatatype($_POST['stemmerarr']) && checkvotecount($_POST['stemmerarr']) && checktotalpoints($_POST['stemmerarr']) && checkpointsgiven($_POST['stemmerarr'])) {
echo "<font color='darkgreen'>Indsætter data i database..</font>";
} elseif (!checkdatatype($_POST['stemmerarr'])) {
echo "<font color='darkred'>Point var ikke angivet i tal!</font>";
} elseif (!checkvotecount($_POST['stemmerarr'])) {
echo "<font color='darkred'>Antal stemmer og valgmuligheder stemmer ikke overens!</font>";
} elseif (!checktotalpoints($_POST['stemmerarr'])) {
echo "<font color='darkred'>Det samlede antal point og point mulige stemmer ikke overens!</font>";
} elseif (!checkpointsgiven($_POST['stemmerarr'])) {
echo "<font color='darkred'>Der er ikke ".$stemmefordelingsmuligheder." kunstnere der har fået tildelt point!</font>";
} else {
echo "Ukendt fejl!";
}

}

?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
<table align="center">
<tr>
<td colspan="2"><h2>Afstemning</h2><td>
</tr>
<tr>
<td><strong>Kunstner</strong></td><td><strong>Point</strong></td>
</tr>
<?php

for ($i = 0; $i < count($sangerearr); $i++) {
echo "<tr>
<td>".$sangerearr[$i]."</td><td><input type='text' size='1' maxlength='2' name='stemmerarr[".$sangerearr[$i]."]' /></td>";
}

?>
<tr>
<td colspan="2" align="center"><input type="submit" value="send" /></td>
</tr>
</table>
</form>
Avatar billede mmmjj Nybegynder
18. marts 2006 - 17:03 #10
hold da k**T du har da forstand på det... Hehe. PUHAa! Jeg tænker IP-logging og ang. mysql så aner jeg det ikke. Kontoen er hos b-one.dk.
ang.
skal der gemmes informationer for hver stemme, så der kan laves statistik?
så tror jeg ikke dette er nødvendigt! det skal bare være så simpelt som mouligt!
Avatar billede terrak Nybegynder
18. marts 2006 - 17:13 #11
:-)

b-one har MySQL i alle deres pakker.

Ved du hvordan man opretter forbindelse til MySQL-databasen via PHP? Hvis ikke så se eksemplerne på http://dk2.php.net/mysql_connect . Har du styr på og adgang til phpMyAdmin - altså kan du oprette en tabel, hvis jeg giver dig tabelstrukturen?
Avatar billede mmmjj Nybegynder
18. marts 2006 - 17:20 #12
Jeg kender INGEN ting til PHP/MySQL. Jeg arbejder kun med HTML. Jeg har adgang til PhpMyAdmin og noget MySQL også men hvordan og hvor ledes aner jeg ikke!
Avatar billede terrak Nybegynder
18. marts 2006 - 18:07 #13
Skal afstemningen integreres i en eksisterende side, eller skal den på en side for sig selv?
Avatar billede terrak Nybegynder
18. marts 2006 - 18:22 #14
Hvis det skal på en side for sig selv:

Der er to ting du må ændre i denne kode.
1. $stemmefordelingsmuligheder - det vil sige hvor mange stemmer man må fordele.
2. Teksten og HTML-koderne i fejlmeddelelserne og andre steder med HTML koder, eksempelvis tabellen, så den passer til resten af sidens design.

-----------------

<?php

include("connection.php");

sqlconnect();

$kunstnerQ = mysql_query("select `kunstner` from `afstemning`");

$antalkunstnere = mysql_num_rows($kunstnerQ);

$stemmefordelingsmuligheder = 10;

function checkdatatype($stemmerarr) {

foreach ($stemmerarr as $kunstner => $point) {
if ($point != "" && !is_numeric($point)) {
return 0;
$wrongdatatype = 1;
break;
}
}

if (!isset($wrongdatatype)) {
return 1;
}

}

function checkvotecount($stemmerarr) {
global $antalkunstnere;

if (count($stemmerarr) == $antalkunstnere) {
return 1;
} else {
return 0;
}

}

function checkpointsgiven($stemmerarr) {
global $stemmefordelingsmuligheder;

for ($i = 1; $i <= $stemmefordelingsmuligheder; $i++) {
if (!in_array($i,$stemmerarr)) {
return 0;
$wrongpointsgiven = 1;
break;
}
}

if (!isset($wrongpointsgiven)) {
return 1;
}

}

function checktotalpoints($stemmerarr) {
global $stemmefordelingsmuligheder;

$totalmuligpoint = (pow($stemmefordelingsmuligheder,2)+$stemmefordelingsmuligheder)*0.5;

$totalstemmepoint = array_sum($stemmerarr);

if ($totalstemmepoint == $totalmuligpoint) {
return 1;
} else {
return 0;
}

}

if (isset($_POST['stemmerarr'])) {

if (checkdatatype($_POST['stemmerarr']) && checkvotecount($_POST['stemmerarr']) && checktotalpoints($_POST['stemmerarr']) && checkpointsgiven($_POST['stemmerarr'])) {

foreach ($stemmerarr as $kunstner => $point) {

if ($point != "0") {
mysql_query("update `afstemning` set `point` = `point` + '".$point."' where `kunstner` = '".$kunstner."'") or die(mysql_error());
}

}

echo "<font color='darkgreen'>Stemme registreret!</font>";

} elseif (!checkdatatype($_POST['stemmerarr'])) {
echo "<font color='darkred'>Point var ikke angivet i tal!</font>";
} elseif (!checkvotecount($_POST['stemmerarr'])) {
echo "<font color='darkred'>Antal stemmer og valgmuligheder stemmer ikke overens!</font>";
} elseif (!checktotalpoints($_POST['stemmerarr'])) {
echo "<font color='darkred'>Det samlede antal point og point mulige stemmer ikke overens!</font>";
} elseif (!checkpointsgiven($_POST['stemmerarr'])) {
echo "<font color='darkred'>Der er ikke ".$stemmefordelingsmuligheder." kunstnere der har fået tildelt point!</font>";
} else {
echo "Ukendt fejl!";
}

}

?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
<table align="center">
<tr>
<td colspan="2"><h2>Afstemning</h2><td>
</tr>
<tr>
<td><strong>Kunstner</strong></td><td><strong>Point</strong></td>
</tr>
<?php

while ($kunstner = mysql_fetch_array($kunstnerQ)) {
echo "<tr>
<td>".$kunstner['kunstner']."</td><td><input type='text' size='1' maxlength='2' name='stemmerarr[".$kunstner['kunstner']."]' /></td>";
}

?>
<tr>
<td colspan="2" align="center"><input type="submit" value="send" /></td>
</tr>
</table>
</form>

<?php sqlclose(); ?>

-----------------

connection.php er en fil du skal oprette i samme mappe.
Indhold af connection.php:

-----------------
<?php

function mask($text) {

$masked = "";
for ($i = 0; $i < strlen($text); $i++) {
$masked .= "*";
}

return $masked;

}

function sqlconnect() {
$server = ""; # typisk localhost
$bruger = "";
$kodeord = "";
$database = "";

if (!mysql_connect($server,$bruger,$kodeord)) {
die("Couldn't connect to &quot;$server&quot; as &quot;$bruger&quot; using password &quot;".mask($kodeord)."&quot;");
}


if (!mysql_select_db($database)) {
die("Database &quot;$database&quot; doesn't exist!");
}

}

function sqlclose() {
mysql_close();
}

?>

-----------------

Server, brugernavn, kode og database kan du højest sandsynlig se hos b-one.

-----------------

For at det hele virke skal du have en tabel i din mysql-databasen. Du opretter tabellen ved at logge ind via phpMyAdmin, trykke på SQL-ikonet i menuen til venstre og indsætte denne kode:
-----------------
CREATE TABLE `afstemning` (
  `id` int(3) NOT NULL auto_increment,
  `kunstner` varchar(70) NOT NULL,
  `point` int(5) NOT NULL default '0',
  PRIMARY KEY  (`id`)
)
-----------------
Bagefter skal du indsætte de kunstnere man skal kunne vælge mellem. Det gøres ved at gå ind på tabellen "afstemning" og trykke på "indsæt". Udfyld kun kunstner, evt. point hvis der skulle være en grund til det.

Når folk har stemt vil pointene blive opdatereret og pointfordelingen kan ses ved at logge ind på phpMyAdmin.
Avatar billede mmmjj Nybegynder
19. marts 2006 - 00:20 #15
Det er HELT utroligt hvad du kan udrette med et tastatur og en computer. Det her for vildt. Men nu skal du høre, jeg kan ca. 4% af ALT det du kan vil jeg skyde på og derfor aner jeg ikke hvad jeg skal gøre. Tænkte (Hvis det ikke er til alt for meget besvær) om du kunne lave en kort set-by-step guide for ang. det du taler om fatter jeg jo ikke to potter pis (undskyld mit ordsprog). Det ville være til stor hjælp hvis du gad og havde tid. Men det er godt nok flot hvad du kan. Det må jeg sige. HELT utroligt. :D
Avatar billede terrak Nybegynder
19. marts 2006 - 01:04 #16
Det kan godt være at det ser avanceret ud, men det er for det meste simple funktioner der bare fylder meget.

Men kort sagt:
- Opret en fil der hedder afstemning.php eller lignende, og smid den første kode ind, som er afgrænset af bindestregerne -----------------.
- Lav derefter connection.php og smid den næste kode ind, som igen er afgrænset af bindestregerne.
- Udfyld $server, $bruger, $kodeord og $database i connection.php, med de informationer du har fra webhosten.
- Opret en tabel med den nævnte struktur, via phpMyAdmin (som iøvrig ikke kræver kendskab til PHP/MySQL).

Du må lige sige til hvor det går galt.
Avatar billede mmmjj Nybegynder
19. marts 2006 - 01:09 #17
oki tak igen for det hurtige svar. Kigger på det med det samme!
Avatar billede mmmjj Nybegynder
19. marts 2006 - 01:38 #18
guiden fulgt men har nu et problem.
Den viser ikke den kunstner jeg skrev inde i phpadmin
http://www.ftr1.dk/php/
Der kan du lige se.
Avatar billede mmmjj Nybegynder
19. marts 2006 - 01:41 #19
skal der være valgt noget under funktion. Man kan bla. vælge ASCII?
Avatar billede terrak Nybegynder
19. marts 2006 - 01:48 #20
Det ser ud som om den laver en fejl som forhindrer siden i at blive vist.
Og nej, du skal ikke vælge noget under funktion.

Har du husket at ændre på de fire variabler i connection.php?
Avatar billede mmmjj Nybegynder
19. marts 2006 - 01:50 #21
ja:

<?php

function mask($text) {

$masked = "";
for ($i = 0; $i < strlen($text); $i++) {
$masked .= "*";
}

return $masked;

}

function sqlconnect() {
$server = "";localhost
$bruger = "";ftr1_dk
$kodeord = "";xxxxxxxx
$database = "";ftr1_dk

if (!mysql_connect($server,$bruger,$kodeord)) {
die("Couldn't connect to &quot;$server&quot; as &quot;$bruger&quot; using password &quot;".mask($kodeord)."&quot;");
}


if (!mysql_select_db($database)) {
die("Database &quot;$database&quot; doesn't exist!");
}

}

function sqlclose() {
mysql_close();
}

?>
------------------
Er dette ikke korekt?
Avatar billede terrak Nybegynder
19. marts 2006 - 10:28 #22
$server = "localhost";
$bruger = "ftr1_dk";
$kodeord = "xxxxxxxx";
$database = "ftr1_dk";
Avatar billede mmmjj Nybegynder
19. marts 2006 - 11:17 #23
der sker stadig ikke noget :( . hvad kan jeg have gjordt fokert?
Avatar billede terrak Nybegynder
19. marts 2006 - 11:22 #24
Prøv at indsætte dette, øverst på afstemning.php:

ini_set("display_errors",1);

Altså så afstemning starter sådan her:

<?php

ini_set("display_errors",1);
include("connection.php");

sqlconnect();

...
resten af koden


Så skulle den gerne vise hvad fejlen er.
Avatar billede mmmjj Nybegynder
19. marts 2006 - 11:26 #25
Fandt også lige den her tekst inde i phpadmin. Ved ikke om det har noget at sige stod bare i bunden under ftr1_dk og ikke under afstemning:
Fejl
De yderligere features for at arbejde med linkede tabeller er deaktiveret. For at se hvorfor, klik her
Avatar billede terrak Nybegynder
19. marts 2006 - 11:28 #26
Det betyder ikke noget.
Kunne du få en fejl frem med ini_set?
Avatar billede mmmjj Nybegynder
19. marts 2006 - 11:28 #27
Så skriver den inde på afstemin.php:
Fatal error: Cannot redeclare mask() (previously declared in /customers/ftr1.dk/ftr1.dk/httpd.www/afstemning.php:135) in /customers/ftr1.dk/ftr1.dk/httpd.www/connection.php on line 3

se selv www.ftr1.dk/php
Avatar billede terrak Nybegynder
19. marts 2006 - 11:35 #28
Er du sikker på at du kun har tilføjet

ini_set("display_errors",1);

til afstemning.php? Det ser ud som om du har brugt

include("connection.php");

to gange.

Eller også har du indsat indholdet af connection.php i afstemning.php.
Avatar billede mmmjj Nybegynder
19. marts 2006 - 11:38 #29
i min aftemning.php ser den således ud:

<?php

ini_set("display_errors",1);
include("connection.php");

sqlconnect();

$kunstnerQ = mysql_query("select `kunstner` from `afstemning`");

$antalkunstnere = mysql_num_rows($kunstnerQ);

$stemmefordelingsmuligheder = 10;

function checkdatatype($stemmerarr) {

foreach ($stemmerarr as $kunstner => $point) {
if ($point != "" && !is_numeric($point)) {
return 0;
$wrongdatatype = 1;
break;
}
}

if (!isset($wrongdatatype)) {
return 1;
}

}

function checkvotecount($stemmerarr) {
global $antalkunstnere;

if (count($stemmerarr) == $antalkunstnere) {
return 1;
} else {
return 0;
}

}

function checkpointsgiven($stemmerarr) {
global $stemmefordelingsmuligheder;

for ($i = 1; $i <= $stemmefordelingsmuligheder; $i++) {
if (!in_array($i,$stemmerarr)) {
return 0;
$wrongpointsgiven = 1;
break;
}
}

if (!isset($wrongpointsgiven)) {
return 1;
}

}

function checktotalpoints($stemmerarr) {
global $stemmefordelingsmuligheder;

$totalmuligpoint = (pow($stemmefordelingsmuligheder,2)+$stemmefordelingsmuligheder)*0.5;

$totalstemmepoint = array_sum($stemmerarr);

if ($totalstemmepoint == $totalmuligpoint) {
return 1;
} else {
return 0;
}

}

if (isset($_POST['stemmerarr'])) {

if (checkdatatype($_POST['stemmerarr']) && checkvotecount($_POST['stemmerarr']) && checktotalpoints($_POST['stemmerarr']) && checkpointsgiven($_POST['stemmerarr'])) {

foreach ($stemmerarr as $kunstner => $point) {

if ($point != "0") {
mysql_query("update `afstemning` set `point` = `point` + '".$point."' where `kunstner` = '".$kunstner."'") or die(mysql_error());
}

}

echo "<font color='darkgreen'>Stemme registreret!</font>";

} elseif (!checkdatatype($_POST['stemmerarr'])) {
echo "<font color='darkred'>Point var ikke angivet i tal!</font>";
} elseif (!checkvotecount($_POST['stemmerarr'])) {
echo "<font color='darkred'>Antal stemmer og valgmuligheder stemmer ikke overens!</font>";
} elseif (!checktotalpoints($_POST['stemmerarr'])) {
echo "<font color='darkred'>Det samlede antal point og point mulige stemmer ikke overens!</font>";
} elseif (!checkpointsgiven($_POST['stemmerarr'])) {
echo "<font color='darkred'>Der er ikke ".$stemmefordelingsmuligheder." kunstnere der har fået tildelt point!</font>";
} else {
echo "Ukendt fejl!";
}

}

?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
<table align="center">
<tr>
<td colspan="2"><h2>Afstemning</h2><td>
</tr>
<tr>
<td><strong>Kunstner</strong></td><td><strong>Point</strong></td>
</tr>
<?php

while ($kunstner = mysql_fetch_array($kunstnerQ)) {
echo "<tr>
<td>".$kunstner['kunstner']."</td><td><input type='text' size='1' maxlength='2' name='stemmerarr[".$kunstner['kunstner']."]' /></td>";
}

?>
<tr>
<td colspan="2" align="center"><input type="submit" value="send" /></td>
</tr>
</table>
</form>

<?php sqlclose(); ?>

-----------------

connection.php er en fil du skal oprette i samme mappe.
Indhold af connection.php:

-----------------
<?php

function mask($text) {

$masked = "";
for ($i = 0; $i < strlen($text); $i++) {
$masked .= "*";
}

return $masked;

}

function sqlconnect() {
$server = ""; # typisk localhost
$bruger = "";
$kodeord = "";
$database = "";

if (!mysql_connect($server,$bruger,$kodeord)) {
die("Couldn't connect to &quot;$server&quot; as &quot;$bruger&quot; using password &quot;".mask($kodeord)."&quot;");
}


if (!mysql_select_db($database)) {
die("Database &quot;$database&quot; doesn't exist!");
}

}

function sqlclose() {
mysql_close();
}

?>
------------------------
I min connection.php ser den sådan ud:

<?php

function mask($text) {

$masked = "";
for ($i = 0; $i < strlen($text); $i++) {
$masked .= "*";
}

return $masked;

}

function sqlconnect() {
$server = "localhost";
$bruger = "ftr1_dk";
$kodeord = "xxxxxxx";
$database = "ftr1_dk";

if (!mysql_connect($server,$bruger,$kodeord)) {
die("Couldn't connect to &quot;$server&quot; as &quot;$bruger&quot; using password &quot;".mask($kodeord)."&quot;");
}


if (!mysql_select_db($database)) {
die("Database &quot;$database&quot; doesn't exist!");
}

}

function sqlclose() {
mysql_close();
}

?>
--------
ser du noget forkert?
Avatar billede terrak Nybegynder
19. marts 2006 - 11:41 #30
--> Afstemning.php
<?php

ini_set("display_errors",1);
include("connection.php");

sqlconnect();

$kunstnerQ = mysql_query("select `kunstner` from `afstemning`");

$antalkunstnere = mysql_num_rows($kunstnerQ);

$stemmefordelingsmuligheder = 10;

function checkdatatype($stemmerarr) {

foreach ($stemmerarr as $kunstner => $point) {
if ($point != "" && !is_numeric($point)) {
return 0;
$wrongdatatype = 1;
break;
}
}

if (!isset($wrongdatatype)) {
return 1;
}

}

function checkvotecount($stemmerarr) {
global $antalkunstnere;

if (count($stemmerarr) == $antalkunstnere) {
return 1;
} else {
return 0;
}

}

function checkpointsgiven($stemmerarr) {
global $stemmefordelingsmuligheder;

for ($i = 1; $i <= $stemmefordelingsmuligheder; $i++) {
if (!in_array($i,$stemmerarr)) {
return 0;
$wrongpointsgiven = 1;
break;
}
}

if (!isset($wrongpointsgiven)) {
return 1;
}

}

function checktotalpoints($stemmerarr) {
global $stemmefordelingsmuligheder;

$totalmuligpoint = (pow($stemmefordelingsmuligheder,2)+$stemmefordelingsmuligheder)*0.5;

$totalstemmepoint = array_sum($stemmerarr);

if ($totalstemmepoint == $totalmuligpoint) {
return 1;
} else {
return 0;
}

}

if (isset($_POST['stemmerarr'])) {

if (checkdatatype($_POST['stemmerarr']) && checkvotecount($_POST['stemmerarr']) && checktotalpoints($_POST['stemmerarr']) && checkpointsgiven($_POST['stemmerarr'])) {

foreach ($stemmerarr as $kunstner => $point) {

if ($point != "0") {
mysql_query("update `afstemning` set `point` = `point` + '".$point."' where `kunstner` = '".$kunstner."'") or die(mysql_error());
}

}

echo "<font color='darkgreen'>Stemme registreret!</font>";

} elseif (!checkdatatype($_POST['stemmerarr'])) {
echo "<font color='darkred'>Point var ikke angivet i tal!</font>";
} elseif (!checkvotecount($_POST['stemmerarr'])) {
echo "<font color='darkred'>Antal stemmer og valgmuligheder stemmer ikke overens!</font>";
} elseif (!checktotalpoints($_POST['stemmerarr'])) {
echo "<font color='darkred'>Det samlede antal point og point mulige stemmer ikke overens!</font>";
} elseif (!checkpointsgiven($_POST['stemmerarr'])) {
echo "<font color='darkred'>Der er ikke ".$stemmefordelingsmuligheder." kunstnere der har fået tildelt point!</font>";
} else {
echo "Ukendt fejl!";
}

}

?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
<table align="center">
<tr>
<td colspan="2"><h2>Afstemning</h2><td>
</tr>
<tr>
<td><strong>Kunstner</strong></td><td><strong>Point</strong></td>
</tr>
<?php

while ($kunstner = mysql_fetch_array($kunstnerQ)) {
echo "<tr>
<td>".$kunstner['kunstner']."</td><td><input type='text' size='1' maxlength='2' name='stemmerarr[".$kunstner['kunstner']."]' /></td>";
}

?>
<tr>
<td colspan="2" align="center"><input type="submit" value="send" /></td>
</tr>
</table>
</form>

<?php sqlclose(); ?>
Avatar billede terrak Nybegynder
19. marts 2006 - 11:41 #31
--> connection.php
<?php

function mask($text) {

$masked = "";
for ($i = 0; $i < strlen($text); $i++) {
$masked .= "*";
}

return $masked;

}

function sqlconnect() {
$server = "localhost";
$bruger = "ftr1_dk";
$kodeord = "xxxxxxx";
$database = "ftr1_dk";

if (!mysql_connect($server,$bruger,$kodeord)) {
die("Couldn't connect to &quot;$server&quot; as &quot;$bruger&quot; using password &quot;".mask($kodeord)."&quot;");
}


if (!mysql_select_db($database)) {
die("Database &quot;$database&quot; doesn't exist!");
}

}

function sqlclose() {
mysql_close();
}

?>
Avatar billede mmmjj Nybegynder
19. marts 2006 - 11:47 #32
JAAAAAAAAAAAAA....... Det virker nu.... HIP HIP HURAAAA. Kanont flot arbejde. NU skal du have dine point. Men bare ef rent nysgerighed så hvad var der galt? Og hus at ligge et svar herinde og herinde http://www.eksperten.dk/spm/694698) Tusinde tak for hjælpen....
Michael Jørgensen
Avatar billede terrak Nybegynder
19. marts 2006 - 11:51 #33
Jeg er ikke helt sikker, men du havde blandt andet en af mine kommentarer med i din kode.

Der mangler dog stadig noget, og det er at man kun kan stemme én gang. Jeg kigger lige på det.
Avatar billede mmmjj Nybegynder
19. marts 2006 - 11:53 #34
fino. Det lyder squ godt.
Avatar billede mmmjj Nybegynder
19. marts 2006 - 12:22 #35
hvis det er lettere med cookies så gør vi bare det
Avatar billede terrak Nybegynder
19. marts 2006 - 12:26 #36
En kombination er bedst, men der kan stadig snydes ved at tømme cookies og bruge proxyserver.

Jeg kan dog ikke se hvorfor man ville snyde med sådan en afstemning.
Avatar billede mmmjj Nybegynder
19. marts 2006 - 12:36 #37
nej det regner jeg heller ikke med men det kan jo være at nogle de kommer til at stemme 2 gange og de må de jo ikke!
Avatar billede terrak Nybegynder
19. marts 2006 - 13:33 #38
--> afstemning.php

<?php

include("connection.php");

sqlconnect();

$kunstnerQ = mysql_query("select `kunstner` from `afstemning`");

$antalkunstnere = mysql_num_rows($kunstnerQ);

$stemmefordelingsmuligheder = 10;

function checkdatatype($stemmerarr) {

foreach ($stemmerarr as $kunstner => $point) {
if ($point != "" && !is_numeric($point)) {
return 0;
$wrongdatatype = 1;
break;
}
}

if (!isset($wrongdatatype)) {
return 1;
}

}

function hasvoted() {
$voted = 0;
$hasvotedQ = @mysql_query("select * from `hasvoted` where `ip` = '".$_SERVER['REMOTE_ADDR']."'");

if (mysql_num_rows($hasvotedQ) > 0) {
$voted = 1;
}

if (isset($_COOKIE['hasvoted'])) {
$voted = 1;
}

return $voted;

}

function checkvotecount($stemmerarr) {
global $antalkunstnere;

if (count($stemmerarr) == $antalkunstnere) {
return 1;
} else {
return 0;
}

}

function checkpointsgiven($stemmerarr) {
global $stemmefordelingsmuligheder;

for ($i = 1; $i <= $stemmefordelingsmuligheder; $i++) {
if (!in_array($i,$stemmerarr)) {
return 0;
$wrongpointsgiven = 1;
break;
}
}

if (!isset($wrongpointsgiven)) {
return 1;
}

}

function checktotalpoints($stemmerarr) {
global $stemmefordelingsmuligheder;

$totalmuligpoint = (pow($stemmefordelingsmuligheder,2)+$stemmefordelingsmuligheder)*0.5;

$totalstemmepoint = array_sum($stemmerarr);

if ($totalstemmepoint == $totalmuligpoint) {
return 1;
} else {
return 0;
}

}

if (isset($_POST['stemmerarr'])) {

if (checkdatatype($_POST['stemmerarr']) && checkvotecount($_POST['stemmerarr']) && checktotalpoints($_POST['stemmerarr']) && checkpointsgiven($_POST['stemmerarr']) && !hasvoted()) {

foreach ($stemmerarr as $kunstner => $point) {

if ($point != "0") {
mysql_query("update `afstemning` set `point` = `point` + '".$point."' where `kunstner` = '".$kunstner."'") or die(mysql_error());
}

}
setcookie("hasvoted", "true", time()+60*60*24*365);
mysql_query("insert into `hasvoted` (`ip`) VALUES ('".$_SERVER['REMOTE_ADDR']."')");
echo "<font color='darkgreen'>Stemme registreret!</font>";

} elseif (!checkdatatype($_POST['stemmerarr'])) {
echo "<font color='darkred'>Point var ikke angivet i tal!</font>";
} elseif (!checkvotecount($_POST['stemmerarr'])) {
echo "<font color='darkred'>Antal stemmer og valgmuligheder stemmer ikke overens!</font>";
} elseif (!checktotalpoints($_POST['stemmerarr'])) {
echo "<font color='darkred'>Det samlede antal point og point mulige stemmer ikke overens!</font>";
} elseif (!checkpointsgiven($_POST['stemmerarr'])) {
echo "<font color='darkred'>Der er ikke ".$stemmefordelingsmuligheder." kunstnere der har fået tildelt point!</font>";
} elseif (hasvoted()) {
echo "<font color='darkred'>Du har allerede stemt!</font>";
} else {
echo "Ukendt fejl!";
}

}

?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
<table align="center">
<tr>
<td colspan="2"><h2>Afstemning</h2><td>
</tr>
<tr>
<td><strong>Kunstner</strong></td><td><strong>Point</strong></td>
</tr>
<?php

while ($kunstner = mysql_fetch_array($kunstnerQ)) {
echo "<tr>
<td>".$kunstner['kunstner']."</td><td><input type='text' size='1' maxlength='2' name='stemmerarr[".$kunstner['kunstner']."]' /></td>";
}

?>
<tr>
<td colspan="2" align="center"><input type="submit" value="send" /></td>
</tr>
</table>
</form>

<?php sqlclose(); ?>
Avatar billede terrak Nybegynder
19. marts 2006 - 13:34 #39
Det kræver at du opretter denne tabel:
CREATE TABLE `hasvoted` (
  `id` int(5) NOT NULL auto_increment,
  `ip` varchar(15) NOT NULL,
  PRIMARY KEY  (`id`)
)
Avatar billede mmmjj Nybegynder
19. marts 2006 - 18:12 #40
Så er det sat op og det virker kanont. Tusinde tak igen. Nu tror jeg du skal have dine point
Avatar billede mmmjj Nybegynder
11. juni 2006 - 13:31 #41
#lukket
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester