PHP Voting script werkt niet goed

Status
Niet open voor verdere reacties.

Silpher

Gebruiker
Lid geworden
9 aug 2008
Berichten
83
Ik heb een kleine simpele voting script gemaakt voor een project waar ik mee bezig ben, maar hij werkt niet goed. Maakt niet uit of ik op de +1 knop druk of op de -1, in mijn MySQL database komt het altijd bij de min, weet iemand wat er fout aan is?
PHP:
<?PHP
$game = $_GET["id"];
$plus = $_REQUEST["+1"];
$min = $_REQUEST["-1"];
echo"<form id='form2' name='form2' method='post' action='PHP_SELF'>";
echo"  <label>Rate:";
echo"    <input type='submit' name='-1' id='-1' value='-1' />";
echo"    /";
echo"    <input type='submit' name='+1' id='+1' value='+1' />";
echo"  </label>";
echo"  <br />";
echo"  Score: $score";
echo"</form>";
if(isset($_POST['+1'])){
$scorep = "INSERT INTO scoreg (id, plus, min, game, video, joke, date)
			VALUES (NULL,'1', NULL, '$game', NULL, NULL, NOW())";
	if (mysql_query($scorep)){
		echo "+1!";
	}else{
		echo"<strong>Let op!:</strong>Er is een fout opgetreden, probeer het opnieuw.<BR><BR>".mysql_error();}
}else{
$scorem = "INSERT INTO scoreg (id, plus, min, game, video, joke, date)
			VALUES (NULL, NULL, '1', '$game', NULL, NULL, NOW())";
	if (mysql_query($scorem)){
		echo "-1?";
	}else{
		echo"<strong>Let op!:</strong>Er is een fout opgetreden, probeer het opnieuw.<BR><BR>".mysql_error();}
	
}
?>
 
Code:
<?PHP
$game = $_GET["id"];
$plus = $_REQUEST["+1"];
$min = $_REQUEST["-1"]; // Deze 2 regels worden nergens gebruikt en slaan echt nergens op.
echo"<form id='form2' name='form2' method='post' action='PHP_SELF'>";
echo"  <label>Rate:";
echo"    <input type='submit' name='vote' id='-1' value='-1' />";
echo"    /";
echo"    <input type='submit' name='vote' id='+1' value='+1' />";
echo"  </label>";
echo"  <br />";
echo"  Score: $score";
echo"</form>";
if(isset($_POST['vote'])){
$scorep = "INSERT INTO scoreg (id, score, game, video, joke, date)
            VALUES (NULL, '".$_POST['vote']."', '$game', NULL, NULL, NOW())";
    if (mysql_query($scorep)){
        echo $_POST['vote']."!";
    }else{
        echo"<strong>Let op!:</strong>Er is een fout opgetreden, probeer het opnieuw.<BR><BR>".mysql_error();}
}
?>

Database aanpassen: plus/min verwijderen, daarvan 1 veld: score maken (varchar, 2 tekens)
 
Hmmm, hij werkt niet. Wanneer ik op +1 klik gaat hij terug naar de index pagina en dan kijk ik in de database en is er niks bijgekomen?:confused:
 
het script wat je nu hebt is heel bug gevoelig verder zie ik ook niet het voordeel om meerdere kolommen te maken voor je score :confused:
verder is het script totaal niet veilig!

PHP:
<?php
//Anti injectie functie
function invoer($value) {
    if (get_magic_quotes_gpc ()) {	
        $value = stripslashes($value);
    }
    if (version_compare (phpversion (),"4.3.0") == "-1") {
        return mysql_escape_string ($value);
    }
    else {
        return mysql_real_escape_string ($value);
    }
}

/***************************************************************************
**		MODEL
***************************************************************************/

//Variables Defineren
$game = invoer($_GET['id']);
$score = invoer($_POST['action']);
$messages = Array();

/***************************************************************************
**		CONTROLLER
***************************************************************************/

//Kijken of er op een submit button is geklikt met de naam action
if ( isset( $_POST['action'] ) )
{
	if ($_POST['action'] == "+1")
	{
		$query = "UPDATE `scoreg` SET `plus` = `plus`+1 WHERE `game` = '".$game."'";
		$messages[] = "+1";
	}
	if ($_POST['action'] == "-1")
	{
		$query = "UPDATE `scoreg` SET `min` = `min`+1 WHERE `game` = '".$game."'";
		$messages[] = "-1";
	} else {}
	
	if ( isset($query) && $query == TRUE )
	{
	} else {
		$messages[] = "Er is een probleem gevonden in het script<br/>";
	}
	
}

/***************************************************************************
**		VIEW
***************************************************************************/
?>
<style type="text/css">
ul.no_style
{
	margin:					0;
	padding:				0;
	list-style-type:		none;
}
</style>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
	<ul class="no_style">
		<li>
			<label>Rate:</label>
			<input type="submit" name="action" value="+1" />
			<input type="submit" name="action" value="-1" />
		</li>
	</ul>
</form>
<?php
	foreach ($messages AS $message)
	{
		echo $message."<br/>";
	}
?>

Dit zal denk ik een stuk beter werken...
Mocht ik het verkeerd begrepen hebben hoor ik het graag.
Iedergeval wil ik even melden dat jouw manier van werken in php niet goed is waar heel veel mensen last van hebben... ;) verder is dit geen ramp maar de manier hieronder zou je enorm helpen om minder bugs te krijgen

Een php script bouw je het beste op in de volgende volgorde:
Model
Controller
View

Model
Dit houd in dat je alles een definitie meegeeft voor je ook echt gaat beginnen met programmeren dit zijn je variabele enz.

Controller
De controller verwerkt en reageert op events dit houd dus in dat je hier je acties gaat uitwerken

View
De view is alles wat hij weergeeft binnen je pagina hier komt dus de html code in te staan en mogelijk wat php om variabelen te echoen

Voordelen
* Dit model moet/kun je op vele andere programmeer talen het beste toepassen oa. Java,Ruby,AS3 etc.

* Je krijgt nooit gezeur met headers / sessions omdat je output altijd onderaan staat

* Je kunt een stuk makkelijker overstappen naar OOP programmeren omdat je een andere manier van denken gaat krijgen die je echt nodig zal hebben bij OOP programmeren omdat je niet klakkeloos wat inelkaar kan zetten op het moment dat je met classe gaat werken
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan