[PHP +form] Echo tekst moet ook weg na reset form

Pagina: 1
Acties:
  • 771 views

Onderwerpen


Acties:
  • 0 Henk 'm!

  • mrtnptrs
  • Registratie: Januari 2011
  • Laatst online: 11-09 15:14

mrtnptrs

You idiot!

Topicstarter
Ik moet voor Informatica een kleine PO maken met PHP. Hierbij doen wij het over hypotheken, waar we het een en ander over laten uitrekenen, zodra de gebruiker op de berekenen knop drukt. Dit wordt dan dus gedaan door PHP-code, waarna er ook een string wordt "ge-echo'd" met de uitkomsten.

Maar als ik op de reset-knop druk van het formulier, gaan alle ingevulde waarden wel weg, maar niet de echo-string! Zelfs de leraar wist hier zo snel geen raad mee en via Google heb ik ook al tig oplossingen gevonden, maar niets helpt! Kan iemand me duidelijk uitleggen wat ik nou moet doen? Hoe kan ik dit wel voormekaar krijgen? Ik heb al session_destroy/start geprobeerd en ob_start en zo, maar niets helpt. Wat doe ik verkeerd?!

Dit is de pagina: http://5v-bedrijfsplan.ecb-if.nl/php/index.php En dit is de gehele code: https://drive.google.com/...JcFZhd1E/view?usp=sharing

Kan iemand me helpen, want morgen hebben we hier een presentatie over en dan moet dit ook eigenlijk gefixt zijn. Wat is dus de makkelijkste manier om via PHP die string weg te krijgen na een reset? Alvast bedankt! :)

Are you comparing me to God? I mean, it’s great, but so you know, I’ve never made a tree.


Acties:
  • 0 Henk 'm!

  • azerty
  • Registratie: Maart 2009
  • Laatst online: 15:29
session_destroy en aanverwanten werken natuurlijk pas na het verversen van de pagina... Wat dus niet gebeurd als je een form "reset" uitvoert (er van uit gaande dat je dus je form reset met het input=reset html element).

Als je wat met javascript overweg kunt, is het trouwens gemakkelijk op te lossen (iets met dom manipulatie en een handler aan de button hangen ;) )

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Als je een veld een value meegeeft, dan is dat de default value. Wat er dus gebeurd, klopt gewoon.
Wil je dat ook die velden dan leeg worden, kun je het beste met javascript de values resetten, met jQuery gaat dat het makkelijkste.

Acties:
  • 0 Henk 'm!

  • Justinfailber
  • Registratie: Juli 2013
  • Niet online

Acties:
  • 0 Henk 'm!

  • Biersteker
  • Registratie: Juni 2009
  • Laatst online: 24-09 17:58
Wat wsitedesign zegt inderdaad.
PHP:
1
2
3
4
5
//ivm
echo "Je betaalt .....";

//dit
echo "<p id='result'>Je betaalt......</p>";


dan met Jquery/JS zoiets
JavaScript:
1
2
3
4
function reset() {
document.getElementById("myform").reset();
document.getElementById('result').innerHTML = "";
}


en dan zoiets aan je reset button
HTML:
1
<input name="reset" id="reset" value="Opnieuw beginnen" onclick="reset(); ">

[ Voor 17% gewijzigd door Biersteker op 25-06-2015 16:17 ]

Originally, a hacker was someone who makes furniture with an axe.


Acties:
  • 0 Henk 'm!

  • mrtnptrs
  • Registratie: Januari 2011
  • Laatst online: 11-09 15:14

mrtnptrs

You idiot!

Topicstarter
Dankje jongens! Ik zal het proberen!

Are you comparing me to God? I mean, it’s great, but so you know, I’ve never made a tree.


Acties:
  • 0 Henk 'm!

  • TweakerPas
  • Registratie: Augustus 2008
  • Niet online
Zet je echo gewoon in een variabele, i.p.v. allemaal exta javascript / jQuery te gebruiken.

$uitkomst = '';

if(isset($_POST["reset"])){
$uitkomst = '';
}

if(isset($_POST["send"])){
$uitkomst = 'Je betaalt in totaal etc......';
}

echo $uitkomst;

[ Voor 3% gewijzigd door TweakerPas op 25-06-2015 16:19 ]


Acties:
  • 0 Henk 'm!

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 14:42

killercow

eth0

Ga nou alsjeblieft niet Jquery en allerlei vunzige oplossingen aandragen als het probleem hier niets met de specifieke code te maken heeft, maar het TS's begrip van frontend en backend.

Je formulier wordt getoond zoals de server hem serveert. Dus inclusief default values, inc alles wat er eventueel aan waarden door de server uitgerekend en ge-echo'd is.

Je server maakt dus HTML en stuurt deze in zn geheel naar de browser. Die HTML wordt daar gelezen en getoond als een grafische weergave waar de gebruiker iets mee kan.

Als de gebruiker op het formulier gegevens aanpast kan hij op submit drukken en dan zal de server met die details een nieuw formulier retour sturen met het antwoord erbij.

Als de gebruiker op het formulier gegevens aanpast en op Reset drukt, dan wordt het formulier door de browser gereset naar wat de server aan het begin van dat request gestuurd heeft, de waarden die in de value atributen staan dus.

Gezien de html ook de melding van de server bevat met het antwoord van de vorige berekening en deze niet onderdeel is van het formulier, zal deze met een reset van het formulier niet verdwijnen.

Als je deze html toch wilt verwijderen/onzichtbaar wilt maken kunt je deze met een stukje javascript in de DOM (de html tree van elementen) opzoeken en doormiddel van styling onzichtbaar maken of uit de DOM verwijderen.

De vraag blijft dan, als je dan toch met javascript dingen gaat doen, kun je dan niet meteen ook de berekening in javascript uitvoeren en het antwoord direct aan de gebruiker tonen? Heb je ook geen php meer nodig, en geen request voor elk nieuw antwoord.

Biersteker's suggestie werkt prima voor het stukje javascript om dingen te "resetten".

openkat.nl al gezien?


Acties:
  • 0 Henk 'm!

  • mrtnptrs
  • Registratie: Januari 2011
  • Laatst online: 11-09 15:14

mrtnptrs

You idiot!

Topicstarter
killercow schreef op donderdag 25 juni 2015 @ 16:21:
Ga nou alsjeblieft niet Jquery en allerlei vunzige oplossingen aandragen als het probleem hier niets met de specifieke code te maken heeft, maar het TS's begrip van frontend en backend.

Je formulier wordt getoond zoals de server hem serveert. Dus inclusief default values, inc alles wat er eventueel aan waarden door de server uitgerekend en ge-echo'd is.

Je server maakt dus HTML en stuurt deze in zn geheel naar de browser. Die HTML wordt daar gelezen en getoond als een grafische weergave waar de gebruiker iets mee kan.

Als de gebruiker op het formulier gegevens aanpast kan hij op submit drukken en dan zal de server met die details een nieuw formulier retour sturen met het antwoord erbij.

Als de gebruiker op het formulier gegevens aanpast en op Reset drukt, dan wordt het formulier door de browser gereset naar wat de server aan het begin van dat request gestuurd heeft, de waarden die in de value atributen staan dus.

Gezien de html ook de melding van de server bevat met het antwoord van de vorige berekening en deze niet onderdeel is van het formulier, zal deze met een reset van het formulier niet verdwijnen.

Als je deze html toch wilt verwijderen/onzichtbaar wilt maken kunt je deze met een stukje javascript in de DOM (de html tree van elementen) opzoeken en doormiddel van styling onzichtbaar maken of uit de DOM verwijderen.

De vraag blijft dan, als je dan toch met javascript dingen gaat doen, kun je dan niet meteen ook de berekening in javascript uitvoeren en het antwoord direct aan de gebruiker tonen? Heb je ook geen php meer nodig, en geen request voor elk nieuw antwoord.

Biersteker's suggestie werkt prima voor het stukje javascript om dingen te "resetten".
Je zou gelijk hebben, maar helaas is het een opdracht, waarin ik de berekeningen wel moet uitvoeren in PHP... :(

Are you comparing me to God? I mean, it’s great, but so you know, I’ve never made a tree.


Acties:
  • 0 Henk 'm!

  • mrtnptrs
  • Registratie: Januari 2011
  • Laatst online: 11-09 15:14

mrtnptrs

You idiot!

Topicstarter
Biersteker schreef op donderdag 25 juni 2015 @ 16:13:
Wat wsitedesign zegt inderdaad.
PHP:
1
2
3
4
5
//ivm
echo "Je betaalt .....";

//dit
echo "<p id='result'>Je betaalt......</p>";


dan met Jquery/JS zoiets
JavaScript:
1
2
3
4
function reset() {
document.getElementById("myform").reset();
document.getElementById('result').innerHTML = "";
}


en dan zoiets aan je reset button
HTML:
1
<input name="reset" id="reset" value="Opnieuw beginnen" onclick="reset(); ">
Ok, ik heb deze oplossing geprobeerd toe te passen, maar waarom werkt het niet!? Hier is de verbeterde code: https://drive.google.com/...UbjdfM3M/view?usp=sharing

Are you comparing me to God? I mean, it’s great, but so you know, I’ve never made a tree.


Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

killercow schreef op donderdag 25 juni 2015 @ 16:21:
Ga nou alsjeblieft niet Jquery en allerlei vunzige oplossingen aandragen als het probleem hier niets met de specifieke code te maken heeft, maar het TS's begrip van frontend en backend.
Als je deze html toch wilt verwijderen/onzichtbaar wilt maken kunt je deze met een stukje javascript in de DOM (de html tree van elementen) opzoeken en doormiddel van styling onzichtbaar maken of uit de DOM verwijderen.
Je noemt jQuery een vunzige oplossing, maar raadt JS aan, om de DOM aan te passen na het laden van de pagina? :? Het zal wel aan mij liggen.

[ Voor 20% gewijzigd door CH4OS op 25-06-2015 17:20 ]


Acties:
  • 0 Henk 'm!

  • azerty
  • Registratie: Maart 2009
  • Laatst online: 15:29
mrtnptrs schreef op donderdag 25 juni 2015 @ 16:45:
[...]

Ok, ik heb deze oplossing geprobeerd toe te passen, maar waarom werkt het niet!? Hier is de verbeterde code: https://drive.google.com/...UbjdfM3M/view?usp=sharing
Met wat debugwerk zou je daar zelf wel moeten achter kunnen komen dunkt me ;)

Acties:
  • 0 Henk 'm!

  • mrtnptrs
  • Registratie: Januari 2011
  • Laatst online: 11-09 15:14

mrtnptrs

You idiot!

Topicstarter
wsitedesign schreef op donderdag 25 juni 2015 @ 17:24:
[...]


Met wat debugwerk zou je daar zelf wel moeten achter kunnen komen dunkt me ;)
Hier heb ik dus al een uur aan besteed, maar ik kom er maar niet uit! :( Wie weet wat ik fout doe?

Are you comparing me to God? I mean, it’s great, but so you know, I’ve never made a tree.


Acties:
  • 0 Henk 'm!

  • azerty
  • Registratie: Maart 2009
  • Laatst online: 15:29
Het is een javascript error... Kijk er eens goed naar...

Hint: het is op te lossen door iets te hernoemen ;)

Acties:
  • 0 Henk 'm!

  • mrtnptrs
  • Registratie: Januari 2011
  • Laatst online: 11-09 15:14

mrtnptrs

You idiot!

Topicstarter
wsitedesign schreef op donderdag 25 juni 2015 @ 18:27:
Het is een javascript error... Kijk er eens goed naar...

Hint: het is op te lossen door iets te hernoemen ;)
Oeh, ik hou niet van puzzels! :P Wat moet ik dan hernoemen? Heb je nog een hint? :P Ik moet het echt vandaag nog oplossen, want morgen moeten we het presenteren.... :)

[ Voor 19% gewijzigd door mrtnptrs op 25-06-2015 18:40 . Reden: nog niet gelukt ]

Are you comparing me to God? I mean, it’s great, but so you know, I’ve never made a tree.


Acties:
  • 0 Henk 'm!

  • azerty
  • Registratie: Maart 2009
  • Laatst online: 15:29
Wel, wat zegt je debugging sessie nu precies?

Acties:
  • 0 Henk 'm!

  • mrtnptrs
  • Registratie: Januari 2011
  • Laatst online: 11-09 15:14

mrtnptrs

You idiot!

Topicstarter
wsitedesign schreef op donderdag 25 juni 2015 @ 18:47:
Wel, wat zegt je debugging sessie nu precies?
Debugging sessie?! Is het heel erg als ik niet weet wat je daar mee bedoeldt? :) En denk eraan, het is een schoolserver, dus ik weet bijv. niet de PHP versie en ook aparte debuggers erop installeren zal dus lastig gaan.
Edit: dankzij phpinfo() weet ik nu dat de server PHP versie 5.2.13. Dat is nog een hele oude versie uit 2010. Voor het geval je me een debugger laat installeren. :)

[ Voor 39% gewijzigd door mrtnptrs op 25-06-2015 18:58 ]

Are you comparing me to God? I mean, it’s great, but so you know, I’ve never made a tree.


Acties:
  • 0 Henk 'm!

  • azerty
  • Registratie: Maart 2009
  • Laatst online: 15:29
Ja, want hoe moet je anders je fouten opsporen?

Er is een javascript error als je op de reset knop klikt... Als je die fout opzoekt, kun je je fout oplossen ;)

Nav je edit: de huidige fout heeft ter info niks te maken met je php code (server-side), maar enkel met je html/javascript (front-end)!

[ Voor 30% gewijzigd door azerty op 25-06-2015 19:14 ]


Acties:
  • 0 Henk 'm!

  • mrtnptrs
  • Registratie: Januari 2011
  • Laatst online: 11-09 15:14

mrtnptrs

You idiot!

Topicstarter
wsitedesign schreef op donderdag 25 juni 2015 @ 19:06:
Ja, want hoe moet je anders je fouten opsporen?

Er is een javascript error als je op de reset knop klikt... Als je die fout opzoekt, kun je je fout oplossen ;)

Nav je edit: de huidige fout heeft ter info niks te maken met je php code (server-side), maar enkel met je html/javascript (front-end)!
De PHP-versie is zo oud, dat volgens mij geen enkele debugger werkt. Kan iemand me niet gewoon vertellen wat er mis is? Want dan is dit eindelijk afgerond.

Are you comparing me to God? I mean, it’s great, but so you know, I’ve never made a tree.


Acties:
  • 0 Henk 'm!

  • azerty
  • Registratie: Maart 2009
  • Laatst online: 15:29
OK... Html/javascript debug je in de browser met je developertools (f12 in Chrome, firefox, ...).

En het is de bedoeling op deze forums dat je zelf wat doet:
Kan iemand even...?
Staat ook duidelijk in de algemene FAQ, maar de users in de Devschuur zijn er niet om klusjes voor anderen op te knappen. Dus vragen als "kan iemand even een CSS schrijven?" of "wil iemand even een popup-scriptje schrijven?" e.d. gaan op slot.

Mocht je nou echt vast zitten en hulp nodig hebben, kijk dan eens in Devschuurder werven? Gebruik Vraag & Aanbod!
Help, mijn script werkt niet (goed)
We zien regelmatig topics waar men vraagt om te helpen met een niet-werkend script. Vaak blijkt dat men niet (goed) weet hoe debuggen werkt. Aangezien het debuggen van software het makkelijkst gedaan wordt door de ontwikkelaar zelf, hebben we daar een handige FAQ voor geschreven.
Welke je vast en zeker wel gezien/gelezen zult hebben ;)

Acties:
  • 0 Henk 'm!

  • BLACKfm
  • Registratie: Maart 2004
  • Laatst online: 13:42

BLACKfm

o_O

Ik ben wellicht niet heel hulpvol in deze kwestie, maar welke stappen doe je nou precies en waaraan zie je dat het fout gaat? Ik heb het formulier op verschillende wijzes ingevuld en 'gereset', maar ik kan geen fout bespeuren...

Litebit.eu voorraad check :).


Acties:
  • 0 Henk 'm!

  • mrtnptrs
  • Registratie: Januari 2011
  • Laatst online: 11-09 15:14

mrtnptrs

You idiot!

Topicstarter
Ok, de string "document.getElementById("myform").reset();" weghalen, bleek de oplossing. Hoe kan dit en wat doet deze string nou precies?

Are you comparing me to God? I mean, it’s great, but so you know, I’ve never made a tree.


Acties:
  • 0 Henk 'm!

  • BLACKfm
  • Registratie: Maart 2004
  • Laatst online: 13:42

BLACKfm

o_O

Denk dat die regel code niks meer of minder doet dan de standaard actie van de 'resetknop' in HTML.

code:
1
<input type="reset" value="reset formulier">
.

Lijkt me alleen dat je met die uitgebreide regel ook andere objecten kunt gebruiken om de boel te resetten ipv via een form button.

[ Voor 3% gewijzigd door BLACKfm op 25-06-2015 19:55 ]

Litebit.eu voorraad check :).


Acties:
  • 0 Henk 'm!

  • mrtnptrs
  • Registratie: Januari 2011
  • Laatst online: 11-09 15:14

mrtnptrs

You idiot!

Topicstarter
BLACKfm schreef op donderdag 25 juni 2015 @ 19:55:
Denk dat die regel code niks meer of minder doet dan de standaard actie van de 'resetknop' in HTML.

code:
1
<input type="reset" value="reset formulier">
.

Lijkt me alleen dat je met die uitgebreide regel ook andere objecten kunt gebruiken om de boel te resetten ipv via een form button.
Dankje, alles werkt nu! Alleen geeft javascript een error als er niks te resetten is.... :P Maar dat maakt niet zoveel uit :)

Are you comparing me to God? I mean, it’s great, but so you know, I’ve never made a tree.


Acties:
  • 0 Henk 'm!

  • BLACKfm
  • Registratie: Maart 2004
  • Laatst online: 13:42

BLACKfm

o_O

Het stukje JS zoekt waarschijnlijk naar de paragraaf <P> met het id 'result', en die is er niet als je nog niks hebt ingevuld. Die wordt pas aangemaakt als je het formulier 1x hebt verzonden.

PHP:
1
2
3
4
5
if(isset($_POST["send"])){
  // code

echo "<p id='result'> #code# </p>"; // resultaat
}


Wellicht een offscreen divje maken of gewoon een lege <p id='result'></p> onder aan de code om deze altijd aanwezig te laten.

Ik ben altijd maar van het prutsen en als het werkt dan werkt het, dus er zal vast wel een efficiëntere manier zijn om dat te omzeilen :).

Bijvoorbeeld:

PHP:
1
2
3
4
5
6
7
if(isset($_POST["send"])){
  // code

echo "<p id='result'> #code# </p>"; // resultaat
} else {
echo "<p id='result'></p>"; // Lege paragraaf
}


PHP:
1
2
3
else {
echo "<p id='result'></p>"; // Lege paragraaf
}


dit zou dan het deel zijn dat je moet toevoegen aan de code. Maar omdat ik geen zin heb het zelf op te zetten kan ik niet testen of dat een oplossing is :).

[ Voor 15% gewijzigd door BLACKfm op 25-06-2015 20:21 ]

Litebit.eu voorraad check :).


Acties:
  • 0 Henk 'm!

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 14:42

killercow

eth0

CptChaos schreef op donderdag 25 juni 2015 @ 17:17:
[...]

[...]
Je noemt jQuery een vunzige oplossing, maar raadt JS aan, om de DOM aan te passen na het laden van de pagina? :? Het zal wel aan mij liggen.
Ja, absoluut. Je gaat toch niet 81K aan javascript meesturen met elke request, en die jongen jquery "leren" als het werkelijk met 1 regel javascript op te lossen is?

openkat.nl al gezien?


Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

killercow schreef op vrijdag 26 juni 2015 @ 10:58:
Ja, absoluut. Je gaat toch niet 81K aan javascript meesturen met elke request, en die jongen jquery "leren" als het werkelijk met 1 regel javascript op te lossen is?
Met andere woorden, we zeggen hetzelfde, same difference dus. Ik geef er echter ook bij aan, dat hetgeen de TS wilt, het makkelijkste te doen is met jQuery, wat imo wel de netste Javascript oplevert.

De 81K zou ik dan voor lief nemen; zoveel is dat niet, daarbij is jQuery makkelijker dan TS eerst Javascript te laten "leren", jQuery heeft een (imo) veel makkelijkere syntax dan als je alles zelf in een custom functie gaat zitten gooien waardoor het makkelijker op te pikken is, iets wat gezien de vraag van TS ook geen bijzondere luxe is. ;)

[ Voor 26% gewijzigd door CH4OS op 26-06-2015 11:42 ]


Acties:
  • 0 Henk 'm!

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 14:42

killercow

eth0

Nee, duidelijk niet.

Jquery is gewoon vreselijk over de top voor dit probleem, en levert een api die in dit geval alleen maar abstractie toevoegt van de talen, en van het probleem dat de TS juist moet doorgronden, te weten, de Dom, styling van elementen hierin en het gebruik van een clientside taal om deze zaken te regelen omdat het probleem zich aan de clientside bevindt.

Maargoed, http://youmightnotneedjquery.com/ als je denkt dat jquery daadwerkelijk mooiere / nettere javascript is(?) dan javascript.

openkat.nl al gezien?


Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

killercow schreef op vrijdag 26 juni 2015 @ 11:43:
Maargoed, http://youmightnotneedjquery.com/ als je denkt dat jquery daadwerkelijk mooiere / nettere javascript is(?) dan javascript.
jQuery and its cousins are great, and by all means use them if it makes it easier to develop your application.
Nota bene van de pagina die je linkt. Gezien de vraag van de TS, is dat zeker het geval. Dus ja, jQuery levert betere code.

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 23-09 21:37

Creepy

Tactical Espionage Splatterer

Maar even los daarvan komt het topic niet veel verder dan "dit is mijn code, fix de fout voor me" en dat is nu net niet de bedoeling hier. Al helemaal niet voor een schoolopdracht. Het is erg goed bedoeld van de mensen hier om de oplossing te geven, maar effectief hebben wij nu zijn schoolopdracht tot een goed einde weten te brengen ;) En dat had mrtnptrs toch zelf moeten doen. Alleen je code dumpen met aangeven wat er fout gaat is niet de juiste manier hier. We verwachten dat je zelf ook aangeeft wat je nu concreet hebt geprobeerd. Dat het ff snel moet omdat je een presentatie moet geven is jammer voor je, maar dan had je er ook wat eerder aan kunnen beginnen. Als je docent daarnaast ook de oplossing niet weet, kan ik me ook niet voorstellen dat diezelfde docent je dat zal aanrekenen bij je beoordeling.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.