hyp3z Skrevet 31. mai 2003 Del Skrevet 31. mai 2003 Ønsker ett skript som gjør det mulig for (anonyme) brukere å stemme på en artist/band. Resultatet viser den med flest stemmer øverst, osv nedover. Ett veldig enkelt skript altså, problemet er bare at jeg har veldig basic php kunnskaper. Håper på litt hjelp her ifra ! PS: En sperre for juks hadde også vært fint (IP-logging kansje?). Lenke til kommentar
Nervetattoo Skrevet 31. mai 2003 Del Skrevet 31. mai 2003 Du må jo da enten bruke en database eller en fil for å lagre resultater. Database er jo absolutt å annbefale. MySQL er vell det som de fleste bruker med php. Hver gang linken klikkes legg til stemmen og ip'en i databasen. Eller filen om du må bruke det. Ved IP logging vær oppmerksom på at de fleste ikke har statisk ip, dvs hver gang de kobler til på nytt vil de bli tildelt ny IP. For å da blokkere de må du istedenfor å blokke f.eks 111.111.111.111 blokke noe som 111.111.***.*** som kan være ISP'ens nett, du vil da blokke alle som bruker IP som begynner med dette. Så hvor smart IP logging er for å forhindre juks kan diskuteres. Du kan jo også se på cookies, men det er jo lett ungå ved å ikke tillate cookies, eller manuelt slette. IP logging + cookies kan jo kanskje kombineres, og satse på at man da får logget de fleste. Håper det har satt litt mer fart på tankene dine Er alt for sent på kvelden(morran) til å komme med noe faktisk kode forslag for meg. Lenke til kommentar
hyp3z Skrevet 31. mai 2003 Forfatter Del Skrevet 31. mai 2003 Jeg har mySQL med phpMyadmin tilgjengelig. IP- eller cookie-sperren kan jeg se på senere evt, det viktigste er å få opp ett script som kan gjøre det jeg beskrev i første post. Noen kodetips? Lenke til kommentar
Stonescream Skrevet 31. mai 2003 Del Skrevet 31. mai 2003 Om du søker litt på internett så finnes det mange ferdige slike kodesnutter. søk på vote php mysql tutorial så finner du sikkert mye. Lenke til kommentar
hyp3z Skrevet 31. mai 2003 Forfatter Del Skrevet 31. mai 2003 Jeg har lett en god del rundt, uten gode resultater. Problemet er å få til en løsning der man per alternativ har - tittel - bilde - beskrivelse Må også kunne vise resultatet direkte hele tiden, på siden av alternativet. En VOTE knapp må også høre med per alternativ. Har laget en liten skisse, litt enklere å se hva jeg mener da: Skisse #1 Lenke til kommentar
hyp3z Skrevet 2. juni 2003 Forfatter Del Skrevet 2. juni 2003 Ingen som kan komme med et godt tips? Alle bidrag belønnes med navnet sitt på siden Lenke til kommentar
ZoRaC Skrevet 2. juni 2003 Del Skrevet 2. juni 2003 Ingen som kan komme med et godt tips?Alle bidrag belønnes med navnet sitt på siden Lag denne tabellen: CREATE TABLE `vote` ( `ID` int(11) NOT NULL auto_increment, `bilde` varchar(50) NOT NULL default '', `beskrivelse` varchar(255) NOT NULL default '', `stemmer` int(11) NOT NULL default '0', PRIMARY KEY (`ID`) ) TYPE=MyISAM AUTO_INCREMENT=1; index.php: <?php /* Skriv inn dine ting under */ $dbhost = '127.0.0.1'; $dbusername = 'root'; $dbpasswd = 'root'; $database_name = 'vote'; $connection = mysql_pconnect("$dbhost","$dbusername","$dbpasswd") or die ("Couldn't connect to server."); $db = mysql_select_db("$database_name", $connection) or die("Couldn't select database."); $query = "SELECT * FROM vote LIMIT 0,50"; $result = mysql_query($query) or die("<br>Query failed:<br> $query"); $num=mysql_numrows($result); echo "<table width=500px>"; $i=0; while ($i < $num) { $ID=mysql_result($result,$i,"ID"); $bilde=mysql_result($result,$i,"bilde"); $beskrivelse=mysql_result($result,$i,"beskrivelse"); $stemmer=mysql_result($result,$i,"stemmer"); echo "<tr><td>$ID</td> <td><img src=kildekatalog/$bilde</td> <td>$beskrivelse</td> <td>$stemmer</td> <td><a href=vote.php?ID=$ID>Stem</a></td></tr>"; ++$i; } echo "<br><br><br><br><center><font size=1 face=verdana>Laget av Sven-Ove Bjerkan</center></font>"; ?> vote.php: <?php /* Skriv inn dine ting under */ $dbhost = '127.0.0.1'; $dbusername = 'root'; $dbpasswd = 'root'; $database_name = 'vote'; $connection = mysql_pconnect("$dbhost","$dbusername","$dbpasswd") or die ("Couldn't connect to server."); $db = mysql_select_db("$database_name", $connection) or die("Couldn't select database."); $query = "SELECT stemmer FROM vote WHERE ID='$_REQUEST[ID]' LIMIT 1"; $result = mysql_query($query) or die("<br>Query failed:<br> $query"); $num=mysql_numrows($result); $stemmer=mysql_result($result,0,"stemmer"); $ny_stemmer=$stemmer+1; $query = "UPDATE vote SET stemmer = $ny_stemmer WHERE ID = '$_REQUEST[ID]' LIMIT 1"; $result = mysql_query($query) or die("<br>Query failed:<br> $query"); include 'index.php'; ?> Lenke til kommentar
hyp3z Skrevet 2. juni 2003 Forfatter Del Skrevet 2. juni 2003 Takker for det! Skal prøve ut koden så snart jeg har anledning - kommer med tilbakemelding her senere! Lenke til kommentar
hyp3z Skrevet 3. juni 2003 Forfatter Del Skrevet 3. juni 2003 Hei igjen! Har laget tabellen, index.php og vote.php Men får følgende feil når jeg prøver å aksessere vote.php på serveren;' Warning: Unable to jump to row 0 on MySQL result index 2 in /usr/local/psa/home/vhosts/serverenmin/httpdocs/hipoghop/toppliste/vote.php on line 19 Laget av Sven-Ove Bjerkan Fant ut at det var denne linjen: $stemmer=mysql_result($result,0,"stemmer"); Lenke til kommentar
ZoRaC Skrevet 4. juni 2003 Del Skrevet 4. juni 2003 Det er egentlig litt logisk... Du har ikke lagt til noen elementer i databasen, så du får en feilmelding iom at den ikke finner noe å liste opp... Legg inn noen "avstemmnings-valg" i basen... Lenke til kommentar
hyp3z Skrevet 4. juni 2003 Forfatter Del Skrevet 4. juni 2003 Hehe Da må jeg inn i vote.php og sette inn valg der altså? Er litt grønn på området så du får ha meg unnskyldt .. Lenke til kommentar
ZoRaC Skrevet 4. juni 2003 Del Skrevet 4. juni 2003 Hehe Da må jeg inn i vote.php og sette inn valg der altså? Er litt grønn på området så du får ha meg unnskyldt .. Nei... du trenger ikke å endre annet en hvilken katalog bildene ligger i samt IP, og login-info til MySQL i .php filene... Du bruker phpMyAdmin til å legge inn.... Du trenger ikke å fylle inn ID og stemmer. Bilde skrives slik: bildenavn.jpg Beskrivelse må fylles inn... Lenke til kommentar
hyp3z Skrevet 4. juni 2003 Forfatter Del Skrevet 4. juni 2003 Flott! Skal teste det ut nå .. 8) Edit: Ser ut til å funke bra nå! Takk skal du ha! PS: Håper det er OK jeg setter navnet ditt _under_ tabellen slik jeg får plass til en heading Lenke til kommentar
ZoRaC Skrevet 4. juni 2003 Del Skrevet 4. juni 2003 Flott! Skal teste det ut nå .. 8) Edit: Ser ut til å funke bra nå! Takk skal du ha! PS: Håper det er OK jeg setter navnet ditt _under_ tabellen slik jeg får plass til en heading Trodde da jeg satte den under tabellen jeg? hum... jaja... bare flytt navnet mitt du... Lenke til kommentar
hyp3z Skrevet 4. juni 2003 Forfatter Del Skrevet 4. juni 2003 Hei igjen! Du hadde flyttet navnet ditt under tabellen, men det kommer ovenfor uansett. Dette fikser jeg nok selv. Ser at jeg mangler to småting: - "Tittel" på band - En automatisk oppdatering som setter band med flest stemem som nummer 1 på lista. Tittel er forsåvidt grei, den skal jeg nok klare. Men, hvordan må jeg gå fram for å få til sistnevnte? Lenke til kommentar
ZoRaC Skrevet 5. juni 2003 Del Skrevet 5. juni 2003 Har nå gjort et par endringer: Den sorterer på beskrivelse Den nekter å ta i mot stemmer fra samme IP Navnet mitt havner nederst Her er koden: SQL: # phpMyAdmin MySQL-Dump # version 2.5.0-rc1 # http://www.phpmyadmin.net/ (download page) # # Vert: localhost # Generert den: 05. Jun, 2003 klokka 12:20 PM # Tjenerversjon: 4.0.12 # PHP-Versjon: 4.3.1 # Database : `vote` # -------------------------------------------------------- # # Tabellstruktur for tabell `vote` # # Opprettet: 02. Jun, 2003 klokka 15:01 PM # Sist oppdatert: 05. Jun, 2003 klokka 12:01 PM # CREATE TABLE `vote` ( `ID` int(11) NOT NULL auto_increment, `bilde` varchar(50) NOT NULL default '', `beskrivelse` varchar(255) NOT NULL default '', `stemmer` int(11) NOT NULL default '0', PRIMARY KEY (`ID`) ) TYPE=MyISAM AUTO_INCREMENT=1; # -------------------------------------------------------- # # Tabellstruktur for tabell `voted` # # Opprettet: 05. Jun, 2003 klokka 12:19 PM # Sist oppdatert: 05. Jun, 2003 klokka 12:19 PM # CREATE TABLE `voted` ( `ID` int(11) NOT NULL auto_increment, `IP` varchar(12) NOT NULL default '0', `date` varchar(20) NOT NULL default '', PRIMARY KEY (`ID`) ) TYPE=MyISAM AUTO_INCREMENT=1; index.php: <?php /* Database Information - Required!! */ /* -- Configure the Variables Below --*/ $dbhost = '127.0.0.1'; $dbusername = 'root'; $dbpasswd = 'root'; $database_name = 'vote'; /* Database Stuff, do not modify below this line */ $connection = mysql_pconnect("$dbhost","$dbusername","$dbpasswd") or die ("Couldn't connect to server."); $db = mysql_select_db("$database_name", $connection) or die("Couldn't select database."); $query = "SELECT * FROM vote ORDER BY 'beskrivelse'"; $result = mysql_query($query) or die("<br>Query failed:<br> $query"); $num=mysql_numrows($result); echo "<table>"; $i=0; while ($i < $num) { $ID=mysql_result($result,$i,"ID"); $bilde=mysql_result($result,$i,"bilde"); $beskrivelse=mysql_result($result,$i,"beskrivelse"); $stemmer=mysql_result($result,$i,"stemmer"); $nummer = $i + 1; echo "<tr><td width=20px>$nummer</td> <td width=150px><img src=kildekatalog/$bilde</td> <td width=100px>$beskrivelse</td> <td width=20px>$stemmer</td>"; //Hvis de allerede har votet vises ikke linken "Stem"... if (!isset($_REQUEST[ID])) { echo "<td width=40px><a href=vote.php?ID=$ID>Stem</a></td></tr>"; } ++$i; } echo "</table><br><br><br><br><center><font size=1 face=verdana>Laget av Sven-Ove Bjerkan</center></font>"; ?> vote.php: <?php if (!isset($_REQUEST[ID])) { include 'index.php'; exit(); } /* Database Information - Required!! */ /* -- Configure the Variables Below --*/ $dbhost = '127.0.0.1'; $dbusername = 'root'; $dbpasswd = 'root'; $database_name = 'vote'; /* Database Stuff, do not modify below this line */ $connection = mysql_pconnect("$dbhost","$dbusername","$dbpasswd") or die ("Couldn't connect to server."); $db = mysql_select_db("$database_name", $connection) or die("Couldn't select database."); include 'check_ip.php'; check_ip(); $query = "SELECT stemmer FROM vote WHERE ID='$_REQUEST[ID]' LIMIT 1"; $result = mysql_query($query) or die("<br>Query failed:<br> $query"); $num=mysql_numrows($result); $stemmer=mysql_result($result,0,"stemmer"); $ny_stemmer=$stemmer+1; $query = "UPDATE vote SET stemmer = $ny_stemmer WHERE ID = '$_REQUEST[ID]' LIMIT 1"; $result = mysql_query($query) or die("<br>Query failed:<br> $query"); $dato=DATE('m.d.y H:i'); //INSERT INTO `voted` ( `ID` , `IP` , `date` ) VALUES ( '', '127.0.0.1', '05.06.03 12:00' ); $query = "INSERT INTO voted VALUES ('','$ip','$dato')"; $result = mysql_query($query) or die("<br>Query failed:<br> $query"); include 'index.php'; ?> check_ip.php: <?php function check_ip() { $ip = $_SERVER['REMOTE_ADDR']; /* Database Information - Required!! */ /* -- Configure the Variables Below --*/ $dbhost = '127.0.0.1'; $dbusername = 'root'; $dbpasswd = 'root'; $database_name = 'vote'; /* Database Stuff, do not modify below this line */ $connection = mysql_pconnect("$dbhost","$dbusername","$dbpasswd") or die ("Couldn't connect to server."); $db = mysql_select_db("$database_name", $connection) or die("Couldn't select database."); $query = "SELECT * FROM voted WHERE ID=1"; $result = mysql_query($query) or die("<br>Query failed:<br> $query"); $num=mysql_numrows($result); if ($num>0) { $date=mysql_result($result,0,"date"); echo "Beklager, noen med IP adressen <b>$ip</b> avga stemme <b>$date</b>.<br>For å unngå manipulering av resultatet tillater vi ikke flere stemmer fra samme IP.<br><br><a href=index.php?ID>Tilbake</a>"; exit(); } } ?> Lenke til kommentar
hyp3z Skrevet 5. juni 2003 Forfatter Del Skrevet 5. juni 2003 Hei! Veldig bra! Nå begynner det å likne noe ja! Men er det noen mulighet for at jeg kan resette stemmene, f. eks en hver måned eller hver 2. måned? Takk skal du ha. Lenke til kommentar
ZoRaC Skrevet 5. juni 2003 Del Skrevet 5. juni 2003 Hei!Veldig bra! Nå begynner det å likne noe ja! Men er det noen mulighet for at jeg kan resette stemmene, f. eks en hver måned eller hver 2. måned? Takk skal du ha. Da kommer det vel mer an på serveren, tror jeg... iom at PHP-kommandoer ikke blir kjørt på et gitt tidspunkt, men når siden åpnes... Du kan sikkert legge noe inn i serveren som kjører en gang i måneden som utfører "tømme-kommandoen". Hvilket OS er serveren? Har du admin-tilgang? Ellers kan du jo gjøre det manuelt ved å bruke "Tøm"i phpMyAdmin... Mulig noen andre vet om en bedre løsning på dette? Edit: Litt dumt å tømme hele tabellen da... mister jo de forskjellige valgene oxo da... er vel mulig å kjøre en SQL kommando som nullstiller kollonen "stemmer"... har ikke manualen her... sjekker det i morgen... (eller, i dag heter det vel ) Lenke til kommentar
hyp3z Skrevet 6. juni 2003 Forfatter Del Skrevet 6. juni 2003 Har ikke admin rettigheter på serveren, og ikke noen SSH mulighet. Kodesnutten som sletter stemmene kjøres i phpMyadmin forsto jeg rett? Har sett mange toppliste (til web-sider) script som resettes f.eks en gang i måneden; kanskje jeg kan låne litt kode fra disse? Ellers så får jeg ikke gitt min stemme uansett om jeg skifter IP (kobler av og på adsl-modem), og jeg har faktisk aldri sett "0" bli til "1" på det første band'et jeg prøvde etter du mekket den nye koden. Du kan sjekke siden her, og teste selv. Det er mulig modemet må være avslått i et par minutter for så å slås på igjen, men dette er vel egentlig et teknisk spm. Takk! Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå