bildervote

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • bildervote

    habe ein Votesystem , das beim klick auf das Bild das Bild bewerten lässt und die anderen Bilder ebenfalls die in der DB vorhanden sind. Er hört aber leider nicht auf, sodaß man für ein Bild dann mehrmals voten kann.Das sollte aber nicht so sein.
    Fragen: Wie kann ich es stoppen, wenn man jedes Bild einmal gevotet hat?Meine Idee wäre zum Beispiel den selbstaufruf auf die Anzahl der Zeilen in der Tabelle zu begrenzen.Weiß aber leider nicht wie!
    eine schleife mit zählen bis 10 wäre auch schön aber mein horizont reicht dafür heute leider nicht ganz.
    PHP-Code:
    <?
      @include("config.php");
      @mysql_connect($db_server,$db_user,$db_password) or die("Datenbankverbindung fehlgeschlagen");
      @mysql_select_db($db_name) or die("Datenbankauswahl fehlgeschlagen");

        $resultid = @mysql_query("SELECT Count(id)-1 FROM ".$db_table_pictures."");
      $anzahl = @mysql_result($resultid,0);
      echo $anzahl;
      
      if($_POST["vote"]){
        mysql_query("UPDATE ".$db_table_pictures." SET points=points+".$_POST["vote"].",votes=votes+1 WHERE id=".$_POST["id"].";");
      }

      if(strlen($_GET["comment_name"])>2 && strlen($_GET["comment_text"])>2){
        $name = $_GET["comment_name"];
        $name = str_replace("<","<",$name);
        $name = str_replace(">",">",$name);
        $name = stripslashes($name);

        $text = $_GET["comment_text"];
        $text = str_replace("<","<",$text);
        $text = str_replace(">",">",$text);
        $text = stripslashes($text);

        mysql_query("INSERT INTO ".$db_table_comments." VALUES('',".$_GET["show"].",'$name','$text',".time().");");
      }

      if(!$_GET["show"] and !$_POST["show"]){
        $result = mysql_query("SELECT * FROM ".$db_table_pictures.";");
        while(list($ids[]) = mysql_fetch_row($result));
        while(true){
          srand((double)microtime()*1000000);
          $show = rand(1,mysql_num_rows($result));
          if(array_search($show,$ids)){
            break;
              }
            }
        }

      else{
        $show = $_GET["show"] ? $_GET["show"] : $_POST["show"];
      }
      
      $row = mysql_fetch_array(mysql_query("SELECT * FROM ".$db_table_pictures." WHERE id=$show;"));
      list($next) = mysql_fetch_row(mysql_query("SELECT id FROM ".$db_table_pictures." WHERE id>$show ORDER BY id ASC LIMIT 0,1;"));

      if($row["points"] != 0){
        $row["points"] = number_format($row["points"]/$row["votes"],2,",","");
      }

      if(!$next){
        list($next) = mysql_fetch_row(mysql_query("SELECT id FROM ".$db_table_pictures." WHERE id>1 ORDER BY id ASC LIMIT 0,1;"));
      }
      
      echo $header;
      echo "
              <form action=\"".$PHP_SELF."\" method=\"post\">
                <table align=\"center\" border=\"0\" cellpadding=\"2\" cellspacing=\"0\">
                  <tr>
                    <td rowspan=\"2\">schlecht</td>
                    <td rowspan=\"2\" width=\"10\">&nbsp;</td>";

      for($i=1;$i<=$max_points;$i++){
        echo "
                    <td align=\"center\">$i</td>";
      }

      echo "
                    <td rowspan=\"2\" width=\"10\">&nbsp;</td>
                    <td rowspan=\"2\">gut</td>
                  </tr>
                  <tr>";

      for($i=1;$i<=$max_points;$i++){
        
        
        echo "
                    <td align=\"center\"><input type=\"radio\" name=\"vote\" value=\"$i\" onClick=\"submit();\"></td>";
      }
      echo "
                  </tr>
                </table>
                <input name=\"show\" type=\"hidden\" value=\"$next\">
                <input name=\"id\" type=\"hidden\" value=\"".$row["id"]."\">
              </form>
            </td>
          </tr>
          <tr>
            <td align=\"center\" colspan=\"2\" height=\"".$img_height."\"><img alt=\"\" border=\"0\" src=\"".$img.$show.$img_format_info."\"></td>
          </tr>
          <tr>
            <td colspan=\"2\" height=\"10\">&nbsp;</td>
          </tr>
          <tr>
            <td valign=\"top\" width=\"50%\"></td>
            <td align=\"right\" valign=\"top\" width=\"50%\">Punkte: <b>".$row["points"]."</b> (".$row["votes"]." Votes)<br>Bild Nr.$bnr<br></td>
          </tr><td colspan=\"2\">";
        "</table>";

      echo $footer;
      @mysql_close();
    ?>
    Es gibt 3 Weltstädte New York, Tokio und Erfurt

  • #2
    LESEN

    Kommentar


    • #3
      ist der Code dein Werk?

      ohne auf deine Frage einzugehen, was soll folgendes bringen:
      PHP-Code:
          $name $_GET["comment_name"];
          
      $name str_replace("<","<",$name);
          
      $name str_replace(">",">",$name);
          
      $name stripslashes($name);

          
      $text $_GET["comment_text"];
          
      $text str_replace("<","<",$text);
          
      $text str_replace(">",">",$text);
          
      $text stripslashes($text); 
      oder hat das forum den code ersetzt?


      zu deiner Frage, wie meinst du das jetzt, jeder User darf pro Bild nur einmal voten, oder jedes Bild darf nur einmal gevotet werden?

      Wenn jeder User pro Bild 1x, dann leg doch eine extra Tab an
      mit Userid und bildid, bei jedem Vote wird die bildid samt userid eingetragen, um zu prüfen fragste die tab ab ob schon ein Eintrag vorhanden ist.
      Um Doppeleinträge zu vermeiden machste ein unique über beide spalten.
      mfg
      marc75

      <Platz für anderes>

      Kommentar


      • #4
        man soll nur...

        für jedes Bild einmal voten dürfen.Da es beim klicken auf die bewertung automatisch eins weiter springt, muß auch beim letzten Bild schluss sein.
        mit dem comment_name da kann man noch einen kommentar für das Bild abgeben.hatte ich vergessen rauszumachen, denn das funzt ja.
        Es gibt 3 Weltstädte New York, Tokio und Erfurt

        Kommentar

        Lädt...
        X