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 hoeft je ID niet te kwooten
<?php
$sql = "
UPDATE vangaart_nieuws
SET
titel = '$titel',
datum = '$datum',
url = '$url',
bericht = '$bericht',
WHERE id = $id";
?>
doe eens echo $sql en kijk dan verder

Overigens heeft wes een tekst gemaakt over het inkorten van tekst

daar las ik ook iets zoals

if (!empty($_POST)) { extract($_POST); }

te gebruiken i.p.v $poep = $_POST['poep'];
ben nog een newb , maar als ik het goed begrijp bedoelde je dit :

<?php
echo '$sql = "
UPDATE vangaart_nieuws
SET
titel = '$titel',
datum = '$datum',
url = '$url',
bericht = '$bericht',
WHERE id = $id";'
?>

zo ja ( zal denk ik niet... ) dan werkt het niet. De rest van de pagina is wel goed begrijp ik, ik moet me alleen concentreren nu op dit stuk dan ?

Sorry voor alle vragen hoor..
<?
$id = $_POST['id'];
$titel = $_POST['titel'];
$datum = $_POST['datum'];
$url = $_POST['url'];
$bericht = $_POST['bericht'];
?>
Dit is een garantie op problemen. Jij gaat vervolgens alle variabelen zonder enige vorm van controle/beveiling in de query zetten waarmee je een enorm veiligheidslek aanmaakt.

mysql_real_escape_string() is wel de meest minimale beveiliging die je hier nodig hebt. Tevens zul jij moeten controleren of $_POST['id'] een nummer is (ctype_digit() ) en $_POST['datum'] wel een datum is (checkdate() en vervolgens in het iso-formaat yyyy-mm-dd zetten) en tenslotte of $_POST['url'] wel een url is (regex gebruiken).

Zonder deze controles en beveiliging, heb je de garantie dat je een problemen en bugs aan het maken bent. Een goed werkend systeem is echt heel wat anders!
Pffftttt...zeker niemand die zich geroepen voelt om de code aan te passen ? :-(

@ Frank, wat je zegt $_POST['id'] een nummer is (ctype_digit() ), doel je hiermee op de waarde van de tabel ? zoals bv varchar ? want heb nog nooit hiervan gehoord namelijk.

Als je me dat zou willen uitleggen graag, want wil het graag allemaal onder de knie krijgen op den duur
zeker niemand die zich geroepen voelt om de code aan te passen ?


dit zal je zelf moeten doen..

ook voor je eerste post.. lees eerst even de faq voordat je verder gaat op deze site. http://www.phphulp.nl/faq/
Dit $_SERVER["pages/PHP_SELF"] bestaat niet.
@ Terence : dat idee had ik al ja :-) en ik den kdat je doelt met de faq verwijzing hoe ik de code gepost had, excuses hiervoor. Zal daar voortaan op letten.

@ Santhe : dat had ik al eerder gehoord inderdaad, had eerst pages/$_SERVER["PHP_SELF"] ook geprobeerd omdat de pagina in die dir staat maar dat werkte ook niet. vandaar dat er een beetje in bleef hangen.
Maar als ik dus de pagina zelf aan roep, dan is het dus alleen $_SERVER["PHP_SELF"] . in ieder geval weer wat bijgeleerd...

Positief denken toch ? :-D

Ik ga me volgende keer opgeven als acteur van lost denk ik...zoals hun voel ik me nu ook...alleen ik zit niet op een warm eiland haha.. maar goed....

Als iemand wat pointers heeft graag..dan kan ik weer wat proberen in elkaar te knutselen.
En nog kom ik er niet uit..., word er nogal moedeloos van... Zelfs als ik dat van dion toe pas gebeurd er niet wat ik wil....

Weet iemand anders een goed update script dat ik kan aanpassen ? :-(
kijk even tussen de scripts hier op de site. zit vast wel wat tussen

Reageren