Smajlíci v návštěvní knize – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Smajlíci v návštěvní knize – PHP – Fórum – Programujte.comSmajlíci v návštěvní knize – PHP – Fórum – Programujte.com

 

JMM
~ Redaktor
0
Grafoman
15. 8. 2008   #1
-
0
-

Zdravím, potřebuju pomoci. Našel jsem na netu návod na udělaní návštěvní knihy. Bohužel byla bez smajlíků. Vím, že to nebude těžký, ale nemohu přijít na to jak je při výpisu změnit z textových na obrázkové. Princip bych asi věděl str_replace ale nedaří se mi to aplikovat.

<html>

<head><title>Fotoklub Jičín - Návštěvní kniha</title>
<link rel="stylesheet" type="text/css" href="style.css" media="all" />
<script>
function smajlik(text) {
var textfield = document.getElementById('vzkaz');
if (textfield.createTextRange && textfield.caretPos) {
var caretPos = textfield.caretPos;
caretPos.text = caretPos.textarea.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
} else textfield.value += text;
textfield.focus(caretPos)
}
</script>
</head>
<body>
<?
include ("pripoj_kniha.php");
if($_POST[navstevni_kniha])
{
if(empty($_POST[nick]))
{
$message = "Musíte zadat vaši přezdívku";
$odeslano ="ne";
}
else
if(empty($_POST[vzkaz]))
{
$message = "Musíte zadat váš vzkaz";
$odeslano ="ne";
}
else
{
$nick = str_replace("<" , "<" , $_POST[nick]); // ochrana proti html tagĹŻm a javascriptu
$vzkaz = str_replace("<" , "<" , $_POST[vzkaz]);
$web = str_replace("<" , "<" , $_POST[web]);
$email = str_replace("<" , "<" , $_POST[email]);
$ip = $_SERVER["REMOTE_ADDR"];

$mesic["Jan"]="Ledna ";
$mesic["Feb"]="Ăšnora ";
$mesic["Mar"]="Března ";
$mesic["Apr"]="Dubna ";
$mesic["May"]="Května ";
$mesic["Jun"]="ÄŚervna ";
$mesic["Jul"]="ÄŚervence ";
$mesic["Aug"]="Srpna ";
$mesic["Sep"]="Září ";
$mesic["Oct"]="Ĺ˜Ă­jna ";
$mesic["Nov"]="Listopadu ";
$mesic["Dec"]="Prosince ";

$rok = date(" Y");$cislod=date("j ");
$datum = $cislod.$mesic[date("M")].$rok.date(" - G:i:s");

$zapis_vzkazu=MySQL_Query("insert into navstevni_kniha values ('','$nick', '$vzkaz' , '$datum' , '$web' , '$email','$ip');");

if($zapis_vzkazu)
{
$odeslano ="ano";
$message = "Váš vzkaz byl úspěšně přidán"; // vzkaz uspesne ulozen

/*
if($_POST['zapamatovat']=="checked") // Kontrola jestli si ma kniha zapamatovat uzivatele
{
setcookie("cnick", $nick, mktime(18,30,0,1,1,2020));
setcookie("cweb", $web, mktime(18,30,0,1,1,2020));
setcookie("cemail", $email, mktime(18,30,0,1,1,2020));
}
else
{
setcookie("cnick", "", mktime(18,30,0,1,1,2020));
setcookie("cweb", "", mktime(18,30,0,1,1,2020));
setcookie("cemail", "", mktime(18,30,0,1,1,2020));
}
*/
}
else
{
$message = "Váš vzkaz se nepodařilo přidat"; // vzkaz se nepodarilo pridat
}
}
}

$strankovani = $_GET['s']; // Tato promenna urcuje na ktere strance se prave nechazite
$pocet = $strankovani * 10;
$prispevky = mysql_query("SELECT * FROM navstevni_kniha ORDER BY id DESC LIMIT $pocet,10"); // vybrani jen prispevku ktere se maji zobrazit
$prispevky_radky = mysql_fetch_array($prispevky);
$prispevky_pocet = mysql_num_rows(mysql_query("SELECT * FROM navstevni_kniha ORDER BY id")); // celkem pocet prispevku


?>
<div id="kniha">
<h2>Návštěvní kniha</h2>
<p>V návštěvní knize je celkem <? echo($prispevky_pocet) ?> vzkazů. </p>

<h3>Přidat vzkaz</h3>

<form action="" method="post">
<table cellspacing="0" border="0">
<tr>
<td align="right">
<label for="nick"><strong>Jméno (Nick):</strong></label>
</td>
<td>
<input name="nick" type="text" id="nick" class="input" value="<? if($odeslano == "ne") {echo($_POST['nick']);}else{echo ($_COOKIE['cnick']);}?>" />
</td>
</tr>
<tr>
<td align="right">
<label for="email">E-mailová adresa:</label>
</td>
<td>
<input name="email" type="text" id="email" class="input" value="<? if($odeslano == "ne") {echo($_POST['email']);}else{echo($_COOKIE['cemail']);}?>" />
</td>
</tr>
<tr>
<td align="right">
<label for="web">WWW stránky:</label>
</td>
<td>
<input name="web" type="text" class="input" id="web" value="<? if($odeslano == "ne") {echo($_POST['web']);}else{echo ($_COOKIE['cweb']);}?>" />
(bez http://)
</td>
</tr>
<tr>
<td valign="top" align="right"><label for="vzkaz"><strong>Vzkaz:</strong></label></td>
<td><textarea name="vzkaz" id="vzkaz" class="input" cols="40" rows="6" wrap="soft"><? if($odeslano == "ne") {echo($_POST['vzkaz']);} ?></textarea></td>
</tr>
<tr>
<td colspan="2">
<!---<<input name="zapamatovat" type="checkbox" id="zapamatovat" value="checked" checked="checked" class="tlacitko" />
label for="zapamatovat">Zapamatovat si mě (Příště není nuné zadávat Nick, email a webovou stránku)</label>-->
</td>
</tr>
<tr>
<td colspan="2" style="text-align:center;">
<a href="javascript:smajlik(':-)','vzkaz');"><img border="0" src="smajlici/1.gif" alt=":-)" /></a>
<a href="javascript:smajlik(':-D','vzkaz');"><img border="0" src="smajlici/2.gif" alt=":-D" /></a>
<a href="javascript:smajlik('8-)','vzkaz');"><img border="0" src="smajlici/3.gif" alt="8-)" /></a>
<a href="javascript:smajlik('*1*','vzkaz');"><img border="0" src="smajlici/4.gif" alt="*1*" /></a>
<a href="javascript:smajlik('*2*','vzkaz');"><img border="0" src="smajlici/5.gif" alt="*2*" /></a>
<a href="javascript:smajlik('*3*','vzkaz');"><img border="0" src="smajlici/6.gif" alt="*3*" /></a>
<a href="javascript:smajlik(':-(','vzkaz');"><img border="0" src="smajlici/7.gif" alt=":-(" /></a>
<a href="javascript:smajlik('*4*','vzkaz');"><img border="0" src="smajlici/8.gif" alt="*4*" /></a>
<a href="javascript:smajlik('*5*','vzkaz');"><img border="0" src="smajlici/9.gif" alt="*5*" /></a>
<a href="javascript:smajlik('*6*','vzkaz');"><img border="0" src="smajlici/10.gif" alt="*6*" /></a>
<a href="javascript:smajlik('*7*','vzkaz');"><img border="0" src="smajlici/11.gif" alt="*7*" /></a>
<a href="javascript:smajlik('*8*','vzkaz');"><img border="0" src="smajlici/12.gif" alt="*8*" /></a>
<a href="javascript:smajlik(':-*','vzkaz');"><img border="0" src="smajlici/13.gif" alt=":-*" /></a>
<a href="javascript:smajlik('*9*','vzkaz');"><img border="0" src="smajlici/14.gif" alt="*9*" /></a>
<a href="javascript:smajlik('*11*','vzkaz');"><img border="0" src="smajlici/16.gif" alt="*11*" /></a>
<a href="javascript:smajlik('*12*','vzkaz');"><img border="0" src="smajlici/17.gif" alt="*12*" /></a>
<a href="javascript:smajlik('*13*','vzkaz');"><img border="0" src="smajlici/18.gif" alt="*13*" /></a>
<a href="javascript:smajlik('*14*','vzkaz');"><img border="0" src="smajlici/19.gif" alt="*14*" /></a>
<a href="javascript:smajlik('*15*','vzkaz');"><img border="0" src="smajlici/20.gif" alt="*15*" /></a>
</td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td colspan="2">
<div align="center"><input name="navstevni_kniha" type="submit" class="tlacitko" id="navstevni_kniha" value="Odeslat" /></div>
</td>
</tr>
<tr>
<td colspan="2" align="right" valign="top">
<p>Upozornění: Ip adresy jsou logovány. Sprosté a flame příspěvky budou mazány!</p>
</td>
</tr>
</table>
</form>

<h3>Vzkazy</h3>
<div align="center">
<? if ($strankovani != 0) {?>
<a href="?s=<? echo($strankovani - 1) ?>" title="Zobrazit novější příspěvky"><< Novější </a>
<? } ?>
<? if ($strankovani+1 < $prispevky_pocet/10) {?>
<a href="?s=<? echo($strankovani + 1) ?>" title="Zobrazit starší příspěvky">Starší >></a>
<? } ?>
</div>

<?
while ($prispevky_radky) // cyklus ktery zajistuje jednotlive zobrazovani vzkazu v knize, dle strankovani $s
{
?>
<div class="vzkaz">
<div class="vrch">
<strong class="nick">
<? if (($prispevky_radky[email] != "")&&($prispevky_radky[email] != "@")){ ?>
<a href="mailto:<? echo $prispevky_radky[email] ?>"><? } ?>
<? echo $prispevky_radky[nick] ?>
<? if (($prispevky_radky[email] != "")&&($prispevky_radky[email] != "@")){ ?></a><? } ?>
</strong>
<? if ($prispevky_radky[web] != "") { ?>[<a href="http://<? echo $prispevky_radky[web] ?>">www</a>] <? } ?>
<span class="datum"><? echo $prispevky_radky[datum] ?></span>
</div>
<div class="zprava">
<?
echo $prispevky_radky[vzkaz]
?>
</div>
</div>
<div class="oddelovac"></div>
<?
$prispevky_radky = mysql_fetch_array($prispevky);
}
?>
<div align="center">
<? if ($strankovani != 0) {?>
<a href="?s=<? echo($strankovani - 1) ?>" title="Zobrazit novější příspěvky"><< Novější </a>
<? } ?>
<? if ($strankovani+1 < $prispevky_pocet/10) {?>
<a href="?s=<? echo($strankovani + 1) ?>" title="Zobrazit starší příspěvky">Starší >></a>
<? } ?>
</div>
</div>
</body>
</html>

Poradíte? Nejlépe pokud byste napsali co kam vložit, už se s tím peru 3 dny a bezvýsledně.

Nahlásit jako SPAM
IP: 85.71.16.–
Jan Malý | web: www.malyphoto.cz, @malyphoto
15. 8. 2008   #2
-
0
-

Jak myslis pri vypisu? Ty myslis ze by se pridavali jako obrazky do toho textoveho pole? WYSIWYGy v JS nejsou vubec jednoduche, to by ti dalo podstatne vice prace nez cely guestbook.

Nebo myslis pri vypisu do te knihy? To je pro PHP (nebo jiny server side jazyk)

Nahlásit jako SPAM
IP: 78.102.164.–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
kezalb0
Newbie
15. 8. 2008   #3
-
0
-

myslis neco takovyho :

$replace[':-D']='<img src="smileys/1.gif">';....

jakoze se pri vypisu zmeni znaky za obrazek??

Nahlásit jako SPAM
IP: 78.156.128.–
JMM
~ Redaktor
0
Grafoman
15. 8. 2008   #4
-
0
-

To kezalb : jo jo přesně tohle myslím
To CommanderZ : při výpisu do té knihy...

Nahlásit jako SPAM
IP: 85.71.16.–
Jan Malý | web: www.malyphoto.cz, @malyphoto
15. 8. 2008   #5
-
0
-

Tak co je za problem

http://cz.php.net/str_replace

Nahlásit jako SPAM
IP: 78.102.164.–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
JMM
~ Redaktor
0
Grafoman
15. 8. 2008   #6
-
0
-

To CommanderZ : však sem psal že v principu vím jak to udělat... ale nedaří se mi to... tu funkci sem si už dřív našel, pracoval s ní ale nic... jinak s php nedělám.. tohle je jen výjmečná situace

Nahlásit jako SPAM
IP: 85.71.16.–
Jan Malý | web: www.malyphoto.cz, @malyphoto
15. 8. 2008   #7
-
0
-

Tak napis co mas, tam v tom kodu jsem nevidel nic tykajici se smajlu.

Jinak, tohle

$nick = str_replace("<" , "<" , $_POST[nick]); // ochrana proti html tagĹŻm a javascriptu 

$vzkaz = str_replace("<" , "<" , $_POST[vzkaz]);
$web = str_replace("<" , "<" , $_POST[web]);
$email = str_replace("<" , "<" , $_POST[email]);

tu udela funkce http://cz2.php.net/htmlentities

Nahlásit jako SPAM
IP: 78.102.164.–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
Tocimanko0
Grafoman
15. 8. 2008   #8
-
0
-

To CommanderZ : Celkom to rieši aj htmlspecialchars() . Tú používam ja.

Nahlásit jako SPAM
IP: 195.91.84.–
15. 8. 2008   #9
-
0
-

Sorry, to jsem myslel, htmlentities dela bordel v diakritice

Nahlásit jako SPAM
IP: 78.102.164.–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
JMM
~ Redaktor
0
Grafoman
15. 8. 2008   #10
-
0
-

To CommanderZ : no však píšu.. php vůbec neznám... a tohle není má práce... našel sem to jako návod na netu
jo jo... pač sem to co jsem tam vložil (ten kod s str_replace) sem zase smazal.. pač to byla asi blbost

Pomůžete? Vůbec nevím

Nahlásit jako SPAM
IP: 85.71.16.–
Jan Malý | web: www.malyphoto.cz, @malyphoto
15. 8. 2008   #11
-
0
-

Ok tak se na to podivame. Tohle rika dokumentace:

mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

$search je prekvapive to co se ma hledat - tedy textpvy smajlik.
$replace je to cim se to ma nahradit, tedy obrazkovy smajlik.
$subject je pak logicky to, v cem se to ma hledat- tedy text prispevku.

Stihas?

Pred nazvem funkce byva uveden navratovy typ - v timto pripade mixed - to znamena, ze to muze by vicemene cokoliv. Proto se tedy podivame opet do dokumentace do sekce "Return Values". Tam pisi:

This function returns a string or an array with the replaced values.

To znamena, ze tak funkce prekvapive vraci ten upraveny text.

Kdybych sel moc rychle tak me zastav, jasny?

Takze vysledny zdrojovy kod nahrazeni pro jednoho smajla bude vypadat asi takto:

$string = str_replace(':-)', '<img src="smajl1.gif" alt=":-)" />', $string);

Ted uz jenom prijit na to kam to dat. Budeme si muset vybrat, jestli to bude pred vstupem do databaze (tedy jestli se to bude ukladat do DB uz nahrazene), nebo jestli to bude az pri vystupu. Takove nahrazeni se vetsinou delaji prave az pri vystupu, protoze kdyby se pak nekdo pokousel ten vzkaz editovat, tak by videl akorat ten zrrojovy kod obrazku se smajlikem. Takze najdeme misto, kde se vypisuji vzkazy.

Zrovna tammame celkem hezky komentar "// cyklus ktery zajistuje jednotlive zobrazovani vzkazu v knize, dle strankovani $s", takze to bude asi nekde tam. Uz letmy pohled prozradi, ze data o vzkazu jsou nacitana z asociativniho pole $prispevky_radky. Samotny text vzkazu je pak vpod indexem vzkaz. Prekvapive. Takze ted uz staci jen dat ten nas kod tesne za while - tedy aby se provedl pro kazdy prispevek, ale jeste pred vypsanim veci, a upravime ho tak, aby tam misto "$string" bylo "$prispevky_radky[vzkaz]". Dostaneme tedy:



.
.
.
while ($prispevky_radky) // cyklus ktery zajistuje jednotlive zobrazovani vzkazu v knize, dle strankovani $s
{
$prispevky_radky[vzkaz] = str_replace(':-)', '<img src="smajl1.gif" alt=":-)" />', $prispevky_radky[vzkaz]);
?>
<div class="vzkaz">
<div class="vrch">
<strong class="nick">
.
.
.

A domaci ukol: pridat jeste dalsi smajliky.

A kdo mu poradi si ziska muj vecny hnev a utulne mistecko ve specialnim pekle pro kazisvety.

A jeste jeden vzkaz pro JMM: STRAVIL JSEM 20 MINUT PSANIM TEHLE BLBOSTI, JESTLI SI TO CELE DUKLADNE NEPRECTES A NEPOCHOPIS A PRISTE SE BUDES PTAT NA STEJNE TRIVIALNI VEC, TAK PUDU A URVU TI HLAVU!!! (to abys mel nejakou motivaci se snazit)

Nahlásit jako SPAM
IP: 81.30.238.–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
JMM
~ Redaktor
0
Grafoman
15. 8. 2008   #12
-
0
-

To CommanderZ : díky... u funkci jsem používál podobně... ale blbě... njn php mi nejde... já už skoro neprogramuju... takže php využiju jen výjmečně když není zbytí.. díky

Nahlásit jako SPAM
IP: 85.71.16.–
Jan Malý | web: www.malyphoto.cz, @malyphoto
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 5 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý