<?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.
Blanche schreef op 22.10.2007 13:58
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);
?>


hmm ok wel lastig, maar ga het straks ff proberen
Heren, ben nu een stapje verder.
Ik heb 2 probleempjes,
ik krijg de waarden van heel me database terug in formpjes nu, dus al ik 5 berichten heb gepost, en wil gaan editen krijg ik 5 formpjes titel, 5 formpjes bericht. Hij moet de waardes geven van de juiste post id die ik wil bewerken,
Dat ligt aan me query ik moet aan die passen ik heb het al geprobeerd te limiteren of

$sql = "SELECT titel, bericht FROM posts WHERE postid = " . $postid;

te doen

maar dat werkt niet, als ik die gebruik, krijg ik niet eens een query en mijn form is dan ook opeens weg.

ook zodra ik nieuwe gegevens in vul en op verzenden klik worden de gegevens van me database niet overgeschreven wie o wie helpt.

hier de wijzig.php code

<?php

session_start();


if($_SESSION['id'])
{
    echo "<p>Pas bericht aan. Je bent ingelogd  als: \"" . $_SESSION['gebruikersnaam'] . "\"</p>";
    echo "<p>Klik <a href=\"logout.php\">hier</a> om af te melden!</p>";  
          
    echo "<p>Klik <a href=\"admin.php\">hier</a> om terug te gaan naar het hoofdmenu</p>";

}
else 
 {   
    echo "<p>Klik <a href=\"admin.php\">hier</a> om je aan te melden!</p>";}
?>
             
<html>
<head>
<title>Wijzig bericht</title>
       <link rel="stylesheet" type="text/css" href="css/post.css" />

</head>
<body>        

                         



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

        if($_SESSION['id'])  {
     
 $postid = $_GET['postid']; 
             

$sql = "SELECT titel, bericht FROM posts ORDER by postid DESC";               
   // $sql = "SELECT titel, bericht FROM posts WHERE postid = " .  $postid;             
                
$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 ($row = mysql_fetch_assoc($query)) {
$titels[$row['titel']] = $row['bericht'];
}           



         {
                 
   
 
?>  
              
  <?php
if (!isset($_POST['submit'])) {
?>
 
<form id="berichtformulier" action="" method="post">
    
<fieldset id="date">
    <legend>Titel</legend>
<?php 
foreach($titels AS $titel => $bericht)
   {
       
echo 
'<input name="titel" id="titel" type="text" 
    tabindex="1" value="' . $titel . '">';
   }
?>  

    <br />
    
    
  </fieldset>
  
  
  
  <fieldset id="mssg">
    <legend>Bericht</legend>
       <?php
foreach($titels AS $titel => $bericht)
   {
       echo '<textarea name="bericht" cols="40" rows="10" id="bericht">  '. $bericht .' </textarea>'; }?>
    </textarea>
  </fieldset>
                    
<input type="submit" name="submit" value="Verzenden!">    
<input type="reset" name="reset" value="Reset!"> 
                
</form>
      
<?php
  } else {  
$titel =  mysql_real_escape_string($_POST['titel']);   
$bericht = htmlspecialchars($_POST["bericht"]);


      
                                            
$sql = mysql_query("UPDATE posts SET='$titel', '$bericht' WHERE postid='$postid'"); 

echo "Het bericht heeft nu een update gekregen! Wil je een nieuw bericht schrijven klik dan <a href=\"nieuw_bericht.php\">hier</a> <br/>
of  <a href=\"..\"index.php\">bekijk</a> de home page opnieuw!";


} 
}   
} 
       
        }  
?>

</body>
</html>

Je zult 1 enkele post op moeten halen om te wijzigen, dus die WHERE clausule heb je zeker nodig.

Zet dit verder nou eens bovenaan je script en kijk welke foutmeldingen er gegeven worden:
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);
?>

ps. Volgens mij heb ik ook al eerder gezegd dat je htmlentities() niet gebruikt voordat je data naar de database wegschrijft, dat slaat namelijk nergens op. Gebruik mysql_real_escape_string() vooraf en htmlentities() enkel achteraf als je wilt dat de html niet uitgevoerd maar op het scherm getoond wordt.
o die display erros had ik niet bij gekopieerd heb ik er wel in
Notice: Undefined index: postid in wijzig.php on line 43
Voila: $_GET['postid'] bestaat dus niet. Staat het id wel in je url? En zo ja, onder welke variabele?

Op dit moment moet volgens jouw script de url er zo uit zien:

wijzig.php?postid=1
maar ik geef dat toch al aan in regel 36....

$postid = $_GET['postid'];
Ja dat is juist het probleem. $_GET['postid'] bestaat niet, dus blijkbaar zal die variabele niet in de URL aanwezig zijn, of wellicht onder een andere naam.

ps. Bovendien heeft zo'n uitdrukking helemaal geen meerwaarde. Waarom een kopie maken van $_GET['postid'] terwijl je helemaal niets aan de variabele veranderd. Gebruik gewoon $_GET['postid'] ipv $postid. (Zorg natuurlijk wel dat $_GET['postid'] bestaat).
Blanche schreef op 23.10.2007 14:35
Ja dat is juist het probleem. $_GET['postid'] bestaat niet, dus blijkbaar zal die variabele niet in de URL aanwezig zijn, of wellicht onder een andere naam.

hoe moet ik dit precies oplossen
ik bedoel hoe zorg ik ervoor dat
$_GET['postid']
bestaat

me berichten kan ik bereiken door berichten.php
en in me database
posts
uit
postid
auteur
titel
bericht
url
Door de benodigde variabele in de url op te nemen, of juist uit te lezen misschien?!

In een eerdere post zeg je dat er onder elke post een link komt te staan van het volgende formaat:

wijzig.php?id=45

Op wijzig.php kun je het id dus uitlezen met $_GET['id'] en niet met $_GET['postid']. Deze laatste variabele bestaat immers helemaal niet! En dat is precies waarom jij die foutmelding krijgt en je script niet werkt....
Blanche schreef op 23.10.2007 14:42
Door de benodigde variabele in de url op te nemen, of juist uit te lezen misschien?!

In een eerdere post zeg je dat er onder elke post een link komt te staan van het volgende formaat:

wijzig.php?id=45

Op wijzig.php kun je het id dus uitlezen met $_GET['id'] en niet met $_GET['postid']. Deze laatste variabele bestaat immers helemaal niet! En dat is precies waarom jij die foutmelding krijgt en je script niet werkt....


Kan jij mijn script is verbeteren zo dat ik goed kan zien wat ik precies fout doet.
Want ik snap het nog steeds niet.
Ik krijg als error dat postid niet bestaat
Terwijl elke post een postid heeft en wordt opgeslagen.
Ik kan $postid = $_GET['id']; wel doen, als ik die dan echo krijg ik de juiste id van de post weer..:)
Maar wat is precies de juiste query voor mijn probleempje

Reageren