Zadejte hledaný výraz...

Vytvoření odkazu ze záznamu SQL

Tomina10
verified
rating uzivatele
(11 hodnocení)
14. 5. 2020 13:49:00
Ahoj,
opět bych potřeboval pomoc..
Mám v databázi tabulky s názvy článku (title) a vedle toho tabulku s ID (id).
Lze snadným způsobem docílit, že bych pomocí scriptu vzal z tabulky název + id a vytvořil odkaz na ten konkrétní článek?
Redakční systém mi při vytvoření článku automaticky vytvoří friendlyURL
ve tvaru http://example.com/clanek-ve-kterem-se-nic-nedozvite-12/
O co mi jde...
v současné době používám tento kód:
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
$conn->set_charset("utf8");
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM blog_clanky ORDER BY `blog_clanky`.`id` DESC LIMIT 3";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo " ". $row. "   ●   ";
}
} else {
echo "0 results";
}
$conn->close();
?>
V kódu můžete vidět, že se jedná o jezdící text, který zobrazuje tři poslední názvy článku... ovšem s proklikem tam, kde jsou všechny články.... a to je na houby..
Potřeboval bych čtenáře odkázat už z jezdícího texu přímo do článku, ke kterému se název vztahuje...
Napadá někoho něco?
URL vygenerovaná systémem je vždy název článku (takže údaj v SQL pod (title) a ID v SQL pod (id)
Takže myslím že to nebude nic složitého...
Jen místo mezer v názvu dosadit znak "-" a přidat "-id" na konec :D
Moc děkuju za každou radu :)
14. 5. 2020 13:49:00
https://webtrh.cz/diskuse/vytvoreni-odkazu-ze-zaznamu-sql#reply1451851
Hitman1
verified
rating uzivatele
(38 hodnocení)
14. 5. 2020 14:00:02
A není v db url také uložená? Pokud by jste to chtěl z toho názvu, bylo by potřeba ještě odstranit diakritiku. Obvykle to není úplně štasná metoda, generovat url z title v rámci celého systému, takže by někde uložená být měla. Zkuste třeba:
14. 5. 2020 14:00:02
https://webtrh.cz/diskuse/vytvoreni-odkazu-ze-zaznamu-sql#reply1451850
Tomina10
verified
rating uzivatele
(11 hodnocení)
14. 5. 2020 14:13:09
Hitman1:
Děkuju za odpověď.
URL se do databáze neukládá (taky nechápu proč to ten co to dělal, dělal tak složitě) jinak bych problém vyřešil hned.
Tvůj kód jsem zkoušel, nezobrazuje nyní název článku v marquee, zobrazují se jen prázdné pole s odkazem.
Ale to opraví
Odkazy jsou nyní v tomto znění: https://example.com/Nový článek bude ve čtvrtek-15/
Takže jedna část vyřešena, teď jen odstranit diakritiku (včetně symbolu ? !) a nahradit mezery symbolem "-"
(myslící smajlík) :D
14. 5. 2020 14:13:09
https://webtrh.cz/diskuse/vytvoreni-odkazu-ze-zaznamu-sql#reply1451849
Matěj Pavlík
verified
rating uzivatele
14. 5. 2020 16:07:05
Na to by ti mohlo pomoci toto:
14. 5. 2020 16:07:05
https://webtrh.cz/diskuse/vytvoreni-odkazu-ze-zaznamu-sql#reply1451848
Tomina10
verified
rating uzivatele
(11 hodnocení)
14. 5. 2020 16:11:28
mpavlik:
ukážeš mi prosím použití v mém kódu?
14. 5. 2020 16:11:28
https://webtrh.cz/diskuse/vytvoreni-odkazu-ze-zaznamu-sql#reply1451847
Matěj Pavlík
verified
rating uzivatele
14. 5. 2020 17:06:47
Jo, promin, pouzil jsem tam spatne komentare :-)
$odkaz = $row."-".$row;
//odstrani diakritiku a nezadouci znaky
$odkaz = remove_accents($odkaz);
//vse na mala pismena
$odkaz = StrToLower($odkaz);
//nahradi vsechny alfanumericke znaky za -
$odkaz = preg_replace('/+/i', '-', $odkaz);
//odstrani mezery ze zacatku a konce retezce
$odkaz = trim($odkaz);
//pokud nekde bylo vice znaku za sebou nahrazeno za ---- tak to vzdy zkrati jen na jednu pomlcku
$odkaz = preg_replace("", "-", $odkaz);
echo " ". $row. "   ●   ";
14. 5. 2020 17:06:47
https://webtrh.cz/diskuse/vytvoreni-odkazu-ze-zaznamu-sql#reply1451846
Tomina10
verified
rating uzivatele
(11 hodnocení)
14. 5. 2020 17:23:16
Napsal mpavlik;1583779
Jo, promin, pouzil jsem tam spatne komentare :-)
Děkuju za odpověď.
Není tam někde ještě chybka prosím?
Dle mého v
//odstrani diakritiku a nezadouci znaky
$odkaz = remove_accents($odkaz);
Protože s tímto to neukáže nic, když to odeberu, odkaz se změní na většinu věcí...
---------- Příspěvek doplněn 14.05.2020 v 17:42 ----------
Zkusil jsem to trošku očůrat :D
//odstrani diakritiku a nezadouci znaky
$odkaz = Str_Replace(
Array("á","č","ď","é","ě","í","ľ","ň","ó","ř","š","ť","ú","ů","ý","ž","Á","Č","Ď","É","Ě","Í","Ľ","Ň","Ó","Ř","Š","Ť","Ú","Ů","Ý","Ž") ,
Array("a","c","d","e","e","i","l","n","o","r","s","t","u","u","y","z","A","C","D","E","E","I","L","N","O","R","S","T","U","U","Y","Z") ,
$odkaz);
a funguje! Přesně tak jak potřebuju... do puntíku.
Moc Ti děkuju!
14. 5. 2020 17:23:16
https://webtrh.cz/diskuse/vytvoreni-odkazu-ze-zaznamu-sql#reply1451845
Matěj Pavlík
verified
rating uzivatele
14. 5. 2020 18:06:15
No jasne,tu funkci remove_accents mas o prispevek vyse, nekopiroval jsem ji znovu.
Ta tva verze se da pouzit, ale pokud budes mit kódování UTF8, tak budes mit problem s nejakymi znaky.
14. 5. 2020 18:06:15
https://webtrh.cz/diskuse/vytvoreni-odkazu-ze-zaznamu-sql#reply1451844
Pro odpověď se přihlašte.
Přihlásit