Mensen,

Inmiddels ben ik weer wat verder, alleen zit ik nu met een database probleem... Weet iemand wat ik nu fout doe ?

Hierbij de code en alvast bedankt voor de tijd :-)


<?php 
include ("pages/connect.php"); 
?> 
<?php          
if ($_SERVER['REQUEST_METHOD'] == "POST") { 

        $id = (!empty($_POST['id'])) ? $_POST['id'] : 0; 
            $UpdateQuery = "UPDATE 
                            vangaart_nieuws  
                            SET  
                            titel='".mysql_real_escape_string($_POST['titel'])."' ,
							datum='".mysql_real_escape_string($_POST['datum'])."' ,
							url='".mysql_real_escape_string($_POST['url'])."' ,
							bericht='".mysql_real_escape_string($_POST['bericht'])."' 
                            
                        WHERE 
                        
                        id=".$id; 

                $resultaat = mysql_query($UpdateQuery) or die(mysql_error());     
                if ($resultaat) {    
                    echo "Het bericht is geupdate";    
                } else {    
                    echo "Bericht updaten is mislukt!";  
                } 
            
} else {  // er is niet op post geklikt 
        $titel = (!empty($_POST['titel'])) ? $_POST['titel'] : '';     

  $sql = "SELECT titel, datum, url, bericht FROM vangaart_nieuws WHERE id = ".$_GET['id']; 
  if(!$result = mysql_query($sql)) 
  { 
    echo "<b>Database probleem.</b><br> Probeer het nog een keer of neem contact op met de webmaster"; 
  } 
  else 
  { 
    if(mysql_num_rows($result) == 0) 
    { 
      echo "Er is geen bericht gekozen"; 
    } 
    else 
    { 
      $gegevens = mysql_fetch_assoc($result); 
?>  

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<strong>Wijzigen bericht</strong> 
<p><form action="<?php echo $_SERVER["PHP_SELF"]; ?>?page=wijzigen" method="post"> 


  <table width="100%" border="0" cellspacing="0">
    <tr> 
      <td colspan="3">Door middel van dit formulier kunt u zelf uw nieuws of persberichten 
        wijzigen.<br>
        * Let hierbij goed op wat u invult bij het veld url !!, komt u er niet 
        helemaal uit ? raadpleeg dan de <a href="popup/help.htm" TARGET="popup" onClick="OpenVenster('popup/help.htm'); return false;">help 
        pagina</a>.</td>
    </tr>
    <tr> 
      <td width="20%">&nbsp;</td>
      <td width="3%">&nbsp;</td>
      <td width="77%">&nbsp;</td>
    </tr>
	    <tr> 
      <td><strong>ID</strong></td>
      <td><strong>:</strong></td>
      <td><input name="id" type="text" id="id" size="30"></td>
    </tr>
    <tr> 
      <td><strong>Datum</strong></td>
      <td><strong>:</strong></td>
      <td><input name="datum" type="text" id="datum" size="30" value="<?php echo $gegevens['datum']; ?>">
	  <input type="hidden" name="id" value="<?=$_GET['id'];?>"> </td>
    </tr>
    <tr> 
      <td><strong>Titel</strong></td>
      <td><strong>:</strong></td>
      <td><input name="titel" type="text" id="titel" size="30" value="<?php echo $gegevens['titel']; ?>">
	  <input type="hidden" name="id" value="<?=$_GET['id'];?>"></td>
    </tr>
    <tr> 
      <td><strong>Url</strong></td>
      <td><strong>:</strong></td>
      <td><input name="url" type="text" id="url" value="<?php echo $gegevens['url']; ?>" size="30">
	  <input type="hidden" name="id" value="<?=$_GET['id'];?>"></td>
    </tr>
    <tr> 
      <td><strong>Bericht</strong></td>
      <td><strong>:</strong></td>
      <td rowspan="3"><textarea name="bericht" cols="35" rows="5" value="<?php echo $gegevens['bericht']; ?>">
	  <input type="hidden" name="id" value="<?=$_GET['id'];?>"></textarea></td>
    </tr>
    <tr> 
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr> 
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr> 
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td><input name="submit" type="submit" value="Wijzig bericht"></td>
    </tr>
  </table>
</form>&nbsp;</p>
</body>
</html>
<?php   
        } 
    } 
} 

?> 
@ SanThe : ow ok... dan heb ik niks gezegt net :-)
Maar ik duik er wel weer even in, het is alleen boven mijn kunnen krijg ik het idee.

Want het formulier moet goed zijn, probleem zit hem in die query. Nu alleen de oorzaak en oplossing bedenken. Wat makkelijker gezegt dan gedaan is.
Gewoon er mee gaan spelen en testen, dan kun je al wat dingen uitsluiten.
Controleer bijv. of alle post data van je formulier goed aankomt bij het script waar je query staat. Als dat goed is kun je uitsluiten dat het aan je formulier ligt.

Echo die $sql eens, en kijk of je query er ingevuld uit er zo uit ziet als je verwacht.

Op die manier kun je waarschijnlijk hier ook duidelijkere info geven over wat er misgaat, en je leert er ook veel van. :)
Wat gaat er precies fout? En wat is de url waar het script staat? Dan kan ik misschien kijken wat er misgaat ...
Het is moeilijk fouten zoeken als je niet weet waar of wat er fout gaat ...
@ Wim : geloof mij als ik zeg dat ik al heel veel aan het spelen ben er mee :-) punt is ik ben het nu gewoon echt even kwijt. Mijn kennis van PHP is nog lange niet van alleskunner om het zo maar te zeggen.

@ Koen : Wat er precies fout gaat, het formulier word ten eerste al niet meer weergegeven en krijg direct de foutmelding van het script dat er iets is met de database. Nu denk ik dat het ligt waar het script de gegevens selecteerd met SELECT. Ik dacht dat ik eerst alleen met de UPDATE functie en dan het formulier er al was als je dan ook het ID invult zodat het overschreven word.

Maar ik begreep later uit andere scripts dat je ook alles moet selecteren om dat voor elkaar te krijgen.

Hierbij nogmaals de code :

<?php          
if ($_SERVER['REQUEST_METHOD'] == "POST") { 

        $id = (!empty($_POST['id'])) ? $_POST['id'] : 0; 
            $UpdateQuery = "UPDATE 
                            vangaart_nieuws  
                            SET  
                            titel='".mysql_real_escape_string($_POST['titel'])."' ,
							datum='".mysql_real_escape_string($_POST['datum'])."' ,
							url='".mysql_real_escape_string($_POST['url'])."' ,
							bericht='".mysql_real_escape_string($_POST['bericht'])."' 
                            
                        WHERE 
                        
                        id=".$id; 

                $resultaat = mysql_query($UpdateQuery) or die(mysql_error());     
                if ($resultaat) {    
                    echo "Het bericht is geupdate";    
                } else {    
                    echo "Bericht updaten is mislukt!";  
                } 
            
} else {  // er is niet op post geklikt 
        $titel = (!empty($_POST['titel'])) ? $_POST['titel'] : '';     

  $sql = "SELECT titel, datum, url, bericht FROM vangaart_nieuws WHERE id = ".$_POST['id']; 
  if(!$result = mysql_query($sql)) 
  { 
    echo "<b>Database probleem.</b><br> Probeer het nog een keer of neem contact op met de webmaster"; 
  } 
  else 
  { 
    if(mysql_num_rows($result) == 0) 
    { 
      echo "Er is geen bericht gekozen"; 
    } 
    else 
    { 
      $gegevens = mysql_fetch_assoc($result); 
?> 


De velden in het form hebben als value bv :
<?php echo $gegevens['datum']; ?>


en hebben allemaal een hidden field :

 <input type="hidden" name="id" value="<?=$_POST['id'];?>">


@Dennis
Je hoeft ook geen alleskunner te zijn, dat ben ik ook niet. :)
Wat ik probeerde aan te geven is, dat je zelf al kunt testen hoe en waar het misgaat. Dan kun je ook beter aangeven waar het misgaat.

Dus controleren of de info van het formulier wordt gepost, of de waarde van bijv. $sql ook daadwerkelijk de query is die jij voor ogen had, aangezien je er info vanuit het formulier voor gebruikt.
Met mijn vorige formulier liep is dus echt vast en probeer het nu over een andere boeg te gooien om te kijken of het in ieder geval lukt om alleen het veld bericht te wijzigen.

nu heb ik het volgende script :

<?php
$dbHost = "localhost";
$dbUser = "****";
$dbPass = "****";
$dbName = "****";

function dbConnect(){
global $dbHost, $dbUser, $dbPass, $dbName;

$connection = mysql_connect($dbHost,$dbUser,$dbPass) or die (mysql_error());
mysql_select_db($dbName) or die (mysql_error());
return $connection;
}

function dbDisconnect($connection){
mysql_close($connection);
}

if($_POST['submit'])
{
if(isset($_POST['bericht']))
{
$query = "UPDATE vangaart_nieuws SET bericht = '".$_POST['bericht']."' WHERE `id` = '".$_POST['titel']."'";
$sql = mysql_query($query) or die(mysql_error());
print("Nieuw bericht is ".$_POST['bericht']."");
}
else
{
print("Geen bericht ingevoerd! Niets gewijzigd!");
}
}
else
{
?>
<form name="wijzig_bericht" action="index.php?page=test" method="post">
Selecteer bericht:
<select name="titel">
<?php

$query = "SELECT * FROM vangaart_nieuws";
$sql = mysql_query($query);
while($record = mysql_fetch_object($sql))
{
echo"<option value =".$record->id.">".$record->titel."</option>";
}
?>
</select>
  Nieuw bericht: <br>
  <textarea name="bericht" cols="40" rows="10"></textarea>
  <input type="submit" name="submit" value="Aanpassen">
</form>
<?php } ?>


Nu wordt het menu weergegeven om de titel te selecteren en het tekstvak, alleen het menu om de titel te selecteren geeft niet de titels weer die in de tabel staan...
Anyone ?
Nou ben je weer aan het * bumpen *
vraag juist of iemand ziet waar het probleem zit dat er in het keuze menu niet de titels weer gegeven worden.
Ik weet het niet zeker, maar het afbreken van een else {} door ?> en dan weer html gebruiken, en vervolgens weer verder gaan met <?php lijkt mij niet de juiste methode.
Ik vraag me af of het op deze manier nog wel werkt.

Ik had dat laatste stuk zelf alsvolgt gedaan:

<?php
//voorafgaande code
else
{
echo "
<form name='wijzig_bericht' action='index.php?page=test' method='post'>
Selecteer bericht:
<select name='titel'>";

$query = "SELECT * FROM vangaart_nieuws";
$sql = mysql_query($query);
while($record = mysql_fetch_object($sql))
{
echo"<option value =".$record->id.">".$record->titel."</option>";
}
echo "
</select>
Nieuw bericht: <br>
<textarea name='bericht' cols='40' rows='10'></textarea>
<input type='submit' name='submit' value='Aanpassen'>
</form>
}
?>

Reageren