Ik ben bezig met php en mysql in m'n site te voegen. Alleen hoe kan ik nou bij read more een pagina krijgen waar het bericht wordt getoond. Ik kan nu steeds zelf pagina's aanmaken en daar het bericht laten lezen. Maar hoe doe ik bijv. van een bericht met id=1 de vervolg pagina met het hele bericht van id 1, zoals bij. site.com/news.php&id=1.

De site met php en mysql verwerking is http://www.vin-extreme.com/test en nou wil ik dus bij de headlines en read more dat op vervolg pagina het bericht getoond wordt wat je als link op vorige pagina aangeklikt hebt.
Ok tijd voor een update voorbeeld :)
<?
# Een testtabelletje
CREATE TABLE test (
id int(11) primary key auto_increment,
naam varchar(100)
);
# Even er wat in zetten
INSERT INTO test SET naam = 'Vincent'
# Dan in PHP updaten :)
# FF kijken of de variabelen geset zijn
if ($_POST['submit'] && $_POST['naam'])
{
# Updaten!
$sql = "UPDATE test SET naam = '$_POST[naam]'";
$res = mysql_query($sql);

if ($res)
{
echo "Succesvol geupdate!";
}
else
{
echo "Foutje!";
}
}
else
{
# En anders het formuliertje
echo "<form action=\"$PHP_SELF\" method=\"POST\">
echo "Nieuwe naam? :<br>";
echo "<input type=\"text\" name=\"naam\"><br>";
echo "<input type=\"submit\" name=\"submit\" value=\"Wijzig!\">";
}
?>
Het update lukt wel, maar nu update ie alle berichten ipv het bericht dat ik wil updaten, waarschijnlijk omdat niet (goed) staat aangegeven welk bericht die moet updaten.
En, als ik invulformulier wil tonen met waarde van bericht die reeds in tabel staan, dan heb ik daarvoor stukje code om die tabel en bericht enzo te weergeven, maar dan krijg ik of een error of ik krijg een blanco pagina.

Ik heb nu een lijstje met alle nieuwsitems en dan kan ik dus door edit link op de edit pagina het bericht uit de tabel krijg (id = getid princiepe), en dan alleen dat bericht updaten.

Code zonder het lezen van bericht en waarbij alle rijen worden geupdate is nu:
<?
//-- login
if ($_SERVER["PHP_AUTH_USER"] != "naam" || $_SERVER["PHP_AUTH_PW"] != "wachtwoord")
{

header("WWW-Authenticate: Basic realm=\"Enter username and password to proceed\"");
header("HTTP/1.0 401 Unauthorized");

echo "<h1>Authentication failed</h1>Je hebt geen rechten tot deze pagina.";
}
else
{

// OORSPRONKELIJKE PAGINA

if (isset($_POST[submit])) {

// Maak verbinding met MySQL server
$db = mysql_connect("localhost","naam","wachtwoord");
mysql_select_db("database",$db);

// Zet voor 'gevaarlijke' tekens (', ", en \) een extra \
$titel = addslashes($titel);
$datum = addslashes($datum);
$kop = addslashes($kop);
$bericht = addslashes($bericht);

// Maak SQL query om toe te voegen (INSERT)

$sql = "UPDATE tabel SET titel = '$_POST[titel]', kop = '$_POST[kop]', bericht = '$_POST[bericht]' ";

// Voer SQL uit
$res = mysql_query($sql);
if($res===false) die('er zit een fout in deze query:<BR>'.$sql.'<BR>en wel:<BR>'.mysql_error());

else {
// Geef bevestiging
echo "<font size=\"-1\" color=\"#006699\" face=\"Verdana, Arial\">
Cool, het bericht is succesvol toegevoegd.";

include "index.php"; }
}
?>

<!-- TABEL //-->
<table border="-1" style="border-collapse : collapse" bordercolor="#006699" width="500"
cellpadding="2" cellspacing="0">

<!-- BERICHT //-->
<tr>
<td bgcolor="white" bordercolor="#006699" colspan="2" width="500">
<font size="-1" color="#006699" face="Verdana, Arial">
<p>

<?
echo "
<form method=\"post\" action=\" $PHP_SELF \">
Titel:<br>
<input type=\"text\" name=\"titel\" size=\"50\">$record->titel<br>
Kop:<br>
<textarea name=\"kop\" cols=\"50\" rows=\"5\">
$record->kop</textarea><br>
Bericht:<br>
<textarea name=\"bericht\" cols=\"50\" rows=\"5\">$record->bericht</textarea><br>
<input type=\"submit\" name=\"submit\" value=\" Voeg toe \">
</form>
</font>";
?>
<p>
</table>

</body>
</html>
<?
// END OORSPRONKELIJKE PAGINA

}
?>

$record-> titel of bericht of kop is dus om voor het uitlezen van bericht, wat in deze pagina dus blanco wordt.
WHERE id = $_GET[id] moet nog achter bij update en daarmee neem ik aan dat ik enkel 1 bericht update. Alleen lukt het nog niet goed om huidige waardes in database uit te lezen, en als het lukt krijg ik wel weer errors na voeg toe knop.
Uitlezen is niet zo moeilijk:
<?
# Eerst ff een querytje
$sql = "SELECT * FROM tabel WHERE id = '$_GET[id]'";
$res = mysql_query($sql);

# Dan kun je een arraytje of objectje fetchen :)
# Voor het arraytje:
$rijtje = mysql_fetch_array($res);
# $rijtje[0] geeft waarde 1, of $rijtje['veldnaam'] geeft de waarde van dat veld
# Voor het objectje:
$objectje = mysql_fetch_object($res);
# Dit roep je aan met $objectje->veldnaam
# Bijvoorbeeld:
echo "<input type=\"text\" name=\"veldje1\" value=\"$objectje->naam\">";
# Succes!
?>
Zo probeerde ik het ook. Ga het nog eens proberen.

Ga tevens ook ubb codes proberen erin te verwerken, wel zo gemakkelijk.

Ben alleen exit functie kwijt dat wanneer bericht in database is gezet niet het opnieuw het form wordt getoond. Dus ipv include index.php iets als exit(0); waarna je dus alleen te zien krijgt: cool bericht succesvol geupdate.

$sql = "UPDATE tabel SET titel = '$_POST[titel]', kop = '$_POST[kop]', bericht = '$_POST[bericht]' WHERE id = '$_GET[id]'";
bovenstaande regel werkt niet goed omdat ie dan niks update:( Toon bijv. invulformulier met id 22 en toch update ie rij 22 niet.
uhm wat denk je van dit:
<?
if(!$_POST) include(index.php);
else echo 'Je gegevens zijn verwerkt :)';
?>
exit(); werkte ook prima. BBCodes is ook gelukt. Nu nog even aan de slag met update.
exit werkt wel maar dan is je code niet goed afgesloten

kijk maar naar de broncode je zal waarschijnlijk geen </html> vinden
Heb nog geen problemen er door gehad dus vind exit wel prima zo. Ipv include.. heb ik exit en vind het een prima oplossing!
Updaten zal nog wel wat werk zijn om dat goed te krijgen en dan kan ik naar volgende stap:)
dan moet je netscape ofzo maareens gebruiken, die parsed iets niet tot ie een eindtag ziet
en aangezien die niet komt zien ze dus alleen een lege witte pagina

Reageren