Probíhá Meta Connect 2023. Společnost Meta představuje své novinky v oblasti AI a virtuální, smíšené a rozšířené reality. Představeny byly nové chytré brýle Ray-Ban | Meta a headset Meta Quest 3.
Eben Upton oficiálně představil (YouTube) nové Raspberry Pi 5 (YouTube). Je více než 2x výkonnější než jeho předchůdce, model 4B.
Byl vydán (YouTube) Counter-Strike 2. Nativně také pro Linux. Jedná se o největší technologický skok v historii této populární herní série.
Richard Stallman vystoupí v Praze s přednáškou Free Software And Your Freedom. V sobotu 30. září ve 14:30 na Pedagogické fakultě UK a v neděli 1. října v 18:00 hodin v rámci konference Hackers Congress Paralelní Polis.
Byla vydána verze 6 s kódovým název Faye linuxové distribuce LMDE (Linux Mint Debian Edition). Podrobnosti v poznámkách k vydání. Linux Mint vychází z Ubuntu. LMDE je postaveno na Debianu.
Byly publikovány informace o novém bezpečnostním problému pojmenovaném GPU.zip (paper, GitHub). S vlastním logem. Jedná se o možný útok postranním kanálem na grafickou kartu (GPU). Proces může "krást pixely" jinému procesu.
Projekt GNU dnes slaví 40. výročí. Přesně před čtyřiceti lety, 27. září 1983, Richard Stallman oznámil, že se chystá napsat s Unixem kompatibilní operační systém GNU (Gnu's Not Unix). Hlavní oslava a setkání hackerů probíhá ve Švýcarsku ve městě Biel/Bienne. Na programu je také přednáška Richarda Stallmana.
Byl vydán Mozilla Firefox 118.0. Přehled novinek v poznámkách k vydání, poznámkách k vydání pro firmy a na stránce věnované vývojářům. Vypíchnout je nutno automatický lokální strojový překlad webových stránek. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 118 je již k dispozici také na Flathubu a Snapcraftu.
Byla vydána nová major verze 15.0.0 softwaru OCRmyPDF pro přidávání textové vrstvy k naskenovaným PDF dokumentům (PDF/A). Přehled novinek v poznámkách k vydání. OCRmyPDF využívá pro optické rozpoznávání znaků (OCR) engine Tesseract.
Karel Matějka zveřejnil druhé demo své chystané hry Bzzzt. Kromě verze pro Windows a macOS je dostupná i verze pro Linux. Plná verze hry má vyjít zanedlouho.
Dobrý deň, mám problém s ktorým si neviem rady.
Mám skript, kde je niekoľko premenných ($PREM1, $PREM2, $PREM3). A teraz potrebujem poslat názov tejto premennej cez $_GET["premenna"].
Asi je to dost nezrozumitelné, tak napíšem čo presne potrebujem.
Otvorím stranku: http://skript.php?premenna=$PREM1
v skripte vyberiem premennu cez $_GET["premenna"], a zistím ci sa jej obsah rovná "1"
Niečo ako: if ($_GET["premenna"] == "1") {...}
Dúfam že ma aspoň niekto pochopí, asi je to divné riešenie, ale ináč si to neviem predstaviť, niesom profík, som iba samouk...
Dík za rady...
Jednou jsem to také potřeboval, je to popsáno v jednom komentáři v dokumentaci. Bohužel je to dost prasácké, proto jsem se radši vydal jinou cestou.
if (isset($_GET['premenna']))
{
$premenna = $_GET['premenna'];
if ($premenna == $PREM1) { ... }
elseif ($premenna == $PREM2) { ...}
...
else { ... }
}
aha, opravdu nazev promenne. vazne to nejde jinak? par veci uz jsem napsal a zatim jsem se bez takoveho reseni obesel ... opravdu to nejde? co napriklad pouzit switch a na zaklade hodnoty
$promenna
resp. $_GET['promenna']
vyvolat prislusne akce?
a jak uz jsem psal nize; pokud pouzivas promenne, tak to predelej. je to vec, ktera by mela byt vsude vypnuta a napr. v PHP6 bude odebrana (3x hura), v PHP5 je snad vypnuta v zakladni konfiguraci.
jeste doporucim pouzivat if (isset($_GET['promenna']) ... ) { ... }
. vyhnes se tak chybe, kdyz nebude $promenna v $_GET nastavena. je samozrejme vhodne osetrit, jak se v takovem pripade zachovat.
taky dost dobre nechapu k cemu by to bylo dobre, posilat si nazev promenne a ne jeji hodnotu.. muzete to trochu popsat?
$GLOBALS
???
<?php $prem1 = 10; $prem2 = 20; $prem3 = 30; echo ${$_GET['premenna']}; // -> http://host/skript.php?premenna=prem1 ?>
Ale neni prilis dobry napad umoznit uzivateli takto "nakukovat" (ci hure, zapisovat) prakticky do libovolne promenne. Jestli si nepisete nejaky debugovaci (ci jaky) nastroj ciste pro sebe, tak bych doporucoval pouzit zmineny switch
(nebo lepe pole se jmeny validnich promennych) a striktne vymezit k jakym promenny lze takto pristupovat.
Akosi som nepochopil čo sa Marollo pýtal, ale tvoje riešenie by ma zaujímalo. Ako napísať napríklad automatické presmerovanie inak ako cez GET z adresy?
Napríklad toto:
header("location:http://".$_SERVER["SERVER_NAME"]."/subor.php?nazov_premennej=$hodnota_premennej")
Neviem ako. Prepíš moje location tak, aby v adrese nebola priamo uvedená premenná.
method="post"
, nebo pres HTTP header.
$_GET
nelibi. Posilat akce pres $_POST
? GL & HF!
$get_str = ''; $sep = '?'; foreach($_GET as $k => $v) { $get_str .= $sep.urlencode($k).'='.urlencode($v); $sep = '&'; } header("Location: http://".$_SERVER['SERVER_NAME'].'/soubor.php'.$get_str);Nebo třeba takto:
header('Location: http://".$_SERVER['SERVER_NAME'].'/soubor.php?' .join('&', array_map(sprintf, array_pad(array(), '%s=%s', count($_GET)) array_map('urlencode', array_keys($_GET)), array_map('urlencode', $_GET)) );(Asi to bude trosku pomalejší než ten první kousek kódu, ale je to hezčí
header('Location: http://".$_SERVER['SERVER_NAME'].'/soubor.php' .preg_replace('/^[^?]*/', '', $_SERVER['REQUEST_URI']));Tenhle kousek je asi vůbec nejhezčí.
Ja v php nie som ešte celkom doma a preto nad mojím dotazom možno budete krútiť hlavou, ale kde je v tejto hlavičke nazov_premennej a hodnota_premennej?
A nebo ještě takto:
header('Location: http://".$_SERVER['SERVER_NAME'].'/soubor.php?'.$_SERVER['QUERY_STRING']);
Tenhle kousek je asi vůbec nejhezčí.
ono by se docela hodilo, kdyby uz konecne reagoval marallo jakozto autor.. Takto nikdo nevime co vlastne chce ;] a jestli uz je s nejakym navrhnutym resenim spokojen..
Ospravedlňujem sa že reagujem až teraz, ale viete, boli vianoce, stres, panika...
Takže vidím že ste moc nepochopili čo potrebujem, a niektore z vašich príspevkov som ani ja nepochopil.
Mám blog, v databáze v jednej tabuľke všetky zápisky. Tieto majú rôzne kategórie (linux, ženy, komunicticke_kecy, fasisticke_kecy). Pri písaní zápiskov označím do ktorých kategórii zápisok patrí. (môže patriť napríklad do kategórii zeny, a fasisticke_kecy). Takže v tabuľke v databázi mám pre každú kategóriu stĺpec, a ak je v ňom "1", tak zápisok patrí do tejto kategórie.
Mám spravený PHP kód že pre každý riadok tabuľky spraví niečo ako:
if ( $tag_linux == 1 ) {
echo vypíš článok;}
A ja teraz potrebujem z menu poslať to $tag_linux, aby skript vedel akú kategóriu ma vypísať. Zatial mám pre každú kategóriu inú stránku, ale to je na houby. Iné riešenie ma nenapadá. Dúfam že už je to jasnejšie...
Dík za dalšie rady...
SELECT c.* FROM (clanky c, clanky_kategorie ck) WHERE c.id_clanky = ck.id_clanky AND ck.id_kategorie = $id_kategorie AND c.datum < NOW() ORDER BY c.datum DESCSeznam všech článků s názvem jejich kategorií třeba takto:
SELECT c.*, GROUP_CONCAT(k.nazev SEPARATOR ', ') AS nazev_kategorie FROM (clanky c, clanky_kategorie ck, kategorie k) WHERE c.id_clanky = ck.id_clanky AND ck.id_kategorie = k.id_kategorie AND c.datum < NOW() GROUP BY c.id_clanky ORDER BY c.datumNetestoval jsem to, ale mělo by to fungovat.
Mrkni se na první příspěvek (ten můj ), myslím, že je to opravdu to, co chceš. Ta funkce v odkazovaném komentáři vrátí jméno proměnné, která je mu předána. A to jméno pak můžeš vesele používat.
Příklad (definici té funkce sem psát nebudu);
$testovaci_promenna = "foo"; $jmeno = vname($testovaci_promenna); echo $jmeno;
Vypíše "testovaci_promenna" (samozřejmě bez uvozovek).
Ako vidíš, je viacero riešení. Ja by som navrhoval len jednu tabuľku (id, článok, kategoria1, kategoria2, kategoria3...) a potom menu by bola priamo zadaná premenná ktorá by bola ako kľúč pre výber článkov z databázi. Podobné návody nájdeš v základných manuáloch.
A z menu daj odkaz napríklad <a href=subor.php?nazov_premennej=hodnota_premennej>. Hodnotu premennej v subor.php dostaneš cez GET.
V tvojom pripade:
$tag = $_GET["$hodnota_premennej"];
pripojenie databázy;
výber tabuľky;
výpis z tabuľky pre $tag == 1
Když neumíš programovat/sql, neuč to o statní... Marallo - použij to co radí J.K., to je totiž funkční a použitelné řešení. Když budeš hledat informace o tom co to vlastně je, tak hledej SQL a vazba N:M.
Možno to neviem, som len začiatočník, ale tak isto ako som to popísal tu, nájdeš aj v návodoch a manuáloch a z praxe viem, že to funguje
A mimochodom Tarmaq v podstate napísal také isté riešenie. Takže nechcem dávať rozumy hlavám ako ty, ale najjednoduchšie riešenie býva najlepšie.
A este jedna pripomienka.
Marallo sa pýtal ako to tam dostať z menu, nie ako sa robí výpis z tabuľky.
Tri tabuľky ako píše JK sú OK, ale i tak by pre to čo požaduje Marollo postačovala jedna tabuľka. Veď chce len zopár stabilných kategórií. Netreba hneď robiť stránku ako internetový obchod. To je ako dávať do auta motor z tanku...
Tabulku mas udelanou spatne, jak tu psali ostatni (dobre to popsal josef Kufner).
Pokud presto chces zachovat stavajici schema, k reseni stejne nepotrebujes znat nazev promenne.. k cemu to je dobre nedokazu pochopit ani ted.
Ja bych to udelal nasledovne:
$nazev_kategorie = $_GET['cat'];
$q = db_query("SELECT * FROM clanky WHERE ".$nazev_sloupce." = 1");
Pokud nechces, aby uzivatel videl v url nazev sloupce, tak si muzes udelat nejake pole aliasu. Napr:
$categories = array(
'1' => 'linux',
'2' => 'zeny',
'3' => 'kscm',
'4' => 'ss'
);
$nazev_sloupce = $categories[$_GET['cat']];
$q = db_query("SELECT * FROM clanky WHERE ".$nazev_sloupce." = 1");
Jak vidis, zadne ifovani netreba..
jo jinak ted kdyz to po sobe ctu tak tam vidim chybku.. ten prvni radek ma byt samozrejme
$nazev_sloupce = $_GET['cat'];
Díky moc, presne to som potreboval.
Už je to vyriešené, nevedel som že sa to dá spraviť tak jednoducho.
A pre všetkých: takáto tabuľka mi plne vyhovuje...
Tiskni
Sdílej: