votet für alle id´s

Hangrefer

Mitglied
Hy ich gehe euch mal wieder auf die Nerven.

ICh habe mir ein kleines votescript programiert. Dies ist vieleicht nicht gerade der burner, aber erfült seinen zweg den ich brauche.

Ich habe ein oder zwei Probleme damit. Zum ersten, Votet (insert und Updatet) der alle ID´s die in der Datenbank vorhanden sind. Und zum Zweiten, Funktioniert das Auslesen erst nach dem man zwei mal auf Vote geklicken hat. Und habe demzufolge auch zwei mal die Userid drin (zwei Userid´s vom selben Users).

Liegt aber warscheinlich dadran, das ich 2 mal auf Voten klicken muss bis erst was ausgelesen wirt. dann steht da zum beispiel, 1 user mit 10 Punkten. Aber wie gesagt Passiert das erst nach dem zweitenmal Klick auf Vote.

Sprich, ich will für die id 212 voten so votet der aber für die id 212 und id 213.

Es soll aber so sein, das wenn ich einmal den radio ausgewählt habe, ich dann auf Voten klicke. Er es in die Datenbank schreibt und das nur EINMAL für die Derzeitig ID

Kann mir Jemand Helfen?

Hier mal der Code:

PHP:
if($_POST['add'] == "Voten"){
if($wbbuserdata['userid']) $check = mysql_query("SELECT style_id FROM bb".$n."_style_votes WHERE style_id='$style_id' AND votemode=2 AND userid='$wbbuserdata[userid]'");
if(mysql_num_rows($check) == 0) {

	$add=$db->unbuffered_query("UPDATE bb".$n."_style_vorschau SET voted=voted+1, votepoints=votepoints+$rating WHERE style_id='$style_id'");
	$add=$db->unbuffered_query("INSERT INTO bb".$n."_style_votes (style_id,votemode,userid,ipaddress) VALUES ('$style_id','2','$wbbuserdata[userid]','".addslashes($REMOTE_ADDR)."')");
	
if($add){
  header("Location: index.php");
  exit();}
}
if($_POST['add'] == "Abbrechen"){
  header("Location: index.php");
  exit();
 }else{
  eval("\$style_vorschau_error = \"".$tpl->get("style_vorschau_error")."\";"); 
  }
 }
Mfg..Hangman
 
Diese Frage wäre in einem WBB-Support Forum besser aufgehoben :)

Aber da ich selbst ein wenig im WBB programmiere, kann ich dir hierglaub helfen.
Hab mir jetzt deinen Code noch nicht 100% angesehen, aber beim UPDATE fehlt die anweisung welcher Datensatz erneuert werden soll. Deshalb updatet es alle ID's.

Desweiteren wäre es hilfreich zu wissen wo die ganzen Variablen von dir deklariert werden.

Ausserdem hast du 2 mal die Variable "$add" deklariert beim UPDATE und beim INSERT. Hier solltest Du 2 verschiedene nehmen, denn wenn in der 1. Variablen false zurückgegeben wird aber in der 2. Variable true, dann ist die Bedingung if($add){
somit ja erfüllt.
 
Aja da schaue ich nochmal nach. Melde mich dann nochmal. Danke dir.

Mfg..Hangman

Edit:

Was müsste zum Update hinzugefügt werden damit der weis welche ID der Update soll?.. die style_id ist ja angegeben. Aber wie weis der welche id ich updaten möchte?.. da bin ich bische überfragt schon wieder^^
 
Zuletzt bearbeitet:
Was ist WBB?
Was müsste zum Update hinzugefügt werden damit der weis welche ID der Update soll?.. die style_id ist ja angegeben. Aber wie weis der welche id ich updaten möchte?.. da bin ich bische überfragt schon wieder^^
Wenn die style_id eindeutig ist, dann ist das schon in Ordnung so.
Probier doch mal die Anführungszeichen um die Variablen anders zu setzen:
PHP:
    $add=$db->unbuffered_query("UPDATE bb".$n."_style_vorschau SET voted=voted+1, votepoints=votepoints+".$rating." WHERE style_id='".$style_id."'");
Soweit ich weiß werden die Variablen zwischen den einfachen Anführungszeichen nicht geparsed, oder interpretiert oder was auch immer...
Und am Ende verwendest du ja diese einfachen Anführungszeichen
 
Was ist WBB?

Wenn die style_id eindeutig ist, dann ist das schon in Ordnung so.
Probier doch mal die Anführungszeichen um die Variablen anders zu setzen:
PHP:
    $add=$db->unbuffered_query("UPDATE bb".$n."_style_vorschau SET voted=voted+1, votepoints=votepoints+".$rating." WHERE style_id='".$style_id."'");
Soweit ich weiß werden die Variablen zwischen den einfachen Anführungszeichen nicht geparsed, oder interpretiert oder was auch immer...
Und am Ende verwendest du ja diese einfachen Anführungszeichen

Sein Query ist in doppelten Hochkommata. Also werden die Variablen auch richtig geparst. Die einfachen Hochkommata brauchst Du nur bei Strings, nicht bei INTEGER.

PHP:
$sql = mysql_query("SELECT * FROM tabelle WHERE ID=$id");  // INTEGER
$sql = mysql_query("SELECT * FROM tabelle WHERE name='$name' ");  // STRING
$sql = mysql_query("SELECT * FROM tabelle WHERE ID=".$id);  //INTEGER
$sql = mysql_query("SELECT * FROM tabelle WHERE name='".$name."' ");  // STRING
 
Woher bekommst Du denn die Variable "$style_id"?

Kommt von dem SELECT was nochmal oben drüber steht!...Dort liest er das Bild, Text, Datum ect aus.

Da habe ich $style_id = $row['style_id']
Daher kommt die Variable die ID´s hauen ja hin. Er macht nur eben alles doppelt und nur dann wenn ich 2 mal auf Voten klicke steht es erst auf der Startseite......
 
Zeig doch nochmal deinen bisher veränderten Code.


JO hier.....habe ein wenig dran gebaut. JETZT habe ich den eindruck, das der ID für ID ein Insert und Update macht. also sehe es auch erst weenn ich ASC mit DESC austausche oder umgekert^^.. ICh bin langsam ratlos..

PHP:
$result = $db->query("SELECT * FROM bb".$n."_style_vorschau ORDER BY style_id DESC");
while($row = $db->fetch_array($result)){
	
	$style_id = $row['style_id'];
	$style_view = "../stylevorschau/style-$row[style_id].$row[style_extension]";
	$style_title = $row['style_title'];
	$style_beschreibung = $row['style_beschreibung'];
	$voted = $row['voted'];
	$votepoints = $row['votepoints'];
		
    $last_change = filemtime(basename($_SERVER['PHP_SELF']));
	$last_change = date("d.m.Y H:i", $last_change);
	
if ($row['style_extension']) eval("\$style_view = \"".$tpl->get("style_name")."\";");

if($_POST['add'] == "Voten"){
if ($rating < 1 || $rating > 10);
if($wbbuserdata['userid']) $check = mysql_query("SELECT style_id FROM bb".$n."_style_votes WHERE style_id='$style_id' AND votemode=2 AND userid='$wbbuserdata[userid]'");
if(mysql_num_rows($check) == 0) {

	$add=$db->unbuffered_query("UPDATE bb".$n."_style_vorschau SET voted=voted+1, votepoints=votepoints+$rating WHERE style_id='$style_id'", 1);
	$add=$db->unbuffered_query("INSERT INTO bb".$n."_style_votes (style_id,votemode,userid,ipaddress) VALUES ('$style_id','2','$wbbuserdata[userid]','".addslashes($REMOTE_ADDR)."')", 1);
	
if($add){
  header("Location: index.php");
  exit();}
}
if($_POST['add'] == "Abbrechen"){
  header("Location: index.php");
  exit();
 }else{
  eval("\$style_vorschau_error = \"".$tpl->get("style_vorschau_error")."\";"); 
  }
 }
 eval("\$style_vorschau = \"".$tpl->get("style_vorschau")."\";"); 
}

Mfg..Hangrefer
 
Zurück