Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Indikace zda je v databázi mySql proveden záznam.

Dobrý den, chtěl bych se zeptat zda existuje nějaká možnost jak udělat na webové stránce která běží na systému wordpress indikaci zda byl proveden záznam do databáze mySql v určité tabulce s určitým identifikátorem například (ID 0-1000).
A tento stav následně zobrazit na webu jako indikátor (LED kontrolka) červená (NE), zelená (ANO). Popřípadě hodnota tohoto záznamu z určitého sloupce.

Předmět Autor Datum
Možnost určitě existuje - naprogramovat. Je to natolik specifický požadavek, že pochybuju, že by ex…
host 09.07.2020 06:54
host
Okrem Form Maker (od 10web) pluginu neexistuje na wordpress žiadny plugin na mysql, cez ktorý môžeš…
MrGoldon 09.07.2020 11:01
MrGoldon
Normálně si udělej na webu obrázek (třeba kontrolka.png), což ale nebude obrázek, ale php skript s l…
kacikac 09.07.2020 12:21
kacikac
Děkuji Vám za návod. Nic méně jde proti mě znalost PHP. Pokud by byl někde na internetu zpracovaný p…
Radek-Zelí 09.07.2020 20:41
Radek-Zelí
To jsou ale úplné základy v pohodě dohledatelné na netu. Toto je například výstup (cidlo.php) jako p…
kacikac 09.07.2020 23:27
kacikac
Skvělé děkuji za pomoc. funguje to perfektně. Mohu se ještě zeptat jak zformulovat kód aby vyhledáva…
Radek-Zelí 11.07.2020 11:44
Radek-Zelí
Pokud se nepletu, LIKE umí pracovat jen s textovými řetězci. ID si ulož do proměnné a přičti k němu…
host 11.07.2020 12:12
host
Zde přikládám hodnotu v buňce ID porovnání musím udělat jen podle tučného. To co je před tučným míst…
Radek-Zelí 11.07.2020 12:46
Radek-Zelí
Tohle celé je ID? Co měl v sobě ten, kdo to vymyslel?
Wikan 11.07.2020 12:54
Wikan
Funguje mi: $pdo = new PDO('mysql:dbname=databaze;host=localhost', 'jmeno', 'heslo'); $dotaz = $pdo…
kacikac 11.07.2020 14:50
kacikac
Tak koukám že naše malá zemička je plná šikovných lidí :-) Moc Vám děkuji za návod, jak dosáhnout to…
Radek-Zelí 11.07.2020 21:36
Radek-Zelí
Tak jako u mě na localhostu to funguje normálně na takové to obnovovací tlačítko se šipkou do kolečk… poslední
kacikac 11.07.2020 22:44
kacikac

Okrem Form Maker (od 10web) pluginu neexistuje na wordpress žiadny plugin na mysql, cez ktorý môžeš napr. pridávať / odoberať alebo aktualizovať databázu. Sám som sa nedávno podobný plugin pokúšal nájsť, prehľadal som rôzne stránky a žiaľ nepodarilo sa.

...Ale myslím si, že pokiaľ skombinuješ niekoľko pluginov, tak by si dokázal vytvoriť nejakú alternatívu.

Normálně si udělej na webu obrázek (třeba kontrolka.png), což ale nebude obrázek, ale php skript s loginem a dotazem do databáze a výstupem jako obrázek (červený nebo zelený), a kontrolka.png vlož jako obrázek do wordpress webu.
A pokud chceš hodnotu, tak tu si načítej třeba pomocí ajaxu. Případně i ten idikátor řeš pomocí ajaxu.

To jsou ale úplné základy v pohodě dohledatelné na netu.
Toto je například výstup (cidlo.php) jako png obrázek (ano.png zelený, ne.png červený) podle toho, jestli je nalezen řádek s id v tabulce v databázi nebo ne.

<?php
$con = mysqli_connect("127.0.0.1", "jmeno", "heslo", "databaze");
$query = mysqli_query($con, "SELECT id FROM tabulka WHERE id='".$_GET["id"]."'");
if(mysqli_num_rows($query) > 0){
	header("Content-type: image/png");
	$im = imagecreatefrompng("ano.png");
	imagepng($im);
	imagedestroy($im);
} else {
	header("Content-type: image/png");
	$im = imagecreatefrompng("ne.png");
	imagepng($im);
	imagedestroy($im);
}

a do html vložit:

<img src="cidlo.php?id=4">

kde to číslo 4 je id.
(poznámka: ošetři si vstup)
Edit:
Verze PDO s ošetřeným vstupem:

$pdo = new PDO('mysql:dbname=databaze;host=localhost', 'jmeno', 'heslo');
$dotaz = $pdo->prepare("SELECT 1 FROM tabulka WHERE id = ?");
$dotaz->execute(array($_GET["id"]));
$existuje = $dotaz->fetchColumn();
if($existuje){
	header("Content-type: image/png");
	$im = imagecreatefrompng("ano.png");
	imagepng($im);
	imagedestroy($im);
} else {
	header("Content-type: image/png");
	$im = imagecreatefrompng("ne.png");
	imagepng($im);
	imagedestroy($im);
}

... a ještě zkrácená verze:

<?php
$pdo = new PDO('mysql:dbname=databaze;host=localhost', 'jmeno', 'heslo');
$dotaz = $pdo->prepare("SELECT 1 FROM tabulka WHERE id = ?");
$dotaz->execute(array($_GET["id"]));
$existuje = $dotaz->fetchColumn();
header("Content-type: image/png");
$im = imagecreatefrompng($existuje?"ano.png":"ne.png");
imagepng($im);
imagedestroy($im);

Skvělé děkuji za pomoc. funguje to perfektně.
Mohu se ještě zeptat jak zformulovat kód aby vyhledával jen část ID. Vyčetl jsem že funkce se nazývá LIKE. Ale nevím bohužel kam ji do Vašeho kódu vložit.
Například mám ID 123987 a první tři čísla se nemění tak vyhledávat jen podle 987.

Zde přikládám hodnotu v buňce ID porovnání musím udělat jen podle tučného. To co je před tučným místem je neměnné.
a:3:{s:12:"cfdb7_status";s:4:"read";s:13:"Vyrobni_cislo";s:7:"W031420";s:6:"Odecet";s:5:"12345";}

Funguje mi:

$pdo = new PDO('mysql:dbname=databaze;host=localhost', 'jmeno', 'heslo');
$dotaz = $pdo->prepare("SELECT 1 FROM tabulka WHERE id LIKE CONCAT('%',?,'%')");
$dotaz->execute(array($_GET["id"]));
$existuje = $dotaz->fetchColumn();
header("Content-type: image/png");
$im = imagecreatefrompng($existuje?"ano.png":"ne.png");
imagepng($im);
imagedestroy($im);

Tak koukám že naše malá zemička je plná šikovných lidí :-)
Moc Vám děkuji za návod, jak dosáhnout toho co jsem potřeboval.
Budu si musel rozšířit obzory.
Děláme si malého pomocníka na odečty stavů měřidel energií. A už to pracuje podle představ.
I když jen na wordpresu.
Ještě dumám jak donutit prohlížeče aby si nepamatovaly starý obrázek ne.png a nevyžadoval nové načtení celé stránky s CTRL + F5 :-) Možná jen text "Stav načten" Stav nenačten" bude lepší.
No uvidím jak nám to půjde :-)

Tak jako u mě na localhostu to funguje normálně na takové to obnovovací tlačítko se šipkou do kolečka v prohlížeči.
Jako že jej cachují?
Nepomohlo by toto?
https://stackoverflow.com/questions/13640109/how-to-prevent-browser-cache-for-php-site

header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

... a přidat to k tomu headeru co tam už je. Případně přidat další řádky, co jsou tam ve vlákně.

Zpět do poradny Odpovědět na původní otázku Nahoru