Beste allemaal;
Jullie hebben mij laatst zo goed geholpen, dat ik het nog een keer erop waag!

Al jaren stoort bij dit probleem bij mijn winkel site. Ik heb een volstrekt amateuristische oplossing gevonden, maar nou wil ik het graag goed.
Wie kan me helpen - een heel weekend klooien bracht mij niet de oplossing.

Dit is het probleem: hoe passeer ik variabelen in 'onclick=' commando naar een hoger gelegen directory.

Als ik het zo doe, werkt het perfect:
<form><input name="Mijn buurman" size="1" value="1"><br>
<input type="button" value="Bestellen" onclick='addToBasket("MijnBuurman", this.form["Mijn buurman"].value )'></form>]
----> op voorwaarde dat: het verwijzende HTML-bestand in dezelfde directory staat, als de CGI-directory.
Met andere woorden:
[dir =] BOEKEN
[sub dir =] CGI
[bestand =] boeken.html
In dit geval worden de variabelen "Mijn Buurman" gepasseerd naar het added.php bestand, waarin de prijs en id van dit boek staat. De rest van het php handelt het dan correct af (tot iDeal-betaling of factuur bijvoorbeeld).

PROBLEEM:
Ik wil het bestand boeken.html elders/dieper in de directorystructuur plaatsen. Bijvoorbeeld: ../boeken/literatuur/boeken.html
In dit geval worden de variabelen NIET naar added.php gestuurd. Ik krijg wel de lege pagina (added.php) maar de velden blijven leeg.

Ik heb geprobeerd een change directory commando in het onclick-commando te smokkelen (parent.location en ook location.href, zelfs een <a href...> </a> rond de form) maar niks werkt. Syntaxfouten door mijn onkunde?
Wie weet de oplossing??
Bij voorbaat buitengewoon bedankt.
Aristos
Laat de code van de JavaScript-functie addToBasket() eens zien? Daarin moet je, vermoed ik, een relatieve URL naar added.php vervangen door een absolute.
Hoi Ward,
Dat dacht ik ook, maar er is geen andere code voor addToBasket() dan ik heb laten zien. Dit is het dus.
onclick='addToBasket("MijnBuurman", this.form["Mijn buurman"].value )'
Ik dacht ook er even een absoluut pad in te frommelen, maar ik weet niet waar. Ik dacht dus:
ipv ("MijnBuurman".... gewoon ("http://www.aristos.pro/boeken/cgi/added.php?MijnBuurman"; , maar dat is waarschijnlijk te simpel gedacht. Wellicht weet jij het goede format daarvoor?
Overigens in added.php staan de definities die gepasseerd moeten worden naar het formulier op het scherm (samen met een heleboel andere boeken):
$price['MijnBuurman'] = 18.16;
en
$product['MijnBuurman'] = 'Mijn buurman';

Bedankt vast voor de moeite.

Aristos
(PS. die site is verre van volledig, ik ben hem aan het herbouwen - www.aristos.pro. De oude (waar ik dus deze code ook gebruik, werkt op mijn eigen manier wel: www.aristoscorpio.com)
Aristos Bouius op 25/08/2014 13:17:25
Dat dacht ik ook, maar er is geen andere code voor addToBasket() dan ik heb laten zien.

Jawel, de functiedefinitie function addToBasket(theID, theqty) staat in het JavaScript-bestand jscript_gen.js. Hierin kun je het attribuut location voor cgi/added.php (op regel 24) instellen op een absolute URL.
Briljant. Dat werkt nu ...
Mijn grote dank, ik heb helemaal niet meer aan die jscript_gen.js gedacht.

Mag ik zo brutaal je nog iets te vragen?
(Op de oude site kun je het zien...)
Op deze pagina laat ik mensen dus via iDeal betalen (dat werkt nu).
Maar onderaan dezelfde pagina bied ik aan zelf een factuur aan te maken. Ik kan dat nu alleen maar oplossen door een tweede winkelpagina te maken met een andere cgi-subdirectory en in plaats van de ideal.php een factuur.php te laten genereren.
En zoals ik nu weet met een andere absolute verwijzing.

Kan ik dat ook op deze ene pagina combineren op de een of van de manier? Het is wellicht ingenieus maar ook belachelijk om twee winkelpagina's naast elkaar te hebben. Dat vereist eigenlijk veel te veel onderhoud.

Met vele groeten uit Frankrijk vast,
Aristos
Dat kan. Dan zou je verschillende bestanden moeten combineren tot één geheel. Betalen wordt daarin één stap (of één webpagina) met twee keuzen: iDEAL of op rekening.

Als je, meer in het algemeen, één ding op twee of meer plaatsen tegelijk moet wijzigen, is de structuur van je PHP-code niet op orde. De gedeelde onderdelen moet je dan verplaatsen naar een apart PHP-bestand dat je insluit met include of require.
Bedankt Ward,

Daar ga ik me zeker op storten. Maar eertst moet die site af.

Heel erg bedankt voor je tijd,

Aristos

Reageren