Een echo uitvoeren vanuit mysql tabel

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Francois Pecasse

Francois Pecasse

26/09/2012 19:04:00
Quote Anchor link
Hallo,

Misschien een domme vraag, maar is het mogelijk om een echo uit te voeren vanuit een mysql tabel?

Het zit zo, ik heb een website met 2 verschillende talen.
Door gebruik te maken van 2 php bestanden heb ik voor iedere taal 1 complete file.

Ik kan het resultaat aanroepen door
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo _VOORBEELDTEKST ?>
te doen.

Werkt normaal helemaal goed! Maar nu wil ik diezelfde echo vanuit een mysql tabel doen.
Daarin heb ik de rij 'voorbeeldrij' als TEXT.
Als ik daar
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo _VOORBEELDTEKST ?>
inzet en hem vervolgens via onderstaande code aanroep zie ik in 1e instantie helemaal niets.

while($row = mysql_fetch_array($result))
{
echo "<div>" . $row['voorbeeldrij'] . "</div> ";
}

En met de onderstaande code zie ik ook precies de inhoud van de cel, namelijk
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo _VOORBEELDTEKST ?>


while($row = mysql_fetch_array($result))
{
$row['voorbeeldrij2'] = htmlentities($row['voorbeeldrij']);

echo "<div>" . $row['voorbeeldrij2'] . "</div> ";
}

Hoe kan ik er voor zorgen dat die echo ook daadwerkelijk wordt uitgevoerd zodat ik de taal zie die ik moet hebben?

Alvast bedankt!

Francois
 
PHP hulp

PHP hulp

26/04/2024 18:10:44
 
- SanThe -

- SanThe -

26/09/2012 19:57:28
Quote Anchor link
In echo _VOORBEELDTEKST is _VOORBEELDTEKST een constante, dus niet te wijzigen.
 
Francois Pecasse

Francois Pecasse

26/09/2012 20:11:23
Quote Anchor link
- SanThe - op 26/09/2012 19:57:28:
In echo _VOORBEELDTEKST is _VOORBEELDTEKST een constante, dus niet te wijzigen.


Ik denk niet dat ik je snap. Ik wil hem ook niet aanpassen, hij moet gewoon de waarde echoën van _VOORBEELDTEKST die het op dat moment is. Maar nu krijg ik gewoon puur de code zoals die in de mysql tabel staat, zonder dat die code uitgevoerd wordt.
 
Jos Verra

Jos Verra

26/09/2012 20:18:34
Quote Anchor link
.
Gewijzigd op 26/09/2012 20:20:10 door Jos Verra
 
- SanThe -

- SanThe -

26/09/2012 20:24:09
Quote Anchor link
Francois Pecasse op 26/09/2012 20:11:23:
Ik denk niet dat ik je snap.


Ik heb hetzelfde probleem.
Ik snap jou ook niet echt.
Gewijzigd op 26/09/2012 20:24:40 door - SanThe -
 
Lord Gaga

Lord Gaga

26/09/2012 20:47:44
Quote Anchor link
Hij heeft code in zijn database staan die hij wil uitvoeren, moet dat niet met eval() oid?
 
Francois Pecasse

Francois Pecasse

29/09/2012 10:27:26
Quote Anchor link
Avicka Avickum op 26/09/2012 20:47:44:
Hij heeft code in zijn database staan die hij wil uitvoeren, moet dat niet met eval() oid?


Dat klopt ja, nu wordt de code gewoon gelezen als tekst i.p.v. code.

Ik zal proberen het wat duidelijker uit te leggen dan.

Ik heb een gewone html pagina, daarop zet ik dan
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo _VOORBEELDTEKST ?>
.
Vervolgens heb ik 2 taalbestanden, nederlands en engels.

Bij NL = define("_VOORBEELDTEKST","Voorbeeld Tekst");
Bij EN = define("_VOORBEELDTEKST","Text Example");

Aan de hand van een cookie weet de html pagina welke taal hij moet gebruiken. Hierdoor zie ik dus niet de code
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo _VOORBEELDTEKST ?>
maar Voorbeeld Tekst of Text Example.

Maar omdat ik de data uit een mysql tabel haal, krijg ik het niet voor elkaar om die code uit te laten voeren.

Toevoeging op 29/09/2012 10:28:15:

eval mag niet gebruikt worden toch?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

29/09/2012 10:43:16
Quote Anchor link
Francois volgens mij sta je op het verkeerde been.

Define's gebuik je meestal enkel voor stukken tekst in je code die maar zeer zelden zullen wijzigen. het zijn ook geen variabelen maar voordat jouw code door php gecompileerd wordt wordt de tekst letterlijk vervangen. voorbeeld:

define("_VOORBEELDTEKST","Voorbeeld Tekst");
betekent voor php letterlijk: vervang in de hele code _VOORBEELDTEKST voor Voorbeeld Tekst.

maar nu: twee talen.

ik doe het zo:
Maak een tabel met een kolom php, nl, en.

in elke rij komt bij php een 'php naam'
bij nl de nederlandse tekst voor deze phpnaam
en bij en de engelse tekst voor phpnaam.

bijvoorbeeld
php nl en
-------------------------------------------------------
thanks Bedankt voor uw bezoek. Thank you for visiting
hi Welkom op mijn site. Welcome on my site

straks zal ik ff een mysql voorbeeldje er bij zetten
 
Francois Pecasse

Francois Pecasse

29/09/2012 10:55:36
Quote Anchor link
@Frank Nietbelangrijk
Dan staat de tekst in de tabel, op mijn manier heb ik alle tekst van de website in 1 document. Zal jouw manier wel onthouden.
 
- SanThe -

- SanThe -

29/09/2012 11:02:51
Quote Anchor link
Php code in een database is gewoon geen goede manier.
Volgens mij is eval() dan de enige oplossing.
 
Francois Pecasse

Francois Pecasse

29/09/2012 11:09:30
Quote Anchor link
Hmm zonde, dan ga ik kijken naar de manier van Frank.
Bedankt allemaal!
 
Frank Nietbelangrijk

Frank Nietbelangrijk

29/09/2012 11:23:24
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
$language
= "nl";
$tablename = "translations";
$keyword = "hi";

// niet vergeten hier eerst een connectie te maken met je database

$query = "SELECT php, $language FROM $tablename WHERE `php`='$keyword'";
$result = mysql_query($query);
while($row = mysql_fetch_array($result))
{

    echo "<div>" . $row['php'] . "</div> ";
}

/*
et voila. je kunt er ook voor kiezen om één keer alle rijen in te lezen en in een array te plaatsen:
*/

$language_arr = array();

$query = "SELECT php, $language FROM $tablename";
$result = mysql_query($query);
while($row = mysql_fetch_array($result))
{

    $language_arr[$row['php']] = $row['$language'];
}


// daarna kun je je array gebruiken:

    echo "<div>" . $language_arr['hi'] . "</div> ";
    
// ik heb het niet getest maar het zou moeten werken

?>
 
Francois Pecasse

Francois Pecasse

29/09/2012 11:34:02
Quote Anchor link
@Frank Nietbelangrijk
Bedankt man, zal het vanmiddag even uitproberen.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

29/09/2012 11:39:01
Quote Anchor link
succes :)
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

29/09/2012 14:26:20
Quote Anchor link
Frank, wat ga je doen als je er talen bij wilt hebben? Nieuwe kolommen aanmaken?
Kortom, normaliseren!
 
Frank Nietbelangrijk

Frank Nietbelangrijk

29/09/2012 19:49:59
Quote Anchor link
Klopt. een kolom erbij maken en de rijen updaten met de nieuwe taal.
overigens ook even een functie maken die je dan overal vandaan kunt aanroepen
 
Francois Pecasse

Francois Pecasse

29/09/2012 19:56:30
Quote Anchor link
Frank Nietbelangrijk op 29/09/2012 19:49:59:
Klopt. een kolom erbij maken en de rijen updaten met de nieuwe taal.
overigens ook even een functie maken die je dan overal vandaan kunt aanroepen


@Frank Nietbelangrijk
Je manier werkt perfect, ik ga op deze manier verder werken. Alleen jammer dat ik nu niet meer alle tekst in 1 document heb, maja het is niet anders.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

29/09/2012 20:05:33
Quote Anchor link
Leuk om te horen dat het werkt Francois. Ik denk dat je er snel aan gewend bent dat de tekst in de database staat. Later zal het zelfs voordelen geven en zul je zien dat het overzichtelijker is.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

29/09/2012 20:35:34
Quote Anchor link
Frank Nietbelangrijk op 29/09/2012 19:49:59:
Klopt. een kolom erbij maken en de rijen updaten met de nieuwe taal.
overigens ook even een functie maken die je dan overal vandaan kunt aanroepen

Betekent dus gewoon dat je niet goed bezig bent:
de structuur van een tabel aanpassen tijdens de productie fase is not done.
Tenzij je niet anders kan, maar dat is de uitzondering die de regel bevestigt
 
Frank Nietbelangrijk

Frank Nietbelangrijk

29/09/2012 22:10:02
Quote Anchor link
Ger, als je nog een site aan het bouwen bent die nog niet in gebruik is dan zie ik er geen problemen in. Misschien wel handig om even een backup van een tabel te maken als je zeker wilt zijn dat je je data niet gaat verliezen.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.