Diskuze: SQL
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 11 zpráv z 11.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Nevím jestli jsem tě pochopil správně ale podle mě stačí jen toto
UPDATE tabulka
SET sloupec = hodnota, ...
WHERE identifikátor daného řádku;
Tady je problém, že ten identifikátor je vždy jiný, protože po zapnutí pluginů se tato tabulka vymaže a záznam začíná s jiným id po vypnutí pluginů a naplnění novým záznamem deaktivovaných pluginů
A to není hlavní problém, ale hlavní je, jakým způsobem udělat aby staré záznamy v tom řádku zůstaly a nenahradili se novými, nýbrž připojili k těm starým
Identifikator vloz do url a z nej to pak tahej
napr
<a href="index.php?aktivuj-plugin=plugin&id-plugin=5">Aktivuj</a>
tímto máš definované ID pluginu, které je přímo v odkazu
a nyní
UPDATE tabulka
SET sloupec = hodnota, ...
WHERE $_GET['id-plugin'];
Pochopitelně aby jsi tam neměl injection, tak to musíš mít trochu
upravé ale základ je toto.
tu druhou část asi nechápu. Aktivuješ plugin a v DB se přepíše neaktivní
na aktivní (řekněme 2 za 1) a ty chcecš aby tento zápis zůstal když
deaktivuješ plugin a když ho znovu aktivuješ aby se vytvořil nový?
Jde ti o historii aktivace a deaktivace?
Tak uplně nechápu o co ti vlastně jde.
Vždyť stačí mít pro každý plugin právě jedno ID, které bude unikátní
a měnit pouze jestli je zapnutý nebo vypnutý.
Tohle docílíš pomocí SQL UPDATE, a můžeš to narvat klidně jako odkazy
(tlačítka)
DEMO:
echo ('<a href="zapni.php?vyber-plugin=' . $idpluginu. '&akce='. $akce .' " > Zapni / vypni </a> ');
Do $idpluginu si getneš ID z databáze všech pluginů, a akci si getneš například 1 == aktivace nebo 0 == deaktivace pluginu.
Dá se vyřešit jednoduchou funkcí například:
public function zjistiStav();
A podle toho jaký bude stav v databázi (1 or 0) budeš vypínat a nebo zapínat (také podle toho budeš přiřazovat proměnné $akce jedničku a nebo nulu)
Jednoduché, pokud chceš napiš na FB, pomůžu
Asi si nerozumíme, zkusím to tedy lépe popsat. Po vypnutí pluginů pomocí mého skriptu, si ukládám dané hodnoty do tabulky v databázi, které potom používám znova k aktivování. Řekněme, že se mi do tabulky uloží hodnoty:
a:4:{i:0;s:19:"akismet/akismet.php";i:2;s:31:"plugincleaner/pluginCleaner.php";i:3;s:17:"stolba/stolba.php";i:4;s:27:"wp-super-cache/wp-cache.php";}
Pak si, ale ve wordpressu stáhnu nový plugin, např:
a:1:{i:1;s:9:"hello.php";}
který deaktivuji také mým pluginem, ale tím pádem se mi v databázi udělají dva sloupce, s těmi 4 pluginy a s tím jedním.
Já bych tedy chtěl udělat, že bych v php porovnal tyto dva řetězce, pokud se neschodují přidal ten nový do stávajícího řetězce a uložil jako jeden řádek v databázi, takže aby se mi z:
a:4:{i:0;s:19:"akismet/akismet.php";i:2;s:31:"plugincleaner/pluginCleaner.php";i:3;s:17:"stolba/stolba.php";i:4;s:27:"wp-super-cache/wp-cache.php";}
a:1:{i:1;s:9:"hello.php";}
stalo toto:
a:5:{i:0;s:19:"akismet/akismet.php";i:1;s:9:"hello.php";i:2;s:31:"plugincleaner/pluginCleaner.php";i:3;s:17:"stolba/stolba.php";i:4;s:27:"wp-super-cache/wp-cache.php";}
Doufám, že teď je to srozumitelné, pokud ne rád znovu vysvětlím, děkuji, Jakub Štolba.
Jestli jde jen o to pridat do toho stringu text, pak
php.net/json-decode
php.net/json-encode
php.net/isset
<?php
$json = '{"foo-bar": 12345}';
print $json;
$obj = json_decode($json); // nebo $json,true - pokud chces prevod na pole; u pole se da pouzit isset()
//print $obj->{'foo-bar'}; // 12345
$obj->{'foo-bar'} = 4567;
$json = json_encode($obj);
print $json;
?>
Nebo, jeste se mozna ptas na sql prikaz
IF EXISTS(select * from test where id=30122) update test set name='john' where id=3012
ELSE insert into test(name) values('john');.
Nebo, jestli to chces teda pridat, kdyz id muze byt jine, tak musis pouzit jine id, ktere stejne bude. V pripade jsonu
$json = '{"foo-bar": 12345}';
print $json;
$arr = json_decode($json);
foreach ($arr as $key=>$value)
{ if ($value==12345) {unset($arr[$key]); $arr[$nove_id]=12345; break;} }
$json = json_encode($obj);
print $json;
Najdes podle 12345. unsetnes (smazes). A pridas nove. Break, zastavis cyklus, pro jistotu (mam pocit, ze foreach by s pridanou hodnotou mohl dal pracovat, takze, do nekonecna). samozrejme, ve tvem pripade bude cyklus o neco slozitejsi, protoze mas jinak strukturovane pole.
děkuji moc za nápovědu
už jsem,ale dokázal najít jednodušší řešení díky array_push. I tak
vám děkuji
Zobrazeno 11 zpráv z 11.