Anonymní profil P – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil P – Programujte.comAnonymní profil P – Programujte.com

 

Příspěvky odeslané z IP adresy 213.160.186.–

Java › Kruhový seznam
11. 6. 2010   #130058

Neviem, či celkom rozumiem, čo presne sa pokúšaš dosiahnuť a aké operácie má ta štruktúra vedieť.

Ja by som to riešil tak že by som si vytvoril pole konštantnej veľkosti pre ukladanie daných objektov.

private Object[] data = new Object[N];
a potom dve premenné:
private int read = 0; // index z ktorého sa najbližšie bude čítať

private int write = 0; // index na ktorý sa najbližšie bude písať
no a metódy get a put: na citanie a zapisovanie do zoznamu:
public Object get() {

if (isEmpty()) throw EmptyException();
try {
return data[read];
} finaly {
read++;
if (read==data.length) read = 0;
}
}

public void put(Object o) throws FullException {
if (isFull()) throw FullException();
data[write] = o;
write++;
if (write==data.length) write = 0;
}

public boolean isEmpty() {
return return read == write;
}

public boolean isFull() {
// todo...
}

PHP › Uspatie requestu až do okami…
11. 6. 2010   #130057

Ide o online app, kde komunikujú viacerí užívatelia, niečo ako chat.

Každý client odosiela asynchrónne requesty, ktorými sa pýta, či pre neho nie je niečo nové. Každý tento request spôsobí SELECT z DB a na základe výsledku odošle dáta, alebo info - že nič nové nie je a spojenie sa uzavrie. To sa deje cyklicky, hneď po prijatí odpovede posiela client ďalši request.

Toto som čiastočne zoptimalizoval tak, že ten request na serveri držím kým to ide. Za tan čas sa na serveri cyklicky robí ten SELECT a ak sa nájdu nejaké data, tak sa clientovi pošlú, no spojenie sa neuzavrie. Až client detekuje uzavretie spojenia, tak okamžite otvára nové... Tým som ušetril server od častého otvárania a zatvárania množstva spojení. Keďže teraz je ten cyklus odosielajúci selecty priamo na serveri, tak bola DB bombardovaná rýchlejšie, taktiež bol procák nonstop na 100%, čo však vyriešil krátky polsekundový delay (usleep(500000)) v tom cykle medzi selectami.

Stále však mám pocit, že by to šlo podstatne viac odľahčiť. Viem si predstaviť riešenie, ako Java Servlet, kde mám requesty ako samostatné vlákna, ktoré zdieľajú rovnaké zdroje a vedia navzájom vedia komunikovať. V PHP však nepoznám spôosob, akým získať info o ostatných bežiacich vláknach o ich uspávaní a prebúdzani, čím som odkázaný (pravdepodobne) na jediné riešenie, a to cyklické refreshovanie - select DB/čítanie súboru/...


PHP › Uspatie requestu až do okami…
10. 6. 2010   #130014

Ahojte, mám taký teoretický problém.

Hľadám čo najefektívnejší spôsob, napodobnenia metód wait() - notifyAll() z viac vláknového programovania.

Zhruba by som chcel urobiť to, že ak na server pošlem požiadavku, napr:
http://www...../wait.php

Tak server neodpovie v momente, ale až keď pošlem druhý request:
http://www...../notify.php

Jediný spôsob, ktorý ma zatiaľ napadá, je, že prvý request bude cyklicky testovať existenciu nejakého zdroja, napr. súboru, alebo riadku v databáze, a v momente, keď sa daný zdroj objaví (vytvorí sa zavolaním notify.php), tak proces bude pokračovať v behu.

To "cyklicky testovať" mi však príde veľmi neefektívne, chcel by som niečo, čo pri vyžšej návštevnosti nezapečie server...

Java › Kruhový seznam
10. 6. 2010   #130013

To Redby :
Skús pozrieť:
http://en.wikipedia.org/wiki/Circular_buffer
http://en.wikipedia.org/wiki/Queue_%28data_structure%29

PHP › SMTP vs mail()
28. 5. 2010   #129539

Ja to už ukladám rovno do db, čo je okamih a netreba riešiť veci na dva krát...

Treba ale vyriešiť to, aby sa mail z db nezmazal pokiaľ skutočne nebol odoslaný a tiež to, aby sa súčasne neodoslal dva krát, napríklad ak sa ten skript dva krát spustí...

PHP › SMTP vs mail()
28. 5. 2010   #129532

Bol som práve v situácii, kedy bolo dostupné iba SMTP a bolo navyše veľmi pomalé. Ľudia opakovane submitovali formy, lebo dlho čakali na response...

Odvtedy všetky maily riešim cez "buffer", tak, že miesto okamžitého odoslania mailu sa uloží do DB odkial ho druhý, permanentne bežiaci program, vyťahuje, posiela a loguje. Umožnilo mi to napr. časovanie mailov, hromadne odosielanie mailov atd.

Nevýhodou je, že musíš mať možnosť na serveri spúštať vlastného daemon-a... V prípade hostingu by sa to dalo ale prerobiť na jeden skript, ktorý sa budeš opakovane spúštať, napríklad cronom..

Java › Java SQL a Derby
12. 5. 2010   #128832

To liborb : Jasné, s tým súhlasim. Len som nejako nepochopil ten výraz "monstr", tak som myslel, že narážaš na niečo konkrétne :-)

Java › Java SQL a Derby
12. 5. 2010   #128830

To Aress :
Pri Derby som sa tiež nedočítal, ako zvoliť default schému, tak aby nebolo potrebné písať APP.[TABULKA], nakoniec mi zafungovalo, hneď po pripojení zavolať:

conn = java.sql.DriverManager.getConnection("jdbc:derby://....");

conn.prepareCall("set schema APP").execute();
...
con.prepareStatement("select * from FILMY where F_ID = ?");

Java › Java SQL a Derby
12. 5. 2010   #128829

To Aress :
Pomocou PreparedStatement by si to mohol robiť takto, a pokial viem, je to aj odporúčaný spôsob:

PreparedStatement ps = con.prepareStatement("SELECT * FROM APP.FILMY WHERE F_ID = ?");

ps.setInt(1, max);
ResultSet rs =ps.executeQuery();
Myslím že hlavnou výhodou je, že sa argumenty správne ošetria. Okrem toho si ten preparedStatement môžeš uložiť a nemusíš ho vytvárať stále nanovo, čím sa aplikácia kapik zrýchli (ak voláš jeden statement často dokola len s inými argumentami).

Ja používam niečo také:
PreparedStatement ps = Statements.getSelectAllFromFilmyById();

ps.setInt(1, max);
ResultSet rs =ps.executeQuery();
Statements je v mojom prípade statická trieda, ktorej metódy mi vytvoria prepared statement ak ešte neexistuje, ak existuje, tak ho len vrátia.

Prípadne, si to vieš ešte zjednodusiť takto:
ResultSet rs = Statements.openSelectAllFromFilmyById(max);
To liborb :
Čo myslíš pod "monst aparát na tvorbu query" ?
Občas by som fakt potreboval poskladať stringove query (tak aby boli argumenty priamo vňom, aj správne ošetrené), no nikde som nezistil, ako na to.
Niektoré drivre podporujú niečo ako PreparedStatement.toString(), no keď som to potreboval, riešil som práve Derby, a tam som sa riešenia nedopátral.

Java › Java3D
12. 4. 2010   #126777

Ak Java3D je niečo nad OpenGL, potom by mala existovat funkcia / metoda glTexCoord..(float, float)
Ktorú keď zavoláš pred volanim glVertex..(), tak povies, ze ktory bod textury sa na dany vertex má namapovať.
Hodnoty argumentov sa pohybujú od 0 do 1, tak, že (0.0, 0.0) je jeden roh textúry, (1.0, 1.0) opačný. Len už nepametám ktorý je ktorý.

http://www.opengl.org/sdk/docs/man/xhtml/glTexCoord.xml
http://nehe.ceske-hry.cz/tut_06.php

Java › netbeans -zmena textu zahlav…
8. 4. 2010   #126542

Tiež to môžeš urobiť, v propertis toho Fameu, je tam položka title, netbeans potom daný kód () vygeneruje zateba.

Java › Swing, focus okna, ktoré je…
1. 4. 2010   #126053

Veľmi pekne ďakujem :-)

škoda len, že to nie je súčasťou javy, myslím, že s tým requestFocusom by to malo fungovať štandardne, prípadne by mali existovať nejaké páky, ako zistiť, že okno má nad sebou nejaké modálne.

To, aby zablokované okno vedelo o svojom modalnom dialogu som poriešil pridaním setModalWindow, cez ktoré sa modálne okno zaregistruje. V tej metóde sa rovno zaregistruje aj "windowClosed listener", ktorý modalWindow z okna automaticky odregistruje, keď sa zavrie.

Ešte raz ďakujem, tu je riešenie:

public class MyJFrame extends JFrame {


private java.awt.Window modalChild = null;

@Override
public void requestFocus() {
if (modalChild == null) {
super.requestFocus();
} else {
modalChild.requestFocus();
}
}

protected void setModalWindow(java.awt.Window modalChild) {

if (this.modalChild != null) {
this.modalChild.removeWindowListener(modalWA);
}
this.modalChild = modalChild;
this.modalChild.addWindowListener(modalWA);
}

private WindowAdapter modalWA = new WindowAdapter() {

@Override
public void windowClosed(WindowEvent e) {
modalChild = null;
}
};

}

Java › Swing, focus okna, ktoré je…
1. 4. 2010   #126042

A) Veľmi jednoducho:

chcem odovzdať focus oknu, ktoré je zablokované modálnym oknom. Nič sa ale nestane. Ja by som chcel aby sa aktivovalo práve to modálne okno na vrchu.


B) Asi tento popis nie je dostatočne výstižný, preto celá situácia:

Mám niekoľko pootváraných okienok.

V určitej situácii potrebujem odovzdať z niektorého z nich focus inému.
Používam na to metódu: okno.requestFocus(); (referencie na jednotlivé okienka obsluhuje samostatná trieda)

Toto funguje bez problémov.

Potom z niektorého z tých okienok otvorím modálny dialog, tak že zablokuje prístup len k tomu jednému okienku, ktoré ho otvorilo. Ostatné okienka ostávajú prístupné.


Problém nastáva keď:
Modálne okienko nechám otvorené, okno ktoré ho otvorilo je tým pádom zablokované. Prepnem sa na nejaké iné okno (kliknutím myšou / ALT+TAB / ...).

Teraz, ak v programe zavolám okno.requestFocus(), pričom okno je referencia ná to okno, ktoré je zablokované tým modálnym, nič sa nestane.

Chcel by som, aby sa v tomto prípade nastavil focus pre to modálne okno.


Je to možné ?

Webové servery (Apache, IIS...), .htaccess › [Apache] You don't have perm…
25. 3. 2010   #125756

To doktor.pj :
a takto:

http://localhost/test/index.php

http://localhost/test/index.htm
resp.:
http://test.local/index.php
http://test.local/index.htm
funguje ?

Ak áno, problém bude asi v nastavení direktívy directoryIndex, ktorá hovorí o "default" súbore, ktorý sa v adresári hľadá.

Skús pridať do toho adresára Options +Indexes - čo bude generovať stránku so zoznamom súborov v adresári, alebo DirectoryIndex index.php index.htm čím, povieš, že "default" súbor je index.php a ak sa ten nenájde, tak sa hľadá index.htm

Ak použiješ obe direktívy (Options +Indexes aj DirectoryIndex ...), tak sa apache najprv pokúsi nájsť index.php, potom index.htm a ak nenájde ani ten, tak vygeneruje stránku zo zoznamom súborov v adresári...

<Directory "d:/www/test">

Options +Indexes
Order allow,deny
Allow from all
DirectoryIndex index.php index.htm
</Directory>

http://httpd.apache.org/docs/2.1/mod/mod_dir.html#directoryindex
http://httpd.apache.org/docs/2.1/mod/core.html#options

JavaScript, AJAX, jQuery › Psani JS do stranky
25. 3. 2010   #125749

<div id="miestoKdeChcesVpisat"></div>

...
function Pis()
{
document.getElementById('miestoKdeChcesVpisat').innerHTML = 'slovo';
}

Webové servery (Apache, IIS...), .htaccess › [Apache] You don't have perm…
25. 3. 2010   #125748

prístup k adresárom sa definuje pomocou direktívy <Directory>

Prístup pre ten adresár povolíš cca takto:

<Directory "d:/www/test">

Order allow,deny
Allow from all
</Directory>
Ak máš d:/www nastavený ako documentRoot servera, tak sa do adresára test dostaneš cez http://localhost/test/

NameVirtualHost a <VirtualHost> slúžia na niečo iné, dokážeš nimi dosiahnuť napríklad to, že do adresára d:/www/test sa budeš vedieť dostať zadaním: http://test.local/. Musíš však zabezpečiť, že doména test.local bude zastupovať adresu tvojho počítača, podobne ako localhost.

Ak to teda chceš riešiť cez VirtualHosty, tak máš možnosť povoliť prístup do toho adresára len pre konkrétny virtual host tak, že <Directory> šupneš do vnútra virtual hostu:

<VirtualHost *:80>

ServerName test.local
DocumentRoot d:/www/test
<Directory "d:/www/test">
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

http://httpd.apache.org/docs/2.1/mod/core.html#documentroot
http://httpd.apache.org/docs/2.1/mod/core.html#directory
http://httpd.apache.org/docs/2.1/mod/core.html#namevirtualhost
http://httpd.apache.org/docs/2.1/vhosts/name-based.html

MySQL › Vypisovanie poloziek podla v…
10. 3. 2010   #125079

To marioff :
No pre mňa by rýchlejšie bolo capnúť tam jednu rekúrzívnu funkciu a problém je vyriešený. Ale predpokladám, že si to myslel tak, že rýchlejšie bude selectovanie. Editácia stromu sa však výrazne skomplikuje, hlavne, ak budeš chcieť tento strom manažovať z viacerných aplikácí (editor, importér, ...) - vždy musíš riešiť L/R...

MySQL › Vypisovanie poloziek podla v…
10. 3. 2010   #125070

To Mafiosoweb :

tým selectom vyberieš iba položky zo všetkých podkategórií kategórie 2 ale neberieš položky samotnej kategórie 2 a ani položky v hlbších podkategóriách.
ten prvý problém by sa dal hádam odstrániť pridaním

...WHERE id_kat=2 or id_kat=(SELECT ...
Ale stále to nerieši tie hlbšie podkategórie...


To marioff :

Ak to potrebuješ narýchlo zlepiť, tak rekurzívne získaj ID všetkých kategórii, ktorých sa to týka, a potom urob:
SELECT id, ... FROM polozky WHERE id_kat IN (<ciarkami oddelený zoznam ideciek kategorii>)

Ak by si mal ten strom kategórii navrhnutý s left-right hotnotami (neviem ako sa to presne volá, ...), tak problém vyriešiš jediným selectom.

Java › Zápis serializovaných objekt…
4. 3. 2010   #124744

Máš pravdu, práve z pohľadu rozšíriteľnosti som sa chcel vyhnúť problémom, tak som to vyriešil tak, že server dátam vôbec nemusí rozumieť. Iba ich pasívne prijíma a odosiela. Jediné čo robí je overenie podpisu a dešifrovanie pred prijatím a podpísovanie a zašifrovanie pred odoslaním.
Tieto dáta sú pritom serializované a gzipované java objekty, ktoré si klientské aplikácie prostredníctvom servera vymieňajú. Pri uploade posiela klient len jeden (svoj) balík dát, no prijíma všetky nové od ostatných klientov. A práve pri prijatí som potreboval, aby som ich vedel z jedného streamu, ktorý prijímam zo servera, nejako vyťahovať už počas loadingu. Prvé čo ma napadlo, bol práve ten ObjectInputStream, no na to by som ich musel veďieť v PHP zapísať "javovskou serializáciou", čo mi prišlo dosť komplikované. Myslím že to riešenie, že najprv odošlem dĺžku a potom samotné dáta bude fajn.

Java › Zápis serializovaných objekt…
3. 3. 2010   #124710

Ano, PHP ako modul na Apache HTTP serveri, aplikácia (java) HTTP requestom o tieto dáta požiada a práve v HTTP odpovedi ich chcem streamovať.

Ale už som prišiel na jednoduchší spôsob, ako je napodobňovanie java serializácie.

Budem odosielať tie reťazce za sebou, s tým že pred každým pošlem 4 bajty, do ktorých zakódujem dĺžku reťazca. Tak ich budem vedieť v jave krájať a spracovávať už počas sťahovania, rovnako ako keby spom použil ObjectInputStream.readObject(); V jave to bude kapik komplikovanejšie ale podstatne jednoduchšie na strane PHP.

Java › Zápis serializovaných objekt…
2. 3. 2010   #124684

Ahojte, mám ďalšiu otázku.

V PHP chcem vypisovať stringy na výstup tak, aby si java aplikácia tieto stringy vedela čítať ako polia bajtov[]. (v PHP je string to isté čo v jave byte[]).

Potrebujem na to poznať spôsob zápisu serializovaných objektov. Vie mi niekto poradiť, kde sa dočítam, ako majú vyzerať?

Stačí mi vedieť vypisovať iba iba serializované polia bajtov (byte[]).

V java aplikácii mám potom inputstream, z ktorého chcem tieto stringy/polia bajtov čítať takto:

  public static void read() {

byte[] data;
try {

ObjectInputStream ois = new ObjectInputStream(...);
while (true) {
data = (byte[]) ois.readObject();
// spracovanie dat
}
} catch (EOFException ex) {
System.out.println("všetko.");
} catch (Exception ex) {
ex.printStackTrace();
}
}

Zapísať takéto dáta v jave je triviálne, no ja to potrebujem spraviť v php. V jave by to vyzeralo asi takto:
  public static void write() {

byte[] data1 = ...;
byte[] data2 = ...;

try {
ObjectOutputStream oos = new ObjectOutputStream(...);
oos.writeObject(data1);
oos.writeObject(data2);
...
oos.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}

Java › Zistenie triedy v statickej…
25. 2. 2010   #124491

To liborb : this nefunguje v statickom kontexte

Nakoniec som to vyriesil triedou "EntityManager" ktora okna otvara / aktivuje, treba jej ale povedat typ entity a id entity:

final public class EntityManager {

final public static void showEditor(
Class<? extends EntityEditor> entityClass,
Long entityID)
}

public abstract class EntityEditor extends javax.swing.JDialog {
// .. spolcne veci entit
}

final public class Auto extends EntityEditor
{
// editor pre editovanie
}
final public class Servis extends EntityEditor
{
// editor pre editovanie
}

// pouztie:

EntityManager.showEditor(Auto.class, 10);
EntityManager.showEditor(Servis.class, 10);

Java › Zistenie triedy v statickej…
25. 2. 2010   #124483

To liborb : Ide mi o to, aby bola statická.

A stale to nerieši problém na odvodených triedach, vypisovať bude meno základnej triedy.


Robím databázovú app, kde mám niekoľko entít, pričom pre každý entitný typ mám editor (JDialog)
Potom mám Dialogy kde sú zoznamy prehľady a pod.

Pre otvorenie okna kontkrétnej entity chcem použiť <Trieda entity>.showEditor( <id entity> ), napríklad:

Auto.showEditor( 10 );

Chcem aby, ak už je otvorený editor pre Auto-10, tak aby sa len na tento editor nastavil fokus, inak aby sa vytvorilo nové okno.


Momentálne mám pre každú entitu samostatnú classu odvodenú priamo od javax.swing.JDialog, kde celú funkcionalitu prepisujem odznova. Chcel by som preto vytvoriť base class pre všetky entity, pričom by vedela spraviťminimálne .showEditor( id ), kde by prehľadala zoznam všetkých otvorených okien, a zistila či editor už existuje a tak mu nastavila fokus, a ak neexistuje, tak ho vytvorila.
Práve pri prehľadávaní zoznamu všetkých otvorených okien potrebujem porovnávať, či sa trieda otvoreného okna a trieda, nad ktorou je statická metóda showEditor volaná zhodujú. Okrem toho porovnávam id entity.

public abstract class Entity extends javax.swing.JDialog

{
final private static ArrayList<Entity> openedEntities = new ArrayList<Entity>();

protected Long id;

public void showEditor(Long ID)
{
for(Entity opened : openedEntities)
{
if (opened.getClass() == __AKTUALNA_TRIEDA__ && ID.equals(opened.id))
{
opened.requestFocus(); // entita je uz otvorena, staci jej dat focus
return;
}
}
// entita nie je otvorena, treba vytvorit novu
final Entity newEntity = __AKTUALNA_TRIEDA_.newInstance( ID );
openedEntities.add(newEntity);
newEntity.addWindowListener(new WindowAdapter() {
@Override
public void windowClosed(WindowEvent evt) {
openedEntities.remove(newEntity);
}
});
}

protected Entity(Long id)
{
this.id = id;
...
}
}

final public class Auto extends Entity
{
// JDialog predstavujuci editor entity Auto
..
}

final public class Servis extends Entity
{
// JDialog predstavujuci editor entity Servis
..
}



pre otvorenie/aktivovanie entit tak staci spravit:

Auto.showEditor(5); // otvori nove okno

Servis.showEditor(2); // otvori nove okno
Auto.showEditor(5); // aktivuje uz otvorene okno


Java › Zistenie triedy v statickej…
25. 2. 2010   #124480

Ahojte, začínam s Javou,

chcel by v statickej metóde získať triedu / jej názov, nad ktorou bola táto statická metóda volaná.

abstract class Entity

{
public static void writeClassName()
{
System.out.writeln( ZISKAT_MENO_TRIEDY() );
}
}

class Auto extends Entity
{
...
}

Entity.writeClassName(); // vypíše "Entity"
Auto.writeClassName(); // vypíše "Auto"
Vedel by mi prosím niekto poradiť ?

P
PHP › [Anketa] Který způsob vypiso…
3. 2. 2010   #123535

"...$text..." nepouzivam nikdy

Iba:

<div ...><?php echo $var ?></div>

alebo

echo '<div ...>'. $var . '</div>'

. '<div ....>'
. '<div ...>'.$var2.'</div>'
. '</div>

PHP › Netbeans - code completion -…
7. 1. 2010   #122404

Ahojte,

Chcem triedu, ktorá by implementovala rozhrania z PHP - Iterator, Countable, ArrayAccess.

...na to musím implementovať všetky metódy daných rozhraní.
Problém je, že tieto metódy sú public, a netbeans mi ich potom ponúka do code completion, čo je dosť rušivé popri mojích 3 metódach tejto triedy a nechcem ich tam mať.

Vyzerá to asi takto:

  $object->__get(

__set(
__call(
count(
current(
key(
next(
offsetExists
offsetGet
offsetSet(
offsetUnset(
rewind(
valid(


Skúšal som pridať phpdoc @ignore, aj @access private, ale netbeans tie metódy stále ponúka.


Nevie niekto ako ich skryť ?


Anonymní uživatel
PHP › Odkaz do půlky stránky
2. 12. 2009   #120456

http://www.w3.org/TR/html401/struct/links.html#h-12.1

Anonymní uživatel
PHP › Odkaz do půlky stránky
2. 12. 2009   #120454

...
<element id="identifikator">
...

<a href="url#identifikator">

Anonymní uživatel
PHP › Tlacenie z php
26. 11. 2009   #119999

najlepsie by asi bolo generovať PDF

PHP › Nahrada za ip2long a long2ip
26. 10. 2009   #117879

veď to neviem ani ja, neviem ako sa binary chova pri indexovaní, ešte som to nepoužil. Ale myslím že to bude rovnaké ako pri INT-e.

Bola reč o biginte, no stačiť bude o polovicu menší INT (UNSIGNED), viď. http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html.

V prípade BINARY by si rovno tie 4 čísla IP adresy uložil ako 4 bajty a potom nazad, čo mi príde podstatne jednoduchšie.


A previesť tých 167k riadkov z bigint do binary tiež nebude problém, myslím.

PHP › Nahrada za ip2long a long2ip
26. 10. 2009   #117862

Ešte som to nepoužil, ale nebolo by jednoduchšie ukladať IPv4 do BINARY(4) ? Myslím že aj sortovať a testovať, či patria do rozsahu by sa potom dali rovnako ako long-y. Odpadla by tak nutnosť toho prevodu.

PHP › vlastník souboru
21. 10. 2009   #117620

http://php.net/manual/intro.posix.php

Zrejme máš php buildnute s direktivou --disable-posix, alebo to púšťaš pod windowsom

PHP › vlastník souboru
21. 10. 2009   #117618

0=root, ale pozri ci je to naozaj 0 alebo je to false.
ešte pozri http://php.net/posix_getpwuid

PHP › vlastník souboru
21. 10. 2009   #117613

http://php.net/stat
http://php.net/fileowner

Anonymní uživatel
PHP › Jak vymazat pamět počítače
21. 9. 2009   #116224

header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past

PHP › ftp_mkdir();
24. 7. 2009   #113667

To Figa : Nezdá sa mi, že by to malo niečo spoločné s právami, teda myslím ten 30s delay... Skôr skús pozrieť toto: http://www.php.net/clearstatcache

No tiež mi nie je jasné, prečo používaš to ftp.

PHP › Pokaždé jiný výsledek ve ste…
24. 7. 2009   #113659

Čo spôsobí, že sa obrázok bude zakaždým reloadovať, aj keď už niekedy bol zobrazený.

Myslím, že lepšie by bolo náhodne generovať linky na tie obrázky.


To Linux : Ak by sme poznali úmysel, dalo by sa lepšie poradiť.

PHP › Pokaždé jiný výsledek ve ste…
24. 7. 2009   #113656

To z_moravec :

Toto je v poriadku, porblem je, že browser pošle len jeden request stiahne obrázok a na zobrazenie ostatných použije ten istý z cache.

PHP › Pokaždé jiný výsledek ve ste…
24. 7. 2009   #113652

To Linux :
http://en.wikipedia.org/wiki/Web_cache

btw, ... "Pokaždé jiný výsledek ve stejný čas" -- fakt vystihujúce ;-)

Anonymní uživatel
JavaScript, AJAX, jQuery › Zistenie uzivatelskej plochy…
24. 7. 2009   #113640

http://www.google.sk/search?q=javascript+browser+client+area

PHP › Pytagorova veta
16. 7. 2009   #111874

To Black.Shadow :
Jo a teraz lepšie pozerám, píšeš že súradnice sú od -400 po 400, takže celková veľkosť mapy nie je 800 ale 801 políčok, ak sa nemýlim.

PHP › Pytagorova veta
16. 7. 2009   #111872

Hlboko sa ospravedlnujem, zrejme by som si tu 5. triedu mal zopakovať.

Podstata je proste v tom, zistiť najprv minimálne vzdialenosti v smere x a smere y, myslieť pri tom na možnosť prejst okrajom, a až potom rátať pytagora.

Ok, v PHP by som to urobil asi takto:

function vzd($ax, $ay, $bx, $by, $w=800, $h=800)

{
$dx = abs($ax - $bx) % $w;
$dy = abs($ay - $by) % $h;

if ($dx > $w/2) $dx = $w - $dx;
if ($dy > $h/2) $dy = $h - $dy;

return sqrt( pow($dx, 2) + pow($dy, 2) );
}
to modulo slúži na stiahnutie do rozsahu 0 až w-1, a 0 až h-1 v prípade že sú body zadané mimo základných súradníc, napr 0, 800, 1600, 2400 je jeden a ten istý bod ak w (h) je 800.

ak dx > (w/2) tak to znamena, že "ísť cez okraj" je kratšie.


dufam že dobre :-)

PHP › Pytagorova veta
15. 7. 2009   #111856

1. Riešiš matematický problém, asi tak úrovne 5. ročníka základnej školy
2. Možno by ti niekto poradil hneď, keby si sa opýtal jasnejšie a hlavne stručnejšie.
3. Ten priložený zdroják aj tak nik nebude čítať, keďže máš problém prísť na vzorec. Ak ho pochopíš, a stále si nebudeš vedieť poradiť s implementáciou, potom sa pýtaj na to.

Ak som správne pochopil, tak mapa je vlastne štvorec rozdelený na 800x800 políčok stočený do rúry a jej konce sú následne spojené.

ak je to tak, tak

najkratsia_vzd = [  (abs(ax - bx)  mod w)^2  + (abs(ay - by)  mod h)^2 )  ]^0.5;

w,h - rozmery mapy - sirka vyska
ax, ay - bod a
bx, by - bod b

MySQL › vnorene transakcie
10. 7. 2009   #111679

dôvod prečo sa pýtam:

V php mam objekt nad ktorým keď zavolám metódu, vykoná sa transakcia operácií. V prípade prolému sa to celé vrati (rollback) a metóda vyhodí výnimku. Teraz ale potrebujem nad množstvom objektov tejto triedy vyvolať túto metódu, a potrebujem zaručiť, že sa vykonajú všetky, ak nie, chcem všetko vrátiť.

zjednodušený príklad kódu:

class simpleObject

{
public function doSomethingCool()
{
begin
try
{
query
query
query
}
catch()
{
rollback
throw
}
commit
}
}

class listOfSimpleObjects
{
/** @var array An array of {@link simpleObject} objects.
private $list;

public function doSomethingCoolWithAllObjects()
{
begin
try
{
foreach($this->list as $obj) $obj->doSomethingCool();
}
catch ()
{
rollback
throw;
}
commit
}


Nikde na mysql som sa nedočítal o volaní begin za beginom - vnorených transakciách, a asi to ani nepôjde.


Napadlo ma preto riešenie, a chcel by som vedieť vaše názory, prípadne mi prosím navrhnite iné riešenie.
Riešenie spočíva v použití savepointov a "bufferovaní" beginov. Odskúšať už nestíham, no ak s tým má niekto skúsenosti, prípadne to niekoho zaujalo, prosím o názor / skúsenosti.

// počítadlo hĺbky transakcie:

$t_depth = 0;

/**
* Pre zacatie transakcie sa pouzije tato metoda,
* v pripade, ze este nebola zacata transakcia, zabola sa BEGIN
* inak sa zavola savepoint a nazov savepointu bude aktualna hlbka.
*/
function t_begin()
{
if ($t_depth === 0)
{
BEGIN
}
else
SAVEPOINT (++$t_depth);
}

/**
* funkcia pre commit. V pripade ze hlbka transakcii je 1, zavola sa commit, v pripade, ze hlbka je vacsia,
* cislo hlbky sa iba znizi
*/
function t_commit()
{
if ($t_depth === 1)
{
COMMIT
}
$t_depth--;
}

/**
* funkcia pre rollback. V pripade ze hlbka transakcie je 1 zavola sa rollback, v pripade ze hlbka je vacsia
* zavola sa rollback to savepoint kde nazov savepointu na ktory sa vracam je aktualna hlbka
* nakoniec sa hlbka dektrementuje
*/
function t_rollback()
{
if ($t_depth === 1)
{
ROLLBACK
}
else
{
ROLLBACK TO SAVEPOINT $t_depth
}
$t_depth--;
}

PHP › Restart Apache cez PHP
16. 6. 2009   #110632

Ide o to, že ak apache nejakým spôsobom vyberie konkrétny php script ktorý sa potom naloaduje, tak to si mohol apachu ušetriť prácu a vraziť riešenie domény rovno do php... záleží, čo beží na tých vhostoch. U mňa je to primárne cms, v ktorom si pridám doménu aj celý web bez potreby zásahu do configu apacha, takže rozhodovanie na úrovni php mi vyhovuje. Spracovanie stále rieši to cms...

Kamion na zemiaky by som skôr prirovnal k reštartu servera kôli jednej domene...

teraz však "nejde o tooo"...

Skús pozrieť VirtualDocumentRoot, ak apache nebude namietať na linkované adresáre, tak máš univerzálne riešenie. Vytvoríš jeden adresár, napr. /web/domeny/, do konfigu pridáš VirtualDocumentRoot /web/domeny/%0/ a resetneš. Potom pre každú doménu vytvoríš, alebo prelinkuješ documentroot do toho adresára a doména existuje... prípadne, ak máš tých domén veľa
tak VirtualDocumentRoot /web/domeny/%3+/%2.1/%2.2/%2.3/%2 [http://httpd.apache.org/docs/2.2/mod/mod_vhost_alias.html]

Hej a ak v tom máš nejaký logický systém, napríklad:

<webftp>.<hocijakadomena> smeruje do spoločného /srv/www/utils/webftp/
<phpmyadmin>.<hocijakadomena> smeruje do spoločného /srv/www/utils/phpmyadmin/
www.<hocijakadomena> smeruje do vlastného /srv/www/webs/<hocijakadomena>/
<hocijakadomena> sa redirectuje na www.<hocijakadomena>
...

tak to všetko veľmi ľahko poriešiš pomocou zopár mod_rewrite riadkov...


PHP › Restart Apache cez PHP
16. 6. 2009   #110619

Ja som to poriešil tak, že sa spolieham na prvý definovaný virtualhost. Ten sa použije keď sa nenájde ten podľa požiadavky. Docroot je namierený do adresára v ktorom beží php cms, ktorý sám rozlíši doménu a nové v ňom "naklikám" online.

Ak sem tam potrebujem samostatný virtual host (nezavislý na cms), tak mu vytvorím samostatný adresár, samostatný *.conf súbor a urobím ručný restart.
To by sa ale dalo zjednodušiť práve pomocou tej direktívy VirtualDocumentRoot v sekcii "Simple dynamic virtual hosts". čiže pre kadú novú doménu bude stačiť vytvoriť adresár. Ak budeš chcieť viac domén na ten istý documentroot tak jednoducho vytvoríš len jeden adresár, a ostatné len na neho nalinkuješ...

Ďalšia možnosť ktorá ma napadá je všetko namieriť do jedného adresára a v ňom pomocou htaccess a mod_rewrite kontrolovať doménu a na základe nej robiť rewrajty do iných adresárov...

PHP › Restart Apache cez PHP
16. 6. 2009   #110616

http://httpd.apache.org/docs/2.2/vhosts/mass.html

PHP › Ukazatel pole
16. 3. 2009   #97400

To hrach : array_search nastavi pole na najdeny prvok???

PHP › Ukazatel pole
14. 3. 2009   #97283

<div id="next"><a href="<?php next($fotky); echo "fotky.php?id=".next($fotky)."&i...

Stale nerozumiem prečo to robíš tak krkolomne, nebolo by jednoduchšie predávať getom miesto hodnoty rovno index poľa?

btw oposit od next != last, ale previous, last je niečo iné...

PHP › Ukazatel pole
14. 3. 2009   #97262

Nie som si istý, či som to správne pochopil, ale ak áno, potom:

current prvok v poli nemôžeš nastavovať priamo. Vieš spraviť iba reset, čím sa dostaneš na začiatok a potom sa pomocou prev/next posúvaš. Takže prvé čo spravíš je reset($pole) a potom sa opakovane posúvaš po prvokch až kým nenájdeš ten ktorý chceš a vtedy sa prestaneš posúvať - pole ostane nastavené na tom mieste. Tiež je potrebné zisťovať či už niesi na konci poľa pre prípad, že by tam ten prvok nebol...

reset($pole);

while(
current($pole)!==$_GET['current'] && next($pole)!==false
) ;
alebo ak sa ti viac pači for..
for (

reset($pole);
current($pole)!==false && current($pole)!==$_GET['current'];
next($pole)
) ;

po vykonani niektoreho z tychto kódov máš pole nastavené na pozícii prvku v $_GET['current'], alebo - ked tam ten prvok nie je tak na konci pola.


Ja však dosť nerozumiem, na čo je to dobré, keďže existuje množstvo jednoduchších spôsobov pre prístup k prvkom... Takže ak popíšeš kde to potrebuješ, skúsime nájsť jednoduchšie riešenie...

PHP › vynucené SSL
3. 3. 2009   #96506

$_SERVER['HTTPS']
$_SERVER['SERVER_PORT']

C / C++ › MAKRO
18. 2. 2009   #95326

Ak som správne pochopil, # spôsobí že sa okolo hodonty hodia uvodzovky a mám string. Ak ten šupnem do zátvoriek a prihodím +4. Tým vlastne priratávam 4 ku pointeru na začiatok toho reťazca - posuniem sa o 4 chary doprava na začiatok tej časti ktorú potrebujem.

...na niečo také by som sám neprišiel.

Ďakujem!

C / C++ › MAKRO
18. 2. 2009   #95320

S céčkom som sa dlho nehral, a to čo teraz potrebujem som nikdy pred tým neriešil, tak by som vás chcel poprosiť o radu.

Potreboval by som pomôcť s makrom, ktoré mi uľahčí toto:

int zaregistruj_funkciu(char* nazov, void *fc_ref);


void cmd_MojaFunkcia1();
void cmd_MojaFunkcia2();
void cmd_MojaFunkcia3();
...

main()
{
zaregistruj_funkciu("MojaFunkcia1", cmd_MojaFunkcia1);
zaregistruj_funkciu("MojaFunkcia2", cmd_MojaFunkcia2);
zaregistruj_funkciu("MojaFunkcia3", cmd_MojaFunkcia3);
...
}
malo by to vyzerať cca takto:
#define zaregistruj( fn_name) zaregistruj_funkciu(......??....)


int zaregistruj_funkciu(char* nazov, void *fc_ref);

void cmd_MojaFunkcia1();
void cmd_MojaFunkcia2();
void cmd_MojaFunkcia3();
...

main()
{
zaregistruj(MojaFunkcia1);
zaregistruj(MojaFunkcia2);
zaregistruj(MojaFunkcia3);
...
}


...Ďakujem

JavaScript, AJAX, jQuery › Vytváření proměných cyklem FOR
17. 12. 2008   #92135

To pidgin : Čo blbneš, sprav to cez polia.

var a = [], b=[];

for(i=0;i<10;i++)
{
a[i] = new Image(); a[i].src= i + "a.gif";
b[i] = new Image(); b[i].src= i + "b.gif";
}

alebo ešte lepšie, nevytváraj dve polia, ale iba jedno, ktorého prvky budú polia obsahujúce dva obrázky
var imgs =[];

for(i=0;i<10;i++)
{
im = [new Image(),new Image];
im[0].src = i+'a.gif';
im[1].src = i+'b.gif';
imgs.push(im);
}

Ak sa ti nepáčia polia v poli, tak objekty:
var imgs =[];

for(i=0;i<10;i++)
{
im = {a:new Image(),b:new Image};
im.a.src = i+'a.gif';
im.b.src = i+'b.gif';
imgs.push(im);
}



PHP › Nefunkční defined()
11. 12. 2008   #91617

chybaju ti apostrofy...

PHP › Zvlastne fungujuci IF
3. 12. 2008   #90977

To Smokie :

Poznám takéto problémy :-) Chyba sa väčšinou ukáže niekde medzi stoličkou a klávesnicou... Nechaj si to všetko poriadne vypísať, určite niečo nájdeš:

foreach($objContents as $c1) 

{
var_dump(array(
'a' => $c1->get_shortname(),
'b' => $exp_cont[1],
'a==b' => $a==$b,
'a===b' => $a===$b
));
}

MySQL › Prikaz while a kde je chyba
29. 11. 2008   #90776

To Pavel :

pozri sa na ten kód takto:

CREATE PROCEDURE dowhile() 

BEGIN
DECLARE v1 INT DEFAULT 5;

WHILE v1 > 0 DO
SET v1 = v1 - 1;
END WHILE;
END
MySQL spracuje iba časť, po prvý "oddeľovač príkazov" - bodkočiarku. Ďalej bude vidieť príkaz WHILE ktorý je povolený iba v stored routins, čo spôsobí chybu..

Preto treba v mysql prestaviť "oddelovač príkazov" (delimiter) tak, aby sa kód spracoval až po slovo END aby sa bodkočiarky nechápali ako oddeľovače, ale ako súčasť kódu procedúry:

DELIMITER $$

CREATE PROCEDURE dowhile()
BEGIN
DECLARE v1 INT DEFAULT 5;
WHILE v1 > 0 DO
SET v1 = v1 - 1;
END WHILE;
END$$
DELIMITER ;

..teraz sa za oddelovač príkazov použije $$, čiže príkaz CREATE PROCEDURE sa vykoná celý. Nakoniec je treba nastaviť delimiter naspäť na bodkočiarku.

EDIT: Je to popísané v dokumentácii pri: CREATE PROCEDURE http://dev.mysql.com/doc/refman/5.1/en/create-procedure.html a myslim že je logicke že sa to už nespomina pri každom príklade...

JavaScript, AJAX, jQuery › zarovnáni na střed okna
27. 11. 2008   #90630

Buď vytvoríš element s position:fixed, čo nebude fungovať v starých IEčkách, alebo budeš javascriptom kontrolovaťpolohu scrollbarov a polohu daného elementu budeš preratávať...

prvý link ktorý mi vyskočil z googla:
www.google.com/search?q=javascript+window+size+scrollbar+position
http://www.softcomplex.com/docs/get_window_size_and_scrollbar_position.html

tiež ti môže pomôcť toto:
https://developer.mozilla.org/en/Determining_the_dimensions_of_elements

MySQL › Query generujúce riadky z ro…
26. 11. 2008   #90565

To KIIV :

Ide o to, že chcem uživateľovi podhodiť tabuľku, kde bude mať dátumy - dni (prvky) a vedľa nich určitým spôsobom spracované dáta. A chcem aby tam boli dni všetky, aj tie, pri ktorých dáta niesú. Myslel som že to poriešim priamo v mysql, ale...

Rád by som to urobil ako navrhuješ, lenže problém je, že samotné dáta sú rozhádzané po iných rôznych tabuľkách, kde sa na daný dátum odkazujú. Čiže by som potreboval v jednej z tých tabuliek kontrolovať prázdne dni, a dopĺňať prázdne záznami s odkazmi na tieto dni. To mi už príde jednoduchšie zbúchať tú tabuľku s jedným stĺpcom a zoradenými dátumami pre rozsah odkedy dáta začínajú až niekoľko rokov dopredu, čo nebude zas také strašné množstvo riadkov...

Našiel som chlapíka, čo riešil zhruba to isté, ale na tej stránke sa odpovede bez platenia asi nedopátram...
http://www.experts-exchange.com/Microsoft/Development/MS_Access/Q_23311333.html

Jou, a ešte ma napadá, že by to šlo riešiť tak, že mysql mi vráti iba riadky s dátami a pri výpise ich budem kontrolovať, či medzi nimi neexistujú prázdne dni, a ak hej, tak ich ručnevypíšem... ...čo asi nebude sranda napísať vo visual basicu :-D

MySQL › Query generujúce riadky z ro…
26. 11. 2008   #90557

Pokúsim sa to čo najviac zovšeobecniť:

Chcem vypísať dáta z určitého rozsahu prvkov - napríklad 1 až 9. Data mám v tabuľke t_data, no nemusí v nej byť záznam pre každý prvok. Chcem query, ktoré vypíše pre každý prvok z rozsahu jeden riadok, aj keď preň dáta neexistujú.

Tu je príklad, ako to riešim teraz - pomocou pomocnej tabuľky, ktorú musím vygenerovať tak, že obsahuje všetky prvky rozsahu:

SELECT t_items.N,                   t_items     t_data         

t_data.Hodnota +---+ +---+---------+
FROM t_items LEFT JOIN t_data | N | | N | Hodnota |
ON t_items.N = t_data.N +---+ +---+---------+
| 1 | | 1 | 3 |
+---+---------+ | 2 | | 5 | 4 |
| N | Hodnota | | 3 | | 8 | -5 |
+---+---------+ | 4 | +---+---------+
| 1 | 3 | | 5 |
| 2 | | | 6 |
| 3 | | | 7 |
| 4 | 4 | | 8 |
| 5 | | | 9 |
| 6 | | +---+
| 7 | |
| 8 | -5 |
| 9 | |
+---+---------+

Vedel by mi niekto poradiť ako dosiahnuť rovnaký výsledok bez tej pomocnej tabuľky?

Napadá ma, ak by som vedel napísať query, koré by takúto tabuľku vygenerovalo, dala by sa použiť ako sub-query.
Niečo ako "SELECT 1 až 9"...existuje niečo také?


PHP › PHP &amp; Procedury
19. 11. 2008   #90120

Ako si to vyriešil?

Ja som to akurat spojazdnil cca takto:


  mysqli_multi_query($link, "CALL test.helloworld()");


do
{
if ($r = mysqli_store_result($link))
{
echo '<table border="1">';
while($l = mysqli_fetch_row($r) ) echo '<tr><td>'.implode('</td><td>',$l).'</td></tr>';
echo '</table>';
}
} while (mysqli_next_result($link));

mysqli_close($link);

PHP › PHP &amp; Procedury
19. 11. 2008   #90113

To CommanderZ : mysqli má objektový ale aj procedúrový prístup. Ale to nie je jediný rozdiel od mysql. Napr vie tie multiquery: http://sk.php.net/manual/en/mysqli.multi-query.php
(mysqli = MySQL Improved)

PHP › PHP &amp; Procedury
19. 11. 2008   #90109

To Dawo :

mysql proceduru zavolaš takto:

call helloworld()


mysql api však neumožnuje multi result takže prečítaš asi iba posledný výstup procedúry, t.j. iba ten
SELECT 'world';
, teda aspoň myslím... Ak mám pravdu, tak by si to možno dalo vytiešiť pomocou mysqli, ale to ja neporadím...

Jou, a myslím že mysql je zdokumentované dosť dobre, tak nerozumiem prečo sa zaťažuješ na fóre, ešte ktomu PHP (offtopic).

PHP › PHPMAILER - odoslanie emailu…
8. 11. 2008   #89324

Asi to nepatrí celkom do php, ale najskôr tu sa nájde niekto, kto možno poradí. Prípadne poprosím o presunutie.

Snažím sa odoslať dva e-maily. Jeden návštevníkovi webovej stránky, druhý mne. Chcem, aby ten druhý email, ktorý pôjde mne, mal v prílohe celý ten prvý email - kompletný ( aj s prílohami, ak budú)

PHPMailer class som rozšíril o metudu Save(), ktorá mi vráti head+body. (Predpokladám, že to je práve to eml - message/rfc822 - došiel som k tomu tak, že som uložil email na disk, a pozrel, ako ten súbor vyzerá, heh.)

class cl_plg_PHPMailer extends PHPMailer

{
..
function Save()
{
$this->SetMessageType(); // neviem celkom čo to robí, ale takto to funguje...
return $this->CreateHeader() . $this->CreateBody();
}
...
}

Ok, prvý email odošlem a druhý potom vytváram tako:
$email_1->send();


$email_2 = new cl_plg_PHPMailer();
$email_2->...

$email_2->AddStringAttachment(
$email_1->save(),
'priloha.eml',
'base64',
'message/rfc822'
);
$email_2->send();

// AddStringAttachment($string, $filename, $encoding = 'base64', $type = 'application/octet-stream')


Problém bol ten, že email vôbec neprešiel. mailserver to stopol, EML - blokovaná príloha. Server neodoslal ale žiadne upozornenie späť, že bol email zablokovaný, proste nič (netypické). Keď som ale nechal $type = 'application/octet-stream', tak email prešiel. Akurát mailový klient mi neumožnil prílohu otvoriť ako email - iba mi dovolil spraviť save na disk. Ak som po tom eml na disku poklikal, nabehol mi outlook express, a ten mail sa otvoril.

=> z toho že sa to EML zablokovalo mi nejako vyplynulo, že eml, asi nebude ten pravý formát pre email v prílohe. Veď bežne prijímam emaily s emailom v prílohe a nezablokuje ich. Napriek tomuto ciťáku som skúsil toto:

Myslel som že to vyriešim tak, že na mail serveri to blokovanie EML, zruším. Stalo sa, mail potom prešiel, a aj sa zobrazoval ako email (mal ikonku obálky), ale miesto názovu súboru - prílohy - bol mišung znakov a aj keď som sa pokúsil tú prílohu otvoriť nabehlo okno s pomotanými znakmi. (mailový klient sa zrejme pokúsil nahradiť názov súboru/prílohy za subject emailu v prílohe, ale nepodarilo sa)..

Nejako už neviem, kam ďalej, no stále mám pocit, že ide o primitívny problém (mail s mailom v prílohe). Vytrápil som tým už dobrého pol dňa a výsledky žiadne :-(

Vedel by niekto poradiť?

JavaScript, AJAX, jQuery › FF a omezení délky
3. 11. 2008   #88999

Jou, som lenivý a nechce sa mi tie zdrojáky otvárať, ale predpokladám že budeš mať problém s kódovaním. FF má totiš nejakú chybku alebo také niečo, aj ja som sa s tým dosť za oných čias natrápil. A myslím že to nevyriešili doteraz, no neviem... Skús vo firefoxe odoslať iba čisto ascii znaky, či to prejde. Ak hej, problém bude tam, poriešime ;-)

PHP › php, ajax asynchrónne odpovede
29. 10. 2008   #88635

To lubo : http://www.google.com/search?q=ajax+streaming

Webové servery (Apache, IIS...), .htaccess › myslq_connect()
28. 10. 2008   #88544

To lolik :
windows/linux?
kde bezi to php?
apache? mod_php? / php-cgi ?

Mas to doma, alebo na hostingu?

PHP › php, ajax asynchrónne odpovede
28. 10. 2008   #88528

To KIIV : Javascript v browseri so soketmi nepohne. Browser poskytuje akurát ten xhr na odosielanie asynchronnych requestov po protokoloch, ktoré štandardne podporuje browser (http,ftp,..).
Ale java by tie sockety mohla mať, takže javascript->java->socket->irc by už mohlo ísť...

http://www.google.com/search?q=accessing+java+javascript
http://www.google.com/search?q=java+socket

Myslím však, že keď niekto robí webový chat, tak s irc serverom nechce mať nič spoločné a urobí to po svojom. Teoreticky by sa dal spraviť vlastný chat server jedným php scriptom odpáleným z príkazového riadku (cli). V php tie sockety nie sú až taký problém. Navyše by sa to databázovo dalo ľahko prepojiť so zvyškom webovej aplikácie a mohlo by to bežať na príncípe refreshovania, streamovania až po sockety cez javu...

PHP › php, ajax asynchrónne odpovede
28. 10. 2008   #88524

Dalo by sa to spraviť "streamovaním". Rovnako ako keď downloaduješ nejaký veľký súbor. Vytvorí sa jedno permanentné spojenie (client->server) po ktorom stále tečú data zo servera klientovi. No pri chate sa tie data budú prenášať iba keď bude treba. Ako keby ten download "haproval". Raz to ide, chvíľu čaká... Na strane klienta využiješ to, že odpoveď servera sa pomocou xhttprequest dá čítať ihneď ako príde, nemusíš čakať na ukončenie spojenia. Ak náhodou spojenie padne, tak ho vytvoríš odznova, takže to bude môcť fungovať aj na príncípe refreshovania, aj permanentného spojenia. Ak bude chcieť klient poslať správu na server, jednoducho vytvorí paralelne ďalší request a odošle post.
Problém takéhoto riešenia je v tom, že každý klient vytvorí jedno permanentné spojenie a každé spojenie bude predstavovať jeden php script v pamäti. Ono to dosť zaťaží server... A garantujem ti, že to nebude jednoduché nakodiť, minimálne bude potrebné vyriešiť tu záťaž servera a taktiež to bude chcieť dobre sa vyhraťs javascriptom (parsovanie odpovedí, kódovanie,...)

JavaScript, AJAX, jQuery › :-:-:Pomooc prosííím problem…
27. 10. 2008   #88444

To Pepa : Trošku sa posnaž.

PHP › Vyber z databaze
18. 10. 2008   #87655

To Peter P. : a od čoho zavisia tie kody? aký je vzťah medzi riadkom a spôsobom zobrazenia?
Ak žiadny, a chceš si to riadiť sám, tak si jednoducho nadefinuj niekoľko takých funkcií a použiješ vždy tú ktorá sa ti hodí. Alebo ostaň len pri jednej funkcii a pridaj jej ďalší parameter, ktorým budeš riadiť spôsob zobrazenia.

PHP › Vyber z databaze
18. 10. 2008   #87634

Nie celkom rozumiem, ale skusim:

Vyberies z DB napr 4 zaznamy a tie si ulozis do nejakeho pola. a potom kazdy polozku vypises samostatne.

cca takto (php):

Niekde na zaciatku stranky nacitas do pola niekolko poloziek.

$polozky = array();

$r = mysql_query('select ... LIMIT 4');
while($polozky[] = MySQL_fetch_row($r));
MySQL_free_result($r);


Zadefinujes si funkciu, ktora vypise polozku:
function vypis_polozky($data)

{
echo '<h2>'.HtmlSpecialChars($data[0]).'</h2>'; // napr nadpis
echo $data[1]; // napr text clanku
}


Vždy, keď budeš chciet vypísať položku, zavoláš túto funkciu a odovzdáš jej konkrétne dáta:
vypis_polozku($polozky[ <cislo_polozky> ]);


Druhá možnosť je taká, že vždy, keď budeš chcieť vypísať jednu kokrétnu položku, stiahneš si ju z databázy a na to ju vypíšeš. Ale efektívnejšie bude, keď si najprv načítaš všetky položky jedným query, niekde si ich "zakešuješ", a potom ich vypíšeš tam, kde treba....

PHP › Dvojtý přístup na stránku -…
9. 10. 2008   #86878

To Kuko.sk : A nemôže byť problém v browseri? Čo ak niekedy odošle 2 requesty? Robí to vždy alebo len pri nejakom konkrétnom prehliadači? Skúšal si? Ja som sa s tým dávnejšie stretol pri Firefox+Firebug, odosielal vždy 2 requesty. Neviem ako to je teraz...

Skontroluj si log servera, koľko requestov je zaznamenaných v ňom...

PHP › Eshop - platba kartou
25. 9. 2008   #85895

To plasmo :
Netuším ako to pôjde tak priamo. A ani klienti neradi nechávajú svoje čísla na kadejakých stránkach.

Častejšie sú obchody riešené takto:
Obchod vygeneruje predfaktúru s číslom účtu, variabilným symbolom a sumou, kam sa majú peniaze poslať. Potom je na klientovi, aby vykonal prevod. Potom sa mu vystaví faktúra a pošle spolu s tovarom.

Aby to mal zákazník ľahšie, Banky ponúkajú nejakú službu na prepojenie s internet bankingom. Tak že klientovi sa po odoslaní objednávky zobrazí predfaktúra a na nej budu ikonky rôznych bánk, on si klikne na tú sboju a to ho presmeruje do jeho internet bankingu jeho banky, kde sa nahlasi svojim menom a heslom. Hneď po prihlásení sa mu zobrazí vyplnený platobný predpis, ktorý si môže skontrolovať, potvrdí ho, a internet banking ho presmeruje späť na tvoj obchod.

Základom je mať túto službu dohodnutú s čo najväčším počtom bánk...

tu máš linky na dve slovenské banky, ktoré som len tak narýchlo našiel. (sú to odkazy priamo na popis služby a spôsob ako sa dá zriadiť). Môžeš pozrieť ako to funguje, tá druhá banka tam má zverejnené aj technické informácie, ako sa to s internet bankingom prepája.

Potom už len zisti či a ako to podporujú banky tvojich potencionálnych klientov...

http://www.tatrabanka.sk/cgi-bin/web/app/index.jsp?page=polozka&key=tatra_pay
http://www.vub.sk/show.asp?category=989



JavaScript, AJAX, jQuery › Přiřazení eventu adresovému…
24. 9. 2008   #85784

zmenu bez vyvolania eventu vykonas jednoducho:

window.location.href = last_href = '...nova_#_url...';

JavaScript, AJAX, jQuery › Přiřazení eventu adresovému…
24. 9. 2008   #85774

To ZorZ : Kým tú zmenenú adresu v browseri nepotvrdíš (napr. enterom), tak sa do location.href nezapíše, čiže sa ti to ani nepodarí. Neviem prečo rozmýšlaš nad nejekými "semaformi", veď ten spôšob zachití všetky zmeny adresy, či už zadané užívateľom, alebo scriptom. Ten interval na pozadí ťa mrzieť nemusí, keďže je tam len jedna podmienka nijako nezaťaží vykonávanie. Prípadne si môžeš ten interval zväčšiť, napr. na 500ms, myslím že ani mapy.cz nereagujú okamžite.

JavaScript, AJAX, jQuery › Přiřazení eventu adresovému…
23. 9. 2008   #85756

ZorZ napsal:
To Prog. : Ta kontrola tam určitě je, ovšem fce zpracovávající změnu parametru se musí spustit pouze na událost onenter, jinak by se fce spouštěla již při psaní a ne po potvrzení enterem..


Skúsil som to spustiť a chová sa mi to presne tak, ako potrebuješ... kým nedám enter, location.href sa nezmení, "event" sa nevyvolá... (firefox 3).

JavaScript, AJAX, jQuery › Přiřazení eventu adresovému…
23. 9. 2008   #85719

Takýto event nebude. Teoreticky môžeš stále dokola kontrolovať href a pri zistení zmeny event ručne vyvoláš. Neskúšal som, no mohlo by to ísť...


var last_href = window.location.href;

setInterval(function()
{
if (last_href !== window.location.href)
{
last_href = window.location.href;
alert('adresa sa zmenila: ' + window.location.href);
}
},100);

› http + https = dvojity obsah…
23. 9. 2008   #85708

Čo poviete na to, všetky https requesty, ktorých hlavička USER_AGENT obsahuje slovo "bot", redirectovať na http.

Tak si ľudia môžu vybrať http/https, ale ak niekto odkáže na stránku cez https verziu, google a spol. uvidia redirect 301 na http verziu.

dobré riešenie? ...resp iné riešenia?

PHP › Maximální hodnota pole
22. 9. 2008   #85664

1. oprav 11. riadok tak, ako poradil CommanderZ (algoritmus maxina)
2. na konci kódu pridaj volanie tej funkcie a výpis jej hodnoty:

echo Maximum($fronta);

PHP › Prevedeni &quot;TRUE&quot; n…
10. 9. 2008   #84810

To hrach :

var_dump((bool) "FALSE"); => bool(true)

btw, namiesto $boolean = (bool) $mixed môžeš použiť $boolean = !!$mixed (kratší zápis ;-))

To Ruda :

zda to nejde udelat bez == "TRUE" proste jen if($value["default"])

Toto je otázka?
Ak áno, potom odpoveď znie, nie. Pretože ty máš reťazec znakov tvoriaci slovo "TRUE" alebo "FALSE". Jeho logická hodnota je stále true, keďže ide o neprázdny reťazec.

PHP › Prevedeni &quot;TRUE&quot; n…
9. 9. 2008   #84780

Máš $string = 'TRUE' (alebo 'FALSE') a chceš z toho boolean true / false ???

Ak som to dobre pochopil, tak:

$boolean = $string==='TRUE';

JavaScript, AJAX, jQuery › js replace
5. 9. 2008   #84504

http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_str_replace/

PHP › Pomoc s php scriptem
22. 8. 2008   #83376

Cele to 14- riadkové šialenstvo môžeš nahradiť týmto:

$subor = 'data-2.inc';
file_put_contents( $subor , $novy_prispevok . file_get_contants($subor) );

...ale ukladať príspevky do súboru je zlý spôsob.

PHP › goto
14. 8. 2008   #82856

To CommanderZ :
V php hej, no v cečku nie...
Najprv som chcel len povedať že v php if (true) bude teoreticky rychlejsie (nemusí sa vyhodnocovať) & pači sa mi viac.
V cečku však if(true) (štandardne) nepôjde, preto if(1)

btw, ...napadá niekoho význam if(true) { ... } ..? Mňa ani nie.

PHP › goto
14. 8. 2008   #82850

To survik1 :
zjednoduš to: if (1==1) === if(true) // === v cečku if (1)

Ale aj tak mi asi nejako ušla podstata...

PHP › goto
14. 8. 2008   #82825

goto patrí do štrukturovaného programovania, napríklad do kalkulačiek. V php nemá čo hľadať.

http://cs.wikipedia.org/wiki/Skok_(informatika)

PHP › Součet hodnot
13. 8. 2008   #82749

To CommanderZ :
Každopádne ide o to, aby sa ten údaj nepočítal stále odznova, ale bol uložený. Pred tým sa tie čísla musia "synchronizovať" a to stačí urobiť iba raz.

Ohľadom algoritmu máš pravdu, šupnúť tú úlohu na mysql to urýchli. Na pochopenie mi však príde jednoduchšie ukázať to na cykloch.

PHP › Součet hodnot
13. 8. 2008   #82742

pri každom zobrazení fotky zvys pocty zobrazeni pri fotke aj pri uzivatelovi:

update mmh_file_storage set počet návštev = počet návštev + 1 where fotka = aktualne_zobrazena_fotky
update mmh_user_info set počet návštev = počet návštev + 1 where uzivatel = vlastnik_aktualne_zobrazenej_fotky

ak tam mas teraz nespravne cisla, tak ich budes musiet natiahnut z tej tabulky ip - s tym ti pomoze script ktory len raz:

princip:

1. zistis vsetkych uzivatelov:
2. cyklus - pra kazdeho uzivatela urob:
2.0. $pocet_zobrazeni_uzivatela = 0
2.1. zisti vsetky fotky
2.2. cyklus - pre kazdu forku urob
2.2.2. $pocet_zobrazeni_fotky = zisti pocet zobrazeni konkretnej fotky z tabulky ip (select count(*)...)
2.2.2. uloz zisteny pocet ku fotke (update ...set pocet = $pocet_zobrazeni_fotky
2.2.3. zvys pocet zobrazeni pre daneho uzivatela o pocet zobrazeni fotky $pocet_zobrazeni_uzivatela+= $pocet_zobrazeni_fotky;
2.2. cyklus - koniec
2.3. uloz zisteny pocet ku uzivatelovi (update ...set pocet = $pocet_zobrazeni_uzivatela
2. cyklus - koniec

PHP › Součet hodnot
13. 8. 2008   #82738

jednoduché veci riešiš strašne komlikovanou a škaredou cestou a potom je ťažké dorobiť do toho nejakú banalitu.

Ten návrh je totálny chaoz. Kôli jednej fotke preťahuješ pomaly celú tabuľku. Máš vôbec tušenie ako sa pri tom mysqlka namaká? A o využití pamäte nehovorím...

Príklad: keď zavolaš toto:
$zobrazeni = mysql_num_rows(mysql_query("SELECT * FROM ip WHERE fotka = '$nazev'"));

Najprv mysl prebehne celú tabuľku (alebo len index, pokiaľ ho máš) a všetky riadky, ktoré vyhovujú pošle do php. Z celého tohto kvanta dát, sa nevyužije ani jedna bunka - použije sa iba počet riadkov.
Už len toto by šlo podstatne zrýchliť takto: $zobrazeni = mysql_result(mysql_query("SELECT count(*) FROM ip WHERE fotka = '$nazev'"),0);

Nemá zmysel riešiť konkrétnu úlohu, skôr navrhnúť lepší dátový model. Ak sa jedná o zabehnutý systém, budeš potrebovať poriadne veľa leukoplastu...

PHP › Součet hodnot
13. 8. 2008   #82731

To baryman :

Snažím sa pochopiť, no nejako mi to nejde:

Máš nejakú tabuľu, "ip" kde jeden riadok predstavuje jedno zobrazenie nejakej fotky. O akú fotku ide máš v stringovom stĺpci "fotka". Pri každom zobrazení fotky pridáš do tejto tabuľky riadok. Keď chceš zistiť počet zobrazení niektorej fotky, zavoláš SELECT * from ip WHERE FOTKA = nazov. Potom, čo sa všetky tie dáta z mysql pretiahnu do PHP, zistíš koľko to bolo riadkov a to považuješ za počet zobrazení tej fotky.

Tento zistený údaj potom zapíšeš do tabuľky spomenutej v tvojom prvom poste (mmh_file_storage) ku konkrétnej fotke, predpokladám že asi nejako takto:

Mysql_query('update mmh_file_storage set počet návštev = zistena hodnota where fotka = fotka...


Prosím potvrď, či je to tak, alebo to upresni, pred tým než budem pokračovať...

JavaScript, AJAX, jQuery › AJAX - problém s maličkostí
11. 8. 2008   #82573

Problém je, že select sa v ie nedá meniť pomocou innerHTML
Pozri: http://www.quirksmode.org/js/options.html

PHP › Lokalizace
8. 8. 2008   #82354

controller jednoducho dostane všetky requesty. Ako sa budú ďalej spracúvať sa rozhodne v php kóde. Funguje to rovnako ako keď použiješ

RewriteRule ^kategorie/([^/]+)/([0-9]{1,3})?/?$ ?kategorie=$1&page=$2 [L]
s tým rozdielom, že na controller.php sa presmerujú všetky requesty. Nepotrebuješ používať žiadne ?=$.. pretože pôvodnú url aj tak z php uvidíš a takto si aspoň neprepíšeš prípadné GET premmenné

Dosť ma tento problém zaujal, tak som zbúchal náčrt takého "mini frameworku", pre prácu s viacerými jazykmi. Na určenie jazyka podporuje aj sub-domény, aj adresáre.

všetky súbory stačí rozbaliť do docroot adresára s nastaveniami, ktoré už boli vyžšie spomenuté.

readme.txt

Štruktúra súborov
--------------------------------------------------------------------------------
|- .conf/
| |- cfg.language.php -- nastavenie subdomeny/adresare na určenie jazyka
|
|- .inc/
| |- ctl.language_and_url.php -- nastavuje jazyk a kontroluje url
| |- fns.locale.php -- funkcie na čítanie lokalizovaných reťazcov
| |- fns.path.php -- pomocné funkcie na prácu s cestami
|
|- _inc/ -- ukladá časti stránok, ktoré sa includujú (napr menu)
|- content/ -- obsah web server
|- data/ -- css, obrazky, ...
|- locale/ -- ukladá lokalizácie
|- controller.php -- skript, prijímajúci všetky requesty


Princíp:
------------
1. request => spusti sa controller.php
2. controler spusti ctl.language_and_url.php - zanalyzuje url, nastavy jazyk,
pripadne prerobi url a urboi redirect
3. naincluduje sa a vykona subor content/ [pozadovana_cesta] .php


Funkcie na lokalizaciu:
----------------------

l($vyraz,[$lang=default])

vrati preklad výrazu v požadovanom jazyku
ak nie je zadaný $lang -- použije sa aktuálny jazyk


l_e(),l_s(),l_es()

odvolavaju sa na l() vid: fns.locale.php


prekladany výraz sa sklada z dvoch častí:

l('kniznica:label');

ak je kniznica vynechaná, použije sa aktuálna knižnica:

l('label')

aktuálna knižnica je shodná s aktuálnou cestou, lepšie vysvetlenie
bude na príklade

knižnica sa môže zadávať relatívne: l('./ina/knižnica:label')
aj absolútne l('/kniznica/:label');

knižnice sú umiestnené takto: locale/ [jazyk] [/knižnica].locale.php


l_url($cesta, [$lang=default])

vytvorí url na danú cestu v požadovanom jazyku
- akceptuje relatívne aj absolútne cesty
- pre nastavenie url na aktualny súbor v inom jazyku:

l_url('',[jazyk])



-------------------------------------------------------------------------------
...ehm, radšej vysvetlím na príklade:


Request bude smerovaný na:

www.domena.com/[jazyk]/toto/je/stranka.html (pre adresárovú verziu)
(alebo)
[jazyk].domena.com/toto/je/stranka.html (pre subdoménovú verziu)

ako [pozadovana_cesta] sa chápe /toto/je/stranka.html,
takže sa spusti script

/content/toto/je/stranka.html.php

[aktuálna knižnica] sa nahra zo suboru:

/locale/[jazyk]/toto/je/stranka.html.locale.php

ak by request smeroval na adresár:

www.domena.com/[jazyk]/toto/je/adresar/ (pre adresárovú verziu)
(alebo)
[jazyk].domena.com/toto/je/adresar/ (pre subdoménovú verziu)

ako [pozadovana_cesta] sa chápe /toot/je/adresar/index.html

spusti sa script:

/content/toot/je/adresar/index.html.php

aktuálna knižnica] sa nahra zo suboru:

/locale/[jazyk]/toot/je/adresar/index.html.locale.php


-----
Myslím že tých zdrojákov nie je až tak veľa, že by sa nedali pochopiť...

v prípade otázok progman@centrum.sk, ale väčšinou za odpoveď neručím...


..v prípade otázok tu do fóra

edit: Našiel som bug, .htaccess v adresári locale/ sa chápe ako jazyk

./inc/ctl.language_and_url.php, riadok 36: doplniť:
if ($lng && $lng!=='.' && $lng!=='..' && $lng[0]!=='.')

PHP › Lokalizace
7. 8. 2008   #82214

$language = 'en';
// todo: skus pouzit jazyk z nastavenia browsera

Myslel som tým to, že namiesto toho $language='en' skús zistiť jazykové nastavenie browsera (z $_SERVER['HTTP_ACCEPT_LANGUAGE']) a podľa toho rozhodnúť o jazyku,...

Ako na stránku linkovať? Ak bude link na slovenskej stránke tak asi rovno na slovenskú verziu... z českej na českú...
Pre tých čo na linky klikajú by zasa bolo výhodné linkovať na verziu bez určenia jazyka (použiť napr. www). Potom by ich to automaticky presmerovalo na ich jazyk... Nevýhodou by zas bolo asi nerovnomerné rozloženie pageranku, google by videl linkovanie iba na jeho jazykovú verziu.
Vo výsledku to bude asi jedno, aj tak ľudia budú linkovať, ako im príde.
Hlavne nezabudni prelinkovať jednotlivé jazykové verzie medzi sebou, tak by sa mal ten pagerank rovnomernejšie rozložiť.

Link na aktuálnu stránku v jazyku $language bude vyzerať asi takto:
echo '<a href="http://'.$language.'.'.$server_name . $_SERVER['REQUEST_URI'].'">'.$language.'</a>';

Nezabudni na hlavičky:
<?php

..
Header('Content-Language: '.$language);
...

?><html lang="<?php echo $language ?>" ...>
<head>
...
<meta http-equiv="Content-Language" content="<?php echo $language ?>" />
...


V rámci stránky používaj iba relatívne adresy a máš po probléme - do linkov nemusíš vkladať žiadnu informáciu o jazyku.

tie rewrite ruly nemajú nič spoločné s doménou, takže nemáš tam čo meniť.

ale odporúčam ti sa na ne vykašlať a použi iba jedno:
RewriteEngine On

RewriteRule ^(.*)(\.html|\.htm/)$|^$ controller.php [L,QSA]
O všetky requesty končiace lomítkom alebo .htm(l) sa ti postará jeden script. Požadovanú url adresu uvidíš v $_SERVER['REDIRECT_URL'] a jednoducho si ju spracuješ phpčkom, čo mňe prijíde omnoho jednoduchšie...

PHP › Lokalizace
7. 8. 2008   #82206

To cheeester :

Jazyk na subdoméne

Nastavenie apache:
virtual host:

<VirtualHost ip:80>

ServerName domena.com
ServerAlias *.domena.com
DocumentRoot /cesta/k/docroot/
</VirtualHost>

v každom php ako prvý naincluduj nejaky language_controller.php
<?php


$server_name = 'domena.com';
$languages = array('en','cs','sk');

$first_dot = strpos($_SERVER['SERVER_NAME'],'.');
$language = substr($_SERVER['SERVER_NAME'],$first_dot);

if (!in_array($language,$languages))
{
$language = 'en';
// todo: skus pouzit jazyk z nastavenia browsera
}

if ($language.'.'.$server_name!==$_SERVER['SERVER_NAME'])
{
header("HTTP/1.1 303 See Other");
header('Location: http://'.$language.'.'.$server_name . $_SERVER['REQUEST_URI']);
exit();
}

echo 'jazyk: ['. $language .']';

?>



...a ešte lepšie by bolo pomocou mod_rewrite všetky requesty smerovať na jeden php súbor a v ňom spracúvať zvyšok

Ak sa chystáš používať https, tak použi radšej adresáre

PHP › Lokalizace
7. 8. 2008   #82201

To cheeester :

k dispozicii máš niekoľko možností:

www.frima.com/stranka.html?lang=en

www.frima.com/stranka.html?lang=cs
www.frima.com/stranka.html?lang=sk

www.frima.com/en/stranka.html
www.frima.com/cs/stranka.html
www.frima.com/sk/stranka.html

en.frima.com/stranka.html
cs.frima.com/stranka.html
sk.frima.com/stranka.html


...prečo si si vybral práve tú s metódou get ???

JavaScript, AJAX, jQuery › Záhadná funkce
6. 8. 2008   #82089

y++; // navýšení proběhne, ale jenom vrámci fce


Prebehne navýšenie premmennej y a tá existuje "globálne". Nevidíš to, pretože s novou y hodnotou nikde nepracuješ.
doplň tam:
objekt.innerHTML = Text[y];

mimochodom, pekný chaoz je ten kód...

PHP › Lokalizace
6. 8. 2008   #82083

Dôležité je tiež uvažovať o tvare url adries pre rôzne jazyky. V žiadnom prípade neskúšaj riadiť jazyk pomocou cookies ani session premmenných. Každá jazyková verzia by mala byť dostupná pod samostatnou url a odosielať korektné hlavičky, inak ti google zožerie iba jednu verziu.

Ak používaš, alebo chceš používať nejaké pekné ("čitateľné") url, tak uvažuj aj o tom, že v každom jazyku može byť iný nie len riadiaci znak jazyka ale aj samotný základ adresy. Napríklad taká mozilla to nerieši a používa iba anglické názvy v url:

http://www.mozilla-europe.org/en/firefox/features/
http://www.mozilla-europe.org/sk/firefox/features/
http://www.mozilla-europe.org/cs/firefox/features/
...
http://www.mozilla-europe.org/firefox/features/

stránka bez riadiaceho znaku jazyka spôsobí redirect na url s jazykom podla jazykového nastavenia prehliadača...


Tiež sa často používa strčenie jazyka do subdomeny:

sk.domena.xyz/...
cs.domena.xyz/...
en.domena.xyz/...
www.domena.xyz/... bez informacie o jazyku, urobí redirect...


Neodporúčam používať viac domén najvyžšej úrovne, lebo stratíš možnosť prenášať cookies / sessions cez jednotlivé jazykové verzie.


Ja osobne by som použil asi ten subdomenový (en.domena...), alebo adresárový (domena/en/...) tvar a podľa veľkosti a typu webu, prípadne zložitosti, by som sa rozhodol, či by som prekladal aj url alebo ju nechal v jednom (asi v anglickom) jazyku. Modulom mod_rewrite by som si všetko dal presmerovať na jeden php controller a v ňom spracúval. Ako to ďalej riešiť vo vnútri php už spomenul CommanderZ. Len chcem dodať, že znova závisí od veľkosti a typu webu, či by som dáta odkladal v súboroch alebo databáze...

MySQL › mazanie dat z 2 tabuliek
6. 8. 2008   #82077

strč pred to where ešte using...
DELETE FROM equipment_settings, equipment_info USING equipment_settings, equipment_info
where equipment_settings.id = equipment_info.equipment_settings_id && description='$description' && value='$value' LIMIT 1


http://dev.mysql.com/doc/refman/4.1/en/delete.html
hneď na začiatku - "Multiple-table syntax"

JavaScript, AJAX, jQuery › AJAX a JS na nacitanej stranke
4. 8. 2008   #81838

Cez innerhtml javascript asi nespustíš. Možno sa vytvorí element <script>...</script> ale nespustí sa. Môžeš však skúsiť z prijatého html kódu nájdeš všetky <script> ...</script> vyberieš ich obsah a spustíš metódou eval(js_kod_v_stringu);

Alebo druhé riešenie, že budeš prenášať iba javascript:

textResponse = httpRequest.responseText;

eval( textResponse );
a textResponse bude obsahovať niečo takéto:
document.getElementById("tencosameni").innerHTML = 

'<html kod ktory pridavas...>
<prvok s javascriptom musi mat ID="prvok">
</prvok>...';
document.getElementById('prvok').onclick = function()
{
// funkcia eventu prvku ktorý vyžaduje javascript
};
function xyz() { /* dalsie pridane funkcie */ };
function xyz() { /* dalsie pridane funkcie */ };
function xyz() { /* dalsie pridane funkcie */ };


edit: myslim, ze ten event nemusis vytvarat cez dom, asi bude stacit <prvok onclick="kus_javascriptu();" />...

 

 

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