Archief - PHP update

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.

Ezzio

Legacy Member
Kben bezig voor een projectje waar mensen kunnen inloggen en hun gegevens kunnen aanpassen. De bedoeling is dat, als er bepaalde velden van een form niet ingevuld zijn ,dat deze dan ook niet geupdate worden. Kheb er al een scriptje in php voor geschreven maar dit marcheerd niet. Het enige wat php doet is op het einde doorverwijzen naar de link in de echo.
Code die ik heb geschreven:

Code:
<?php  
session_start(); 

include('connection.php');

$achternaam = $_SESSION['achternaam']; 
$voornaam = $_SESSION['voornaam']; 
$pwd = $_POST['admin']; 
$adres = $_POST['adres']; 
$postcode = $_POST['postcode'];
$gemeente = $_POST['gemeente']; 
$gsm = $_POST['gsm']; 
$telefoon = $_POST['telefoon']; 

$result = mysql_query("SELECT * FROM ledenlijst WHERE Voornaam='$voornaam' AND Familienaam='$achternaam' AND pwd='$pwd'"); 
if(!$result)  {  
	echo "U heeft een verkeerd paswoord ingegeven." ?><br> <a href="../Accbeheer.php">Ga terug</a> <?php ;  
	}   
	
	else 
	{  
	if(trim($adres) == ''){} else{$sql=mysql_query("UPDATE ledenlijst SET Adres='$adres' WHERE Familienaam='$achternaam' AND Voornaam='$voornaam' AND pwd='$pwd'");} 
	if(trim($postcode) == ''){} else{$sql=mysql_query("UPDATE ledenlijst SET Postcode='$postcode' WHERE Familienaam='$achternaam' AND Voornaam='$voornaam' AND pwd='$pwd'");} 
	if(trim($gemeente) == ''){} else{$sql=mysql_query("UPDATE ledenlijst SET Gemeeente='$gemeente' WHERE Familienaam='$achternaam' AND Voornaam='$voornaam' AND pwd='$pwd'");} 
	if(trim($gsm) == ''){} else{$sql=mysql_query("UPDATE ledenlijst SET GSM='$gsm' WHERE Familienaam='$achternaam' AND Voornaam='$voornaam' AND pwd='$pwd'");} 
	if(trim($adres) == ''){} else{$sql=mysql_query("UPDATE ledenlijst SET Telefoon='$telefoon' WHERE Familienaam='$achternaam' AND Voornaam='$voornaam' AND pwd='$pwd'");} 
	echo "Uw gegevens zijn succesvol veranderd" ?><br> <a href="../AccBeheer.php">Ga terug</a> <?php ;
	}   
?>

Ik heb connectie met de database enzo maar door de 1of andere reden gebeuren er geen updates. Ook heb ik geprobeerd om if(!empty($telefoon))... te gebruiken maar deze blijkt ook niet te werken.
Dank op voorhand.

adrianhates

Legacy Member
begin met uw input te sanitizen om SQL injections te vermijden :)

Verder enkele domme dingen:

if(trim($adres) == ' '){} else{ }
=
if(trim($adres) != ' '){ }

de functie empty van php checked trouwens niet op spaties. Een string met een spatie is dus ook niet empty: http://josephscott.org/archives/2010/03/php-tip-spaces-are-not-empty/

en doen uw queries wel iets? Print ne keer de uitkomst van die updates.
Als ge begint met developen, moete leren om als er iets niet werkt , zoveel mogelijk ( of zo weinig mogelijk door scenario's uit te sluiten ) test prints te doen van dingen waarvan ge vermoed dat ze niet of foutief werken.

Test of ge uberhaupt wel in enkele code bloks komt / tussen accolades komt :)

Ezzio

Legacy Member
Kheb de SQL injection codes deruit gelaten om de code hier kort te houden :) Ik weet dat de trim met uitroepteken hetzelfde is als hetgeen in men code staat. Kheb het gewoon zo geschreven om, als php ziet dat het veld leeg is, dat hij niets moet doen. Zo was ik aan het denken :D

Dat is het hem net, hij geeft gwn niets weer. Ik dacht datik het zo in php kon schrijven en dat hij dan wel degelijk zijn updates zou doen maar hij doet dat dus niet.

Pjken007

Legacy Member
echo "U heeft een verkeerd paswoord ingegeven." ?>
Achter die echo "..." moet een ";" staan :)

//edit: Je hebt die ";" blijkbaar in volgende <?php ?> blok gezet, maar denk niet dat dat de juiste manier is...

$de_vieux

Legacy Member
if(mysql_query("UPDATE ledenlijst SET Adres='$adres' WHERE Familienaam='$achternaam' AND Voornaam='$voornaam' AND pwd='$pwd'")) {
doe volgende query
}
else{
echo mysql_error();
}

en al die post en get vars moeten niet in een aparte var kan je ook rechtstreeks gebruiken zijn namelijk al vars

Ezzio

Legacy Member
Heb er de mysql_error(); is bijgeschreven en hij geeft geen errors. Ook al worden de velden niet geupdate.

EDIT: Het is me gelukt om de velden in de database appart te kunnen updaten.

adrianhates

Legacy Member
Ezzio zei:
Heb er de mysql_error(); is bijgeschreven en hij geeft geen errors. Ook al worden de velden niet geupdate.

EDIT: Het is me gelukt om de velden in de database appart te kunnen updaten.

vermeld misschien een keer de oplossing?

Ezzio

Legacy Member
De code die ik heb toegepast: :)

Code:
<?php  
session_start(); 

include('connection.php');

$achternaam = $_SESSION['achternaam']; 
$voornaam = $_SESSION['voornaam']; 
$pwd = $_POST['admin']; 
$adres = $_POST['adres']; 
$postcode = $_POST['postcode'];
$gemeente = $_POST['gemeente']; 
$gsm = $_POST['gsm']; 
$telefoon = $_POST['telefoon']; 

//Sanatize input
$pwd = stripslashes($pwd);
$pwd = mysql_real_escape_string($pwd);
$adres = stripslashes($adres);
$adres = mysql_real_escape_string($adres);
$postcode = stripslashes($postcode);
$postcode = mysql_real_escape_string($postcode);
$gemeente = stripslashes($gemeente);
$gemeente = mysql_real_escape_string($gemeente);
$gsm = stripslashes($gsm);
$gsm = mysql_real_escape_string($gsm);
$telefoon = stripslashes($telefoon);
$telefoon = mysql_real_escape_string($telefoon);

$sql="SELECT * FROM ledenlijst WHERE Voornaam='$voornaam' AND Familienaam='$achternaam' AND pwd='$pwd'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);

if($count !== 1)  {  
echo "U heeft een verkeerd paswoord ingegeven." ?><br> <a href="../AccBeheer.php">Ga terug</a> <?php ;  
}   

else 
{  
if(!empty($adres)){mysql_query("UPDATE ledenlijst SET Adres = '$adres' WHERE Familienaam = '$achternaam' AND Voornaam = '$voornaam' AND pwd = '$pwd'") or die(mysql_error());}
if(!empty($postcode)){mysql_query("UPDATE ledenlijst SET Postcode = '$postcode' WHERE Familienaam = '$achternaam' AND Voornaam = '$voornaam' AND pwd = '$pwd'") or die(mysql_error());}
if(!empty($gemeente)){mysql_query("UPDATE ledenlijst SET Gemeente = '$gemeente' WHERE Familienaam = '$achternaam' AND Voornaam = '$voornaam' AND pwd = '$pwd'") or die(mysql_error());}
if(!empty($gsm)){mysql_query("UPDATE ledenlijst SET GSM = '$gsm' WHERE Familienaam = '$achternaam' AND Voornaam = '$voornaam' AND pwd = '$pwd'") or die(mysql_error());}
if(!empty($telefoon)){mysql_query("UPDATE ledenlijst SET Telefoon = '$telefoon' WHERE Familienaam = '$achternaam' AND Voornaam = '$voornaam' AND pwd = '$pwd'") or die(mysql_error());}

echo "Uw gegevens zijn succesvol veranderd." ?><br> <a href="../AccBeheer.php">Ga terug</a> <?php ;
}   

?>

d-zilla

Legacy Member
Tip: zet uw code niet te veel op 1 lijn, zo maak je makkelijker fouten (zeker als je weinig ervaring hebt) en ge gaat uw fouten minder snel zien.

En ik heb het dan over deze stukken:
Code:
if(!empty($telefoon)){mysql_query("UPDATE ledenlijs...

Ezzio

Legacy Member
Das inderdaad een goe plan. Kheb zo al een paar fouten gemaakt door op 1lijn te schrijven
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