Hallo allemaal,

ik ben bezig om een stempagina te maken voor een school zodat binnenkort ook digitaal gestemd kan worden. Ik heb hiervoor tutorials gelezen over sql en php. Vervolgens heb ik een login gezocht in php die ik ook heb gevonden. daarna een stemsysteem die ik ook heb gevonden wat prima is voor het doel waarvoor deze gebruikt moet worden.

Echter nu moeten ouders stemmen en kan dat niet vanaf dezelfde computer vanwege een cookie die gemaakt wordt. Ik heb getracht dit weg te laten maar ik blijf tegen het probleem aanlopen.

Daarnaast heb ik een S_SESSION('username') aangemaakt om deze te valideren om te kijken of deze user gestemd heeft of niet. Ik kan dit echter niet goed testen omdat ik de foutmelding steeds krijg dat ik heb gestemd. Ik heb nieuwe users in de database toegevoegd om het te testen maar die hebben allemaal al gestemd.

ook heb ik de cookie naar time() -3600 gezet zodat deze verwijderd werd maar niets hielp.

het doel is dus te controleren of de user die inlogt gestemd heeft en maar een keer kan stemmen.

ik ben nieuw hier dus ik hoop dat iemand mij de juiste richting op wil wijzen. ervaring met PHP etc is beginnend.

dank alvast
Oude mysql_***() functies?
En één query die je uitvoert en de ander overschrijft? Je maakt nu twee opdrachten als string aan, en voert enkel de laatste uit.
Arien,

ik heb mijn query even greyed out en nu werkt het feilloos. de Last_login = now() werkt en wordt steeds geupdated.

ik heb gezocht en nu werkt het wel.


$query = " UPDATE ".$SETTINGS["USERS"]." SET last_login = NOW(), pogingen = pogingen+1 WHERE id=".$user['id'];


https://www.w3resource.com/mysql/update-table/update-table.php
Ja, je kan het ook in een query combineren, zoal je nu doet. Veel makkelijker.

Eerst maakte je twee opdrachten aan waarvan je enkel de laatste uitvoerde.

Maar let erop dat mysql_*** functies verouderd zijn en niet meer in PHP 7 werken. Gebruik liever de mysqli-functies.
aah dat was de fout, hij voert de laatste uit.

Ik heb hier veelvuldig gelezen dat msql verouderd is, maar de stempagina moet donderdag werken :-)

aangezien ik beginner ben moet het eerst maar even zo, de andere optie is mij ook nog te hoog gegrepen.

ik heb nu de inlog geregeld (zij het in msql en het kan zeker nog verbeterd worden qua beveiliging) en ga na inlog verwijzen naar stempagina waarbij ik ook een kolom en deze update van 0 naar 1 zodat de gebruiker maar een keer kan stemmen.
De overstap van mysql functies naar mysqli is niet heel groot.
ik heb dankzij jullie hulp het aantal inlogpogingen in de msql tabel. Ook heb ik een pagina aangemaakt met twee kandidaten en een submit button.


  <?php
@session_start();

error_reporting(0);
include("config.php");


    ?>

    <html>
    <head>
      <title>MR stempagina</title>
    </head>
    <body>

      <?php echo $_SESSION['user_info']['name']  ?>, u kunt hier stemmen. 
      <form action="stemmen.php" method="POST">
        <p>Welke ouder wilt u als vertegenwoordiger van de ouders van de HBK afdeling in de medezeggenschapsraad?</p>
        <input type="radio" name="kandidaat" value="piet"> piet<br>
        <input type="radio" name="kandidaat" value="hein"> hein<br>
        <p><input type="submit" name="stem" value="stem"></p>

     <?php
      if(isset($_POST['kandidaat'])){
        $kandidaat = $_POST['kandidaat'];
        header("Location: vote.php");
      }
      else{
        $kandidaat = NULL;
        echo "kies uw kandidaat";
      }
      ?>

          <?php
  $error = '';
  if(isset($_POST['stem'])){
    $sql = "SELECT * FROM ".$SETTINGS["kandidaat"]."";
    $sql_result = mysql_query ($sql, $connection ) or die ('request "Could not execute SQL query" '.$sql);
    $kandidaat = mysql_fetch_assoc($sql_result);
    if(!empty($kandidaat)){
      $_SESSION['user_info'] = $user;
      $query = " UPDATE ".$SETTINGS["kandidaat"]." SET aantal = aantal+1 WHERE id=".$kandidaat['id'];
      //$query = " UPDATE ".$SETTINGS["USERS"]." SET pogingen = pogingen+1 WHERE id=".$user['id'];
      mysql_query ($query, $connection ) or die ('request "Could not execute SQL query" '.$query);
      
    }
    else{
      $error = 'u heeft niet gestemd';
    }
  }
 
?>

          </form>
    </body>
    </html>



als ik stem wordt het aantal van de eerste kandidaat in de tabel kandidaten geüpdatet ondanks dat er op de andere kandidaat is gestemd. Waar gaat dit fout?

is het mogelijk om twee een kolommen in twee tabellen te updaten zodra er is gestemd.

ik wil graag een stem bij de geselecteerde kandidaat en bij de user een 1 in het vakje gestemd. Dan wilde ik bij de stemknop de controle doen of bij die user een 1 staan en dan de melding geven dat hij heeft gestemd. Echter de user info wordt niet onthouden?

graag uw helpende hand.

[size=xsmall]Toevoeging op 12/11/2018 12:24:43:[/size]

hallo inmiddels heb ik de user info op de nieuwe pagina opgelost.
Ik weet niet of je zelf de server beheert waar je site op staat.
Maar zodra deze mogelijk door je webhosting-beheerder van PHP 7 wordt voorzien zal je script niet meer werken, omdat je oude mysql_xxx()-functies gebruikt. Ik raad aan om dit zo snel mogelijk aan te passen.

Verder hoort er na een location-header een exit(); te staan. Je script wil je dan natuurlijk ook graag laten stoppen.
op dit moment werkt het nog. Ik ga het bijwerken nadat ik het werkend heb gekregen :-)

de exit(); heb ik toegevoegd. Dank daarvoor.

- Ariën - op 12/11/2018 13:20:22

...
Maar zodra deze mogelijk door je webhosting-beheerder van PHP 7 wordt voorzien zal je script niet meer werken, omdat je oude mysqli-functies mysql-functies gebruikt. Ik raad aan om dit zo snel mogelijk aan te passen.

...


Thanks ozzie. Het was mij duidelijk hoor. Arien had het al eerder gezegd????
Nog een idee waarom het niet werkt?

Reageren