me mysql werkt weer
maar goed daar gaat dit topi niet over
Ik heb nu een script voor een top 100. Alles werkt perfect alleen als je stemt wordt puntenaantal niet verhoogt
kijk op mijn site en klik op top 100 in het menu
dit is de code voor alles
let op in verschillende mappen uiteraard!!
code:weet iemand de oplossing??tabel in database: CREATE TABLE hitlijst (
h_id int(10) NOT NULL auto_increment,
h_artiest text NOT NULL,
h_nummer text NOT NULL,
h_punten int(10) NOT NULL default '0',
PRIMARY KEY (h_id)
);--------------------------------------------------------
database.php:
<?php
$link = mysql_connect("localhost" , "user" , "wachtwoord") or die("Kan geen verbinding maken");
mysql_select_db("databeest") or die("Kan geen database selecteren");
?>--------------------------------------------------------
hitlijst.php:
<?php
include("database.php");
$sql = 'SELECT * FROM `hitlijst` ORDER BY `h_punten` DESC LIMIT 0, 100';
$resultaat = mysql_query($sql);
$nr = 0;
echo "<h2>Top 100</h2>";
echo "<p><a href=\"hitlijst.php\" onclick=\"window.open('hitlijst_stem.php','stem','toolbar=no,location=no,directories=no,status=no,menubar=no,resizable=no,copyhistory=no,scrollbars=no,width=350,height=250,top=100,left=200')\">Stem hier</a></p>";
echo "<table border=0>";
while($rij = mysql_fetch_array($resultaat))
{
$nr = $nr + 1;
echo "<tr><td align=right>$nr</td><td> - </td><td>" . $rij["h_artiest"] . "</td><td> - </td><td>" . $rij["h_nummer"] . "</td><td> </td><td align=right>" . $rij["h_punten"]. " punten</td></tr>";
}
echo "</table>";
mysql_close($link);
?>--------------------------------------------------------
hitlijst_verstuur.php
<?php
if (($een!=$twee) and ($een!=$drie) and ($twee!=$drie))
{
$stem = "De eeuwige hardcore top 100";
setcookie("Gestemd","$stem", time()+86400);
$stem_cookie = $_COOKIE["Gestemd"];
}
?>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<body>
<?php
if (($een==$twee) or ($een==$drie) or ($twee==$drie))
{
echo "<p>Je moet op 3 verschillende nummers stemmen.</p>";
}
else
{
if ($stem_cookie != "De eeuwige hardcore top 100")
{
include("database1.php");
$BannerQuery = mysql_query("SELECT * from hitlijst where h_id='$drie'");
while($row = mysql_fetch_array($BannerQuery))
{
$punten = $row["h_punten"];
$punten = $punten + 3;
$ClicksQuery = mysql_query("UPDATE hitlijst SET h_punten='$punten' where h_id='$drie'") or die(mysql_error());
}
$BannerQuery = mysql_query("SELECT * from hitlijst where h_id='$twee'");
while($row = mysql_fetch_array($BannerQuery))
{
$punten = $row["h_punten"];
$punten = $punten + 2;
$ClicksQuery = mysql_query("UPDATE hitlijst SET h_punten='$punten' where h_id='$twee'") or die(mysql_error());
}
$BannerQuery = mysql_query("SELECT * from hitlijst where h_id='$een'");
while($row = mysql_fetch_array($BannerQuery))
{
$punten = $row["h_punten"];
$punten = $punten + 1;
$ClicksQuery = mysql_query("UPDATE hitlijst SET h_punten='$punten' where h_id='$een'") or die(mysql_error());
}
echo "<p>Gestemd</p>";
mysql_close($link);
}
else
{
echo "<p>Je mag maar één keer per dag stemmen!</p>";
}
}
echo "<form><input type=\"button\" value=\"Sluit venster\" onClick=\"window.close()\"></form>";
?>
</body>
</html>--------------------------------------------------------
hitlijst_stem.php
<?php
$stem_cookie = $_COOKIE["Gestemd"];
?><HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<?php
if ($stem_cookie != "top 100")
{
include("database.php");
$sql = 'SELECT * FROM `hitlijst` ORDER BY `h_artiest`, `h_nummer`';
$resultaat = mysql_query($sql);
echo "<form name='stem' method='post' action='hitlijst_verstuur.php'>";
echo "<select name='drie'>";
echo "<option value=''></option>";
while($rij = mysql_fetch_array($resultaat))
{
echo "<option value='" . $rij["h_id"] . "'>" . $rij["h_artiest"] . " - " . $rij["h_nummer"] . "</option><br>";
}
echo "</select> 3 punten<br>";
echo "<select name='twee'>";
echo "<option value=''></option>";
$resultaat = mysql_query($sql);
while($rij = mysql_fetch_array($resultaat))
{
echo "<option value='" . $rij["h_id"] . "'>" . $rij["h_artiest"] . " - " . $rij["h_nummer"] . "</option><br>";
}
echo "</select> 2 punten<br>";
echo "<select name='een'>";
echo "<option value=''></option>";
$resultaat = mysql_query($sql);
while($rij = mysql_fetch_array($resultaat))
{
echo "<option value='" . $rij["h_id"] . "'>" . $rij["h_artiest"] . " - " . $rij["h_nummer"] . "</option><br>";
}
echo "</select> 1 punt<br>";
echo "<input type='submit' name='Verstuur' value='Verstuur'><input type='reset' name='Maak leeg' value='Maak leeg'>";
echo "</form>";
echo "<form name='add' method='post' action='hitlijst_voeg_toe.php'>";
echo "<input type='tekst' name='artiest' size='30' value='artiest'><input type='tekst' name='nummer' size='30' value='nummer'><br><input type='submit' name='Verstuur' value='Voeg toe'><input type='reset' name='Maak leeg' value='Maak leeg'>";
echo "</form>";
mysql_close($link);
}
if ($stem_cookie == "De eeuwige hardcore top 100")
{
echo "<p>Je mag maar één keer per dag stemmen!</p>";
}
echo "<p><form><input type=\"button\" value=\"Sluit venster\" onClick=\"window.close()\"></form></p>";
?>
</body>
</html>--------------------------------------------------------
hitlijst_voeg_toe.php
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<?php
include("database.php");
// Bericht opslaan
echo "<p>$artiest - $nummer</p>";
$insertString = "INSERT INTO hitlijst(h_artiest, h_nummer) VALUES (\"$artiest\", \"$nummer\")";
mysql_query($insertString) or die("ERROR");
echo "<p>Toegevoegd</p>";
echo "<p><a href=\"hitlijst_stem.php\">Stem</a></p>";
mysql_close($link);
?>
</body>
</html>
ik heb trouwens ook al de achtergrond aangepast enzo. Dat staat niet in deze code!
quote:Ander topic zoeken en een nieuwe videokaart kopen.
Op zaterdag 14 februari 2004 18:07 schreef Manweth het volgende:
Ik wil counter-striken maar heb een FPS van 20
hoe kan ik dit omhoog gooien?
quote:Hoe kun jij NG + NT hebben op school? En over je vraag: Overclocken met rivatuner oid. Of natuurlijk een snellere kaart kopen. (ati 9600 of geforce 5700 of 5900xt ofzo)
Op zaterdag 14 februari 2004 18:07 schreef Manweth het volgende:
Ik wil counter-striken maar heb een FPS van 20
hoe kan ik dit omhoog gooien?
Mijn 3dfx kaart is een voodoo 2
bvd
quote:heey euh doe het ff in een ander topic aub
Op zaterdag 14 februari 2004 18:13 schreef leolinedance het volgende:[..]
Hoe kun jij NG + NT hebben op school? En over je vraag: Overclocken met rivatuner oid. Of natuurlijk een snellere kaart kopen. (ati 9600 of geforce 5700 of 5900xt ofzo)
Probeer het es zónder die '...', dus:
UPDATE hitlijst SET h_punten=$punten where h_id=$drie
(Zelfde voor h_punten). Ik meen me er iets van te herinneren dat ik daar
ook geeikel mee heb gehad. Heb voor de rest niet echt verdiept in je
code, dus kan ook zomaar heel ergens anders aan liggen.
quote:gaat ff kijken
Op zaterdag 14 februari 2004 18:18 schreef Lelyzee het volgende:
h_id is een integer
echter in je SQL statements zet je deze tussen '...':
UPDATE hitlijst SET h_punten='$punten' where h_id='$drie'Probeer het es zónder die '...', dus:
UPDATE hitlijst SET h_punten=$punten where h_id=$drie(Zelfde voor h_punten). Ik meen me er iets van te herinneren dat ik daar
ook geeikel mee heb gehad. Heb voor de rest niet echt verdiept in je
code, dus kan ook zomaar heel ergens anders aan liggen.
waarschijnlijk is het maar een ietsiepietsie klein foutje maar je moet het wel ff zien
zou iemand van jullie ff goed willen kijken want ik kan het niet vinden
quote:
Op zaterdag 14 februari 2004 20:38 schreef oldenzaaltjuh.nl het volgende:
whaaa dit is irriwaarschijnlijk is het maar een ietsiepietsie klein foutje maar je moet het wel ff zien
zou iemand van jullie ff goed willen kijken want ik kan het niet vinden
Waar jij vanuit gaat namelijk (tenminste zo lijkt het) is dat wanneer je setcookie gebruikt het item ook meteen in $_COOKIE komt te staan. Dit is niet het geval. $_COOKIE wordt gevuld aan het begin van je script netzoals $_POST of $_GET. Wat je dus nog moet doen is een extra regel toevoegen:
$_COOKIE['stem'] = $stem; de regel nadat je setcookie doet.
Dan nog iets anders.
Wat ik in je script zie is dat je eerst uit de database opvist hoeveel punten een item heeft, daarna via php deze met 1,2 of 3 ophoogt en daarna opslaat via update. Dit kan voor een oneerlijke telling zorgen als 2 gebruikers tegelijkertijd je script gebruiken:
Gebruiker1: Leest punten uit database (zeg: punten1=10)
Gebruiker1: Telt er 3 bij op. punten1 = 13;
Gebruiker2: Leest punten uit data(punten2 is ook 10, staat immers in de database)
Gebruiker1: Schrijft punten1 naar de database. In de database staat nu dat het puntentotaal 13 is.
Gebruiker2 echter is nog bezig. Die telt maar 1 punt op en schrijft dit weg naar de database. Daar komt dus puntentotaal 11 te staan, en er 'verdwijnen' 3 punten.
Een oplossing om dit te voorkomen is door het mysql te laten uitvoeren:
'UPDATE hitlijst SET h_punten = h_punten + 3 WHERE h_id = "'.$h_drie.'"';
Hoop dat het bovenste stuk een oplossing is.
quote:gaat het proberen
Op maandag 16 februari 2004 20:17 schreef Roonaan het volgende:
Het geintje zit hem in het gedeelte:
setcookie('stem', $stem)
$stem_cookie = $_COOKIE['stem'];Waar jij vanuit gaat namelijk (tenminste zo lijkt het) is dat wanneer je setcookie gebruikt het item ook meteen in $_COOKIE komt te staan. Dit is niet het geval. $_COOKIE wordt gevuld aan het begin van je script netzoals $_POST of $_GET. Wat je dus nog moet doen is een extra regel toevoegen:
$_COOKIE['stem'] = $stem; de regel nadat je setcookie doet.Dan nog iets anders.
Wat ik in je script zie is dat je eerst uit de database opvist hoeveel punten een item heeft, daarna via php deze met 1,2 of 3 ophoogt en daarna opslaat via update. Dit kan voor een oneerlijke telling zorgen als 2 gebruikers tegelijkertijd je script gebruiken:Gebruiker1: Leest punten uit database (zeg: punten1=10)
Gebruiker1: Telt er 3 bij op. punten1 = 13;
Gebruiker2: Leest punten uit data(punten2 is ook 10, staat immers in de database)
Gebruiker1: Schrijft punten1 naar de database. In de database staat nu dat het puntentotaal 13 is.
Gebruiker2 echter is nog bezig. Die telt maar 1 punt op en schrijft dit weg naar de database. Daar komt dus puntentotaal 11 te staan, en er 'verdwijnen' 3 punten.Een oplossing om dit te voorkomen is door het mysql te laten uitvoeren:
'UPDATE hitlijst SET h_punten = h_punten + 3 WHERE h_id = "'.$h_drie.'"';
Hoop dat het bovenste stuk een oplossing is.
|
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |