Archief - PHP: Info over form terugsturen zonder ingevulde waarden te verliezen

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.

Bram

Legacy Member
Zoals het in de titel staat:

Ik heb een formuliertje om een gebruiker aan de database toe te voegen. Hieraan gaat natuurlijk wat validatie vooraf:
-alle velden moeten ingevuld zijn (naam, email, rank en paswoord 2*maal)
-de twee paswoorden moeten aan elkaar gelijk zijn
-de sql query moet succesvol uitgevoerd worden.

Als deze allen geslaagd zijn, krijgt de gebruiker een veldje bovenaan de pagina te zien "geslaagd etc". Gaat er iets fout bij vorige, dan moet er een waarschuwing komen te staan.
Momenteel doe ik dit zo:
PHP:
<?php
if(isset($_POST['submNewUser'])) {
	$username = !empty($_POST['username']) ? $_POST['username'] : '';
	$email = !empty($_POST['email']) ? $_POST['email'] : '';
	$password = !empty($_POST['password']) ? $_POST['password'] : '';
	$passwordCheck = !empty($_POST['passwordCheck']) ? $_POST['passwordCheck'] : '';
	$perm_id = $_POST['permId'];
	if(empty($username) || empty($email) || empty($password) || empty($passwordCheck)) {
		$core->assign('returnInfo', "<p class=\"alert\">Field empty!</p>");
	} else {
		if($password == $passwordCheck) {
		
			$pw = md5($password);
			$qry = $core->sql->doQry("INSERT INTO users SET username = '$username', email = '$email', password = '$pw', perm_id = $perm_id");
			if($qry['bool']) {
				$core->assign('returnInfo', "<p class=\"success\">User successfully added!</p>");
			} else {
				$core->assign('returnInfo', "<p class=\"alert\">Query not executed correctly</p>");
			}
		} else {
			$core->assign('returnInfo', "<p class=\"alert\">Passwords didn't match!</p>");
		}
	}
}
?>
het probleem is nu echter dat, wanneer de veldjes niet allemaal zijn ingevuld, de pagina natuurlijk ververst (door de submit knop), en de velden dus weer leeg komen te staan. Niet echt gebruiksvriendelijk wanneer er bv een veld werd opengelaten, of enkel een paswoord verkeerd getypt werd.

Hoe zou ik dit het beste aanpakken zodat de reeds ingevulde waarden toch in het veld blijven staan? Eenmaal geslaagd mag/moet de pagina natuurlijk verversen, aangezien er bovenaan het formulier een tabel staat met de reeds geregistreerde gebruikers, anders komt deze er niet bij te staan...

Tyfius

Legacy Member
Waarschijnlijk op dezelfde manier waarop je het 'returnInfo' veld invult, alleen moet je daar de namen van je formulier velden meegeven en er de $_POST data in stoppen.

Smokyke

Legacy Member
ik doe gwn zo <input type="text" name="veld" value="$_POST['veld']" />
krijg je wel error omdat de $_POST['veld'] niet bestaat de eerste keer dat je het veld leest dus hiervoor eerst checken met isSet.

Bram

Legacy Member
Smokyke zei:
ik doe gwn zo <input type="text" name="veld" value="$_POST['veld']" />
krijg je wel error omdat de $_POST['veld'] niet bestaat de eerste keer dat je het veld leest dus hiervoor eerst checken met isSet.

Hah, daar had ik nu nog eens niet aan gedacht! Merci voor de tip!

Bram

Legacy Member
hmm, bijkomend probleem: alsek m'n success message wil doorsturen, dan ververst ie de pagina natuurlijk niet... header("Location") is het natuurlijk niet, is er nog een andere manier om de pagina te verversen, en dan die waarschuwing weer te geven...

Kheb het al geprobeerd met een $_session, die ik dan vrijmaak nadat m'n template file geparset is (ik gebruik Smarty), maar als ie ververst, dan gaat ie natuurlijk ook die session leeg maken... dus dat helpt ook niet...

infinium.be

Legacy Member
Ik versta het probleem niet volledig (denk ik) maar waarom de message niet meesturen in de post en op de pagina waar die getoont moet worden als die post true is hem tonen.

Bram

Legacy Member
infinium.be zei:
Ik versta het probleem niet volledig (denk ik) maar waarom de message niet meesturen in de post en op de pagina waar die getoont moet worden als die post true is hem tonen.

omdat de pagina ververst moet worden: enfin nee, de pagina moet niet ververst worden, ik moet gewoon ervoor zorgen dat het lijstje met bestaande gebruikers geupdate wordt.

HoAxKe

Legacy Member
<meta http-equiv="refresh" content="0;URL=http://www.jouwadres.nl/" />

Misschien kan je hier iets mee doen. Meestal wordt deze code gebruikt om te redirecten, maar je kan deze ook gebruiken als gewone refresh. de 0 is de tijd dat hij moet wachten alvorens te refreschen.
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