Een echo uitvoeren vanuit mysql tabel
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 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 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
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
In echo _VOORBEELDTEKST is _VOORBEELDTEKST een constante, dus niet te wijzigen.
- 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.
Gewijzigd op 26/09/2012 20:20:10 door Jos Verra
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 -
Hij heeft code in zijn database staan die hij wil uitvoeren, moet dat niet met eval() oid?
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 .
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
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?
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
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.
Volgens mij is eval() dan de enige oplossing.
Bedankt allemaal!
Code (php)
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
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
?>
$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
?>
Bedankt man, zal het vanmiddag even uitproberen.
succes :)
Kortom, normaliseren!
overigens ook even een functie maken die je dan overal vandaan kunt aanroepen
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
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.
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.
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
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
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.