Gå til innhold

Problemer med "stem" kode [LØST]


Anbefalte innlegg

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 av uranus
Lenke til kommentar
Videoannonse
Annonse

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.

Lenke til kommentar

<?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 av trondes
Lenke til kommentar

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 av uranus
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...