Poll systeem met 7 stemmen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

Hans Slenger

Hans Slenger

20/12/2008 14:19:00
Quote Anchor link
Beste phphulp,
Hier mijn eerste topic.
Ik heb een poll systeem gevonden op internet.(kan zelf niet scripten).
Maar nu zet hij de votes in de database.
Maar ik wil dat als je 7x hebt gestemd niet meer kan stemmen.

hier de code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?php

    mysql_connect("localhost", "#", "#");
    mysql_select_db("#");
    
    if( isset( $_GET['p_id'] ) )
        // Id opgegeven, geselecteerde poll pakken
        $query = "SELECT * FROM polls WHERE id = '" . intval( $_GET['p_id'] ) . "' LIMIT 1";
    else
        // Geen id, laatst toegevoegde poll pakken
        $query = "SELECT * FROM polls ORDER BY id DESC LIMIT 1";    
        
    $result = mysql_query( $query ) or die( mysql_error() );
    
    if( mysql_num_rows( $result ) == 0 ) {
        echo "Geen poll geselecteerd!";
    }
else {
    
        $fetch = mysql_fetch_assoc( $result );
        
        $voted = unserialize( $fetch['voted'] );        

        // Kijken of het IP al gestemd heeft
        if( isset( $voted[ $_SERVER['REMOTE_ADDR'] ] ) )
            $canvote = true;
        else
            $canvote = true;

        // Antwoorden deserializen en sorteren        
        $answers = unserialize( $fetch['answers'] );
        
        // Kijken of er deze keer gestemd is        
        if( isset( $_POST['voteon'] ) and $canvote ) {
            $voteon = base64_decode( $_POST['voteon'] );

            if( isset( $answers[ $voteon ] ) ) {
                // Klopt, stem verwerken
                $answers[ $voteon ]++;
                $voted[ $_SERVER['REMOTE_ADDR'] ] = $_POST['voteon'];
                mysql_query( "UPDATE polls SET votes = votes + 1, answers = '" . serialize( $answers ) . "', voted = '" . serialize( $voted ) . "' WHERE id = '" . $fetch['id'] . "' LIMIT 1" ) or die( mysql_error() );
                $canvote = false;
            }            
        }

        
        arsort( $answers );        
                
        if( $canvote )
            echo "<form method='POST'>";
            
        echo "<span style='font-weight: bold; font-family: arial;'>" . $fetch['question']  . "</span> (" . $fetch['votes'] . ")<hr style='width: 250px;' align='left' />";            
        
        foreach( $answers as $name => $count ) {
            if( $canvote )
                echo "<input type='radio' name='voteon' value='" . base64_encode( $name ) . "'> ";
                
            echo $name . "<br />";
                
            // Maten uitrekenen    
            @$onepercent = 100 / $fetch['votes'];
            $percent = round( $onepercent * $count , 1 );
            $width = 200 * ( $percent / 100 ) + 1;
            $margin = 200 - $width;
            
            // Als er al gestemd is, de gekozen optie een aner kleurtje geven
            $color = "#61a2f3";            
            if( !$canvote ) {
                if( trim( $voted[ $_SERVER['REMOTE_ADDR'] ] ) == trim( base64_encode( $name ) ) )
                    $color = "navy";
            }
            
            
            echo "<div style='background-color: " . $color . "; border-top: 1px solid black; margin-right: " . $margin . "px; border-bottom: 1px solid black; width: " . $width . "px; height: 8px; overflow: hidden; display: inline;'></div> (" . $percent . "%)</span><hr style='width: 250px;' align='left' />";
        }

        
        if( $canvote )
            echo "<input type='submit' value='Stemmen'></form>";
    }


?>


Database:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
CREATE TABLE `polls` (
  `id` int(10) NOT NULL auto_increment,
  `createdon` int(10) NOT NULL,
  `question` varchar(255) NOT NULL,
  `answers` text NOT NULL,
  `votes` int(10) NOT NULL,
  `voted` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;


Met vriendelijke groet,
Slenger
 
PHP hulp

PHP hulp

17/05/2024 10:18:11
 
Noppes

Noppes

20/12/2008 14:30:00
Quote Anchor link
Dan moet je zorgen dat je de user in laat loggen. Dan kan je in een tabel bijhouden hoevaak waarop gestemd is door een bepaalde user.

Een andere manier is er in feite niet.
 
--

--

20/12/2008 14:36:00
Quote Anchor link
Je kunt het met een cookie doen, maar die kunnen aangepast worden.

Als de bezoeker niet is ingelogd kun je het beste kiezen voor een sessie. Die bestaat niet meer bij het volgende bezoek, maar het voorkomt in ieder geval excessief spammen.

Kan je het met iets á la dit oplossen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
session_start();
if(!isset($_SESSION['vote']))
{

    $_SESSION['vote'] = 1;
}

elseif($_SESSION['vote'] >= 7)
{

    echo 'Je mag maar 7x stemmen!';
}

else
{
    $_SESSION['vote']++;
}

?>
 
Hans Slenger

Hans Slenger

20/12/2008 14:39:00
Quote Anchor link
hij zet het zo in db:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
INSERT INTO `polls` (`id`, `createdon`, `question`, `answers`, `votes`, `voted`) VALUES
(1, 1229649445, 'Slenger', 'a:3:{s:21:"<img src="index.png">";i:4;s:5:"chill";i:0;s:3:"hoi";i:1;}', 5, 'a:1:{s:13:"212.178.82.23";s:4:"aG9p";}');

Die 5 staat voor aantal votes.

Kan ik daar ook niks mee?
 
Frank -

Frank -

20/12/2008 14:43:00
Quote Anchor link
Waarom sla je geserialiseerde data op in de database? Dat maakt het gebruik van de data gruwelijk langzaam.

Wat moet 1229649445 voorstellen? Wat is er mis met een echte datum met tijd? Lijkt mij toch minstens 100 keer eenvoudiger, kun je er nog eens iets mee gaan doen. Gebruik dus een DATETIME als datatype en zet daar een echte datumtijd in.

Verder horen backticks ` niet thuis in SQL, gooi die rotzooi weg, het zorgt voor bugs.
 
Hans Slenger

Hans Slenger

20/12/2008 14:46:00
Quote Anchor link
@pgFrank,

Het is niet mijn script.
Ik zocht gewoon een poll die ik kon bijwerken.
Maar dat lukt mij niet.
Dus daarom hoop ik dat iemand hier mij wil helpen.
 
--

--

20/12/2008 14:52:00
Quote Anchor link
Er zijn vast wel betere polls te vinden op internet, en anders heb ik ook nog wel een goed idee: zelf maken.
 
Hans Slenger

Hans Slenger

20/12/2008 15:02:00
Quote Anchor link
als je mijn profiel had gelezen had je gezien dat ik geen php ken
 
--

--

20/12/2008 15:08:00
Quote Anchor link
Zo, lekkere instelling heb jij zeg. Ik kan niet koken, dus maak maar wat voor me, ik kan niet fietsen, breng me maar heen. Zou lekker makkelijk worden als iedereen dat ging doen.

http://www.phphulp.nl/php/tutorials/3/576/
http://www.phphulp.nl/php/tutorials/8/575/

Edit: Ik lees niet het profiel van elke gebruiker in een topic waarin ik een reactie post.
Gewijzigd op 01/01/1970 01:00:00 door --
 
Hans Slenger

Hans Slenger

20/12/2008 15:16:00
Quote Anchor link
zo bedoelde ik dat ook niet.
Maar een poll systeem maken lukt me echt niet.
ik snap alleen nog maar echo enzo.
 
Douwe

Douwe

20/12/2008 15:29:00
Quote Anchor link
Dan leer je even verder ;) echo is echt de aller-aller-basis...
 
Hans Slenger

Hans Slenger

20/12/2008 23:43:00
Quote Anchor link
Het is me gelukt met cookies.
Echt hartstikke bedankt.
Nu had ik nog een klein vraagje.
Hoe kan ik nu zorgen dat ze op 7 verschillenden moeten stemmen?
Kan dat ook met cookies of ergens neerzetten dat hij maar 1 per antwoord van af dat ip kan krijgen ofzo?

mvg,
Hans
 
Kumkwat Trender

Kumkwat Trender

20/12/2008 23:49:00
Quote Anchor link
OMG gebruik database!!
wanneer er al een antwoord is met dat ip dan word het geblokt of dergelijke
Gewijzigd op 01/01/1970 01:00:00 door Kumkwat Trender
 
Hans Slenger

Hans Slenger

20/12/2008 23:51:00
Quote Anchor link
Ik werk met database?
Alleen om te kijken hoe vaak je op pagina bent geweest gebruikt hij cookies.

EDIT:/
ik heb checkbox geprobeerd.
maar hij pakt alleen maar de bovenste die je selecteert.
Gewijzigd op 01/01/1970 01:00:00 door Hans Slenger
 
--

--

21/12/2008 00:44:00
Quote Anchor link
Peter schreef op 20.12.2008 23:49:
OMG gebruik database!!
OMG leer nederlands!!
 
Hans Slenger

Hans Slenger

21/12/2008 00:59:00
Quote Anchor link
Ik snap niet precies hoe ik dat moet gaan doen met ip per antwoord blokken.
Want ip hoort bij het ID dan word hij toch helemaal gebant of zit ik dan fout?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.