[php/mysql] functie tussen tekst in database

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Ik ben opzoek naar een oplossing voor het volgende probleem.

Ik heb een nieuws database met artikelen daarin. Wanneer het nieuws nu over bv britney spears gaat wil ik daar een foto bij zetten. Deze plaatjes sla ik gewoon op op de server dus niet in een db. Om nu niet met tig britney foto's te zitten wil ik gewoon 1 foto gebruiken bij tig berichten die over haar gaan. Om geen gezeik te krijgen met copyright shit etc wil ik in een aparte db de filename en copyright opslaan. Zo kan ik eenvoudig bijhouden wie en wat. Om de foto op te roepen kan ik dan een eenvoudige functie maken die de filename en copyright shit ophaalt en op het scherm zet.

Het probleem is nu echter dat die functie aangeroepen wordt in het nieuws bericht dat in de nieuws db zit. Als ik nu gewoon print $bericht; doe wordt de functie natuurlijk niet uitgevoerd en print eval($bericht); werkt niet omdat het bericht geen php code is.

Iemend een idee hoe ik dit kan oplossen ??

Verwijderd

Ik denk dat je dat ook niet wil. php code in je teksten.

je kan het beter laten doen met een extra veld bij die tekst. bijv: persoon_id.

en dan gewoon die opvragen en daarmee de link leggen naar het copyright shit.

Zo zou ik het doen

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

PHP:
1
eval('echo "'.$inhoudvandatabaseveld.'";')

Maar zoals hierboven al gezegd wordt wil je dat liever niet... :X

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • pjotrk
  • Registratie: Mei 2004
  • Laatst online: 15-07 18:43
Je zou dat natuurlijk met een preg_replace_callback kunnen doen als je meerdere plaatjes op een willekeurige plek wil kunnen zetten, alleen is dat wel lastig met verwijderen van plaatjes, want dan zou in elk bericht moeten zoeken of een bepaald plaatje nog wordt gebruikt.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
// haal plaatje op uit database
$bericht = 'Bericht over britney spears. Met een plaatje {img id="1"}';

// vervang alle {img} tags door plaatjes
echo preg_replace_callback("/{img id=\"([0-9]+)\"}/", "getImageFromDb", $bericht );

// callback functie
function getImageFromDb($imgTag)
{
    $imgId = $imgTag[1];

    // haal plaatje op uit db
    $imgPath = "plaatje.gif"; // maar dan uit je database
    $imgCopyright = "Copyright"; // maar dan uit je database

    // maak vervang stukje html code
    $plaatje = '[img]"'[/img]';
    
    // geef het stuk html code terug aan de replace functie
    return $plaatje;
}
?>



Als je plaatjes op een statische plek wilt hebben in elke bericht, zou ik gewoon de berichten tabel aan de plaatjes tabel koppelen. En met php het plaatje/de plaatjes in het bericht zetten.

[ Voor 14% gewijzigd door pjotrk op 11-11-2004 23:07 ]