https://www.google.cz/search?q=multi+group+by+example
https://dev.mysql.com/…difiers.html
Příspěvky odeslané z IP adresy 2001:718:2601:1f7:1157:e4...–
Jenze, pro zobrazovani (SELECT) jidelnicku te NOW vubec nezajima, tam je omezeni na konkretni den a hodinu, kdy uz nejsou schopni objednat dost surovin. Na maticni.cz (pro Opavu) to byva tusim do 8:00 rano.
Uzivatelovo datum v pc je nejiste, to pouziva js. To je jasne, uzivatel muze mit datum chybne.
Datum PHP se ti nelibi proc?
Datum SQL je lepsi pouze v pripade, ze SQL a PHP jsou odlisne servery a pro sql prikazy pouzivas pro ukladani NOW() a ne php date(...,time()). Pokud jsou php a sql na jednom serveru, tak ten datum bude stejny.
Nebo by to chtelo vzit vsechny datumy a vybrat ten nejvhodnejsi pomoci randomu :)
Dotaz prvni AAA.
Potrebujes, aby tam byli vsichni uzivatele nebo jen ti, co maji aspon jeden stav nenulovy?
SELECT id_user FROM users
SELECT id_user FROM articles WHERE id_state IN (1,2,3,4)
Pokud te ovsem zajimaji jen uzivatele s nejakym statusem a aplikaci doplnis nuly vsude jinde, tak ti staci z druheho dotazu smazat cast s id_user IN.
Druhy dotaz BBB je
SELECT id_state, id_user,COUNT(*) AS pocet FROM articles WHERE id_state IN (1,2,3,4) AND id_user IN (AAA) GROUP BY id_user, id_state
Jestli spravne chapu, tak ta suma te v celku nezajima a kdyby jo, da se to snadno pridat nebo poscitat pak php aplikaci.
Nevim, zda to pujde takhle napsat, jestli se to nemusi napsat trochu jinak s tim id_user IN (AAA).
A tretim dotazem CCC to das jen dohromady a pridas informace k jednotlivym sloupcum. Nema smysl tam pripojovat dalsi tabulky pro kazdy radek, kdyz to jeste nemas zgrupovane.
SELECT x.id_state, x.id_user, x.pocet, a.user_name, b.state_name
FROM (BBB) x -- musi se tam dat alias k tabulce
LEFT JOIN users a ...
LEFT JOIN states b ...
ORDER BY id_state, id_user
No, a pri tom uplne zjednodusovani by to slo napsat jako
SELECT id_state, id_user,COUNT(*) AS pocet FROM articles GROUP BY id_user, id_state -- + ty left join a order
To ti vypise vsechny, kde je ulozeny nejaky status, zgrupuje podle uzivatele a statusu. seradi podle statusu a uzivatele. Jediny problem je, ze muze nastat situace, kdy nemas na zacatku vsechny uzivatele kteri maji aspon jeden status a pak by aplikacka musela nejdriv projet cyklem cely vysledek a sesbirat id uzivatelu a seradit je. Ale to by se dalo resit UNIONem na zacatku a v aplikacce radek vynechat.
SELECT id_user,id_state,-1 AS pocet FROM states GROUP BY id_user -- nastavim na -1, a opet + left join
UNION
CCC
Ano, je to sporne. Nejaka odlehcena kontrola by tam mohla byt, treba aspon zavinac a znak pred, znak po.
Pokud te zajima platnost mailu, tak musis pouzit php nebo jiny program, ktery umi overit, zda adresa existuje, treba, ze prijme registracni mail a uzivatel na neco klikne.
Tudle se mi treba stalo, ze mi reg. mail neprisel na volny.cz nebo, na jiz zrusene, xko.cz. A jine maily bezproblemu chodili.
Jp, co se tyce php, tak pouzivam google na vyhledavani nebo manual php.net (v online verzi jsou dole nekdy i zajimave priklady od uzivatelu).
Predpoklada se, ze ti nekdo vysvetloval programovani. jinak ti to muze pripadat zmatene, neprehledne, nebudes vedet, co mas hledat.
Dinto - programovani webu - tam mas dve strany
- html, css, js - zobrazuje prohlizec, pro program je to jen text
- php (nebo java nebo .net) - program, ktery generuje text pro prohlizec a uklada data
- sql - databaze, program, ktery umoznuje ukladani dat do tabulek (lepsi nez to smolit pres php do souboru)
Misto php muzes pouzit i js, ale js proste neni urcene pro vetsi projekty. Js ale neumi ukladat data. Muze slouzit pro komunikaci s php na serveru, aby se nenacitala cela stranka znovu.
Kdyz chces udelat stranku, tak je dobre si projit prehled zakladnich prikazu. Pro ztucnovani, nadpisy, formulare.
http://www.jakpsatweb.cz
Kdyz chces k tomu pridat nejaky program, treba v js, tak neco malo mas tez na jakpsatweb, ale lepsi je si vygooglovat nejaky konkretni priklad
google = javascript example ...
Kdyz chces program v php, pak podobne
google = php example ...
Jinak, pro jednoduchou praci s php muzes pouzit jednoduche priklady. To jsou treba ruzne formulare, pocitadla zobrazeni stranky, navstevni knihy, chat.
http://peter-mlich.wz.cz/…/tic/tic.php - jen php
http://peter-mlich.wz.cz/…/ppbook6.php - jen php
http://peter-mlich.wz.cz/…_priklad.txt - php + mysql
Programy funguji tak, ze vyrobi text (stranku) a ten pak odeslou uzivateli. V tech php prikladech vidis, ze je php smichane s html. Dobre je si pripravit vsechno v php predem a pak to jen vypisovat pres prikaz echo. Pak budes mit cekem dobre prehled, kde uz je stranka a kde je programovy kod. Viz treba ten mysql_priklad, kde mam znacku
<?php, pak je kod programu, konci to ?> a pak uz je html stranka (tady zrovna jen prikazy <?php echo ... ?> nemam, ty jsou ne moc pekne schovana na radku zacinajicim echo sprintf("... ).
Databaze funguje tak, ze je to samostatny program. Musis se k nemu prihlasit pomoci hesla, ktere ti da admin. Pak si muzes pomoci prikazu vytvaret tabulky. Prikazy pro tabulky pro mysql_priklad jsou v php komentari
CREATE TABLE `x_users` ...
CREATE TABLE `x_months` ...
Muzes si to predstavit jako slozku na disku (databaze) se soubory (tabulky v databazi). A tabulky si muzes predstavit jako tabulky treba v excelu (v excelu: radky 1,2,3,4...; sloupce A,B,C...).
V php se vyrobis prikaz jako text. Pak jej napises do funkce a sql tvuj prikaz provede a vrati ti data (pokud vyhledavas). Zakladni prikazy jsou
SELECT * FROM tabulka WHERE podminky - vybere radky z tabulky, ktere odpovidaji podminkam
INSERT INTO tabulka - pridej radek
DELETE FROM tabulka... - smaz radek
UPDATE - zmen hodnoty na radku
Je jednodussi udelat takovyto jednoduchy prikaz nez se placat se soubory pri ukladani na disku jen v php bez sql. Na to prijdes casem, az budes resit slozitejsi prikazy pro vyhledavani. Databazi, kdyz das spravny prikaz, tak to najde. V php by sis na to musel udelat spesl program, ktery prohleda soubor a vybere z nej jen to, co chces. databaze dela totez, take prohledava soubor, svuj.
V tom mem prikladu by to melo vypisovat i prikaz, ktery jsem pouzil. Kdyz neco nebudes vedet, treba, jak napsat prikaz, aby ti nasel jen radky ne starsi 20 dni a pod, tak jsou tu fora na databaze, zeptej se, nekdo odpovi.
na sql kdysi existovala stranka mmgene. Jeji kopii s reklamou navic :) jsem nasel na
http://www.junext.cz/mysql/
ondrej390 - "buď pomocí JavaScriptu nebo PHP" - Nemel by spoledat na JS: new Date(), ale na datum serveru PHP: date('...',time()). Vypis pak samozrejme muze resit uz pres JS.
Lukáš Šašek - priklad do skoly?
<script>
function x(date)
{
//date = '31.8.2015 9:04';
//today = new Date(2015, 7, 31, 9, 4, 0); //m-1
var today;
date = (date+' 0 0 0').replace(/\D+/g,' ').split(' '); // pridat 3 nuly a mezery, kdyby nebyl zadan cas
today = new Date(date[2]*1, date[1]*1-1, date[0]*1, date[3]*1, date[4]*1, date[5]*1);
/*
alert([
today.getFullYear(),
today.getMonth(),
today.getDate(),
today.getHours(),
today.getMinutes(),
today.getSeconds()
]);
*/
return today;
}
var date1str, date1, date2, data, i,str,row;
date1str = '31.8.2015 9:04';
data = '\
11.6.2015 9:04;AAA\n\
11.7.2015 9:04;BBB\n\
31.8.2015 9:04;CCC\n\
11.9.2015 9:04;DDD\n\
11.10.2015 9:04;EEE\
'.split("\n");
date1 = x(date1str);
str = '';
for (i=0;i<data.length;++i)
{
row = data[i].split(';');
date2 = x(row[0]);
if (date2<date1)
{str+=row[0]+' - '+row[1];}
else
{str+='<label><input type="checkbox" name="ch'+i+'" value="'+row[0]+'">'+row[0]+' - '+row[1]+'<\/label>';}
str+='<br>';
}
document.write(str);
</script>
Tak tam pridej javascriptovou kontrolu podle vlastnich pravidel. Spoustu reseni najdes googlem
google: javascript email check example
Mozna ti tam schazi javascript z bootstrapu, jestli BS pouziva vlastni kontrolu. Nevidim tag <script>.
Tusim, ted se meni dost pravidla pro inet adresy i maily, tak mozna prohlizec zrusil kontrolu. Ale osobne policko <input type=email> jsem zatim nepouzil.
Jeste muzes zkusit googlem najit priklad na bootstrap a email.
google: bootstrap email check example