<?php

include ("admin/db.php");









$sql = "SELECT * FROM `posts` ORDER by postid DESC";

$query = mysql_query( $sql )
or die( mysql_error() );

// Controleren of er resultaten zijn:
if( mysql_num_rows( $query ) == 0 ){ echo "De tabel is leeg.";
}else
{
// While maken
while(
$uitvoer = mysql_fetch_assoc( $query ) )
{
$jaar = substr($uitvoer['datum'], 0 , 4); //deze klopt wel
$maand = substr($uitvoer['datum'], 5 , 2); //de 5 twijfel ik moet of 5 of 6 zijn
$dag = substr($uitvoer['datum'], 8 , 2); //ook twijfel moet 7,8 of 9 zijn...
$tijd= substr($uitvoer['datum'], 11);

echo


'postid: ' . $uitvoer['postid']
. '<br/>'
. 'auteur: ' . $uitvoer['auteur']
. '<br/>'
. 'titel: ' . $uitvoer['titel']
. '<br/>'
. 'datum: '
. $dag, '-', $maand, '-', $jaar, ' op ', $tijd
. '<br/>'
. 'bericht: ' . htmlspecialchars_decode($uitvoer['bericht'])
. '<br/><br/>' ;
}
if($_SESSION['id'])
{
echo "<p><a href=\"bericht.php\">wijzig bericht</p>";

}
}
?>

De code hierboven is een gedeelte van me script.
De bedoeling is wanneer je ben ingelogd de posts volledig ziet weergegeven en dat je ook de link ziet van wijzig bericht ziet per post

De gebruiker die niet is ingelogd moet de volledig post zien, maar niet edit link.

Hoe doe ik dit precies
want ik weet dat je na een echo geen if statement kan plaats vinden.
Nu werkt het wel...alleen onderin de pagina staat nu alleen "wijzig bericht" ik wil als ik inlog dat ik het per post zie.
bericht verwijderd
hmm had misschien beter een nieuwe topic moeten starten voor de tweede vraag
De url zet je niet in de database! Die kun je namelijk gewoon genereren op de pagina waar je hem nodig hebt...

Als je ergens een link wilt weergeven, lees je gewoon het id uit uit de database en maak je met behulp van die variabele een url.

ps. Normaal gesproken sla je helemaal geen html code op in de database. De database gebruik je alleen voor data en daar is de opmaak niet van belang.
bericht verwijderd
[later in de topic wordt me vraag duidelijker namelijk )
Zorg dat je in de link om een bericht te wijzigen direct al het juiste id meegeeft. Dit juiste id lees je tegelijkertijd met de weer te geven berichten uit uit de database en kun je dus gewoon in de link zetten.

In plaats van $postid gebruik je dus $uitvoer['postid'] aangezien de waarde uit de database komt...
Blanche schreef op 20.10.2007 17:39
Zorg dat je in de link om een bericht te wijzigen direct al het juiste id meegeeft. Dit juiste id lees je tegelijkertijd met de weer te geven berichten uit uit de database en kun je dus gewoon in de link zetten.

In plaats van $postid gebruik je dus $uitvoer['postid'] aangezien de waarde uit de database komt...


waar moet ik ditprecies doen
want in mijn berichten.php heb ik al
al echo $uitvoer['postid']
zo zie ik welk nummertje elke post heeft
maar hoe zorg ik ervoor dan dat elke link van "verander bericht" naar de juiste id linkt...
zonder dit handmatig elke keer te doen
dit moet volgens mij verbeterd worden :
'<a href=\"bericht.php?$_GET[postid]\">'
<?php
echo '<a href="wijzig.php?id='.$uitvoer['postid'].'>Bericht Wijzigen</a>';
?>
Zoiets zal dat worden.

En vervolgens kun je op wijzig.php het id uit de url uitlezen met $_GET['id'] en vervolgens de gegevens van dat bericht uit de database ophalen.
Ok bedankt zal het morgen even gelijk proberen!
ok ik krijg nu onder elke post
bijvoorbeeld
wijzig.php?id=45
dat is dus goed

ik heb nu een wijzig.php aangemaakt
wat lijkt op nieuw_bericht.php

hoe zorg ik ervoor
dat de juiste gegevens worden geladen in de forms
en de nieuwe gegevens in de database worden gepropt


<?php
include ("db.php"); 

if($_SESSION['id'])  {
?>

<?php
if (!isset($_POST['submit'])) {
?>

<?php
$titel =   $_GET['titel'];
$bericht  =  $_GET['bericht'];

?>
<form id="berichtformulier" action="" method="post">

<fieldset id="date">
    <legend>Titel</legend>
    <input name="titel" id="titel" type="text" 
    tabindex="1" value="<?php echo "$titel" ?>">
    <br />
    
    
  </fieldset>
  
  
  
  <fieldset id="mssg">
    <legend>Bericht</legend>
 

    <textarea name="bericht" cols="40" rows="10" value="<?php echo "$bericht" ?>"> 
    </textarea>
  </fieldset>
                    
<input type="submit" name="submit" value="Verzenden!">    
<input type="reset" name="reset" value="Reset!"> 
                
</form>

<?php
} else {

$titel = htmlentities(strip_tags($_POST['titel']));
   
$bericht = htmlspecialchars($_POST["bericht"]);


$datum = date("Y-m-d H:i:s");
     
$url = $_POST['postid'];             
                                            
$sql = mysql_query("INSERT INTO `posts` (auteur, titel, datum, bericht, url) VALUES ('".$_SESSION['gebruikersnaam']."', '$titel', '$datum', '$bericht', '<a href=\"bericht.php?$_GET[postid]\">')"); 
} 

}
?>


Volgens mij moet de volgorde worden aangepast
Eerst connectie met de database, dan de juiste tabel selecteren, initialisatie van de variabelen, form (echo de juiste titel en bericht) en dan een sql query om te updaten.

Stappenplan:

- Controleer of er een formulier naar de pagina gepost is ($_SERVER['REQUEST_METHOD'] == POST) want dan heeft de gebruiker gegevens gewijzigd en moet de database geupdate worden.

- Zo niet, haal het id op uit de URL ($_GET['id']) en voer een SELECT query uit om de huidige gegevens uit de database te halen.

- Maak het formulier waar je bij de value attributen de juiste waarden uit de database invult.

- Als het formulier verzonden is, voer een update query met de nieuwe waarden uit. Zorg dat je id uit de url voor het verzenden in een sessievariabele hebt gezet, zodat je weet over welk record het gaat.

ps. Begin al je scripts met
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);
?>

Reageren