Sovereign Tech Agency (Wikipedie) prostřednictvím svého fondu Sovereign Tech Fund podpoří vývoj Flatpaku částkou 508 640 eur.
Byla vydána první veřejná verze v7.0-mk2 projektu Multikernel (mklinux), který umožňuje spouštět více nezávislých linuxových jader současně na jednom stroji bez hypervizoru.
Heureka Group uspěla v soudním sporu se společností Google. Městský soud v Praze vydal rozhodnutí v oblasti soukromoprávního vymáhání soutěžního práva. Společnosti Heureka Group přiznal náhradu ušlého zisku ve výši 250 milionů korun, což spolu s úroky z prodlení a náhradou nákladů řízení činí více jak 410 milionů korun. Základem celého sporu bylo protisoutěžní jednání technologického giganta Google v letech 2013 až 2017. Google na
… více »Dnešním dnem končí LTS podpora Debianu 11 s kódovým názvem Bullseye. K dispozici je Extended LTS podpora.
Firma X zaslala předžalobní výzvu vývojáři projektu Nitter (Wikipedia), open-source alternativního frontendu k sociální síti X (ex-Twitter), a provozovatelům instancí jako XCancel, které umožňovaly číst příspěvky bez přihlášení, reklam a javascriptu. Údajně se dopouštějí „sběru dat“. Zdrojový kód Nitteru vývojář archivoval. Vývoj již dříve přerušil v roce 2024 po tehdejším omezení API X. X je dceřiná společnost SpaceXAI Elona Muska, provozující mj. kontroverzního chatbota Grok.
Bylo vydáno Ubuntu 26.04.1 LTS, tj. první opravné vydání Ubuntu 26.04 LTS s kódovým názvem Resolute Raccoon. Přehled novinek a oprav na Discourse.
Národní úřad pro kybernetickou a informační bezpečnost (NÚKIB) vydal Zprávu o stavu kybernetické bezpečnosti ČR za rok 2025 (pdf). Incidentů ubylo, sofistikovanost útočníků roste.
Open source softwarový stack AMD ROCm (Wikipedie) pro vývoj AI a HPC na GPU od AMD byl vydán v nové major verzi 10.0. S ROCm.AI. Přehled novinek v aktualizované dokumentaci.
Finanční skupina Partners se stala minulou neděli obětí kybernetického útoku, při kterém se útočníci dostali k některým osobním údajům klientů. Společnost o tom informovala ve čtvrtek. Ujišťuje, že peníze klientů nejsou v ohrožení. „Kybernetický útok zasáhl část IT infrastruktury naší společnosti. Ihned po zjištění útoku jsme s pomocí externích bezpečnostních odborníků začali intenzivně pracovat na minimalizaci škod. Útočníci se
… více »Americká technologická společnost Meta Platforms se dohodla, že zaplatí až zhruba 18 miliard dolarů (asi 373 miliard Kč) za mimosoudní urovnání sporu o závislosti dětí na sociálních sítích a provede významné změny pro jejich používání mladistvými. Téměř tři desítky států USA firmu v roce 2023 obvinily z toho, že sítě Facebook a Instagram vědomě navrhla tak, aby u dětí vyvolávaly závislost, a zatajovala tyto dopady před veřejností. Firma se
… více »
Zrovna se učím php na jednom projektu pro kamaráda(bude se jednat o ovládací panel na wi-fi router, protože on je totální BFU a webmin se mi nezamlouvá) a právě se mi podařilo dokončit algoritmus na vykreslení stromového menu a protože se na tom to PHP učím tak bych se chtěl zeptat, jestli by se na následujícím kódu dalo ještě něco upravit, nebo optimalizovat(jinak kdyby se tento kód někomi zalíbil, tak si jej klidně může použít
):
function showmenu() {
$sql= "SELECT * FROM menu ORDER BY position, menu_id";
$menu= dbcon($sql);
$sqlm= "SELECT MAX(level) AS level from menu";
$rowsm= dbcon(($sqlm));
$rows= array ();
//Pole pro uchovávání indexů, kde jsme v předchozí úrovní menu zkončili
$oldn= array ();
for ($i= 0; $i lt; count($menu); $i ++) {
if ($menu[$i]["level"] == '0') {
array_push($rows, $menu[$i]);
}
}
echo "<table>\n";
menu_rec(0, $rowsm[0]["level"], $rows, 0, $oldn, $menu);
echo "</table>\n";
}
function menu_rec($level, $maxlevel, $rowd, $next, $oldn, $menu) {
if ($level <= $maxlevel) {
if (isset ($rowd[$next]) && $rowd[$next]["level"] == $level) {
echo "<tr><td>";
for ($i= 0; $i < $level; $i ++) {
echo "*";
}
echo "<a href=\"index.php?".$rowd[$next]["url"]."\">".$rowd[$next]["title"]."</td></tr>\n";
}
$rowdo= $rowd;
$rowd= array ();
for ($i= 0; $i < count($menu); $i ++) {
if ($menu[$i]["parent"] == $rowdo[$next]["menu_id"]) {
array_push($rowd, $menu[$i]);
}
}
//Pokud existuje potomek, pokračuj zde.
if (isset ($rowd[0])) {
// a ulož kde jsme zkončili
array_push($oldn, $next);
menu_rec(++ $level, $maxlevel, $rowd, 0, $oldn, $menu);
}
//Jinak jdi na následující položku v řadě
elseif (isset ($rowdo[++ $next])) {
menu_rec($level, $maxlevel, $rowdo, $next, $oldn, $menu);
}
//Pokud neexistuje dálší v řadě(next je inkrementováno z předchozího elseif) a neexistije potomek, jdi zpět nahoru
elseif ((!(isset ($rowdo[$next]))) && (!(isset ($rowd[0])))) {
$row= array ();
//Sniž hodnotu next, protože je zvýšená od elseif
-- $next;
//Získej předka aktuální položky
for ($i=0; $i < count($menu); $i ++) {
if ($menu[$i]["menu_id"] == $rowdo[$next]["parent"]) {
array_push($row, $menu[$i]);
}
}
//Pokud existuje předek pokračuj
if (isset ($row[0])) {
$rows= array ();
// a získej přechozí úroveň menu
for ($i=0; $i < count($menu); $i ++) {
if ($menu[$i]["parent"] == $row[0]["parent"]) {
array_push($rows, $menu[$i]);
}
}
// Jinak menu ukonči
} else {
return;
}
//Zjisti, kde jsme v přechozí úrovni zkončili
$next= array_pop($oldn);
//Dokud neexistuje další položka v předcozí úrovni jdi nahoru
while (!(isset ($rows[$next +1]))) {
$row= array ();
// a získej předka v předchozí úrovni
for ($i= 0; $i < count($menu); $i ++) {
if ($menu[$i]["menu_id"] == $rows[$next]["parent"]) {
array_push($row, $menu[$i]);
}
}
$rows= array ();
// Získej předchozí úroveň
for ($i= 0; $i < count($menu); $i ++) {
if ($menu[$i]["parent"] == $row[0]["parent"]) {
array_push($rows, $menu[$i]);
}
}
// a zjisti, kde jsme v ní zkončili
$next= array_pop($oldn);
//odečti čislo úrovně
-- $level;
}
menu_rec(-- $level, $maxlevel, $rows, ++ $next, $oldn, $menu);
}
}
}
Celé menu volám ze stránky pomocí funkce showmenu()
mysql> SELECT * FROM menu; +---------------+------------------------------------------------+---------+---------+----------+--------+-------+ | title | url | type | menu_id | position | parent | level | +---------------+------------------------------------------------+---------+---------+----------+--------+-------+ | Návody | com=article&task=lists&cat=2 | article | 16 | 2 | 0 | 0 | | test | com=article&task=listp&cat=1&cat=6 | article | 15 | 1 | 0 | 0 | | UpozornÄÃ\ | com=article&task=listp&cat=1 | article | 12 | 0 | 0 | 0 | | test1 | com=article&task=listp&cat=1 | article | 21 | 0 | 15 | 1 | | test3 | com=article&task=listp&cat=2 | article | 22 | 0 | 21 | 2 | | ahoj | com=article&task=listp&cat=6 | article | 23 | 0 | 0 | 0 | | ahoj2 | com=article&task=listp&cat=6 | article | 24 | 0 | 23 | 1 | | ahoj3 | com=article&task=listp&cat=2 | article | 25 | 0 | 23 | 1 | | ahoj4 | com=article&task=lists&cat=2 | article | 26 | 0 | 25 | 2 | | ahoj5 | com=article&task=listp&cat=6 | article | 27 | 0 | 24 | 2 | | ahoj6 | com=article&task=listp&cat=2 | article | 28 | 0 | 23 | 1 | | test5 | com=article&task=listp&cat=1&cat=6 | article | 32 | 1 | 22 | 3 | | test4 | com=article&task=listp&cat=1&cat=6 | article | 31 | 0 | 22 | 3 | +---------------+------------------------------------------------+---------+---------+----------+--------+-------+
Tiskni
Sdílej:
select 'com=' || type || zbytekurl from tabulka
btw, v tom prípade by mal celú url skladať zo dát (a pridať stĺpce)
Kdyby si chtěl pokecat napiš na jabber.
com=article&task=listp&cat=1&cat=6. Promenna cat bude mit ve vysledku stejne hodnotu 6. Pokud by si to chtel cpat do pole, tak by si to musel oznacit v url jako cat[].
case "lists" :
$url= clean($_SERVER["REQUEST_URI"]);
$url= ereg_replace("(.*)(\?)", "", $url);
$cats= array ();
$cats= split("&", $url);
$sql= "SELECT cat_id FROM category";
$rows= dbcon($sql);
foreach ($rows as $row) {
if (in_array("cat=".$row["cat_id"], $cats)) {
$sql1= "SELECT con_id, title, pretxt FROM content WHERE state='1' AND cat_id=\"".$row["cat_id"]."\" ORDER BY con_id DESC";
$rows1= dbcon($sql1);
foreach ($rows1 as $row1) {
echo "<h4><a href=\"index.php?com=article&task=view&id=".$row1["con_id"]."\">".$row1["title"]."</a></h4>";
}
}
}
break;
Pokud by si to chtel cpat do pole, tak by si to musel oznacit v url jako cat[].To by mě docela zajímalo jak, abych to nemusel řešit tím složitým procházením URL, protože jak dát do url a do databáze PHP pole, na to jsem ještě nepřišel.
.
Co jak? Kdyz zadas v URL neco jako index.php?test[]=a&test[]=b, tak ti v php vznikne pole $test = array('a', b'). Proc to cpat do databaze nechapu, ale pole tam nacpes napriklad pres funkci serialize.
Jo a neodpovedel jsi proc cpes do DB tu celou URL a ne jen ty casti jak jsem napsal? Tohle je fakt hrozny a do budoucna spatne pouzitelny.
A k poli v DB, to znamená, že pro veřejnou část, kde to mám v URL jako test[]=a&test[]=b jsem to teda vyřešil přes $_GET["test"].
Ale jak v admin části, abych to pole nemusel pársovat čísla kategorií jako v příspěvku výše?
Mám použít (un)serialize, nebo existuje nějaká možnost jak ze zápisu test[]=a&test[]=b zpětně zrekonstruovat pole?
Ja myslel, ze kdyz zacinas, tak chces rady? To, ze jsi se inspiroval v nejake jine aplikaci neznamena, ze je to nejlepsi postup. Furt nechapu co se snazis cpat za blbosti do DB. Kdyby si to udelal, jak jsem psal ja i jini vyse, tak muzes nejaky parsovani vyhodit a mas hned zivot jedndussi
.
function showmenu () {
$sql= "SELECT * FROM menu ORDER BY parent, position, menu_id";
$menu = dbcon($sql);
$menu_def = array (0 => array ('-children' => array ()));
foreach ($menu as $row) {
$menu_def[ $row['menu_id'] ] = $row;
if (! array_key_exists ('-children', $menu_def[ $row['parent'] ]))
$menu_def[ $row['parent'] ]['-children'] = array ();
array_push ($menu_def[ $row['parent'] ]['-children'], $row['menu_id']);
}
echo '<table>';
menu_rec ($menu_def, 0);
echo '</table>';
}
function menu_rec ($menu_def, $id) {
$entry = $menu_def[ $id ];
if (array_key_exists ('title', $entry)) {
echo '<tr><td>';
echo '<a href="index.php?' . $entry['url'] . '">' . $entry['title'] . '</a>';
echo '</td></tr>';
echo "\n";
}
if (array_key_exists ('-children', $entry)) {
foreach ($entry['-children'] as $next_id) {
menu_rec ($menu_def, $next_id);
}
}
}
php nemám, ani mať nebudem, možno som ani pôvodné zadanie správne neprelúštilPHP a MySQL:Vytváříme webové databázové aplikace od O'REILLY a Computer Pressu a tady toto programuji, abych se v PHP naučil dělat.
Kde bych teda mohl ty informace o XML sitemapách a renderování pomocí XSLT mohl najít? Stačí jenom nějaký link na nasměrování. A šlo by to použít i pro diskusní fórum s thready(které si taky chci vyzkoušet udělat)? Protože jsem tuto "monstrózní" konstrukci použil, že se bude hodit i pro fórum.
$main_menu = array (
'neco.php?bla+bla' => 'Nadpis',
array(
'bla.php' => 'Podnadpis',
...
),
'dalsi.php' => Jiny nadpis,
...
);