phpRS 2.8.x : phpRS Fórum
Toto fórum je určené výhradně k diskuzi o verzích phpRS v2.8.x.
phpRS - redakční a informační systém
Skrytí příspěvku v knize návštěv
Zaslán uživatelem/kou: janzak (IP adresa zaznamenána)
Datum: 2010-05-02, 22:50

Dobrý den

Chtěl bych vás požádat o radu, dělám si úpravu scriptu kniha návštěv a potřebuji aby se mi příspěvky, které zvolím skryly. Script jsem si upravil, ale když zvolím volbu skrýt, akce proběhne, ale políčko v databázi se pouze vymaže a zůstane prázdné. Defaultně mám v databázi nastaveno y jako visible yes a mělo by se to aktualizovat na n. Přikládám script, koukám do toho už hodiny a nevím kde je chyba.

// TRIEDA ADMINISTRACIE
class GB_ADMIN {

// FORMULAR
function formular($nameGB,$emailGB,$homepageGB,$messageGB,$akcia="pridat") {

if ($akcia == "pridat" || $akcia == "editovat") {
$javascript = javascript();
$javascript .= "<div align=\"center\">".pomocnik()."</div>";
$input = GB_ODOSLAT;
$otazka = false;
}

elseif ($akcia == "skryt") {
$otazka = "<p align=\"center\" class=\"txt\">".GB_HIDE_QUESTION."</p>\n";
$input = GB_SKRYT;
$javascript = false;
}

elseif ($akcia == "vymazat") {
$otazka = "<p align=\"center\" class=\"txt\">".GB_DELETE_QUESTION."</p>\n";
$input = GB_VYMAZAT;
$javascript = false;
}

echo '<p align="center" class="txt"><a href="'.RS_VYKONNYSOUBOR.'?akce=Book_show'.$GLOBALS['namemodul'].'" class="navigace txt-navigace">'.GB_BACK.'</a></p>

'.$otazka.'

<form method="post" id="gbform">
<table cellspacing="0" cellpadding="0" align="center" class="data-ram txt">
<tr>
<td>
<div style="float:left;">'.GB_MENO.'*<br />
<input name="nameGB" id="nameGB" size="20" value="'.$nameGB.'" class="textpole" />&nbsp;
</div>
<div style="float:left;">'.GB_EMAIL.'<br />
<input name="emailGB" id="emailGB" size="20" value="'.$emailGB.'" class="textpole" />&nbsp;
</div>
<div style="float:left;">'.GB_HOMEPAGE.'<br />
<input name="homepageGB" id="homepageGB" size="20" value="'.$homepageGB.'" class="textpole" />
</div>
</td>
</tr>
<tr>
<td>'.GB_SPRAVA.'*<br />
<textarea name="messageGB" id="messageGB" rows="10" cols="66" class="textbox">'.nl2br($messageGB).'</textarea>
</td>
</tr>
<tr>
<td>
<input type="submit" value="'.$input.'" class="tl" name="addedGB" id="addedGB">
</td>
</tr>
</table>
</form>
'.$javascript.'';
}

function hodnoty() {

$this->name = korekcia($_POST['nameGB']);
$this->id_reg = "1:".$GLOBALS['Uzivatel']->Ukaz("id")."";
$this->email = korekcia($_POST['emailGB']);
$this->homepage = korekcia($_POST['homepageGB']);
$this->message = korekcia(wrap_text($_POST['messageGB'],25));
$this->date = date("Y-m-d H:i:s");
$this->ip = $_SERVER['REMOTE_ADDR'];

if ($this->email === "@") {$this->email = false;}
if ($this->homepage === "http://") {$this->homepage = false;}

}

function zapis() {
return mysql_query("INSERT INTO ".$GLOBALS['rspredpona']."guestbook (name,id_regist,email,web,message,date,ip)
VALUES (
'".$this->name."',
'".$this->id_reg."',
'".$this->email."',
'".$this->homepage."',
'".$this->message."',
'".$this->date."',
'".$this->ip."')", $GLOBALS['dbspojeni']);
}

function uprav() {

return mysql_query("UPDATE ".$GLOBALS['rspredpona']."guestbook
SET
name = '".$this->name."',
email = '".$this->email."',
web = '".$this->homepage."',
message = '".$this->message."'
WHERE id = ".$_GET['prid']."",$GLOBALS['dbspojeni']);

}

function skryj() {

return mysql_query("UPDATE ".$GLOBALS['rspredpona']."guestbook SET visible = '$vis' WHERE id = ".$_GET['prid']."", $GLOBALS['dbspojeni']);

}


function vymaz() {
return mysql_query("DELETE FROM ".$GLOBALS['rspredpona']."guestbook WHERE id = ".$_GET['prid']."", $GLOBALS['dbspojeni']);
}

// PRIDANIE DO DB A ZISTENIE INFORMACII O AUTOROVI
function pridat() {

if (isset($_POST['addedGB'])) {

$this->hodnoty();

$commentGB = overovanie($this->name,$this->email,$this->homepage,$this->message);

if (!$commentGB) {
$addnew = $this->zapis();

if ($addnew) {
echo '<p align="center"><strong>'.GB_ADD_OK.'</strong></p>
<p align="center" class="txt"><a href="'.RS_VYKONNYSOUBOR.'?akce=Book_show'.$GLOBALS['namemodul'].'" class="navigace txt-navigace">'.GB_BACK.'</a></p>';
}
}
else {
echo "<div align=\"center\">$commentGB</div>\n";
$this->formular($this->name,$this->email,$this->homepage,$this->message,"pridat");
}
}
else {
$sql_user = mysql_query("SELECT jmeno, email, url FROM ".$GLOBALS['rspredpona']."user WHERE user = ".$GLOBALS['Uzivatel']->Ukaz("username")."",$GLOBALS['dbspojeni']);
$user = mysql_fetch_assoc($sql_user);

$nameGB = $user['jmeno'];
$emailGB = $user['email'];
$homepageGB = $user['url'];

$this->formular($nameGB,$emailGB,$homepageGB,"","pridat");
}
}

// EDITACIA PRISPEVKU
function editovat() {

$hodnost = $GLOBALS['Uzivatel']->Ukaz("idtyp");

if ($hodnost <= 1) {
echo '<p align="center">'.GB_BLOCK_ACCESS.'</p>
<p align="center" class="txt"><a href="'.RS_VYKONNYSOUBOR.'?akce=Book_show'.$GLOBALS['namemodul'].'" class="navigace txt-navigace">'.GB_BACK.'</a></p>';
exit();
}

if (isset($_POST['addedGB'])) {

$this->hodnoty();

$commentGB = overovanie($this->name,$this->email,$this->homepage,$this->message);

if (!$commentGB) {

$addContent = $this->uprav();

if ($addContent) {
echo '<p align="center"><strong>'.GB_EDIT_OK.'</strong></p>
<p align="center" class="txt"><a href="'.RS_VYKONNYSOUBOR.'?akce=Book_show'.$GLOBALS['namemodul'].'">'.GB_BACK.'</a></p>';
}
}
else {
echo "<div align=\"center\">$commentGB</div>\n";
$this->formular($this->name,$this->email,$this->homepage,$this->message);
}
}
else {
$sql_dotazakc = mysql_query("SELECT name, email, web, message FROM ".$GLOBALS['rspredpona']."guestbook WHERE id= ".$_GET['prid']."",$GLOBALS['dbspojeni']);
$dotazakc = mysql_fetch_assoc($sql_dotazakc);

$this->nameGB = $dotazakc['name'];
$this->emailGB = $dotazakc['email'];
$this->homepageGB = $dotazakc['web'];
$this->messageGB = $dotazakc['message'];

$this->formular($this->nameGB,$this->emailGB,$this->homepageGB,$this->messageGB);
}
}


// Skrýt PRISPEVOK
function skryt() {

$hodnost = $GLOBALS['Uzivatel']->Ukaz("idtyp");

if ($hodnost <= 1) {
echo '<p align="center">'.GB_BLOCK_ACCESS.'</p>
<p align="center" class="txt"><a href="'.RS_VYKONNYSOUBOR.'?akce=Book_show'.$GLOBALS['namemodul'].'">'.GB_BACK.'</a></p>';
exit();
}

if (isset($_POST['addedGB'])) {
$addContent = $this->skryj();

if (!$addContent) {
echo "<p align=\"center\" style=\"color:red\">".GB_ACTION_ERROR."\n</p>";
}
else {
echo '<p align="center"><strong>'.GB_MESSAGE_VIS.'</strong></p>
<p align="center" class="txt"><a href="'.RS_VYKONNYSOUBOR.'?akce=Book_show'.$GLOBALS['namemodul'].'">'.GB_BACK.'</a></p>';
}
}
else {
$sql_dotazakc=mysql_query("SELECT name, email, web, message, visible FROM ".$GLOBALS['rspredpona']."guestbook WHERE id='".$_GET['prid']."'",$GLOBALS['dbspojeni']);
$dotazakc = mysql_fetch_assoc($sql_dotazakc);

$this->nameGB = $dotazakc['name'];
$this->emailGB = $dotazakc['email'];
$this->homepageGB = $dotazakc['web'];
$this->messageGB = $dotazakc['message'];

if ($row['visible'] == "y") {
$vis = "n";
} else {
$vis = "y";
}

$this->formular($this->nameGB,$this->emailGB,$this->homepageGB,$this->messageGB,"skryt");
}

}


// VYMAZAT PRISPEVOK
function vymazat() {

$hodnost = $GLOBALS['Uzivatel']->Ukaz("idtyp");

if ($hodnost <= 1) {
echo '<p align="center">'.GB_BLOCK_ACCESS.'</p>
<p align="center" class="txt"><a href="'.RS_VYKONNYSOUBOR.'?akce=Book_show'.$GLOBALS['namemodul'].'">'.GB_BACK.'</a></p>';
exit();
}

if (isset($_POST['addedGB'])) {
$addContent = $this->vymaz();

if (!$addContent) {
echo "<p align=\"center\" style=\"color:red\">".GB_ACTION_ERROR."\n</p>";
}
else {
echo '<p align="center"><strong>'.GB_MESSAGE_DEL.'</strong></p>
<p align="center" class="txt"><a href="'.RS_VYKONNYSOUBOR.'?akce=Book_show'.$GLOBALS['namemodul'].'">'.GB_BACK.'</a></p>';
}
}
else {
$sql_dotazakc=mysql_query("SELECT name, email, web, message FROM ".$GLOBALS['rspredpona']."guestbook WHERE id='".$_GET['prid']."'",$GLOBALS['dbspojeni']);
$dotazakc = mysql_fetch_assoc($sql_dotazakc);

$this->nameGB = $dotazakc['name'];
$this->emailGB = $dotazakc['email'];
$this->homepageGB = $dotazakc['web'];
$this->messageGB = $dotazakc['message'];

$this->formular($this->nameGB,$this->emailGB,$this->homepageGB,$this->messageGB,"vymazat");
}

}
// KONIEC TRIEDY
}

// ZOBRAZNIE PRISPEVKOV
function showGuestbook() {

$page = strana();

$result = mysql_query("SELECT
SQL_CALC_FOUND_ROWS
id,
name,
id_regist,
email,
web,
message,
DATE_FORMAT(date,'%k:%i - %e.%c.%Y') AS date,
ip,
visible
FROM ".$GLOBALS['rspredpona']."guestbook
ORDER BY id DESC
LIMIT ".(($page-1)*$GLOBALS['pocetprisp']).",".$GLOBALS['pocetprisp']."",$GLOBALS['dbspojeni']);

function stav($vis) {
if ($vis == "y") {
$img = "Viditelný";
} else {
$img = "Skrytý";
}

return($img);
}

$numrows = mysql_result(mysql_query("SELECT FOUND_ROWS()"), 0);

$hodnost = $GLOBALS['Uzivatel']->Ukaz("idtyp");

if ($hodnost == 2) {
echo "<p align=\"center\"><a href=\"".RS_VYKONNYSOUBOR."?akce=Nastavenie".$GLOBALS['namemodul']."\" class=\"navigace txt-navigace\">".GB_CONFIG."</a></p>\n";
}

echo '<p align="center"><a href="'.RS_VYKONNYSOUBOR.'?akce=NewMessage'.$GLOBALS['namemodul'].'" class="navigace txt-navigace">'.GB_ADD_MESSAGE.'</a></p>

<p align="center" border="1" class="txt">'.GB_SHOWMESSAGES.'</p>

<table border="0" align="center" class="gb_ram txt" width="60%">
<tr>
<th width="95%">'.GB_SPRAVA.'</th>
<th width="5%">'.GB_ACTION.'</th>
</tr>';

if (empty($numrows)) {
echo "\t<tr class=\"txt\">\n\t\t<td align=\"center\" colspan=\"2\">".GB_ZIADNE_PRISPEVKY."</td>\n\t</tr>\n";
}

// navigator
$navigator = new strankovanie($numrows,$GLOBALS['pocetprisp'],$GLOBALS['pocetnav']);
$navlista = '<div align="center">'.$navigator->navigator().'</div>';
echo $navlista;

$page_entry_start = $navigator->poradie();

while ($row = mysql_fetch_assoc($result)) {
$page_entry_start = $page_entry_start - 1;
$ide = $page_entry_start;
$message = recreateInput($row['message']);
$message = str_replace(smajl_text(),smajl_obr(),$message);
$img = stav($row["visible"]);

if ($hodnost > 0) {
$editovat = '<p><a href="'.RS_VYKONNYSOUBOR.'?akce=EditMessage'.$GLOBALS['namemodul'].'&amp;prid='.$row['id'].'">'.GB_EDIT.'</a></p>';
$skryt = '<p><a href="'.RS_VYKONNYSOUBOR.'?akce=VisibleMessage'.$GLOBALS['namemodul'].'&amp;prid='.$row['id'].'">' . $img .'</a></p>';
$zmazat = '<p><a href="'.RS_VYKONNYSOUBOR.'?akce=DeleteMessage'.$GLOBALS['namemodul'].'&amp;prid='.$row['id'].'">'.GB_DELETE.'</a></p>';

}
if ($row['id_regist']) {$row['name'] = "".$row['name']." &reg;";}

echo ' <tr class="gb_ram_obal">
<td class="gb_ram_obal">
<span class="gb_meno">'.$ide.' '.$row['name'].'</strong> &nbsp; '.$row['date'].' | <em>email: </em>'.$row['email'].'</span>
<div class="gb_post-middle">'.nl2br($message).'</div>
<span class="gb_adresy"><em>web:</em> '.$row['web'].' | <em>IP:</em>'.$row['ip'].'</span>
</td>
<td>
'.$editovat.'
'.$skryt.'
'.$zmazat.'
</td>
</tr>
';
}

echo "</table>\n";

// spodny navigator
echo $navlista;
}

// NASTAVENIE KNIHY NAVSTEV
function Nastavenie() {

$hodnost = $GLOBALS['Uzivatel']->Ukaz("idtyp");

if ($hodnost != 2) {
echo '<p align="center">'.GB_BLOCK_ACCESS.'</p>
<p align="center" class="txt"><a href="'.RS_VYKONNYSOUBOR.'?akce=Book_show'.$GLOBALS['namemodul'].'" class="navigace txt-navigace">'.GB_BACK.'</a></p>';
exit();
}

if (isset($_POST['pridat'])) {

$cmd = "UPDATE ".$GLOBALS['rspredpona']."guestbook_konf SET
pocet_na_stranu = '".$_POST['pocet_na_stranu']."',
pocet_stran = '".$_POST['pocet_stran']."',
registrovany = '".$_POST['registrovany']."',
pomoc = '".$_POST['pomoc']."',
typ_casu = '".$_POST['typ_casu']."'";

$addContent = mysql_query($cmd,$GLOBALS['dbspojeni']);

if ($addContent) {
echo '<p align="center"><strong>'.GB_CONFIG_OK.'</strong></p>
<p align="center" class="txt"><a href="'.RS_VYKONNYSOUBOR.'?akce=Book_show'.$GLOBALS['namemodul'].'">'.GB_BACK.'</a></p>';
}
}
else {
$sql_dotazakc = mysql_query("SELECT * FROM ".$GLOBALS['rspredpona']."guestbook_konf",$GLOBALS['dbspojeni']);
$dotazakc = mysql_fetch_assoc($sql_dotazakc);

$pocet_na_stranu = $dotazakc['pocet_na_stranu'];
$pocet_stran = $dotazakc['pocet_stran'];
$registrovany = $dotazakc['registrovany'];
$pomoc = $dotazakc['pomoc'];
$typ_casu = $dotazakc['typ_casu'];

echo '<p align="center" class="txt"><a href="'.RS_VYKONNYSOUBOR.'?akce=Book_show'.$GLOBALS['namemodul'].'" class="navigace txt-navigace">'.GB_BACK.'</a></p>
<form method="post" action="'.$_SERVER['REQUEST_URI'].'">
<table align="center" border="1" class="data-ram txt">
<tr>
<td>'.GB_MESSAGES_ON_PAGE.'</td>
<td><input name="pocet_na_stranu" id="pocet_na_stranu" size="2" value="'.$pocet_na_stranu.'" class="textpole" /></td>
</tr>
<tr>
<td>'.GB_NUMBER_PAGES.'</td>
<td><input name="pocet_stran" id="pocet_stran" size="2" value="'.$pocet_stran.'" class="textpole" /></td>
</tr>
<tr>
<td>'.GB_REGISTRATED.'</td>
<td><select name="registrovany" id="registrovany" class="textpole">';
if ($registrovany) {
echo '<option value="0">'.GB_NO.'</option>';
echo '<option value="1" selected="selected">'.GB_YES.'</option>';
}
else {
echo '<option value="0" selected="selected">'.GB_NO.'</option>';
echo '<option value="1">'.GB_YES.'</option>';
}
echo '</select></td>
</tr>
<tr>
<td>'.GB_SHOW_HELP.'</td>
<td><select name="pomoc" id="pomoc" class="textpole">';
if ($pomoc) {
echo '<option value="0">'.GB_NO.'</option>';
echo '<option value="1" selected="selected">'.GB_YES.'</option>';
}
else {
echo '<option value="0" selected="selected">'.GB_NO.'</option>';
echo '<option value="1">'.GB_YES.'</option>';
}
echo '</select></td>
</tr>
<tr>
<td>'.GB_DATE_TYPE.'</td>
<td><input name="typ_casu" id="typ_casu" size="25" value="'.$typ_casu.'" class="textpole" /></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" id="pridat" name="pridat" value="'.GB_ODOSLAT.'" class="tl">
</td>
</tr>
</table>
</form>';
}
}
?>

Re: Skrytí příspěvku v knize návštěv
Zaslán uživatelem/kou: Kryšpín (IP adresa zaznamenána)
Datum: 2010-05-03, 21:52

Moc se v tom neorientuju, ale jak se prosímtě dostane do funkce skryj() ta správná hodnota proměnné $vis?

Nemůže být problém v tomhle? že prostě $vis deklaruješ v jedné funkci a pak zavoláš funci skryj() ale hodnota $vis se už nedostane dovnitř? (jako dovnitř té funkce skryj() ?)

Třeba kdybys tu funkci přepsal takhle:

function skryj($vis = '') {

return mysql_query("UPDATE ".$GLOBALS['rspredpona']."guestbook SET visible = '$vis' WHERE id = ".$_GET['prid']."", $GLOBALS['dbspojeni']);

}

a zavolal takhle:

$addContent = $this->skryj('n');

třeba by to fungovalo?

Hepbegclub | Čáslavsko | MN Čáslav

Re: Skrytí příspěvku v knize návštěv
Zaslán uživatelem/kou: janzak (IP adresa zaznamenána)
Datum: 2010-05-03, 22:28

Ahoj a díky za odpověď, mám pocit že touto cestou to taky nepůjde, mám v adminu v knize udělané tlačítko a když na něho kliknu potřebuji aby se příspěvek z knihy skryl a když na něj kliknu podruhé tak potřebuji aby se zase objevil. Jenže nevím jak jsi psal i ty, jak tam do té funkce skryj() předat tu hodnotu proměnné $vis. a na tom mi to stojí. Udělal jsem si i ten text na tlačítku aby se měnil na Viditelný/Skrytý podle údaje v db ale tohle mě nějak neleze hlavou.

Re: Skrytí příspěvku v knize návštěv
Zaslán uživatelem/kou: Kryšpín (IP adresa zaznamenána)
Datum: 2010-05-03, 22:42

Jestli to máš na tom tlačítku, tak Ti nic nebrání v tom abys tam měl v tom formuláři třeba nějaké hidden pole, do tkerého se Ti vloží, taktéž podle stejného údaje v databází to příslušné y/n co tam zrovna budeš chtít vložit a tu funkci pak zavoláš s parametrem z toho skrytého pole, které se ti předá v $_POST['moje_skryte_pole'].

Na tlačítku Skrytý, ve skrytém poli n a v opačném případě obráceně (Viditelný ---> y) a musí to fungovat. Takhle si někde zapínám a vypínám google mapy v administraci a funguje to docela dobře.

Hepbegclub | Čáslavsko | MN Čáslav

Re: Skrytí příspěvku v knize návštěv
Zaslán uživatelem/kou: janzak (IP adresa zaznamenána)
Datum: 2010-05-04, 11:25

Prosím tě mohl by jsi mě poslat nějakou ukázku, potřebuju nakopnout jak to dát dokupy. Děkuji

Re: Skrytí příspěvku v knize návštěv
Zaslán uživatelem/kou: Kryšpín (IP adresa zaznamenána)
Datum: 2010-05-04, 23:40

Hele, tak ještě jinak a jednodušeji:

Tu funkc skryj() přepiš takhle:

function skryj() {

return mysql_query("UPDATE ".$GLOBALS['rspredpona']."guestbook SET visible =
(CASE
when visible = 'y' then 'n'
when visible = 'n' then 'y'
END)
WHERE id = ".$_GET['prid']."", $GLOBALS['dbspojeni']);

}

mě obdobná funkce, kterou jsem právě stvořil (lišila se jen názevm tabulky a těch sloupců periodicky při zavolání změní tu hodnotu na opačnou, než která tam právě je...


Hepbegclub | Čáslavsko | MN Čáslav

Re: Skrytí příspěvku v knize návštěv
Zaslán uživatelem/kou: janzak (IP adresa zaznamenána)
Datum: 2010-05-05, 07:17

Ahoj a díky moc, v jednoduchosti je síla, vše funguje, takže díky :)

Re: Skrytí příspěvku v knize návštěv
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2010-05-05, 14:55

function skryj() {
  return mysql_query("UPDATE ".$GLOBALS['rspredpona']."guestbook SET visible =
  (CASE
  when visible = 'y' then 'n'
  when visible = 'n' then 'y'
  END)
  WHERE id = ".(int)$_GET['prid']."", $GLOBALS['dbspojeni']);
}

Re: Skrytí příspěvku v knize návštěv
Zaslán uživatelem/kou: janzak (IP adresa zaznamenána)
Datum: 2010-05-05, 16:53

Pro pa3k: Prosím tě k čemu ted dodatek slouží? Díval jsem se do ostatních funkcí a všechny mají tu koncovku
WHERE id = ".$_GET['prid']."",$GLOBALS['dbspojeni']); bez toho (int)

Re: Skrytí příspěvku v knize návštěv
Zaslán uživatelem/kou: Kryšpín (IP adresa zaznamenána)
Datum: 2010-05-05, 23:23

Pravděpodobně bezpečnostní opatření. Pokud tam dáš to (int) tak se obsah $_GET['prid'] přetypuje na číslo, na integer. (alespoň v tom dotazu, jinak v té proměnné zůstává to co tam bylo).

takže se Ti pak nemůže stát, že by v dotazu bylo něco jiného, co by způsobilo nějaké problémy...

Hepbegclub | Čáslavsko | MN Čáslav

Re: Skrytí příspěvku v knize návštěv
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2010-05-06, 19:40


Re: Skrytí příspěvku v knize návštěv
Zaslán uživatelem/kou: janzak (IP adresa zaznamenána)
Datum: 2010-05-06, 22:36

Pro pa3k a Kryšpín: Díky za vysvětlení, jak tak koukám budu tím muset ošetřit celej ten script, protože to tam v těch příkazech vůbec nikde není.



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.