Registrace nového uživatele     Návod     Kluby     Archív  Lopuchu     Lopuch.cz  

Když diskuse,
tak s Lopuchem

Lopuch.cz

Jméno:
Heslo:
Podpora LCD:
 
Klub PHP [ŽP: neomezená] (kategorie Programování) moderuje makovec.
Archiv
Diskuse o vybornem skriptovacim jazyku php. Dulezite odkazy, pred polozenim dotazu zkuste hledat odpoved zde:
  1. www.php.net - domovská stránka PHP
  2. www.kosek.cz - spousta tutorialu pro PHP v češtině
  Nastavení klubu     Nastavení práv     Homepage     Anketa     Přítomní     Oblíbené     Lopuch     Kategorie  
autor: 
text: 
vyplnit a 
Help
 Titulek, text příspěvku  
Opište pozpátku následující text bez prostředního znaku: zfceetc
[ 1845 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  
puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 19.4.2012 09:49 - Oblíbené kluby (16:02) 3221
logický oříšekvčera večer jsem si zkoušel tuto úlohu:

Máme xy prvků v poli
prvky máme vykresit do obecné tabulky
N... počet sloupců
P... počet polí celé tabulky

Tabulku vždy dopočítat a prázdná pole doplnit, aby tabulka byla vykreslená celá

Trochu jsem to řešil kostrbatě, pomocí cyklů for a podmínek if/else
Došel jsem k řešení které funguje dobře pro mou potřebu, ale asi není naprosto univerzání na jakýkoliv rozměr tabulky


<?php
$page_set = 24; // počet záznamů na stránku - vybrat číslo dělitelné počtem sloupců !!

$t = '<table border=1>';
$i = 0;
$k = 8; // počet sloupců v tabulce galerie

$vysl = array('a','b','c','d','e','f','g','h','i','j','k','l','m'); // jakékoliv pole s X prvky


// cyklus vykreslí tabulky dle počtu prvků v poli $vysl
//******************************************************
while (list($field) = each($vysl)) {
$j = $i % $k; // binarni nasobeni $k (3)
if ($j==0) {$t .= '<tr>';}
$t.='<td>'.$field.'</td>';
if ($j==$k) {$t .= '</tr>';}
$i++; }


//vypočet pomocných proměnných
//*****************************************
$ik = $i % $k;
$ir = ceil(($i / $page_set)*($k-1));
$b = floor(($page_set - $i) / $k);
$c = $page_set / $k;
$d1 = ($page_set / $c)*1;
$d2 = ($page_set / $c)*2;
$d3 = ($page_set / $c)*3;
$d4 = ($page_set / $c)*4;


//dopočítání vykreslení tabulky tak aby žádné zbývající pole nebylo prázdné
//************************************************************************
if ($i <> 0){
if ($i < $page_set){
if (($i <> $d1) and ($i <> $d2) and ($i <> $d3) and ($i <> $d4)){
for ($w=($ik+1); $w<=$k; $w++) {$t.='<td>O</td>';}}
$t .= '</tr>';

if ($ir <= $c){
for ($s = 1; $s <= $b; $s++) {
for ($ww=1; $ww<=$k; $ww++) {$t.='<td>X</td>';}
$t .= '</tr>'; } }

else {
for ($s = 1; $s <= $b; $s++) {
for ($ww=1; $ww<=$k; $ww++) {$t.='<td>H</td>';}
$t .= '</tr>'; } }
} }

else {
for ($s = 1; $s <= $b; $s++) {
for ($ww=1; $ww<=$k; $ww++) {$t.='<td>H</td>';}
$t .= '</tr>'; } }

// uzavření tabulky
//*********************
$t .= '</table>';
echo $t;
?>



Zajímalo by mě jak se tato úoha řeší sofistikovaně (jistě je toto obecnější úloha, která je čas od času potřebná při vykreslování neúplných tabulek).
Případně nějaký odkaz na možná řešení tohoto problému.

Doufám, že jste uvítali to, že jsem s tím večer neotravoval, ale poctivě jsem se to snažil řešit bez googlování po scriptech.
...
No, výsledek tomu asi odpovídá, mě se to moje řešení taky moc nelíbí, ale funguje pro skoro všechna zadání ...
:-)

Děkuji předem za trpělivost
knedle knedle online - Krabice živých 19.4.2012 08:36  3220
tak zrus data v db, a ukladej do souboru, kterej pak smazes - tak ci tak budes muset mit cron na spusteni/kontrolu

jsou vlastně jine moznosti spusteni skriptu nez pres
- akci v browseru
- cron

?
bredy 19.4.2012 07:20  3217
huhTak s cronem jsem si hrál, ale co já vím, jediné co umím je ho nastavit tak, aby se spouštěl jen v určitých časech. Mě by se líbilo, kdyby to opravdu mohl "naplánovat", protože někdy to může být za pár sekund, jindy za 10 minut.

I když teď tam mám plánovací rozlišení v minutách, spouštět skript a vytěžovat databázi jednou za minutu se mi nechce.

PS: při přístupu (ne přes web, jde o backend, nabízející JSONRPC rozhraní) to mám udělaný teď. Je to pakárna, to máš pravdu. Nejlepší je, když si něco naplánuju za 3 minuty a další request přijde za 10 minut.
huh huh 18.4.2012 20:57  3216
Tak normálně cronem, ne? Buď přímo nastavit konkrétně, nebo nechat cron pravidelně volat nějaký plánovací skript, ten se koukne, jestli a co má udělat a udělá to (zavolá výkonný skript). Není-li cron, ale je-li do přístupů přes web, lze ten plánovací skript volat prostě při přístupu na web. (ale to je pakárna)
bredy 18.4.2012 20:46  3215
PlánovačNapadá někoho, jak by se dal v PHP ve spolupráci se serverem nebo s nějakou externí komponentou realizovat plánovač akce. Typicky neco ve stylu "proveď určitou akci 5 minut od teď"
puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 18.4.2012 18:51 - Oblíbené kluby (16:02) 3214
solved:-)
puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 18.4.2012 16:42 - Oblíbené kluby (16:02) 3213
ještě dotazPokud chci uložit HTML kód jako řetězec do proměnné a pak ji použít později k výpisu dat

konkrétně:

$pokus2 = '&nbsp;<a href='.$val->get('path_large').' class="little" onclick="return ....... 2px solid; " /></a>&nbsp;<br />';


jak ošetřit některé znaky jako $val->get, uvozovky atd..

z escape sekvencí nějak tápu,
PHP - Escape sekvence
??


zkoušel jsem zpětná lomítka, či místo > napsat entitu, ale n2jak to nefunguje
puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 18.4.2012 09:53 - Oblíbené kluby (16:02) 3212
themajkl [3209]:
děkuji
puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 18.4.2012 09:53 - Oblíbené kluby (16:02) 3211
jsem si neuvědomil že tam mám nerovnost a že ten původní výraz byl logický nesmysl
omlouvám se
puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 18.4.2012 09:49 - Oblíbené kluby (16:02) 3210
themajkl [3209]:
jejda !!!
ach jo, máš pravdu
themajkl themajkl All those moments will be lost in time - like tears in rain. 18.4.2012 09:48  3209
to ale nemáš OR, ale AND
puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 18.4.2012 09:44 - Oblíbené kluby (16:02) 3208
takto se zdá, že to funguje

if ($i <> 4) { if ($i <> 8) {
// telo cyklu
} }


ten předchozí nefyngoval
puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 18.4.2012 09:29 - Oblíbené kluby (16:02) 3207
dotazlze napsat podminku takto?


if (($i <> 4) or ($i <> 8)){
// telo cyklu
}




puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 16.4.2012 18:21 - Oblíbené kluby (16:02) 3206
zde
puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 16.4.2012 18:20 - Oblíbené kluby (16:02) 3205
funguje mi to i obecněji takto

<?php
$t = '<table border=1>';
$i = 0;
$k = 5;
$vysl = array('a','b','c','d','e','f','g','h','i','j','k','l','m');
while (list($field) = each($vysl)) {
$j = $i % $k; // binarni nasobeni $k (3)
if ($j==0) {$t .= '<tr>';}
$t.='<td>'.$field.'</td>';
if ($j==$k) {$t .= '</tr>';}
$i++; }
$r = abs($j-$k+1);
for ($w=1; $w<=$r; $w++) {$t.='<td>&nbsp;</td>';}
$t .= '</tr>';
$t .= '</table>';
echo $t;
?>



[ 1845 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  

(c) 2001-2011 Lopuch.cz   
Kontakt