Archief - PHP: Update query past niets aan

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Featherfoot

Legacy Member
Hi all, ik ben bezig met een nieuwsscriptje en er moet natuurlijk ook nieuws worden geupdate indien er een fout in het berichtje staat. Dit is mijn code, het enige probleem is dat ik wel de melding krijg dat mijn update is doorgevoerd, maa r het wordt helemaal niet aangepast. Het blijft het originele bericht.

PHP:
<h1>Nieuws wijzigen</h1><br />
<?php

	// Bericht selecteren dat bewerkt moet worden
	$sql = "SELECT news_ID, news_Title, news_Message FROM tblnews WHERE news_ID = '".$_GET['id']."'";
	$query = mysql_query($sql);
	$rij = mysql_fetch_object($query);
	$titel = htmlspecialchars($rij->news_Title);
	$bericht = htmlspecialchars($rij->news_Message);
	
	// Bericht updaten en in database zetten
	if(isset($_POST['submit'])){
		if($_POST['titel'] != "" AND $_POST['bericht'] != ""){
			$sqlupdate = "UPDATE tblnews SET news_Title='".$_POST['titel']."', news_Message='".$_POST['bericht']."' WHERE news_ID='".$_GET['id']."'";
			$query = mysql_query($sqlupdate);
				if($query == true) {
					echo  'Bestand succesvol toegevoegd!<br /><a href="index.php?page=adminnews">&laquo; Ga terug</a>';
				}else{
					echo 'Er is een fout opgetreden bij het toevoegen aan de database!<a href="index.php?page=adminnews">&laquo; Ga terug</a>';
					}	
		}else{
		echo "Je bent vergeten &eacute;&eacute;n of meerdere velden in te vullen.<br />\n<a href=\"javascript:history.back()\">&laquo; Ga terug</a>";
		}
	}else{
?>
<form method="post" action="index.php?page=newsedit" >
    <table>
      <tr>
        <td>Titel:</td>
      </tr>
      <tr>
        <td><input name="titel" type="text" value="<?php echo $titel; ?>"/></td>
      </tr>
      <tr>
        <td>Bericht:</td>
      </tr>
      <tr>
        <td><textarea name="bericht" cols="40" rows="10"><?php echo $bericht; ?></textarea></td>
      </tr>
      <tr>
        <td><input name="submit" type="submit" value="Wijzigen" /></td>
      </tr>
       </table>
</form>
<?php
}
?>

passero

Legacy Member
doe eens een echo $sql en voer die uit in een mysql browser ofzo, dan kan je veel sneller zien wat de fout is.

Daarenboven gebruik je $_POST en $_GET door elkaar... ik denk niet dat dit de bedoeling is. Je kan een form niet tegelijk versturen door de POST en GET methode hé...
Als die ID in de querystring meegekomen is zal je $_REQUEST moeten gebruiken in plaats van $_GET.

Tyfius

Legacy Member
Ik zie je nergens het ID van het nieuwsbericht meegeven in je formulier. Dus dan kan die dat moeilijk vinden.

Featherfoot

Legacy Member
Tyfius zei:
Ik zie je nergens het ID van het nieuwsbericht meegeven in je formulier. Dus dan kan die dat moeilijk vinden.

Het is zoals passero het zegt, die id wordt meegegeven in de url voor het bewerken van dat specifieke bericht. Maar ik zal die $_REQUEST eerst eens proberen. Zal het vanavond laten weten.

Bedankt iig

Tyfius

Legacy Member
Als je je formulier post, overschrijft die $_REQUEST en verlies je het ID. Je moet dat nog eens meegeven via het formulier (een hidden field bvb).

EyeBallz

Legacy Member
wat ik ook al gemerkt heb is dat $_POST... gebruiken in een query niet zo'n goed idee is (zelfde voor get)
ik weet niet waarom, maar bij mij is PHP daar al een aantal keer over gestruikeld.
ik sla mijn variabelen altijd eerst op in een lokale variabele.

Featherfoot

Legacy Member
EyeBallz zei:
wat ik ook al gemerkt heb is dat $_POST... gebruiken in een query niet zo'n goed idee is (zelfde voor get)
ik weet niet waarom, maar bij mij is PHP daar al een aantal keer over gestruikeld.
ik sla mijn variabelen altijd eerst op in een lokale variabele.

Ik doe dit eigenlijk altijd, eerst nog eens omzetten vind ik zo'n rommeltje.
Misschien eens aan denken. Hoe moet ik die hidden field dan maken? Gewoon hidden field met daarin die get variabele?

Tyfius

Legacy Member
Meteen $_POST en $_GET gebruiken is waarschijnlijk het meest onveilige wat je kan doen. Je kan deze wel rechtstreeks gebruiken en er eerst een mysql_real_escape_string() op doen, maar dan is het handiger en leesbaarder om deze eerst in een lokale variabele om te zetten.

Je kan het ID op 2 manieren meegeven, ofwel meteen in de post URL ofwel via een hidden form field:
PHP:
echo '<input type="hidden" name="id" value="'.$_GET['id'].'" />';
of iets dergelijks.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan