Hallo allemaal.

Ik ben nieuw op dit forum, dus correct me if I do something wrong :)

Mijn vraagje;

Ik ben bezig een webpagina aan te maken, waar via een soort beheerpagina, de hele content van deze pagina, te wijzigen moet zijn.

In een MYSQL database heb ik dus een tabelletje gemaakt, met 3 kolommen.
1. Paginanaam (een indicatie zodat er een makkelijker overzicht is voor hoe de pagina heet, en bij welke pagina de rest hoort)
2. Paginatitel (De titel, die boven nummer 3 komt te staan
3. Paginainhoud (Een hele lap tekst, met daarin de hele content voor de pagina. Deze heeft als limiet Varchar(50000). Deze derde, is ook waar mijn probleem ligt.

Ik wil er graag voor zorgen, dat deze derde, de Paginainhoud, netjes op een aangegeven stuk van de pagina terecht komt. Ik heb al een divje aangemaakt, waarin deze tekst moet komen. Het enige wat nu nog moet gebeuren, is dat de tekst erin komt te staan.

Omdat de tekst een heel verhaal is, heb ik ook de functie nl2br() gebruikt.
Wat ik tot nu toe heb:

$con = mysql_connect("hostname","username","password") or die (mysql_error());
mysql_select_db("mydb", $con) or die ("selectdb error");

$result=MYSQL_QUERY("SELECT Paginatitel, Paginainhoud FROM Paginainhoud WHERE Paginanaam='index'") or die("query error");

$paginainhoud = MYSQL_QUERY("SELECT Paginainhoud FROM Paginainhoud WHERE Paginanaam='index'");
$displayinhoud_begin = "<font size=\"2\">";
$displayinhoud_eind = "</font>";

$row = mysql_fetch_array($result);
echo "<h5>".$row['Paginatitel']."</h5>";
echo nl2br($paginainhoud);
?>

Hier loop ik vast. De bedoeling is, dat de tekst met als limiet 50k tekens, onder de Paginatitel komt. De Paginatitel echo'ed normaal.

Verder wil ik ervoor zorgen, dat de #paginainhoud met een font size van 2 wordt weergegeven. Ik zat er al aan te denken, om een echo te maken, met daarin de 3 variabelen $displayinhoud_begin, $paginainhoud, en $displayinhoud_eind zodat je het volgende krijgt:

echo "<font size=\"2\">". -Hier alle paginainhoud tussen- ."</font>";

(Maar dan met variabelen):
echo nl2br($displayinhoud_begin.$paginainhoud.$displayinhoud_eind);

Als uitkomst krijg ik: "Resource id #4"... Op internet hebben ze het over arrays. maar ik geloof niet dat ik daarmee te maken heb.

Hoe kan ik ervoor zorgen, dat ik de hele lap tekst, ge echo'ed krijg?

(P.S. Ik heb in de MYSQL tabel, wel rekening gehouden, na elke regel een \n te zetten.)

Bij voorbaat dank.
Probeer het eens met een blob, en niet met een varchar
Hallo Herman van Ree.

Bedankt voor de snelle reactie, helaas heb ik niet zoveel ervaring met een blob :/ (beginnend programmeur)

Is er misschien een andere manier, waarbij ik gewoon gebruik kan maken van de varchar() optie?
En dit lijkt me niet OK: echo nl2br($paginainhoud);
Moet dat niet echo nl2br($paginainhoud['Paginainhoud']) zijn?

Waarom zou je BLOB gebruiken? Je hebt ook TINYTEXT en LONGTEXT.
Verder kan je een query nooit echo'en, je zult deze moeten fetchen met mysql_fetch_assoc().

Nog wat tips:
- Je foutafhandeling is best wel ruk. die() moet je nooit gebruiken. En maak voor jezelf ook de fout zichtbaar met mysql_error().
- <font> is een beetje verouderd. Die mag je gerust in het museum zetten. Textopmaken doen we al een tijdje met CSS.

Bedankt allemaal voor de snelle reacties! Ik weet dat ik nogal onoverzichtelijk werk etc. Ik ben een eersteklas ICT-student HBO.. Ben het nog aan het leren zeg maar :$

echo nl2br($row['Paginainhoud']); deed het truckje. Hij is nu ge echo'ed.

Nu zie ik alleen in de tekst wel de \n tags overal staan... Om de een of andere reden werkt het nog niet helemaal naar behoren.

De wijzigingen die ik heb gedaan:

<?php
$con = mysql_connect("hostname, "ussername", "password") or die (mysql_error());
mysql_select_db("mydb", $con) or die ("selectdb error");

$result=MYSQL_QUERY("SELECT Paginatitel, Paginainhoud FROM Paginainhoud WHERE Paginanaam='index'") or die("query error");

$displayinhoud_begin = "<font size=\"2\">";
$displayinhoud_eind = "</font>";

$row = mysql_fetch_array($result);

echo "<h5>".$row['Paginatitel']."</h5>";
echo nl2br($row['Paginainhoud']);
?>

Je vergeet de quote na hostname.

Verder zoals hierboven al gezegd werd, dit kun je beter meteen aanpassen:
- Gebruik fetch_assoc, geen fetch_array
- Gebruik geen or die maar goede foutafhandeling, voorbeeldje
- Gebruik geen font tag, los dit met CSS op
- PHP functies schrijf je gewoon met normale letters, dus niet MYSQL_QUERY maar mysql_query
- Haal variabelen uit quotes, het zijn immers variabelen en geen strings... Voorbeeld [php]operators.string[/php]

En hoe zit $row['Paginainhoud'] er uit als je hem in [php]var_dump[/php] gooit? Krijg je dan \\n of alleen \n?
Ik heb dat verkeerd aangepast.. My bad. De afwisselende hoofdletters etc, hebben we in ons groepje waarin ik werk, afgesproken, zodat dit er visueel wat beter uitspringt etc.

Dit klopt ook voor SQL queries, maar ik bedoel de functie naam:
<?php
// Dit
MYSQL_QUERY("SELECT iets FROM iets");
// kan een stuk netter:
mysql_query("SELECT iets FROM iets");
?>

Ook is het beter voor debuggen om de query in een aparte var te stoppen. Voor meer overzicht kun je ook nog enters en tabs gebruiken:
<?php

// Ik zet altijd s voor SELECT i voor INSERT ect. neer voor een query var name
$sQuery = "
SELECT
name,
pass
FROM
users
WHERE
id = 3
";

$result = mysql_query($result);
?>

Reageren