Autor Zpráva
Samo
Profil
Čaute, mám formulár na hodnotenie, ale akosi mi tu nefunguje overovanie pomocou ip adresy aby nikto nemohol hlasovať viackrát, okrem iného potrebujem aby mi po odoslaní dát zmizol ten formulár a zobrazilo sa len priemerné hodnotenie a informácia že už hlasoval(tá by mohla vybehnúť aj pomocou javascriptu)...

Ďakujem...

    if ($hodnotenie_on_off==1){
      echo '<br />';
      echo '<br />';
      echo '<font>Hodnotenie užívateľov</font>';
      echo '<br />';
      require_once(DB);    
      $p=1;
      $sql = (mysql_query("SELECT id_clanku,ip_adresa FROM hodnotenie WHERE id_clanku='" . intval($_GET["id_knihy"]) . "'"));
      while ($data = mysql_fetch_array($sql, MYSQL_BOTH)){
      $ip_adresa2[$p]=$data['ip_adresa'];
      $p++;
      if ($_SERVER['REMOTE_ADDR']==$ip_adresa2[$i]){
          echo 'Prepáčte, ale už ste hodnotili!';
            }
      }           
      if ($_SERVER['REMOTE_ADDR']!==$ip_adresa2[$i]) {
      if (isset($_POST['znamka'])){
          $id_clanku = htmlspecialchars(intval($_GET["id_knihy"]));
          $znamka = htmlspecialchars($_POST['znamka']);
          $ip_adresa = ($_SERVER['REMOTE_ADDR']);  
            $sql = (mysql_query("INSERT INTO hodnotenie(id_clanku,znamka,ip_adresa) VALUES('$id_clanku','$znamka','$ip_adresa')"));
              if($sql){
                  echo 'Hodnotenie bolo odoslané!';
                      }
                else {
                  echo 'Prepáčte, nastala chyba!';
                     }
            }  
          echo '<form action="" method="post"><select name="znamka">';
            for ($i=1;$i<=10;$i++){
              echo '<option>'.$i.'</option>';
              }
              echo '<input type="submit" value="Odoslať">';
          echo '</select></form>'; }
      echo '<br />';
      DB_hodnotenie();
      }
    else {
      return false;
    }
xmark
Profil
Jestli to správně chápu, chceš to bez znovunačtení stránky. Hledej "anketa AJAX".
Mimochodem ten tvůj postup mě docela děsí. Proč z databáze taháš všechny záznamy a pak pro každý zjišťuješ, jestli se náhodou neshoduje IP adresa?
Samo
Profil
a aké riešenie by bolo lepšie? keby som do where zahrnul aj ipčku?
uhádol si, idem to pohľadať, díky zatiaľ..
//EDIT: Nič som nenašiel, nikde to čo hľadám, ak máš odkaz prosím hoď mi ho sem... dik
xmark
Profil
Samo:
a aké riešenie by bolo lepšie? keby som do where zahrnul aj ipčku?
Jednoznačně.

Chvilku jsem se snažil ten postup pochopit, ale neorientuju se v tom $ip_adresa, $ip_adresa2, $p .. nechápu.
S tím ajaxem počítej, že to bude složitější. Ale pokud chceš anketu bez znovunačtení stránky, neobejdeš se bez toho. A na druhou stranu.. je to tak častá věc, že možná najdeš kompletní řešení.
Samo
Profil
    if ($hodnotenie_on_off==1){
      echo '<br />';
      echo '<br />';
      echo '<font>Hodnotenie užívateľov</font>';
      echo '<br />';
      $hodnotenie==true;
      require_once(DB);    
      $sql = (mysql_query("SELECT znamka FROM hodnotenie WHERE id_clanku='" . intval($_GET["id_knihy"]) . "' AND ip_adresa='".($SERVER_["REMOTE_ADDR"])."'"));
      while ($data = mysql_fetch_array($sql, MYSQL_BOTH)){
      $vasa_znamka=$data['znamka'];
      $hodnotenie==false;           
      }           
      if (($_SERVER['REMOTE_ADDR']!==$ip_adresa2) and ($hodnotenie==true)) {
      if (isset($_POST['znamka'])){
          $id_clanku = htmlspecialchars(intval($_GET["id_knihy"]));
          $znamka = htmlspecialchars($_POST['znamka']);
          $ip_adresa = ($_SERVER['REMOTE_ADDR']);  
            $sql = (mysql_query("INSERT INTO hodnotenie(id_clanku,znamka,ip_adresa) VALUES('$id_clanku','$znamka','$ip_adresa')"));
              if($sql){
                  echo 'Hodnotenie bolo odoslané!';
                      }
                else {
                  echo 'Prepáčte, nastala chyba!';
                     }
            }  
          echo '<form action="" method="post"><select name="znamka">';
            for ($i=1;$i<=10;$i++){
              echo '<option>'.$i.'</option>';
              }
              echo '<input type="submit" value="Odoslať">';
          echo '</select></form>'; }
        else {
            echo 'Vaše hodnotenie: '.$vasa_znamka;
          }
      echo '<br />';  
        $sql = "SELECT id_clanku,znamka FROM hodnotenie WHERE  id_clanku='" . intval($_GET["id_knihy"]) . "'";
        $vysledok = mysql_query($sql) or die(mysql_error()); 
          while($data = mysql_fetch_array($vysledok)){
            $sucet=($sucet+($data['znamka']));
            $pocet++;
            }
            $priemerne_hodnotenie=($sucet/$pocet);
            echo 'Priemerné hodnotenie: '.round($priemerne_hodnotenie,2);
    }
    else {
      return false;
    }
Samo
Profil
Tak som trocha prerobil ten formulár, otázka smeruje prečo ak $hodnotenie == true; nefuguje???

    if ($hodnotenie_on_off==1){
      echo '<br />';
      echo '<br />';
      echo '<font>Hodnotenie užívateľov</font>';
      echo '<br />';
      require_once(DB);    
      $sql = (mysql_query("SELECT * FROM hodnotenie WHERE id_clanku='" . intval($_GET["id_knihy"]) . "' AND ip_adresa='".($_SERVER["REMOTE_ADDR"])."'"));
      $data = mysql_num_rows($sql);
      if ($data){
        $hodnotenie == false;
        }
      else {
        $hodnotenie == true;
        }
      /*while ($data = mysql_fetch_array($sql, MYSQL_BOTH)){
      $ip_adresa2=$data['ip_adresa'];
      $vasa_znamka=$data['znamka'];
      $hodnotenie==false;            
      }    */       
      if ($hodnotenie == true) {
      if (isset($_POST['znamka'])){
          $id_clanku = htmlspecialchars(intval($_GET["id_knihy"]));
          $znamka = htmlspecialchars($_POST['znamka']);
          $ip_adresa = ($_SERVER['REMOTE_ADDR']);  
            $sql = (mysql_query("INSERT INTO hodnotenie(id_clanku,znamka,ip_adresa) VALUES('$id_clanku','$znamka','$ip_adresa')"));
              if($sql){
                  echo 'Hodnotenie bolo odoslané!';
                      }
                else {
                  echo 'Prepáčte, nastala chyba!';
                     }
            }  
          echo '<form action="" method="post"><select name="znamka">';
            for ($i=1;$i<=10;$i++){
              echo '<option>'.$i.'</option>';
              }
              echo '<input type="submit" value="Odoslať">';
          echo '</select></form>'; }
        else {
            echo 'Vaše hodnotenie: '.$vasa_znamka;
          }
      echo '<br />';  
        $sql = "SELECT id_clanku,znamka FROM hodnotenie WHERE  id_clanku='" . intval($_GET["id_knihy"]) . "'";
        $vysledok = mysql_query($sql) or die(mysql_error()); 
          while($data = mysql_fetch_array($vysledok)){
            $sucet=($sucet+($data['znamka']));
            $pocet++;
            }
            $priemerne_hodnotenie=($sucet/$pocet);
            echo 'Priemerné hodnotenie: '.round($priemerne_hodnotenie,2);
    }
    else {
      return false;
    }
Tori
Profil
řádky 10 + 13 - máte tam porovnání místo přiřazení (rovnítko navíc).
Samo
Profil
ďakujem, už to ide ;)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0