Hallo allemaal,

Ik laat in een FORM met een pulldown keuze menu een keuze maken. Dan druk ik op een button (knop) die er voor zorgt dat de keuzes worden opgeslagen. Aansluitend volgt er de melding dat ik de boel heb opgeslagen.

Tot zo ver gaat het goed!

Maar zodra er een keuze gemaakt wordt, wil ik deze melding laten verdwijnen. de variabele met de tekst die ik toon en die dus weer verwijderd moet worden is $opmerking.


Wie heeft er een hint voor me?

<?php
error_reporting(E_ALL);
ini_set('display_errors', 'stdout');
date_default_timezone_set("Europe/Amsterdam");
setlocale( LC_ALL, array( 'nl_NL.UTF-8', 'nld_NLD.UTF-8', 'nld@euro', 'nl@euro', 'dutch', 'Dutch_Netherlands' ) );
//setlocale(LC_MONETARY,'nl_NL.UTF-8');
include("databaseopenen.php");
include("administratieopenen.php");

$opmerking = "";

$instellingen_dagboek_datum=array();
$instellingen_dagboek_nummer=array();
$instellingen_gebruik_btw=array();

$verberg_knop_verwijderen = "";
$verberg_knop_toevoegen = "disabled";
	
// indien het formulier verstuurd is
if($_SERVER['REQUEST_METHOD'] == 'POST') {// Is er op opslaan gedrukt
	if((isset($_POST["knop"])) and ($_POST["knop"]=="1")) {
		// overschrijf de standaardwaarden voor de waarden die ge-POST zijn
		$dagboek_datum = $_POST["dagboek_datum"];
		$dagboek_nummer = $_POST["dagboek_nummer"];
		$gebruik_btw = $_POST["gebruik_btw"];
		$query_instellingen_gewijzigd = "UPDATE tabel_administraties SET administraties_sorteer_jp_datum='".$dagboek_datum."',administraties_sorteer_jp_nummer='".$dagboek_nummer."',administraties_gebruik_btw='".$gebruik_btw."' WHERE administraties_id=".$adm_id;
		if (mysqli_query($connect, $query_instellingen_gewijzigd)) {
			$opmerking = "De instellingen zijn bijgewerkt.<BR>";
		}else{
			$opmerking = "De instellingen zijn niet bijgewerkt.".$connect->error."<BR>";
		}
	}
}else{
	//er is dus niet op opslaan gedrukt.
	if (is_null($record_administratie['administraties_sorteer_jp_datum'])){
		$dagboek_datum = 0;
	}else{
		$dagboek_datum = $record_administratie['administraties_sorteer_jp_datum'];
	}
	if (is_null($record_administratie['administraties_sorteer_jp_nummer'])){
		$dagboek_nummer = 0;
	}else{
		$dagboek_nummer = $record_administratie['administraties_sorteer_jp_nummer'];
	}
	if (is_null($record_administratie['administraties_gebruik_btw'])){
		$gebruik_btw = 0;
	}else{
		$gebruik_btw = $record_administratie['administraties_sorteer_jp_datum'];
	}
}

$homelink="index.php?id=".$adm_id;
$homeuit="";
$homeknop="<a href=".$homelink."><img src='images/leeg.png' class='button_home' alt='Basispagina van deze administratie'></a>";
							
$verwijderlink="";
$verwijderuit="disabled"; 
$verwijderknop="<button type='submit' src='images/leeg.png' class='button_delete' alt='Verwijderen' ".$verwijderuit."></button>";

$bewerklink="";
$bewerkuit="disabled";
$bewerkknop="<button type='submit' src='images/leeg.png' class='button_edit' alt='Bewerken' ".$bewerkuit."></button>";

$lijstlink="";
$lijstuit="disabled";
$lijstknop="<button type='submit' src='images/leeg.png' class='button_lijst' alt='Lijst' ".$lijstuit."></a>";

$toevoeglink="";
$toevoeguit="disabled";
$toevoegknop="<button type='submit' src='images/leeg.png' class='button_add' alt='Toevoegen' ".$toevoeguit."></button>";

$dagboek="dagboeken.php?id=".$adm_id;

$melding = "Standaard voorkeur instellingen";
?>
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>Geldboom dagboekbestand</title>
	<link rel="stylesheet" type="text/css" href="css/style.css"> 		
	<link rel="stylesheet" type="text/css" href="css/buttons.css"> 		
	<link rel="stylesheet" type="text/css" href="css/menu.css">
	<link rel="stylesheet" type="text/css" href="css/normalize.css"/>
	</head>
<body>
	<table class="empty">
		<tr>
			<?php include("bedrijf.php"); ?>
			<td class="programmadeel">
				<form name="form_zoekperiode" method='post'>
					<table>
					<tr>
					<td class="programmadeel_1" rowspan="2"><img src="images/leeg1.png" class="menu_instellingen"></td>
					<td class="programmadeel_1"><a href=<?php echo $dagboek; ?> ><img src="images/leeg1_kop.png" class="menu_ink_uit_kop"></a></td>
					<td class="programmadeel_1"><img src="images/dummie_kop.jpg" class="menu_ink_uit_kop" alt="" ></td>
					<td class="programmadeel_1"><img src="images/dummie_kop.jpg" class="menu_ink_uit_kop" alt="" ></td>
					<td class="programmadeel_1"><img src="images/dummie_kop.jpg" class="menu_ink_uit_kop" alt="" ></td>
					<td class="programmadeel_1"><img src="images/dummie_kop.jpg" class="menu_ink_uit_kop" alt="" ></td>
					<td class="programmadeel_1"><img src="images/dummie_kop.jpg" class="menu_ink_uit_kop" alt="" ></td>
					<td class="programmadeel_1"><img src="images/dummie_kop.jpg" class="menu_ink_uit_kop" alt="" ></td>
					</tr>
					<tr><td colspan="8" height="600" bgcolor=#F3BB7A valign="top">
						<table align="center" width="745">
									<col width="243">
									<col width="161">
									<col width="8">
									<col width="100">
									<col width="8">
									<col width="223">
							<tr><td align="center" colspan="6">
								<h1><B><?php echo $melding; ?><B></h1>
								</td>
							</tr>
							
							<tr><td align="center" colspan="6" Valign="middle"><HR></td></tr>
						</table>
						<table align="center" width="745">
							<tr><td>
								<table align="center" width="745">						
									<tr><td colspan="7" align="center">
									
										<form action="instellingen.php" method='post'>
										
											<p><div class="pf"><b><u>Dagboeken</u></b></div></p>
											<p><div class="pf">Datum sorteren: <select id="dagboek_datum" name="dagboek_datum" tabindex="1">
																		<option value="0" <?php if (isset($dagboek_datum) && $dagboek_datum==0) {echo " 'selected'"; if ($dagboek_datum!=$record_administratie['administraties_sorteer_jp_datum']){$opmerking="";}}else{ if (!isset($dagboek_datum)){echo " 'selected'";}} ?>>Nee</option>
																		<option value="1" <?php if (isset($dagboek_datum) && $dagboek_datum==1) {echo " 'selected'"; if ($dagboek_datum!=$record_administratie['administraties_sorteer_jp_datum']){$opmerking="";}}?>>Recentste -> Oudste</option>
																		<option value="2" <?php if (isset($dagboek_datum) && $dagboek_datum==2) {echo " 'selected'"; if ($dagboek_datum!=$record_administratie['administraties_sorteer_jp_datum']){$opmerking="";}}?>>Oudste -> Recentste</option>
																	</select></div></p>
											<p><div class="pf">Volgnummer sorteren: <select id="dagboek_nummer" name="dagboek_nummer" tabindex="2">
																		<option value="0" <?php if (isset($dagboek_nummer) && $dagboek_nummer==0) {echo " 'selected'"; }else{ if (!isset($dagboek_nummer)){echo " 'selected'";}} ?>>Nee</option>
																		<option value="1" <?php if (isset($dagboek_nummer) && $dagboek_nummer==1) {echo " 'selected'"; }?>>Laag -> Hoog</option>
																		<option value="2" <?php if (isset($dagboek_nummer) && $dagboek_nummer==2) {echo " 'selected'"; }?>>Hoog -> Laag</option>
																	</select></div></p>
											<p><br></p>
											<p><div class="pf"><b><u>BTW</u></b></div></p>
											<p><div class="pf">Gebruiken <select id="gebruik_btw" name="gebruik_btw" tabindex="3">
																		<option value="0" <?php if (isset($gebruik_btw) && $gebruik_btw==0) {echo " 'selected'"; }else{ if (!isset($gebruik_btw)){echo " 'selected'";}} ?>>Nee</option>
																		<option value="1" <?php if (isset($gebruik_btw) && $gebruik_btw==1) {echo " 'selected'"; }?>>Ja</option>
																	</select></div></p>
										
											<br><br>
											<button type="submit" src="images/leeg.png" class="button_bewaren" value="1" name="knop" tabindex="4" alt="Bewaren"></button>
										
										</form>
										<p><br><?php echo $opmerking; ?></p>
										
									</td></tr>
								</table>
							</td></tr>
						</table>
						</td></tr>
					</table>
				</form>
			</td>
		</tr>
	</table>
</body>
</html>
Je zou op de <form> een onchange kunnen zetten die de <p> met $opmerking (even een id geven) verbergt/verwijdert. Deze onchange vangt dan alle change events binnen het form, dus zodra iemand "iets" wijzigt is de opmerking weg.
Rob Doemaarwat, bedankt voor de reactie.
Het klinkt aannemelijk en ik heb de volgende regel van regel 123 gemaakt.
<form action="instellingen.php" method='post' onchange="<?php $opmerking=NULL; ?>" >

Maar dat werkt niet. Als ik dit doe, en ik druk op de bewaarknop, geeft hij de standaard waarden die hij moet krijgen alleen als de warden niet bestaan. Of hij springt standaard naar de bovenste. Dat geeft het zelfde effect.


[size=xsmall]Toevoeging op 20/01/2019 23:33:13:[/size]

Ik merkte dat ik wat foutjes had laten staan. met een gewijzigde regel 123 er bij ziet de code er zo uit:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'stdout');
date_default_timezone_set("Europe/Amsterdam");
setlocale( LC_ALL, array( 'nl_NL.UTF-8', 'nld_NLD.UTF-8', 'nld@euro', 'nl@euro', 'dutch', 'Dutch_Netherlands' ) );
//setlocale(LC_MONETARY,'nl_NL.UTF-8');
include("databaseopenen.php");
include("administratieopenen.php");

$opmerking = "";

$instellingen_dagboek_datum=array();
$instellingen_dagboek_nummer=array();
$instellingen_gebruik_btw=array();

$verberg_knop_verwijderen = "";
$verberg_knop_toevoegen = "disabled";
	
// indien het formulier verstuurd is
if($_SERVER['REQUEST_METHOD'] == 'POST') {// Is er op opslaan gedrukt
	if((isset($_POST["knop"])) and ($_POST["knop"]=="1")) {
		// overschrijf de standaardwaarden voor de waarden die ge-POST zijn
		$dagboek_datum = $_POST["dagboek_datum"];
		$dagboek_nummer = $_POST["dagboek_nummer"];
		$gebruik_btw = $_POST["gebruik_btw"];
		$query_instellingen_gewijzigd = "UPDATE tabel_administraties SET administraties_sorteer_jp_datum='".$dagboek_datum."',administraties_sorteer_jp_nummer='".$dagboek_nummer."',administraties_gebruik_btw='".$gebruik_btw."' WHERE administraties_id=".$adm_id;
		if (mysqli_query($connect, $query_instellingen_gewijzigd)) {
			$opmerking = "De instellingen zijn bijgewerkt.<BR>";
		}else{
			$opmerking = "De instellingen zijn niet bijgewerkt.".$connect->error."<BR>";
		}
	}
}else{
	//er is dus niet op opslaan gedrukt.
	if (is_null($record_administratie['administraties_sorteer_jp_datum'])){
		$dagboek_datum = 0;
	}else{
		$dagboek_datum = $record_administratie['administraties_sorteer_jp_datum'];
	}
	if (is_null($record_administratie['administraties_sorteer_jp_nummer'])){
		$dagboek_nummer = 0;
	}else{
		$dagboek_nummer = $record_administratie['administraties_sorteer_jp_nummer'];
	}
	if (is_null($record_administratie['administraties_gebruik_btw'])){
		$gebruik_btw = 0;
	}else{
		$gebruik_btw = $record_administratie['administraties_sorteer_jp_datum'];
	}
}

$homelink="index.php?id=".$adm_id;
$homeuit="";
$homeknop="<a href=".$homelink."><img src='images/leeg.png' class='button_home' alt='Basispagina van deze administratie'></a>";
							
$verwijderlink="";
$verwijderuit="disabled"; 
$verwijderknop="<button type='submit' src='images/leeg.png' class='button_delete' alt='Verwijderen' ".$verwijderuit."></button>";

$bewerklink="";
$bewerkuit="disabled";
$bewerkknop="<button type='submit' src='images/leeg.png' class='button_edit' alt='Bewerken' ".$bewerkuit."></button>";

$lijstlink="";
$lijstuit="disabled";
$lijstknop="<button type='submit' src='images/leeg.png' class='button_lijst' alt='Lijst' ".$lijstuit."></a>";

$toevoeglink="";
$toevoeguit="disabled";
$toevoegknop="<button type='submit' src='images/leeg.png' class='button_add' alt='Toevoegen' ".$toevoeguit."></button>";

$dagboek="dagboeken.php?id=".$adm_id;

$melding = "Standaard voorkeur instellingen";
?>
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>Geldboom dagboekbestand</title>
	<link rel="stylesheet" type="text/css" href="css/style.css"> 		
	<link rel="stylesheet" type="text/css" href="css/buttons.css"> 		
	<link rel="stylesheet" type="text/css" href="css/menu.css">
	<link rel="stylesheet" type="text/css" href="css/normalize.css"/>
	</head>
<body>
	<table class="empty">
		<tr>
			<?php include("bedrijf.php"); ?>
			<td class="programmadeel">
				<form name="form_zoekperiode" method='post'>
					<table>
					<tr>
					<td class="programmadeel_1" rowspan="2"><img src="images/leeg1.png" class="menu_instellingen"></td>
					<td class="programmadeel_1"><a href=<?php echo $dagboek; ?> ><img src="images/leeg1_kop.png" class="menu_ink_uit_kop"></a></td>
					<td class="programmadeel_1"><img src="images/dummie_kop.jpg" class="menu_ink_uit_kop" alt="" ></td>
					<td class="programmadeel_1"><img src="images/dummie_kop.jpg" class="menu_ink_uit_kop" alt="" ></td>
					<td class="programmadeel_1"><img src="images/dummie_kop.jpg" class="menu_ink_uit_kop" alt="" ></td>
					<td class="programmadeel_1"><img src="images/dummie_kop.jpg" class="menu_ink_uit_kop" alt="" ></td>
					<td class="programmadeel_1"><img src="images/dummie_kop.jpg" class="menu_ink_uit_kop" alt="" ></td>
					<td class="programmadeel_1"><img src="images/dummie_kop.jpg" class="menu_ink_uit_kop" alt="" ></td>
					</tr>
					<tr><td colspan="8" height="600" bgcolor=#F3BB7A valign="top">
						<table align="center" width="745">
									<col width="243">
									<col width="161">
									<col width="8">
									<col width="100">
									<col width="8">
									<col width="223">
							<tr><td align="center" colspan="6">
								<h1><B><?php echo $melding; ?><B></h1>
								</td>
							</tr>
							
							<tr><td align="center" colspan="6" Valign="middle"><HR></td></tr>
						</table>
						<table align="center" width="745">
							<tr><td>
								<table align="center" width="745">						
									<tr><td colspan="7" align="center">
									
										<form action="instellingen.php" method='post' onchange="<?php $opmerking=NULL; ?>">
										
											<p><div class="pf"><b><u>Dagboeken</u></b></div></p>
											<p><div class="pf">Datum sorteren: <select id="dagboek_datum" name="dagboek_datum" tabindex="1">
																		<option value="0" <?php if (isset($dagboek_datum) && $dagboek_datum==0) {echo " selected='selected'"; }else{ if (!isset($dagboek_datum)){echo " selected='selected'";}} ?>>Nee</option>
																		<option value="1" <?php if (isset($dagboek_datum) && $dagboek_datum==1) {echo " selected='selected'"; }?>>Recentste -> Oudste</option>
																		<option value="2" <?php if (isset($dagboek_datum) && $dagboek_datum==2) {echo " selected='selected'"; }?>>Oudste -> Recentste</option>
																	</select></div></p>
											<p><div class="pf">Volgnummer sorteren: <select id="dagboek_nummer" name="dagboek_nummer" tabindex="2">
																		<option value="0" <?php if (isset($dagboek_nummer) && $dagboek_nummer==0) {echo " selected='selected'"; }else{ if (!isset($dagboek_nummer)){echo " selected='selected'";}} ?>>Nee</option>
																		<option value="1" <?php if (isset($dagboek_nummer) && $dagboek_nummer==1) {echo " selected='selected'"; }?>>Laag -> Hoog</option>
																		<option value="2" <?php if (isset($dagboek_nummer) && $dagboek_nummer==2) {echo " selected='selected'"; }?>>Hoog -> Laag</option>
																	</select></div></p>
											<p><br></p>
											<p><div class="pf"><b><u>BTW</u></b></div></p>
											<p><div class="pf">Gebruiken <select id="gebruik_btw" name="gebruik_btw" tabindex="3">
																		<option value="0" <?php if (isset($gebruik_btw) && $gebruik_btw==0) {echo " selected='selected'"; }else{ if (!isset($gebruik_btw)){echo " selected='selected'";}} ?>>Nee</option>
																		<option value="1" <?php if (isset($gebruik_btw) && $gebruik_btw==1) {echo " selected='selected'"; }?>>Ja</option>
																	</select></div></p>
										
											<br><br>
											<button type="submit" src="images/leeg.png" class="button_bewaren" value="1" name="knop" tabindex="4" alt="Bewaren"></button>
											
										</form>
									
										<p><br><?php echo $opmerking; ?></p>
									</td></tr>
								</table>
							</td></tr>
						</table>
						</td></tr>
					</table>
				</form>
			</td>
		</tr>
	</table>
</body>
</html>


het resultaat dat ik nu heb, is dat ik helemaal gen melding krijg.
onchange="<?php $opmerking=NULL; ?>"


Wat wil je hiermee bereiken? je echo'ed niks. En JavaScript heeft bovendien ook geen weet van PHP.
Hiermee wil ik de variabele $opmerking leeg maken. Dat zou moeten gebeuren als er iets in het form gewijzigd wordt.
HTML en JavaScript hebben geen weet van PHP en vice versa. In een onchange (dit is client side, in je browser) een PHP-waarde aanpassen (dit is server side, aan de webserver kant) haalt dus niet zoveel uit.

Ik denk dat dit probleem ook mede ontstaat doordat je het weergeven van het formulier en het verwerken min of meer bij elkaar hebt gestopt, althans, dit alles loopt een beetje door elkaar? Waarschijnlijk wordt alles makkelijker (en zeker overzichtelijker) als je deze acties wat meer uit elkaar trekt. Dit heeft ook tot gevolg dat als je de verwerk-stap hebt gescheiden van de weergave-actie je daarna ook andere keuzes hebt, bijvoorbeeld een volledige page refresh.

En dan is daar nog de wens om een boodschap te tonen als er iets is opgeslagen, ook daar zijn allerlei mogelijkheden, bijvoorbeeld dat je je formulier verwerkt met AJAX (en je dus effectief niet meer wegnavigeert van je pagina) en dat je een boodschap toont in een inline popup ofzo.

Een andere mogelijkheid is een zogenaamde "session flash message". Dit is een boodschap die eenmalig wordt getoond na de eerstvolgende page-refresh (en daarna weer weg is).

Maar stap 1 is wat orde aanbrengen in de acties en deze scheiden.

Ook kan het aantal regels code voor het weergeven van formuliervelden en -waarden teruggebracht worden door de herhalende delen in loopjes te zetten.

Wanneer je site een hoop formulieren heeft loont het wellicht ook de moeite om een formuliersysteem te maken waarin je makkelijk formulieren in elkaar kunt draaien, en dat daarmee direct ook de validatie (voor een groot deel) geregeld is. Deze investering heb je dan vrij snel terugverdiend.

<p><br><?php echo $opmerking; ?></p>

<p><br><span id="blabla"><?php echo $opmerking; ?></span></p>

en

<form action="instellingen.php" method='post' onchange="<?php $opmerking=NULL; ?>">

<form action="instellingen.php" method='post' onchange="document.getElementById('blabla').innerHTML=''">

Thomas van den Heuvel. bedankt voor de uitgebreide uitleg. Het klinkt logisch, maar ik zal er even de tijd voor moeten nemen. AJAX ken ik alleen van naam en van een session flash message heb ik nog nooit gehoord.

-SanThe -, Bedankt voor de regels. Kan je me ook vertellen wat jouw regels doen? Want ik begrijp alleen dat ik regel 1 moet vervangen door regel3 en regel 7 door regel 9, maar wat gebeurt er op de regels 3 en 9?
In het eerste gedeelte zorg ik ervoor dat de $opmerking in een <span></span> met id wordt geplaatst.

In het tweede gedeelte wordt bij de onchange Javascript gebruikt om de span met dat id leeg te maken.
-SanThe - Hartelijk dank voor de uitleg en de bijna oplossing. Door de onchange niet in de form opdracht maar in de select van de pulldown menu's te plaatsen, werkt het precies zo als ik wil.
Heel erg bedankt dus.

Thomas van den Heuvel, ook bedankt weer voor het meedenken. En ook bedankt voor de aanwijzing omtrent het structureren van de pagina. Ik doe mijn best, maar soms vind ik het nog binnen de marge van de code op een andere plek.

Reageren