radiobutton werkt niet zoals het hoort
onderstaand script selecteerd een aantal produkten uit een database. de structuur van deze database is
id-produkt-fotonaam-tekst-klant-keuze-prijs1-prijs2-prijs3-prijs4.
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$sql="SELECT * FROM produktenalg WHERE tekst= '$_SESSION[imageid]'";
$result=mysql_query($sql) or die(mysql_error());
$regel=mysql_fetch_array($result);
?>
$sql="SELECT * FROM produktenalg WHERE tekst= '$_SESSION[imageid]'";
$result=mysql_query($sql) or die(mysql_error());
$regel=mysql_fetch_array($result);
?>
dit werkt prima. dan wordt er een foto bijgzocht dat werkt ook
<a href="javascript:popUp('')" ><img src= class="bestelimage" width=225 height=150 align=right border=none title="klik om te vergroten" /></a>
vervolgens wordt de fotonaam geprint op het scherm.
<h3><br /></h3>
<p>Maak uw keuze:</p><br /><br />
dan kijk ik of er in de tabel prijzen zijn ingevuld om die te koppelen aan radio-buttons
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
if($regel[6]>0){$regel[6]=number_format($regel[6], 2, '.', '');echo "<input type='radio' name='keuze' value='$regel[6]$boeket' onclick='vulprijs();' /> € $regel[6]<br />";}
if($regel[7]>0){$regel[7]=number_format($regel[7], 2, '.', '');echo "<input type='radio' name='keuze' value='$regel[7]$boeket' onclick='vulprijs();' selected='selected'/> € $regel[7]<br />";}
if($regel[8]>0){$regel[8]=number_format($regel[8], 2, '.', '');echo "<input type='radio' name='keuze' value='$regel[8]$boeket' onclick='vulprijs();' /> € $regel[8]<br />";}
if($regel[9]>0){$regel[9]=number_format($regel[9], 2, '.', '');echo "<input type='radio' name='keuze' value='$regel[9]$boeket' onclick='vulprijs();' /> € $regel[9]<br />";}
echo "<input type='radio' name='keuze' value=' Anders' onclick='vulprijs();'/> Ik wil wat anders en vul dat in bij de omschrijving van de bestelling en geef dan ook de prijs in.<br />\n<br />\n";
?>
if($regel[6]>0){$regel[6]=number_format($regel[6], 2, '.', '');echo "<input type='radio' name='keuze' value='$regel[6]$boeket' onclick='vulprijs();' /> € $regel[6]<br />";}
if($regel[7]>0){$regel[7]=number_format($regel[7], 2, '.', '');echo "<input type='radio' name='keuze' value='$regel[7]$boeket' onclick='vulprijs();' selected='selected'/> € $regel[7]<br />";}
if($regel[8]>0){$regel[8]=number_format($regel[8], 2, '.', '');echo "<input type='radio' name='keuze' value='$regel[8]$boeket' onclick='vulprijs();' /> € $regel[8]<br />";}
if($regel[9]>0){$regel[9]=number_format($regel[9], 2, '.', '');echo "<input type='radio' name='keuze' value='$regel[9]$boeket' onclick='vulprijs();' /> € $regel[9]<br />";}
echo "<input type='radio' name='keuze' value=' Anders' onclick='vulprijs();'/> Ik wil wat anders en vul dat in bij de omschrijving van de bestelling en geef dan ook de prijs in.<br />\n<br />\n";
?>
vulprijs(); is een javascript dat de prijs invult uit de database in een apart veld na een klik op de radio-button.
Dit werkt niet
In onderstaand script werkt alles als een zonnetje:
$sql="select * from produktenalg where tekst= '$_SESSION[imageid]'";
$result=mysql_query($sql);
$regel=mysql_fetch_array($result);
?>
dit werkt prima. dan wordt er een foto bijgzocht dat werkt ook
<a href="javascript:popUp('')" ><img src= class="bestelimage" width=225 height=150 align=right border=none title="klik om te vergroten" /></a>
vervolgens wordt de fotonaam geprint op het scherm.
<h3><br /></h3>
<p>Maak uw keuze:</p><br /><br />
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$pos = strpos( $regel[1], "boeket");
if($pos === 0){
echo "<input type='radio' name='keuze' value='15,00$boeket' onclick='vulprijs();' /> € 15,00<br />";
echo "<input type='radio' name='keuze' value='20,00$boeket' onclick='vulprijs();' checked='checked' /> € 20,00<br />";
echo "<input type='radio' name='keuze' value='25,00$boeket' onclick='vulprijs();' /> € 25,00<br />";
echo "<input type='radio' name='keuze' value='35,00$boeket' onclick='vulprijs();' /> € 35,00<br />";
echo "<input type='radio' name='keuze' value=' Anders' onclick='vulprijs();'/> Ik wil wat anders en vul dat in bij de omschrijving van de bestelling en geef dan ook de prijs in.<br />\n<br />\n";
}
$pos = strpos( $regel[1], "bloem");
if($pos === 0){
echo "<input type='radio' name='keuze' value='25,00$boeket' onclick='vulprijs();' /> € 25,00<br />";
echo "<input type='radio' name='keuze' value='35,00$boeket' onclick='vulprijs();' checked='checked' /> € 35,00<br />";
echo "<input type='radio' name='keuze' value='50,00$boeket' onclick='vulprijs();' /> € 50,00<br />";
echo "<input type='radio' name='keuze' value=' Ander Bloemstuk' onclick='vulprijs();'/> Ik wil wat anders en vul dat in bij de omschrijving van de bestelling en geef dan ook de prijs in.<br />\n<br />\n";
}
?>
$pos = strpos( $regel[1], "boeket");
if($pos === 0){
echo "<input type='radio' name='keuze' value='15,00$boeket' onclick='vulprijs();' /> € 15,00<br />";
echo "<input type='radio' name='keuze' value='20,00$boeket' onclick='vulprijs();' checked='checked' /> € 20,00<br />";
echo "<input type='radio' name='keuze' value='25,00$boeket' onclick='vulprijs();' /> € 25,00<br />";
echo "<input type='radio' name='keuze' value='35,00$boeket' onclick='vulprijs();' /> € 35,00<br />";
echo "<input type='radio' name='keuze' value=' Anders' onclick='vulprijs();'/> Ik wil wat anders en vul dat in bij de omschrijving van de bestelling en geef dan ook de prijs in.<br />\n<br />\n";
}
$pos = strpos( $regel[1], "bloem");
if($pos === 0){
echo "<input type='radio' name='keuze' value='25,00$boeket' onclick='vulprijs();' /> € 25,00<br />";
echo "<input type='radio' name='keuze' value='35,00$boeket' onclick='vulprijs();' checked='checked' /> € 35,00<br />";
echo "<input type='radio' name='keuze' value='50,00$boeket' onclick='vulprijs();' /> € 50,00<br />";
echo "<input type='radio' name='keuze' value=' Ander Bloemstuk' onclick='vulprijs();'/> Ik wil wat anders en vul dat in bij de omschrijving van de bestelling en geef dan ook de prijs in.<br />\n<br />\n";
}
?>
De reden dat ik wil veranderen heeft te maken met het flexibel maken van de foto's voor op een iPad te tonen, zonder dat er informatie verloren gaat.
bovendien zijn er de volgende verschillen:
in het eerste voorbeeld werkt de body onload niet en in het tweede voorbeeld wel. Ook de check van de gekozen prijs gaat in het eerste voorbeeld altijd naar de laatste radio-button en bij het tweede voorbeeld gaat alles goed.
Het document type is hetzelfde
Wie heeft een idee wat er fout zit, want ik ben hier al een paar dagen naar aan het staren maar zie onderhand niets meer.
bij voorbaat dank
Albert
Welke kolommen heb je allemaal in je produktenalg tabel?
Zoals ik al schreef
id-produkt-foto-tekst-klant-keuze-prijs1-prijs2-prijs3-prijs4
Dat zijn de kolommen van de tabel de structuur dus
groet
Albert
$regel[9]
etc
Is er een reden waarom de code onleesbaar moet zijn?
Ik heb gewerkt met code van een ander die op die manier opgezet was. Daarbij waren query's gebruikt met meer dan 20 of 30 kolommen soms. Tel dan maar eens uit of $regel[19] of $regel[20] is wat je nodig hebt.
De reden voor die code was verklaarbaar: ten tijde van het scripten was voor Oracle nog geen ondersteuning in PHP voor associatieve array's.
Maar jij gebruikt nu mysql_fetch_array() op de manier zoals zijn voorloper mysql_fetch_row() werkte. En dat bestaat al sinds php 4.
Met mysql_fetch_array() heb je ook de beschikking over $regel['prijs1'] $regel['id'] etc.
(en als je toch allen met die assoc-oplossing zou werken: dan is mysql_fetch_assoc() een efficiëntere oplossing.)
Kortom: gebruik gewoon $regel['id'] etc, zodat je code voor een buitenstaander, maar ook voor jezelf over 2 weken begrijpelijk is zonder query's te moeten zoeken en te gaan zitten tellen welke kolom het nu ook weer was.
Gewijzigd op 13/01/2014 02:36:24 door Ivo P
Maar los hiervan is er nog geen antwoord met betrekking tot mijn probleem, nl dat binnen de php code de echo van de javafunctie vulprijs(); alsmede de selected='seleceted' in de ene code wel en in de andere code niet wordt uitgevoerd.
Dus wat staat er met name bij de radiobuttons?
hier stond: if (selectedOne.checked = true){ ....enz}
in plaats van if (selectedOne.checked == true){....enz} met 2 = tekens
In ieder geval bedankt voor de reacties
Albert