Vote counter werkt niet??

Status
Niet open voor verdere reacties.

testertje

Gebruiker
Lid geworden
12 mrt 2009
Berichten
22
Hey

Ik ben een kleine vote counter aan het maken voor mijn site. op een of andere reden wil hij niet werken.
ik krijg geen foutmeldingen meer in it maar hij laat de teller wel steeds op 0 staan.

frond:
PHP:
<html>
<head><title>vote test</title></head>
<body>
<form action="test_vote_end.php" method="POST">
<b>Username</b><br>
<input type="text" name="uservote" size=40>
<p><input type="submit" value=" Vote ">
</form>
</body>
</html>

afhandeler.
PHP:
<?php

              //make a connection
$connection = mysql_connect("localhost","root" ,"XXXXX")
or die ("Cannot make that connection");
              //connect to our database
$Vote = $HTTP_POST_VARS['uservote'];
$db = mysql_selectdb("realmd_test" , $connection);
              //store the result of the query in $result
$result = mysql_query("SELECT * FROM account");
              //retrieve the fields in our table
$fields = mysql_fetch_row($result);
              //update the count field by 1
mysql_query("UPDATE account SET vote_points='vote_points+1' WHERE username='$vote'");
             //$mycount variable is set to the first field (count)
$mycount = $fields[0];
             //display the count
echo $mycount;
?>

kan iemand ff meekijken wat ik fout doe?
 
PHP:
UPDATE account SET vote_points='vote_points+1' WHERE username='$vote'

Je moet denk ik die aanhalingstekens om vote_points + 1 weghalen; nu maakt ie er een string van, en dat mag niet in een INT veld :)
 
En/of je moet in
PHP:
mysql_query("UPDATE account SET vote_points='vote_points+1' WHERE username='$vote'");

$vote veranderen in $Vote.

Eerder staat immers
PHP:
$Vote = $HTTP_POST_VARS['uservote'];
 
okey heb alle mogelijkheden geprobeerd maar zonder resultaat. :(

dit is mijn afhandeler nu.

PHP:
<?php

              //make a connection
$connection = mysql_connect("gowow.eu","root" ,"XXXXX")
or die ("Cannot make that connection");
              //connect to our database
$vote = $HTTP_POST_VARS['uservote'];
$db = mysql_selectdb("realmd_test" , $connection);
              //store the result of the query in $result
$result = mysql_query("SELECT * FROM account");
              //retrieve the fields in our table
$fields = mysql_fetch_row($result);
              //update the count field by 1
mysql_query("UPDATE account SET vote_points=vote_points+1 WHERE username=$vote");
             //$mycount variable is set to the first field (count)
$mycount = $fields[0];
             //display the count
echo $mycount;
?>


zou het er mee te maken kunnen hebben dat er nog meer sql collems zitten in diezelfde table?
 
Laatst bewerkt:
probeer dit eens:
PHP:
<?php
if($_SERVER['REQUEST_METHOD'] == "POST") {
  //make a connection 
  $connection = mysql_connect("gowow.eu","root" ,"XXXXX") or die ("Cannot make that connection");
  //connect to our database 
  $db = mysql_selectdb("realmd_test" , $connection); 
  //store the result of the query in $result 
  
  /*** 
    Waarom je dit doet begrijp ik niet echt


  $result = mysql_query("SELECT * FROM account"); 
  //retrieve the fields in our table 
  $fields = mysql_fetch_row($result); 
  */
  //update the count field by 1
  $proces = mysql_query("UPDATE account SET vote_points=vote_points+1 WHERE username='". mysql_real_escape_string($_POST['uservote']) ."'");
  if(!$proces) {
    echo 'Er is een fout opgetreden! MySQL zegt: '. mysql_error();
  } else {
    echo 'Stem toegevoegd.';
  }
} else {
  echo 'Direct access prohibited!';
}
?>
 
yes. dit werkt maar heb ik nog steeds 1 klein probleem. in plaats van dat je krijgt te zien dat je stem is toegevoegd wilde ik graag laten zien hoeveel stemmen je nu hebt gedaan.
als dat niet mogelijk is okey hoor. ik ben al erg blij dat dit nu werkt
 
Laatst bewerkt door een moderator:
Alles is mogelijk... mits je het correct opslaat.

Dus, zorg dat je ergens bijhoudt hoe vaak iemand gestemd heeft (heb je een account nodig om te stemmen bijv.?) en vraag die gegevens op na het stemmen ;)
 
ik heb geprobeerd om het aantal vote's wat iemand gedaan heeft weer te laten zien maar op een of andere reden krijg ik het volgende te zien wanneer ik vote: Stem toegevoegd.Resource id #2

de code is nu.

PHP:
<?php
if($_SERVER['REQUEST_METHOD'] == "POST") {
  //make a connection 
  $connection = mysql_connect("gowow.eu","root" ,"XXXXX") or die ("Cannot make that connection");
  //connect to our database 
  $db = mysql_selectdb("realmd_test" , $connection); 
  //store the result of the query in $result 
  
  /*** 
    Waarom je dit doet begrijp ik niet echt


  $result = mysql_query("SELECT * FROM account"); 
  //retrieve the fields in our table 
  $fields = mysql_fetch_row($result); 
  */
  //update the count field by 1
  $proces = mysql_query("UPDATE account SET vote_points=vote_points+1 WHERE username='". mysql_real_escape_string($_POST['uservote']) ."'");
  if(!$proces) {
    echo 'Er is een fout opgetreden! MySQL zegt: '. mysql_error();
  } else {
    echo 'Stem toegevoegd.';
	 $result = mysql_query("SELECT * FROM account vote_points WHERE username='". mysql_real_escape_string($_POST['uservote']) ."'");
         {
           echo $result;
         }
  }
} else {
  echo 'Direct access prohibited!';
}
?>
 
Klopt, wat je terugkrijgt van een query is een Result resource; geen getal of array.
Je moet de gegevens uitlezen en bewerken met de functie mysql_fetch_assoc, dan krijg je een rij terug waar je vervolgens het aantal stemmen uit kunt lezen.

PHP:
$result = mysql_query("SELECT * FROM account vote_points WHERE username='". mysql_real_escape_string($_POST['uservote']) ."'");

$row = mysql_fetch_assoc( $result );

$votes = $row['votepoints'];
 
Ik betwijfel ook of je query wel klopt.

PHP:
$result = mysql_query("SELECT * FROM account vote_points WHERE username='". mysql_real_escape_string($_POST['uservote']) ."'");

Ten eerst is het aardig veiliger om i.p.v. * de kolommen te gebruiken welke je wilt ophalen.
Ten tweede kan dit niet "account vote_points", een tabel kan geen spaties bevatten.
 
okey

heb alles nu werkend. heel erg bedankt voor de hulp.

dit is de uiteindelijke code geworden.

start.
PHP:
<html>
<head><title>vote test</title></head>
<body>
<form action="test_vote_end.php" method="POST">
<b>Username</b><br>
<input type="text" name="uservote" size=40>
<p><input type="submit" value=" Vote ">
</form>
</body>
</html>

afhandeler.
PHP:
<?php
if($_SERVER['REQUEST_METHOD'] == "POST") {
  //make a connection 
  $connection = mysql_connect("hostname","username" ,"password") or die ("Cannot make that connection");
  //connect to our database 
  $db = mysql_selectdb("realmd_test" , $connection); 
  
  //update the count field by 1
  $proces = mysql_query("UPDATE account SET vote_points=vote_points+1 WHERE username='". mysql_real_escape_string($_POST['uservote']) ."'");
  if(!$proces) {
    echo 'There is a problem! MySQL zegt: '. mysql_error();
  } else {
    echo 'Stem toegevoegd.<BR>';
	// show the vote's in field
	 $result = mysql_query("SELECT * FROM account vote_points WHERE username='". mysql_real_escape_string($_POST['uservote']) ."'");
	 $fields = mysql_fetch_row($result);
	 $mycount = $fields[17];
{
echo 'you have ';
echo $mycount ;
echo ' vote\'s now';
}
  }
} else {
  echo 'Direct access prohibited!';
}
?>

thanks
 
Mooi dat het werkt. Laatste kleine puntje; het is 'votes', niet vote's :) Meervoud in het engels is altijd met vaste 's' ;)

En, als je maar 1 veld nodig hebt, kun je beter ook alleen dat veld ophalen, dan wordt je website sneller :)
(Je zult het nu niet merken, maar als je vaker websites maakt is het wel een 'good practice' om niet meer data te verzamelen dan je wilt hebben)
 
En, als je maar 1 veld nodig hebt, kun je beter ook alleen dat veld ophalen, dan wordt je website sneller :)
(Je zult het nu niet merken, maar als je vaker websites maakt is het wel een 'good practice' om niet meer data te verzamelen dan je wilt hebben)

kan je mij ook uitleggen hoe je dit doe want eigenlijk ken ik alleen deze manier die ik net heb toegepast.
 
in plaats van dit:
PHP:
SELECT * FROM iets
dit gebruiken:
PHP:
SELECT veld1 FROM iets
of, als je bv. 2 velden nodig hebt
PHP:
SELECT veld1, veld2 FROM iets

met het sterretje ( * ) selecteer je alle velden.


:thumb:
 
thanks. ga er mee aan de slag. moet nog een 12 uur cookie enin bouwen. heel erg bedankt voor de tips. laterzz
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan