ändra meta keyword och meta description

Permalänk
Medlem

ändra meta keyword och meta description

försöker göra så att när man inte är inne på en sida där det finns ett blogID så ska meta keyword och description vara typ blablablabla. Men om man är inne på ett blogginlägg så ska keyword och description infon hämtas från databasen. Fungerar halvt för mig, när man går in på ett inlägg hämtas rätt information och skrivs ut, men när man inte är inne på något inlägg får jag ingen som helst information i taggarna...

koden ser ut som följande:

<?php $dsn = "sqlsrv:Server=localhost;Database=blog"; $conn = new PDO($dsn, "******", "********"); $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $id = $_GET['postID']; $sql = "SELECT * FROM blog_posts WHERE blogID=:id"; $stmt = $conn->prepare($sql); $stmt->execute (array($id)); while($metta = $stmt->fetch(PDO::FETCH_BOTH) ) if (isset($metta['blogID']) && !empty($metta['blogID'])) { $keywords = $metta['keywords']; $description = $metta['description']; } else { $keywords = 'bladiblooo'; $description = 'blablabla.'; } sqlsrv_close($con); ?>

if (isset($_GET['postID']) && !empty($_GET['postID']))

har jag även prövat.

och såhär ser html koden ut

<meta name="description" content="<?php echo "$description"; ?>"> <meta name="keywords" content="<?php echo "$keywords"; ?>">

Jag har provat allt jag kan komma på men får det fan inte att fungera, så jag undrar om nån här har något förslag?!

Visa signatur

Citera om du vill ha svar :)

Permalänk
Medlem

isset($metta['blogID'])

!empty($metta['blogID'])

kolla vad de ger för värden och gå bakåt därifrån

<?php $dsn = "sqlsrv:Server=localhost;Database=blog"; $conn = new PDO($dsn, "******", "********"); $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); if (isset($_GET['blogID']) && !empty($_GET['blogID'])) { $id = $_GET['postID']; $sql = "SELECT * FROM blog_posts WHERE blogID=:id"; $stmt = $conn->prepare($sql); $stmt->execute (array($id)); while($metta = $stmt->fetch(PDO::FETCH_BOTH)) if (isset($metta['blogID']) && !empty($metta['blogID'])) { $keywords = $metta['keywords']; $description = $metta['description']; } // else här också för om databasen inte har några keywords/descr? } else { $keywords = 'bladiblooo'; $description = 'blablabla.'; } sqlsrv_close($con); ?>

^ Kanske fungerar

Permalänk
Medlem
Skrivet av non_noutils:

isset($metta['blogID'])

!empty($metta['blogID'])

kolla vad de ger för värden och gå bakåt därifrån

<?php $dsn = "sqlsrv:Server=localhost;Database=blog"; $conn = new PDO($dsn, "******", "********"); $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); if (isset($_GET['blogID']) && !empty($_GET['blogID'])) { $id = $_GET['postID']; $sql = "SELECT * FROM blog_posts WHERE blogID=:id"; $stmt = $conn->prepare($sql); $stmt->execute (array($id)); while($metta = $stmt->fetch(PDO::FETCH_BOTH)) if (isset($metta['blogID']) && !empty($metta['blogID'])) { $keywords = $metta['keywords']; $description = $metta['description']; } // else här också för om databasen inte har några keywords/descr? } else { $keywords = 'bladiblooo'; $description = 'blablabla.'; } sqlsrv_close($con); ?>

^ Kanske fungerar

Tack för att du tagit dig tid, ska kolla när jag kommer hem från jobbet!

Visa signatur

Citera om du vill ha svar :)

Permalänk
Medlem
Skrivet av non_noutils:

isset($metta['blogID'])

!empty($metta['blogID'])

kolla vad de ger för värden och gå bakåt därifrån

<?php $dsn = "sqlsrv:Server=localhost;Database=blog"; $conn = new PDO($dsn, "******", "********"); $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); if (isset($_GET['blogID']) && !empty($_GET['blogID'])) { $id = $_GET['postID']; $sql = "SELECT * FROM blog_posts WHERE blogID=:id"; $stmt = $conn->prepare($sql); $stmt->execute (array($id)); while($metta = $stmt->fetch(PDO::FETCH_BOTH)) if (isset($metta['blogID']) && !empty($metta['blogID'])) { $keywords = $metta['keywords']; $description = $metta['description']; } // else här också för om databasen inte har några keywords/descr? } else { $keywords = 'bladiblooo'; $description = 'blablabla.'; } sqlsrv_close($con); ?>

^ Kanske fungerar

Med den koden fick jag bara blablabla på både startsida och i inlägg :/

Visa signatur

Citera om du vill ha svar :)

Permalänk
Medlem

// kör bara en gång eftersom du bara skickar in ett ID
$metta = $stmt->fetch(PDO::FETCH_ASSOC);

// kolla vad du får tillbaka, ta bort sen
var_dump($metta);

// förenklad if-sats
$keywords = (isset($metta['keywords']) AND $metta['keywords']) ? $metta['keywords'] : 'blablabla';
$description = (isset($metta['description']) AND $metta['description']) ? $metta['description'] : 'blablabla';

sqlsrv_close($con);

Visa signatur

MacBook Pro 14" | M1 Pro 10/16-Core | 32GB | 1TB
Legion Pro 16" | Ryzen 7 5800H | 16 GB | 1TB | GeForce RTX 3060

Permalänk
Medlem

Detta gjorde susen. nu ger jag fan i att röra det nå mer!

<?php $dsn = "sqlsrv:Server=localhost;Database=blog"; $conn = new PDO($dsn, "*****", "*******"); $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $id = $_GET['postID']; $sql = "SELECT * FROM blog_posts WHERE blogID=:id"; $stmt = $conn->prepare($sql); $stmt->execute (array($id)); $metta = $stmt->fetch(PDO::FETCH_BOTH) ; if (isset($_GET['postID'])) { $keywords = $metta['keywords']; $description = $metta['description']; } sqlsrv_close($con); ?>

<meta name="description" content="<?php if (isset($description)){echo $description;}else{echo 'adsadasdadasd';} ?>"> <meta name="keywords" content="<?php if (isset($keywords)){echo $keywords;}else{echo 'NLALNALBAVA';} ?>">

Visa signatur

Citera om du vill ha svar :)

Permalänk
Medlem

Ska du ha if-sats och skriva ut text på en rad bör du använda ternary-operatorn istället.

<meta name="keywords" content="<?php echo isset($keywords) ? $keywords : 'foobar'; ?>">

Eftersom du skriver in php-kod direkt i din html kan du använda <?= istället, det är kort för <?php echo.

<meta name="keywords" content="<?= isset($keywords) ? $keywords : 'foobar'; ?>">

Använder du nyaste PHP versionen, PHP 7.0 kan du använda ?? (Null coalescing operator) för att förkorta det ännu mer.

<meta name="keywords" content="<?= $keywords ?? 'foobar'; ?>">

Permalänk
Medlem
Skrivet av Marwelln:

Ska du ha if-sats och skriva ut text på en rad bör du använda ternary-operatorn istället.

<meta name="keywords" content="<?php echo isset($keywords) ? $keywords : 'foobar'; ?>">

Eftersom du skriver in php-kod direkt i din html kan du använda <?= istället, det är kort för <?php echo.

<meta name="keywords" content="<?= isset($keywords) ? $keywords : 'foobar'; ?>">

Använder du nyaste PHP versionen, PHP 7.0 kan du använda ?? (Null coalescing operator) för att förkorta det ännu mer.

<meta name="keywords" content="<?= $keywords ?? 'foobar'; ?>">

Tack, alltid lär man sig då någonting

Visa signatur

Citera om du vill ha svar :)