[PHP] textbox --> value=

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben bezig om een simpel bestelformulier in elkaar te zetten (dus geen winkelwagentje script ofzo)

Ten eerste was ik begonnen een html page te bouwen die d.m.v. een javascript een selectie in een list/menu field de values kon veranderen van andere textboxes... toen dat 100% ok werkte dacht ik... het is wel fijn als ik met php een form validation kan maken wat overigens ook is gelukt...
Het adres waar je het formulier kunt bezichtigen is trouwens:
[url]verwijderd[/url]

Nou is het probleem dat in de prijsberekening textboxes de volgende php code komt te staan:
code:
1
value="<?php  print HtmlSpecialChars( $HTTP_POST_VARS[ "Prijs" ] ); ?>"

Als de value van deze textbox geen nul ( 0 ) is dan zet het javascriptje in het "totaal te betalen" textboxje de tekst "NaN" oftewel hij kan de prijberekening niet goed uitvoeren...

Dus ik dacht ik zet gewoon achter de php code een 0... zoals dit:
code:
1
value="<?php  print HtmlSpecialChars( $HTTP_POST_VARS[ "Prijs" ] ); ?>0"

Dit werkte heel erg goed... totdat ik de form ging submitten...
Dan kwam er iedere keer als je iets was vergeten in te vullen een 0 extra bij de value van die textbox...
dus de 1e keer bijv. € 19.50
2e keer dan € 19.500
3e keer dan € 19.5000
Dit ziet er natuurlijk niet uit...

Via de searchengines heb ik tot nu toe al mijn problemen kunnen oplossen maar nu kom ik niet tot de oplossing en de tweakers search doet het al een aantal uren niet. De oplossing zal hopelijk heel erg simpel zijn maar ik heb nergens kunnen vinden hoe!

[ Voor 5% gewijzigd door Verwijderd op 07-04-2004 20:18 . Reden: url verwijderd tegen overmatig veel valse bestellingen :D ]


Acties:
  • 0 Henk 'm!

  • DizzyWeb
  • Registratie: Februari 2001
  • Laatst online: 20:49

DizzyWeb

Ondertiteld

Kijk hier eens naar:
http://nl.php.net/sprintf

Acties:
  • 0 Henk 'm!

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
Als je van een selectie weer naar niets gaat krijg je hetzelfde probleem als wat je nu met php hebt proberen op te lossen (NaN). Je zult je javascript wat moeten wijzigen zodat er gecontroleerd wordt of de textbox is ingevuld en als dit het geval is moet je ermee rekenen en anders gewoon de waarde op 0(.00) zetten met javascript. En aan een php-controle heb je ws niet veel omdat het probleem hier clientside is en als de client de waardebox leeghaalt dan heb je hetzelfde probleem.

Acties:
  • 0 Henk 'm!

  • LEiPiE
  • Registratie: Juni 2001
  • Laatst online: 20-09 11:03

LEiPiE

... (ing. van weinig woorden)

(jarig!)
(terwijl ik dit aan 't tikken ben zal allang al wel een uitleg zijn gekomen, maar ja niet zo uitgebreid :))

en dat terwijl 't zo logisch is :)
php dumpt de variabele in het vak (value=....) en kijkt er vervolgens niet meer naar omdat de pagina naar de gebruiker gaat.
Als je 't formulier submit wordt de waarde in value (dus inclusief de 0) doorgestuurd.
Vervolgens heeft PHP dus die nieuwe waarde ontvangen en zet die weer in het veld waar jij er volgens weer een 0 achter laat plakken.

Ik denk dat je even moet snappen dat die waardes niet onthouden worden tussen de diverse stappen in.

om je voorbeeld te herhalen:
dus de 1e keer
staat er niks en vul je 19.5 in
daar wordt dan dus een 0 achter gezet:
bijv. € 19.50
19.50 wordt doorgestuurd en komt dus in 'prijs' terecht

als je dan dus weer naar 't form toe wordt verwezen dan zet PHP netjes de waarde van 'prijs' neer en zet jij er weer een 0 achter, ergo in 't vakje komt dus
2e keer dan € 19.500
te staan, volledig correct :)

makkelijkste oplossing:
code:
1
2
3
4
5
6
value="<?php  
if (!empty($HTTP_POST_VARS["prijs"])) { 
      print HtmlSpecialChars( $HTTP_POST_VARS[ "Prijs" ] ); 
} else { 
     print "0"; 
} ?>"


of valsspelend:
code:
1
value="<?php print htmlspecialchars($HTTP_POST_VARS["prijs"]+0);?>


(uit m'n hoofd hoor, moet je even kijken of het goed gaat, denk 't wel)
Idee is dan dus dat je er 0 bij op telt: als het leeg was dan wordt het 0, als het iets anders was dan boeit 't niet want je telt er 0 bij op :)

[ Voor 11% gewijzigd door LEiPiE op 07-04-2004 19:09 ]

Papa x3, PHP-progger, Citrofiel, import-Tukker, muziekliefhebber


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ben die site even goed aan het doornemen die dizzyweb heeft gepost (php is nieuw voor mij dus gaat niet zo snel :) )

Shadowman:
dus ik moet javascript eigelijk laten controleren of de value="" is en zo ja dat ie value="0.00" ervan maakt? Als het mogelijk is is dat de beste oplossing denk ik ja!
Ik ben al de hele dag bezig met het php gedeelte dat ik eigenlijk er niet aan heb gedacht de oplossing in javascript te vinden...
maar het is dus niet mogelijk om in dit php stukje :
code:
1
value="<?php  print HtmlSpecialChars( $HTTP_POST_VARS[ "Prijs" ] ); ?>"
die 0 erbij te zetten???

Dat de client de waarde kan veranderen is niet echt een probleem... daar ga ik niet van uit... de bedragen worden door de verkoper zelf nog nagerekend... maar dan nog kan ik die fields op "Readonly" zetten...

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ok leipie ik ga het meteen uitproberen...

De bedoeling is eigenlijk wel dat er één 0 staat... dus zoals € 19,50
ik ga even kijken of dit werkt met jou scriptje...

Hoezo is die 2e code trouwens "valsspelend"?

Acties:
  • 0 Henk 'm!

  • DizzyWeb
  • Registratie: Februari 2001
  • Laatst online: 20:49

DizzyWeb

Ondertiteld

Je wil er geen 0 bij zetten, je wil alleen een 0 neerzetten als die post var leeg is.

code:
1
value="<?php if($HTTP_POST_VARS[ "Prijs" ] != "") { print HtmlSpecialChars( $HTTP_POST_VARS[ "Prijs" ] ); } else { print '0'; } ?>"


is ook een optie.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
bij de 2 opties van leipie zet hij zoiezo altijd een 0 neer ongeacht de value content die er heeft gestaan als je submit

helaas :(

Acties:
  • 0 Henk 'm!

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 20:45

RM-rf

1 2 3 4 5 7 6 8 9

het eenvoudigst lijkt me om de waarde eerst te casten naar een Float, dan *100 te doen en er vervolgens weer een string-variabele van te maken waar je voor de laatste twee tekens een "." invoegt.

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
DizzyWeb schreef op 07 april 2004 @ 19:19:
Je wil er geen 0 bij zetten, je wil alleen een 0 neerzetten als die post var leeg is.

code:
1
value="<?php if($HTTP_POST_VARS[ "Prijs" ] != "") { print HtmlSpecialChars( $HTTP_POST_VARS[ "Prijs" ] ); } else { print '0'; } ?>"


is ook een optie.
Yessssssssss WE HAVE A WINNER!!!!! :) Dizzyweb jij hebt de oplossing gevonden voor mij!!! Bedankt voor jullie hulp jongens!!!

Tenminste een keer mensen met respect voor rookies :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
url verwijderd tegen overmatig veel valse bestellingen :D

[ Voor 86% gewijzigd door Verwijderd op 07-04-2004 20:17 . Reden: url verwijderd tegen overmatig veel valse bestellingen :D ]

Pagina: 1