phpRS help fórum : phpRS Fórum
Hlavní diskuzní phpRS fórum. Najdete zde odpovědi na otázky týkající se provozu a instalace phpRS systému.
phpRS - redakční a informační systém
Možnost skrýt u anket počet odpovědi
Zaslán uživatelem/kou: lojzik (IP adresa zaznamenána)
Datum: 2010-01-03, 21:30

Ahoj,
chtěl bych se zeptat, zda někdo nepřišel na to, nebo ví, jak udělat, aby lidi, kteří ještě nehlasovali v ankete nemohli vidět stav hlasů u jednotlivých odpovědí? A naopak když odpoví, tak aby se mu již zobrazily? Všem děkuji za pomoc.

Re: Možnost skrýt u anket počet odpovědi
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2010-01-04, 17:20

Neručím za funkčnosť, pretože to je asi pre staršiu verziu, no pre inšpiráciu by to malo stačiť. Podobne to bude aj pre aknetu pripojenú k článku.
// systemovy blok: ankety
function Anketa()
{
// zjisteni aktivni ankety
$zjistanketa=NactiConfigProm('aktivni_anketa',0);
// podminka zobrazeni -> nalezeni aktivni ankety; ve starsich verzich "false" = anketa neexistuje
if ($zjistanketa>0&&$zjistanketa!='false'):
  $dotazotazka=phprs_sql_query("select otazka from ".$GLOBALS["rspredpona"]."ankety where ida='".$zjistanketa."'",$GLOBALS["dbspojeni"]);
  if ($dotazotazka!=0&&phprs_sql_num_rows($dotazotazka)>0):
    list($ankotazka)=phprs_sql_fetch_row($dotazotazka); // anketni otazka
  endif;
  $dotazcelkem=phprs_sql_query("select sum(pocitadlo) as celkem from ".$GLOBALS["rspredpona"]."odpovedi where anketa='".$zjistanketa."'",$GLOBALS["dbspojeni"]);
  if ($dotazcelkem!=0&&phprs_sql_num_rows($dotazcelkem)>0):
    list($celkemhlasu)=phprs_sql_fetch_row($dotazcelkem); // celkem hlasu
  endif;

  if ($celkemhlasu==0): $jednoproc=0; else: $jednoproc=140/$celkemhlasu; endif; // zjisteni poctu dilku na jeden hlas

  // nacteni prehledu moznych odpovedi
  $dotazodp=phprs_sql_query("select ido,odpoved,pocitadlo from ".$GLOBALS["rspredpona"]."odpovedi where anketa='".$zjistanketa."' order by ido",$GLOBALS["dbspojeni"]);
  $pocetodp=phprs_sql_num_rows($dotazodp);

  $barva_prouzku=1; // barva procentualniho prouzku u odpovedi

  $GLOBALS['anketyinc'] = true;
  include_once "ankety.php";
  $akt_obsah_cookies = AnkCookies_Nacti();
  //echo $akt_obsah_cookies;
  if (AnkCookies_JeReload($akt_obsah_cookies,$zjistanketa)==0 && TestNaOpakujiciIPbezZapisu('ank'.$GLOBALS['anketa'],$GLOBALS['rsconfig']['anketa_delka_omezeni'],$GLOBALS['rsconfig']['anketa_max_pocet_opak'])==0)
  {
    /*
    //      V ANKETE SA ESTE NEHLASOVALO - ZOBRAZENIE HLASOVACIEHO FORMULARA 
    */

    $txt_anketa = '
			<div class="box4_anketa">
				<form method="post" action="ankety.php">
					<input type="hidden" name="akce" value="hlasuj" />
					<input type="hidden" name="anketa" value="'.$zjistanketa.'" />
					<input type="hidden" name="cil" value="ref" />
					<p class="box4_anketa">'.$ankotazka.'</p>';
    while($akt_pole_data = phprs_sql_fetch_assoc($dotazodp))
    {
        $txt_anketa .= '
					<p class="anketa_odpoved"><input name="hlas" type="radio" value="'.$akt_pole_data["ido"].'" id="inq'.$akt_pole_data["ido"].'" /> <label for="inq'.$akt_pole_data["ido"].'">'.$akt_pole_data["odpoved"].'</label> </p>';
    }
    $txt_anketa .= '
					<input name="vote" type="submit" value="hlasovať" class="button" />
				</form>
				<a href="ankety.php">staršie ankety</a>
			</div>';
  } 
  else {
    /*
    //      V ANKETE SA UZ HLASOVALO - ZOBRAZENIE VYSLEDKOV 
    */

	$txt_anketa = '
			<div class="box4_anketa">'.$ankotazka."</div>\n";
	$txt_anketa .= '
			<ul class="box4_anketa_ul">';
	while($akt_pole_data = phprs_sql_fetch_assoc($dotazodp)):
		$velikost=ceil($jednoproc*$akt_pole_data["pocitadlo"])/1.25;
		$txt_anketa.="\n\t\t\t<li>".$akt_pole_data["odpoved"]."&nbsp;".$akt_pole_data["pocitadlo"]."&nbsp;".RS_SP_POCET_HLA;
		// pruh generovany skrze PHP skript (GD knihovna)
		// $txt_anketa.="<img src=\"pictures.php?rvel=".$velikost."&amp;barva=".$barva_prouzku."\" height=\"8\" width=\"".$velikost."\" alt=\"".$akt_pole_data["pocitadlo"]."\" /> (".$akt_pole_data["pocitadlo"]." ".RS_SP_POCET_HLA.")<br />\n";
		// pruh generovany skrze CSS styly
		$txt_anketa.="\n\t\t\t<div class=\"anketa-blok-odp-cara\"><div class=\"anketa-blok-odp-cara-hlasy\" style=\"width: ".$velikost."px;\" title=\"".$akt_pole_data["pocitadlo"]."\">&nbsp;</div></div></li>\n";
		$barva_prouzku++;
	endwhile;
	$txt_anketa .="\t\t\t</ul>";
	$txt_anketa .="\n\t\t\t<div class=\"box4_anketa2\">".RS_SP_CELKEM_HLA.": ".$celkemhlasu."</div>";
	$txt_anketa .= "\n\t\t\t".'<div class="box4_anketa2"><a href="ankety.php">staršie ankety</a></div>'."\n";
 
  }

  // zobrazeni menu
  switch ($GLOBALS["vzhledwebu"]->AktBlokTyp()):
    case 1: Blok1($GLOBALS["vzhledwebu"]->AktBlokNazev(),$txt_anketa); break;
    case 2: Blok2($GLOBALS["vzhledwebu"]->AktBlokNazev(),$txt_anketa); break;
    case 3: Blok3($GLOBALS["vzhledwebu"]->AktBlokNazev(),$txt_anketa); break;
    case 4: Blok4($GLOBALS["vzhledwebu"]->AktBlokNazev(),$txt_anketa); break;
    case 5: Blok5($GLOBALS["vzhledwebu"]->AktBlokNazev(),$txt_anketa); break;
    case 6: Blok6($GLOBALS["vzhledwebu"]->AktBlokNazev(),$txt_anketa); break;
    case 7: Blok7($GLOBALS["vzhledwebu"]->AktBlokNazev(),$txt_anketa); break;
    case 8: Blok8($GLOBALS["vzhledwebu"]->AktBlokNazev(),$txt_anketa); break;
    case 9: Blok9($GLOBALS["vzhledwebu"]->AktBlokNazev(),$txt_anketa); break;
    default: Blok1($GLOBALS["vzhledwebu"]->AktBlokNazev(),$txt_anketa); break;
  endswitch;
endif;
}


Re: Možnost skrýt u anket počet odpovědi
Zaslán uživatelem/kou: lojzik (IP adresa zaznamenána)
Datum: 2010-01-04, 18:29

Děkuji Ti.


Ale píše mi to chybu na řádku 313 v ankety.php, kde mám:

// tvorba stranky
$vzhledwebu->Generuj();
ObrTabulka(); // Vlozeni layout prvku


Přesněji to píše:
Fatal error: Call to a member function Generuj() on a non-object in /mnt/data/accounts/f/fcarsenalcz/data/www/ankety.php on line 313



Celkem upraveno 1×. Poslední úprava lojzik v 04.01.2010 18:41.

Re: Možnost skrýt u anket počet odpovědi
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2010-01-11, 15:23

Uvedená úprava sa týka súboru spefce.php

Re: Možnost skrýt u anket počet odpovědi
Zaslán uživatelem/kou: lojzik (IP adresa zaznamenána)
Datum: 2010-01-11, 17:02

To já vím. Jenže jakmile dám do specfce.php to, co si napsal, hodí mi to tu chybu.

Re: Možnost skrýt u anket počet odpovědi
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2010-01-12, 08:39

Je treba ešte vytvoriť funkciu TestNaOpakujiciIPbezZapisu tak aby nerobila INSERT do databázy:
// test na opakujici se IP adresu
function TestNaOpakujiciIPbezZapisu($akt_typ_kontr_str = '', $akt_delka_omezeni = 0, $akt_max_pocet_opak = 0)
{
$vysledek=1; // default true; 1 = opakuje se, 0 = neopakuje se

$akt_ip_adresa=$_SERVER["REMOTE_ADDR"]; // ip adresa ctenare
$akt_cas=Date("Y-m-d H:i:s");

// testovani dotaz
$dotazip=phprs_sql_query("select idk,pocet from ".$GLOBALS["rspredpona"]."kontrola_ip where cas>='".$akt_cas."' and ip_adresa='".$akt_ip_adresa."' and typ='".$akt_typ_kontr_str."'",$GLOBALS["dbspojeni"]);
if ($dotazip!=0):
  if (phprs_sql_num_rows($dotazip)==0):
    $vysledek=0; // false; 0 = neopakuje se
  else:
    // nacteni ziskanych dat
    $akt_pole_data=phprs_sql_fetch_assoc($dotazip);
    // test na pocet opakovani
    if ($akt_pole_data['pocet']<$akt_max_pocet_opak):
      $vysledek=0; // false; 0 = neopakuje se
    endif;
  endif;
endif;

return $vysledek;
}

Potom v ankety.php na riadok 261 (pred text: ) doplniť:
if (!isset($GLOBALS['anketyinc'])) {

a na koniec súboru, pred ?>
}


a mám ešte doplnený switch o možnosť návratu na rovnakú stránku podľa refereru:
switch ($GLOBALS['cil']):
                case 'index':
                  header('Location: index.php');
                  exit();
                  break;
                case 'vysledek':
                  $GLOBALS['akce']='vysledek';
                  break;
                case 'url':
                  header('Location: '.$GLOBALS['cil_url']);
                  exit();
                  break;
                case 'ref':
                  header('Location: '.$_SERVER['HTTP_REFERER']);
                  exit();
                  break;
              endswitch;





Celkem upraveno 1×. Poslední úprava pa3k v 12.01.2010 08:40.



Lituji, ale pouze registrovaní uživatelé mohou zasílat příspěvky do této sekce.
This forum powered by Phorum and designed by STaNBoSS.