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
Foutafhandeling in MySQL is anders dan in PHP. Wat meldt mysql_error() ?
En error_reporting(0) is nooit juist. Hooguit zet je display_errors uit als je in productie bent, maar je blijft wel fouten loggen.
msql geeft het volgende
Fout

Statische analyse:

3 fouten zijn gevonden tijdens de analyse.

    Eindquote " werd verwacht. (near "" at position 92)
    Een alias was eerder al gevonden. (near ""]."" at position 25)
    Onverwacht token. (near ""]."" at position 25)

SQL-query:

UPDATE ".$SETTINGS["USERS"]." SET gestemd = gestemd+1 WHERE name='{$_SESSION['user_info']}'"

MySQL meldt: Documentatie
#1064 - Er is iets fout in de gebruikte syntax bij '".$SETTINGS["USERS"]." SET gestemd = gestemd+1 WHERE name='{$_SESSION['user_info' in regel 1
Nederlandse MySQL debugging?
Anyway, echo eens $query, wat wat is nu de werkelijke opdracht?
Zucht. Waarom dump je de query uit je code rechtstreeks in phpMyAdmin? Nogmaals: bouw de afhandeling *in* je code. Zie mysql_error().
Arien

je bedoeld deze?

$query = " UPDATE ".$SETTINGS["USERS"]." SET gestemd = gestemd+1 WHERE name='{$_SESSION['user_info']}'"; 


[size=xsmall]Toevoeging op 14/11/2018 12:11:16:[/size]

sorry Ben, beginner ik dacht dat dit bedoeld werd.

ik ga kijken naar msql_error().
Ik zei niks over phpMyAdmin. ;)
Hans Zijlstra op 14/11/2018 12:10:10

ik ga kijken naar mysql_error().


<?php

$error = '';
  if(isset($_POST['kandidaat'])){
      echo $_POST['kandidaat'];
      $_SESSION['user_info'] = $user;
      $query = " UPDATE ".$SETTINGS["USERS"]." SET gestemd = gestemd+1 WHERE id=".$user['id']; 
      //$query = " UPDATE ".$SETTINGS["USERS"]." SET gestemd = gestemd+1";
      //$query = " UPDATE ".$SETTINGS["kandidaat"]." SET aantal = aantal+1";
      //$query = " UPDATE ".$SETTINGS["USERS"]." SET gestemd = gestemd+1 WHERE name='{$_SESSION['user_info']}'";
      mysql_query ($query, $connection ); /*or die ('request "Could not execute SQL query" '.$query);*/
      
      
    }
    else{
      echo mysql_error();
    }

?>


ik heb de code aangepast en de DIE weggelaten. nu krijg ik geen foutmelding maar er wordt ook niet geupdate

[size=xsmall]Toevoeging op 14/11/2018 12:28:07:[/size]

haal ik WHERE en de rest erna weer uit de query worden bij beide users gestemd met 1 verhoogd.
Waar denk je dat een foutmelding vandaan moet gaan komen als er geen query uitgevoerd wordt?
Daar gaan we dan:
<?php

$error = '';
if(isset($_POST['kandidaat'])){
echo $_POST['kandidaat'];
$_SESSION['user_info'] = $user;
$query = " UPDATE ".$SETTINGS["USERS"]." SET gestemd = gestemd+1 WHERE id=".$user['id'];
//$query = " UPDATE ".$SETTINGS["USERS"]." SET gestemd = gestemd+1";
//$query = " UPDATE ".$SETTINGS["kandidaat"]." SET aantal = aantal+1";
//$query = " UPDATE ".$SETTINGS["USERS"]." SET gestemd = gestemd+1 WHERE name='{$_SESSION['user_info']}'";
mysql_query ($query, $connection ) or die ('request "Could not execute SQL query" '.$query . ': ' . mysql_error());


}

?>
Ben,

met jouw toevoeging krijg ik de volgende error

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1


<?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

$error = '';
  if(isset($_POST['kandidaat'])){
      echo $_POST['kandidaat'];
      $_SESSION['user_info'] = $user;
      $query = " UPDATE ".$SETTINGS["USERS"]." SET gestemd = gestemd+1 WHERE id=".$user['id'];
      //$query = " UPDATE ".$SETTINGS["USERS"]." SET gestemd = gestemd+1";
      //$query = " UPDATE ".$SETTINGS["kandidaat"]." SET aantal = aantal+1";
      //$query = " UPDATE ".$SETTINGS["USERS"]." SET gestemd = gestemd+1 WHERE name='{$_SESSION['user_info']}'";
      mysql_query ($query, $connection ) or die ('request "Could not execute SQL query" '.$query . ': ' . mysql_error());
      
      
    }

?>

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


[size=xsmall]Toevoeging op 14/11/2018 12:44:46:[/size]

Ben van Velzen op 14/11/2018 12:30:51

Waar denk je dat een foutmelding vandaan moet gaan komen als er geen query uitgevoerd wordt?


deze begrijp ik niet Ben

Reageren