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   
        } 
    } 
} 

?> 
Je hebt het steeds over $_POST in je script en in de query staat $_GET. Die zal wel leeg zijn.
Ik krijg deze melding :
Database probleem. Probeer het nog een keer of neem contact op met de webmaster
Ik wist niet dat MySQL ook foutmeldingen in het nederlands terug gaf!

Dit soort meldingen zijn leuk en aardig wanneer jouw site klaar is en voor bezoekers beschikbaar is, maar tijdens het debuggen heb je niets aan dit soort kansloze meldingen. Gebruik dus mysql_error() en/of mysql_errno() tijdens het bouwen, debuggen en testen van jouw systeem.
Dennis schreef op 07.12.2006 13:38
elk veld moet je toch scheiden door een komma ? of heb ik het nu mis.


Ja, maar niet achter het laatste veld, anders wordt er nog een veld verwacht, en die komt niet, en dus werkt je query niet.
@Wim: Het veld 'url' is ook niet het laatste veld.
Oops! Chips, sorry, had het veld 'bericht' er niet meer achter zien staan.
Sorry voor mij te snelle conclusie. :)

Het enige dat ik dan nog als mogelijke fout zie is dat de volledige query niet tussen " " staat.
Of dat de velden aangegeven in de query niet overeenkomen met de database.
@ Frank : Je hebt het over mysql_error() en/of mysql_errno() .
Hoe pas ik dit toe dan ? Ben nog niet zo lang met php aan de wandel.. Begrijp van jou dat het alles wel stukken makkelijker maakt op die manier tijdens het testen.

@ SanThe : wat je zei over $_GET dat het waarschjnlijk $_Post moest zijn heb ik geprobeerd maar dat is het niet. :-S
Waar komt die $var vandaan? Uit een formulier? Uit de url?
$query = "SELECT * FROM table";
$result = mysql_query($query) or die ('Error: ' . mysql_error());

Zo doe ik het normaal gesproken.
<?
if(isset($_GET['id']) && ctype_digit($_GET['id']){ // bestaat $_GET['id'] en is het een nummer?
$sql = "
SELECT
titel,
datum,
url,
bericht
FROM
vangaart_nieuws
WHERE
id = ".$_GET['id'];
if(!$result = mysql_query($sql))
{
echo mysql_error(); // en nog wat lulkoek voor later..."<b>Database probleem.</b><br> Probeer het nog een keer of neem contact op met de webmaster";
}
}
else {
echo 'Ongeldigde waarde opgegeven.';
}
?>
@ SanThe : die var moet uit een formulier komen die ingevult moet worden om zo weer die rij in de tabel te wijzigen..

@ Frank : dus deze code van mij
<?   $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);  ?>


Vervangen door :
<?
if(isset($_GET['id']) && ctype_digit($_GET['id']){ // bestaat $_GET['id'] en is het een nummer?
  $sql = "
    SELECT 
      titel, 
      datum, 
      url, 
      bericht 
    FROM 
      vangaart_nieuws 
    WHERE 
      id = ".$_GET['id']; 
  if(!$result = mysql_query($sql)) 
  { 
    echo mysql_error(); // en nog wat lulkoek voor later..."<b>Database probleem.</b><br> Probeer het nog een keer of neem contact op met de webmaster"; 
  }
}
else {
  echo 'Ongeldigde waarde opgegeven.';
}
?> 

Reageren