Positie op pagina na Form Post
ik heb een lijvig formulier online staan met een 200 tal namen die elk een "checkbox" hebben voor de aanduiding van hun aanwezigheid. Wanneer ik een selectie maak in de selectbox doe ik onmiddellijk een formulier submit waardoor de pagina reload en de pagina weer bovenaan komt te staan.
Ik heb reeds websites gezien waar de positie op de pagina blijft behouden na ieder formulier submit.
Heeft iemand enig idee hoe ik dit best kan oplossen? De pagina is gemaakt in PHP.
Gewijzigd op 08/03/2020 20:22:22 door Daniel VDM
Gewijzigd op 08/03/2020 19:59:05 door - Ariën -
Arien, waar kan ik de "veel gestelde vragen" vinden?
Kijk eens naar beneden?
Ik zou dan het formulier met AJAX versturen.
Gewijzigd op 08/03/2020 20:20:59 door Daniel VDM
Je code kan je tussen [code] en [/code] plaatsen.
Gewijzigd op 08/03/2020 20:25:07 door - Ariën -
Welke BBcodes kan ik gebruiken?
zet wat je nu hebt tussen [code] en [/code]. Zie ook Gewijzigd op 08/03/2020 20:24:07 door Frank Nietbelangrijk
Gewijzigd op 08/03/2020 20:30:18 door Daniel VDM
Waarom per regel? :P
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="POST" name="form1">
<tr class="bg1">
<td><?php echo ($naam); ?></td>
<td align="center">
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="POST" name="form2">
<input name="members_id" type="hidden" value="<?php echo($members_id); ?>">
<input name="members_ploeg" type="checkbox" id="members_ploeg" value="1" <?php if ($members_ploeg == "1") {echo ("checked"); }?> onchange='document.forms[2].action="#";submit()'>
</td>
</tr>
</form>
<tr class="bg1">
<td><?php echo ($naam); ?></td>
<td align="center">
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="POST" name="form2">
<input name="members_id" type="hidden" value="<?php echo($members_id); ?>">
<input name="members_ploeg" type="checkbox" id="members_ploeg" value="1" <?php if ($members_ploeg == "1") {echo ("checked"); }?> onchange='document.forms[2].action="#";submit()'>
</td>
</tr>
</form>
Gezien je het hebt over dat je op de zelfde plaats blijft, verwacht ik niet dat je dus omlaag scrolled naar een button om de boel te versturen. Ik vermoed dat het al verstuurd en bevestigd wordt door op het formulier element te klikken? Klopt dat?
Ik zoek dus een oplossing om na een submit opnieuw op dezelfde hoogte te komen van mijn pagina zonder dat ik telkenmale moet gaan scrollen.
Gewijzigd op 08/03/2020 20:52:20 door - Ariën -
Het enige wat misschien belangrijk is om toe te voegen is een soort van visuele indicatie dat het aan- of uitvinken daadwerkelijk is doorgevoerd.
Dit zou je kunnen bewerkstelligen met een terugkoppeling vanuit het stukje code wat aangeroepen wordt middels het AJAX-request.
Code (php)
1
<form action="<?php $_SERVER['PHP_SELF']; ?>#members_ploeg" method="POST" name="form1">
(hiermee springt ie naar de submit button, maar vervang "#members_ploeg" door "#input151_id" en hij springt naar input nummer 151).
klik.
Als het niet nodig is gebruik dan $_SERVER['SCRIPT_NAME']. Let erop dat deze geen argumenten mee stuurt itt PHP_SELF.
Ik wil nog even wijzen op het gebruik van PHP_SELF. Deze is/was bestempeld als onveilig. Zie ook Als het niet nodig is gebruik dan $_SERVER['SCRIPT_NAME']. Let erop dat deze geen argumenten mee stuurt itt PHP_SELF.
Als je dan toch aangewezen bent op $_SERVER dan is SCRIPT_NAME misschien beter inderdaad, maarrrr... nog beter is wellicht gewoon expliciet vastleggen (bestandsnaam.php indien het een standalone PHP-bestand is) of als je een wat geavanceerde systeem hebt een centrale aanpak voor het genereren van applicatie-links, die je vervolgens escaped voor gebruikmaking in een specifieke context.
Ja dat kan. Ik gebruik gewoon standaard altijd SCRIPT_NAME. Lijkt me makkelijker dan htmlspecialchars($_SERVER['PHP_SELF']). Wat in dit geval dus ook niet gebeurt.
Of in mijn eigen oplossing/voorbeeld alleen een fragment:
Maar idem dito voor een query string (action="?foo=bar).