uranus Skrevet 30. april 2006 Skrevet 30. april 2006 (endret) Hei! Jeg har en kode her en kamerat hjalp med, og det er en kode som skal legge til poeng til en bruker. Altså at andre medlemmer kan stemme på brukeren, men kan kun stemme en gang i døgnet på samme brukeren. Problemet er at den ikke funker. <?php $til = $_GET['stem']; //koble til $link = mysql_connect("localhost", "bruker", "pass"); mysql_select_db("medlem", $link); function gipoeng($til){ $result = mysql_query("SELECT `poeng` FROM `users` WHERE `id` = '".$til."' LIMIT 1;", $link); $row = mysql_fetch_object($result); $poeng=$row->poeng; $poeng=$poeng+10; mysql_query("UPDATE users set poeng = '".$poeng."' WHERE id = '".$til."'"); } //sjekke om brukeren har stemt før i dag $result = mysql_query("SELECT time FROM `stem` WHERE `user` =".$_SESSION['s_id']." LIMIT 1;", $link); $num_rows = mysql_num_rows($result); if($num_rows==0){ gipoeng($til); mysql_query("INSERT INTO `stem` ( `user` , `time` ) VALUES ('".$_SESSION['s_id']."', '".time()."');"); } else{ $row = mysql_fetch_object($result); if(date('z',$row->time) == date('z')){ echo "Du har allerede stemt på vedkommende idag. Du kan ikke stemme igjen før imorra!"; }else{ gipoeng($til); mysql_query("INSERT INTO `stem` ( `user` , `time` ) VALUES ('".$_SESSION['s_id']."', '".time()."');"); echo "Du har nå stemt!"; } } ?> Kan noen hjelpe meg? Feilmelding: Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\web\xampp\htdocs\web\ludrio\ludrio2\medlem\stem.php on line 10 Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\web\xampp\htdocs\web\ludrio\ludrio2\medlem\stem.php on line 11Du har nå stemt! Endret 30. april 2006 av uranus
Mapster Skrevet 30. april 2006 Skrevet 30. april 2006 Prøv å bytt ut query-linjen og row linjen med disse: $result = mysql_query("SELECT * FROM 'users' WHERE id='$til'", $link); $row = mysql_fetch_row($result); // bytt også ut $poeng=$row->poeng; med: $poeng = $row[x] // hvor x er kollonne nummeret til kolonnen som inneholder poeng i tabellen. Det kan godt være at det du har brukt som jeg ber deg erstatte er fult lovlige argumenter, men det er nå ihvertfall slik jeg gjør det, og det funker 100% sikkert. Hvis det ikke fungerer med mitt forslag så har du rett og slett ikke riktig info om mysql serveren.
trondes Skrevet 30. april 2006 Skrevet 30. april 2006 (endret) <?php $til = addslashes($_GET['stem']); //koble til $link = mysql_connect("localhost", "bruker", "pass"); mysql_select_db("medlem", $link); function gipoeng($til){ $result = mysql_query("UPDATE `users` SET `poeng` = `poeng` + 10 WHERE `id` = '".$til."' LIMIT 1;", $link); } //sjekke om brukeren har stemt før i dag // velg en av måttene: // bruk denne hvis brukeren ikke skal kunne stemme før det er gått 24 timer siden sist han/hun stemte $result = mysql_query("SELECT time FROM `stem` WHERE unix_timestamp(time) > (unix_timestamp(now())-3600) AND FELT_MED_STEMPT_PÅ_BRUKER = '$til' AND `user` =".$_SESSION['s_id']." LIMIT 1;", $link); // bruk denne hvis brukern ikke skal kunne stemme før det er gått over til ny dag ( datomessig ) $result = mysql_query("SELECT time FROM `stem` WHERE date_format(time, '%Y%m%d') = date_format(now(), '%Y%m%d') AND FELT_MED_STEMPT_PÅ_BRUKER = '$til' AND `user` =".$_SESSION['s_id']." LIMIT 1;", $link); $num_rows = mysql_num_rows($result); if($num_rows==0){ gipoeng($til); mysql_query("INSERT INTO `stem` ( `user` , `time`, FELT_MED_STEMPT_PÅ_BRUKER ) VALUES ('".$_SESSION['s_id']."', now(), '$til');"); gipoeng($til); echo "Du har nå stemt!"; } else{ echo "Du har allerede stemt på vedkommende idag. Du kan ikke stemme igjen før imorra!"; } ?> Slik hadde jeg løst det, men jeg vet ikke hvordan tabelen dine ser ut dermed er det noen sorte hull her. Ville anbefalt deg å lagret datafeletet i tabelen stemt til feks datetime, samt poengene til en int ( hvis du bare skal ha heletall, hvis ikke passer kanskje en float bedre ) Ser heler ikke at du har oppgitt noen felt ( i koden som du la ut ) om hvem brukeren stemte på, så det må du fylle inn på angitt plasser over. EDIT: forandret litt på koden Endret 30. april 2006 av trondes
uranus Skrevet 30. april 2006 Forfatter Skrevet 30. april 2006 (endret) Hmm.. Prøve ut litt og fant en løsning. <?php function gipoeng($til){ $result = mysql_query("SELECT poeng FROM users WHERE id = ".$_GET['stem']." LIMIT 1;"); $row = mysql_fetch_object($result); $poeng=$row->poeng; $poeng=$poeng+10; mysql_query("UPDATE users SET poeng = $poeng WHERE id = ".$_GET['stem'].""); } //sjekke om brukeren har stemt før i dag $result = mysql_query("SELECT time FROM stem WHERE user =".$_SESSION['s_id']." LIMIT 1;"); $num_rows = mysql_num_rows($result); if($num_rows==0){ gipoeng($til); mysql_query("INSERT INTO `stem` ( `user` , `time` , `stempaa` ) VALUES ('".$_SESSION['s_id']."', '".time()."', '".$_GET['stem']."');"); echo "Du har nå stemt!"; } else{ $row = mysql_fetch_object($result); if(date('z',$row->time) == date('z')){ echo "Du har allerede stemt på vedkommende idag. Du kan ikke stemme igjen før imorra!"; } } ?> Problemet her nå er at når den sjekker om du har stemt tidligere, sjekker den kun om du har stemt på noen i det heletatt. Det jeg vil at den skal gjøre er å sjekke om du har stemt på akkurat den personen den dagen, altså $_GET['stem'] (iden til den du stemmer på). Noen som vet hvordan jeg fikser det? Endret 30. april 2006 av uranus
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å