gwypych
Reputacja
727
Głosów ogółem

- 28

- 5
- Prawdziwe imię
- Grzegorz
- Członek od
- 2 lata, 2 miesiące
- Ostatnio widziany
- 2 miesiące, 1 tydzień temu
- Witryna
- http://www.smi....
- Miejscowość
- śląsk
- Wiek
- 32
O mnie
Programista, projektant, analityk
Pytania: 1
-
2010-03-26 12:46:44
Zapewnienie unikalności ocen [zamknięte]
Poszukuję pomysłu na zabezpieczenie formularza oceniania. Mamy sobie serwis, w którym użytkownicy mogą dodawać swoje tr
Odpowiedzi: 55
-
2010-03-13 23:04:58 Licznik w SMARTY
W najprostszej wersji można to zrobić tak:
{section name=cats loop=$categories->name} <table class="categories"> <tr> {assign var="counter" value=0} {section name=sys loop=$systems->id} {if $systems->category[sys] == $categories->id[cats]} {assign var="counter" value=$counter+1} <td> {$systems->name} </td> {/if} {if $counter % 5 == 0 && $counter != 0} </tr><tr> {/if} {/section} <tr> </table> {/section}Do tego warto jeszcze uzupełnić brakujące komórki po zakończeniu iteracji z licznikiem $counter
-
2010-03-29 13:15:29 PHP: jak odwrócić działanie mysql_real_escape_string
Podana funkcja ma na celu zabezpieczenie danych wejściowych, które są następnie przekazywane do bazy. Jest to jedna z metod zapobiegania SQLInjection. Chodzi o zestaw znaków: \x00, \n, \r, \*, *', " oraz \x1a, które mogą wpłynąć na zapytanie.
Przykładowo wstawiamy do bazy:
INSERT INTO table (field_1, field_2) VALUES ('tekst z apostrofem', 'can't');Apostrof jak widać nawet w formatowaniu kodu powoduje błędy kolorystyczne. Natomiast na poziomie bazy danych spowoduje wysypanie zapytania. Dlatego należy zastosować funkcję mysql_real_escape_string. Wówczas apostrof zapisze się poprawnie.
W manualu (przykład drugi) funkcja wykorzystana jest do zabezpieczenia mechanizmu logowania. Jeśli dane nie zostały by w ten sposób uprzednio przygotowane to znając tylko login użytkownika zawsze dostaniemy się do serwisu.
Nie ma potrzeby stosowania funkcji przeciwnej ponieważ funkcja nie modyfikuje danych wstawianych do bazy. W bazie dane są w formacie pożądanym. Funkcja przeciwna z tej to przyczyny nie istnieje.
-
2010-05-05 12:04:21 Jak wprowadzić dane z pliku w cpp ?
Pod bashem kiedyś działało coś takiego:
cat plik.txt | ./a.out -
2010-10-12 22:48:05 Parametry GET w Java Script.
JS udostępnia obiekt do manipulacji adresem URL. Następnie wystarczy połączyć go z metodami obiektu String, np tak:
document.location.href.indexOf('czego szukasz');Ewentualnie można przygotować parser do argumentów, który rozbije URL na tablicę z parametrami. Prosta funkcja parsująca URL może wyglądać tak:
function getUrlParams() { var params = [], hash; var hashes = window.location.search.slice(1).split('&'); for(var i = 0; i < hashes.length; i++) { hash = hashes[i].split('='); params.push(hash[0]); params[hash[0]] = hash[1]; } return params; } -
2010-03-11 13:35:16 Przeniesienie części stringa z końca na początek
Na szybko wygląda to tak:
$result = preg_replace( $pattern, $replace, $subject );gdzie:
$pattern = "/^(.+) (gm\.|ok\.|okol\.)$/"; $replace = "\\2 \\1"; $subject = array( "Koluszki gm.", "gm. Koluszki", "Oborniki ok." );Wzorzec może przyjąć również inną postać
$pattern = array( "/^(.+) (gm\.)$/", "/^(.+) (ok\.)$/", "/^(.+) (okol\.)$/", );lub zbudować zgodnie z tym co przedstawił newton
-
2010-03-12 23:01:38 jQuery dodawanie linku do obrazu (Pikachoose)
Rozwiązanie jest stosunkowo proste ale warto je skonsultować z grafikiem zawodowym. Konieczne jest powtórzenie grafiki w odnośniku i parę modyfikacji styli (ukrycie klasy pika_subdiv oraz zmiana pozycjonowania dla klasy pika_caption)
Po krótkiej analizie wychodzi mi coś takiego:
<li> <img src="img/1.jpg"/> <span> <a href="http://onyxclub.pl"> <img src="img/1.jpg"/> Nowoczesny klub muzyczny, wygodny, ... </a> </span> </li>Grafikę należy powtórzyć w znaczniku <span> i <a>. Dodatkowo w stylach konieczna jest mała przebudowa
.pika_subdiv{position:relative;padding:2px;display:none;} .pika_subdiv img, .pika_subdiv a img{border:none;} .pika_caption{padding:2px;text-align:center;position:absolute;top:2px;left:2px;background:url('../images/black.png') top left;} .pika_caption a{color:red; text-decoration:none;}Lokalnie pojawiła się u mnie czerwona ramka ale to kwestia sprawdzenia styli i jej zlikwidowania.
Można się jeszcze pobawić z samą konfiguracją pica aby wcześniej wyświetlał opis. Opcja powinna być dostępna.
od rzientek: co do ramki czerwonej to ustawiłem dla wszystkich obrazów styl:
img { border:none; }i działa :]
-
2010-03-14 18:17:57 Przewijanie bez jQuery
Kiedyś popełniłem coś takiego:
<script type="text/javascript"> var panelBody = document.getElementById('Nowosci'); var docBody = document.getElementById('Nowosci_Panel'); var scrollBody = document.getElementById('Nowosci_Scroll'); var boxWidth = 190; var h_speed = 10; function HMarquee() { if( docBody.scrollLeft >= ( parseInt( scrollBody.style.width ) - boxWidth ) ) { docBody.scrollLeft = 0; } docBody.scrollLeft = docBody.scrollLeft + 1; } var h_mar = setInterval( HMarquee, h_speed ); panelBody.onmouseover = function() { clearInterval( h_mar ); } panelBody.onmouseout = function() { h_mar = setInterval( HMarquee, h_speed ); } </script>Do tego HTML
<div id="Nowosci"> <div id="Nowosci_Panel"> <div id="Nowosci_Scroll" style="width: (wylicz dynamicznie)px;"> jakiś tekst do przewijania </div> </div> </div>i CSS
#Nowosci_Panel { overflow: hidden; width: (boxWidth)px; } #Nowosci_Scroll { overflow: hidden; padding-right: (boxWidth)px; }Szerokość dla #NowosciScroll trzeba wyliczyć dynamicznie. Nie sprawdzałem obecnie co się stanie jeśli nie zostanie on ustawiony, ponieważ przedstawione rozwiązanie jest większym wycinkiem całości.
W moim wypadku chodziło o rotator produktów ze stop klatką na każdym produkcie. Jak do tej pory klient zgłaszał poprawek do tego mechanizmu więc spełnia wymagania. Skrypt działa już 3 lata.
-
2010-05-06 23:00:51 Smarty, rozdzielenie loopa
Ponieważ nie przepadam osobiście za sekcjami przedstawię rozwiązanie w foreach.
{foreach from=$newses item="news" name="list"} {if $smarty.foreach.list.first} <div id="glowny_wpis"> <li class="news" > {if $news.is_image} <a href="newses/{$news.id}/{$news.url_text}"><img is="news-0_img" src="images/newsy/m_{$news.id}.jpg" alt="{$news.url_text}" /></a> {/if} <h2><a href="newses/{$news.id}/{$news.url_text}">{$news.title}</a></h2> {$news.short_content} </li> </div> <div id="glowny_bottom"></div> <div id="poboczne"> {else} <li class="news-poboczny" > {if $newses[a].is_image} <a href="newses/{$news.id}/{$news.url_text}"><img is="news-0_img" src="images/newsy/m_{$news.id}.jpg" alt="{$news.url_text}" /></a> {/if} <h2><a href="newses/{$news.id}/{$news.url_text}">{$news.title}</a></h2> {$news.short_content}</li> {/if} {if $smarty.foreach.list.last} </div> <div id="poboczne_bottom"></div> {/if} {/foreach}Analogicznie można przygotować rozwiązanie w oparciu o section.
-
2010-05-06 23:15:33 Smarty, rozdzielenie loopa
Na podstawie komentarza do Manveru przyszło mi do głowy drugie rozwiązanie.
<div id="glowny_wpis"> {if $newses|count > 0} <li class="news" > {if $newses.0.is_image} <a href="newses/{$newses.0.id}/{$newses.0.url_text}"><img is="news-0_img" src="images/newsy/m_{$newses.0.id}.jpg" alt="{$newses.0.url_text}" /></a> {/if} <h2><a href="newses/{$newses.0.id}/{$newses.0.url_text}">{$newses.0.title}</a></h2> {$newses.0.short_content}</li> </div> <div id="glowny_bottom"></div> {if $newses|count > 1} <div id="poboczne"> {section name=a loop=$newses start=1} <li class="news-poboczny" > {if $newses[a].is_image} <a href="newses/{$newses[a].id}/{$newses[a].url_text}"><img is="news-0_img" src="images/newsy/m_{$newses[a].id}.jpg" alt="{$newses[a].url_text}" /></a> {/if} <h2><a href="newses/{$newses[a].id}/{$newses[a].url_text}">{$newses[a].title}</a></h2> {$newses[a].short_content} </li> {/section} </div> <div id="poboczne_bottom"></div> {/if} {/if} </div>To co nie działało powyżej to
- niekonsekwencja w sekcjach. W drugiej sekcji o nazwie b iterujesz po elementach tablicy kluczem a.
- po co iterować po całej tablicy kiedy najpierw potrzebujesz jeden element, a potem wszystkie bez pierwszego. section ma taki parametr jak start, którym można przesunąć wyniki.
- zarówno section jak i foreach mają parametry do iteracji po elementach takie jak: first, last, index i iteration, które można spokojnie wykorzystać zamiast licznika.
Kolejnym problemem jaki widzę to kod html. Walidator na 100% zgłosi błędy. Jeden to brak ul nad li.
-
2010-05-10 22:37:39 Lista newsów się nie układa
Potrzebujesz jeszcze określić szerokość w css dla znacznika li. Jeśli tego nie określisz to na podstawie własności display=block znacznik jest rozciągany na całą szerokość.
Wynikowo css powinien wyglądać mniej więcej tak:
#poboczne { display: block; width:600px; } #poboczne ul{ list-style: none; } li.news-poboczny { display: block; float: left; width: 150px; }Z takiego kodu uzyskasz 4 elementy obok siebie. Należy jeszcze zwrócić uwagę na pozostałe style aby marginesy nie powodowały zaburzeń w widoku (ale to już kosmetyka)


2
1
326