Gå til innhold

[løst]Valgt radio knapp / hente info


Anbefalte innlegg

Hei jeg prøver å bli ferdig med en webside --> www.ernis.no . Under valg>konfigurer på hver maskin finnes det radioknapper som skal gi kunden mulighet til å oppgradere en pc(trykk på windows logo eller ram feks for å få fram radioknappene). Det jeg lurer på er hvordan jeg skal finne ut hvilken knapp som er valgt for jeg trenger denne infoen til kalkulatoren. Sålangt så regner kalkulatoren bare PC-en utifra standard deler men nå skal den altså legge til verdien som er valgt med radioknappen. Vi skal prøve å ha siden vår klar fram til 1 desember så jeg håper noen kan hjelpe :roll: . Her er konfigurer.php

 

<?php

require_once("funksjoner.php");

 

if($_GET['maskin_id'])$maskin_id = $_GET['maskin_id'];

else header('Location: index.php');

$Choo = new mysql();

$Choo->connect();

$result = $Choo->query("SELECT * FROM `maskin` WHERE maskin_id=$maskin_id");

 

$row = mysql_fetch_row( $result );

$text = str_replace(chr(13).chr(10),"<br />\n",$row[6]);

 

 

function listDBvalg($valg) {

if($_GET['maskin_id'])$maskin_id = $_GET['maskin_id'];

 

$Choo = new mysql();

$Choo->connect();

 

$result = $Choo->query("SELECT * FROM `$valg` WHERE maskin_id=$maskin_id ORDER BY pris");

 

if(mysql_num_rows($result)) {

echo ("<table width='420' cellspacing='0' cellpadding='0' align='center'>");

$i = 0;

while($row = mysql_fetch_row($result)) {

if ($i == 0){

echo("<tr><td ><input name='$valg' type='radio' onClick='java script:' checked></td><td>$row[1]</td><td align='right' style='font-weight: bold;' colspan='2'>$row[4] ,-</td></tr>");

$i = i + 1;

} else echo("<tr><td width=10><input name='$valg' type='radio' onClick='java script:'></td><td width=500>$row[1]</td><td width='60' align='right' style='color: green;' colspan='2'>+$row[4] ,-</td></tr>");

} echo("</table>");

} else echo("ingen data i db: $valg ");

}

function komponent($valg){

if($_GET['maskin_id'])$maskin_id = $_GET['maskin_id'];

$Choo = new mysql();

$Choo->connect();

$result = $Choo->query("SELECT * FROM `$valg` WHERE maskin_id=$maskin_id ORDER BY pris");

if(mysql_num_rows($result)){

$row = mysql_fetch_row( $result );

echo($row[1]);

}

}

 

$totalpris = total($maskin_id);

$mva = $totalpris * 0.23;

$umva = $totalpris - $mva;

 

topp();

echo("

<script language='JavaScript' type='text/javascript'>

function toggleLayer( whichLayer ){

layersOff();

if (document.getElementById( whichLayer ).style.display == 'block')

document.getElementById( whichLayer ).style.display = 'none';

else document.getElementById( whichLayer ).style.display = 'block';

}

function layersOff(){

document.getElementById('cpu').style.display = 'none';

document.getElementById('os').style.display = 'none';

document.getElementById('harddisk').style.display = 'none';

document.getElementById('ram').style.display = 'none';

document.getElementById('skjermkort').style.display = 'none';

 

 

}

function konfig(){

document.getElementById('konfigellersalg').style.display = 'none';

document.getElementById('knapper').style.display = 'block';

document.getElementById('vinduer').style.display = 'block';

layersOff();

}

</script>

");

topp_meny();

echo("<form name='form1'>

<table width='100%' height='100%' cellpadding='0' cellspacing='0' border='0' bgcolor='white' style='border: 1px solid black; font-size: small;'>

<tr>

<td align='center'> </td>

<td align='left'><b style='font-size: xx-large;'>$row[1]</b></td>

<td align='center'> </td>

</tr>

<tr>

<td width='30%'> </td>

<td width='50%'><p align='left'>$text</p></td>

<td widht='20%'><img src='$row[4]'></td>

</tr>

<tr>

<td width='30%' align='right'>Hovedkort: </td>

<td width='50%' colspan='2' align='left'>");komponent("hovedkort"); echo("</td>

</tr>

<tr>

<td width='30%' align='right'>Prosessor/CPU: </td>

<td width='50%' colspan='2' align='left'>");komponent("cpu"); echo("</td>

</tr>

 

<tr>

<td width='30%' align='right'>Optisk enhet: </td>

<td width='50%' colspan='2' align='left'>");komponent("optisk"); echo("</td>

</tr>

<tr>

<td width='30%' align='right'>Harddisk: </td>

<td width='50%' colspan='2' align='left'>");komponent("harddisk"); echo("</td>

</tr>

<tr>

<td width='30%' align='right'>Ram: </td>

<td width='50%' colspan='2' align='left'>");komponent("ram"); echo("</td>

</tr>

<tr>

<td width='30%' align='right'>Skjermkort: </td>

<td width='50%' colspan='2' align='left'>");komponent("skjermkort"); echo("</td>

</tr>

<tr>

<td width='30%' align='right'>Tvkort: </td>

<td width='50%' colspan='2' align='left'>");komponent("tvkort"); echo("</td>

</tr>

<tr>

<td width='30%' align='right'>Kabinett: </td>

<td width='50%' colspan='2' align='left'>");komponent("kabinett"); echo("</td>

</tr>

<tr>

<td width='30%' align='right'>Operativsystem: </td>

<td width='50%' colspan='2' align='left'>");komponent("os"); echo("</td>

</tr>

<tr>

<td width='30%' align='right'>Strømforsyning: </td>

<td width='50%' colspan='2' align='left'>");komponent("strømforsyning"); echo("</td>

</tr>

<tr>

<td width='30%' align='right'>Høyttaler: </td>

<td width='50%' colspan='2' align='left'>");komponent("hoyttaler"); echo("</td>

</tr>

<tr>

<td width='30%' align='right'>Tastatur og mus: </td>

<td width='50%' colspan='2' align='left'>");komponent("tastaturogmus"); echo("</td>

</tr>

<tr>

<td width='30%' align='right'>Skjerm: </td>

<td width='50%' colspan='2' align='left'>");komponent("skjerm"); echo("</td>

</tr>

<tr>

<td width='30%' align='right'>Kortleser: </td>

<td width='50%' colspan='2' align='left'>");komponent("kortleser"); echo("</td>

</tr>

 

 

 

 

<tr>

<td colspan='3'>

<div id='komponentwrapper'>

<div id='konfigellersalg'>

<div id='konfig'><a href='#' onclick='java script: konfig();'>[Konfigurer]</a></div><div id='salg'><a href='kjøp.php'>[Kjøp]</a></div>

</div>

<div id='knapper' style='display: none'>

<div id='knapp_os'><img src='http://www.cfm-guadalajara.net/dotclear/images/Logiciels_Microsoft/VistaLogo.jpg' onClick='java script:toggleLayer(\"os\");'></div>

<div id='knapp_cpu'><img src='http://www.cyberzone-net.jp/images/cpu.gif' onClick='java script:toggleLayer(\"cpu\");'></div>

<div id='knapp_harddisk'><img src='img/disk.jpg' onClick='java script:toggleLayer(\"harddisk\");'></div>

<div id='knapp_ram'><img src='img/ram.jpg' onClick='java script:toggleLayer(\"ram\");'></div>

<div id='knapp_skjermkort'><img src='img/skjermkort.jpg' onClick='java script:toggleLayer(\"skjermkort\");'></div>

</div>

 

 

 

<div id='vinduer' style='display: none'>

<div id='os'> ");

listDBvalg("os");

echo("</div><div id='cpu'>");

listDBvalg("cpu");

echo("</div><div id='harddisk'>");

listDBvalg("harddisk");

echo("</div><div id='ram'>");

listDBvalg("ram");

echo("</div><div id='skjermkort'>");

listDBvalg("skjermkort");

 

echo("</div>

</div>

</td>

</tr>

<tr valign='bottom' align='center' colspan='1'>

<td></td>

<td></td>

<td><b style='color: black; font-size: x-medium'>U/Mva : $umva ,-</b></td>

</tr>

<tr valign='bottom' align='center' colspan='1'>

<td></td>

<td></td>

<td><b style='color: black; font-size: x-medium'>Mva : $mva ,-</b></td>

</tr>

 

<tr valign='bottom' align='center' colspan='1'>

<td></td>

<td></td>

<td><b style='color: green; font-size: x-medium'>Totalpris : $totalpris ,-</b></td>

</tr>

</table>

 

</form>

");

 

bunn();

?>

Endret av Pugger
Lenke til kommentar
Videoannonse
Annonse

FAIL.

 

Hvem i svarte orker å bla gjennom et dårlig kodet script på 200 linjer i turkis? Hva trenger du egentlig hjelp til? Hvorfor poster du et endeløst stort HTML-dokument med masse inline variabler uten noen form for syntax highlighting eller forklaring på HVA scriptet gjør? Har du prøvd å søke på Google? Har du prøvd selv overhodet, eller poster du bare det du har her for å få en kjapp og enkel løsning uten å lære noe selv?

Lenke til kommentar
FAIL.

 

Hvem i svarte orker å bla gjennom et dårlig kodet script på 200 linjer i turkis? Hva trenger du egentlig hjelp til? Hvorfor poster du et endeløst stort HTML-dokument med masse inline variabler uten noen form for syntax highlighting eller forklaring på HVA scriptet gjør? Har du prøvd å søke på Google? Har du prøvd selv overhodet, eller poster du bare det du har her for å få en kjapp og enkel løsning uten å lære noe selv?

 

Jeg har søkt masse på google ja. Litt vanskelig å lære seg noe når man ikke har noe eksempel å gå utifra? Snakk om å være negativ. Hvorfor svarer du egentlig? Bedre med rødfargen kanskje ? :!: Det er jo bare å velge en pc på forsiden så ser du hva scriptet gjør? Det jeg lurer på er hvordan jeg skal finne ut hvilken radioknapp som er valgt for jeg trenger denne infoen til kalkulatoren. "Orker" du ikke lese gjennom koden så skal du få slippe :thumbup: . Tenkte kanskje bare noen kunne hjelpe med noe tips.

Endret av Pugger
Lenke til kommentar

Huff.. Her er det ikke mye sikkerhet og feilhåndtering...

Scriptet ditt er vidåpent for SQL-Injection angrep siden du ikke har noen form for kontroll på data som kommer inn og brukes videre i database-spørringen. Se SQL-injection for utdypende forklaring.

En annen ting som ikke er så lurt er å ha en utviklingsserver stående fullt tilgjengelig for alle på nettet.

Jobb på en lokal versjon av sidene, eller sleng i det minste på et passord til du er ferdig og er sikker på at sidene er sikre.

Kjøp deg også en bok som omhandler php og sikkerhet. Kan anbefale Essential PHP Security.

 

Noen kommentarer til koden din.

Alle GET-/POST-data bør sjekkes og valideres før de benyttes !

Ta f.eks

if ($_GET['maskin_id'])
   $maskin_id = $_GET['maskin_id'];
else
   header('Location: index.php');

$Choo = new mysql();
$Choo->connect();
$result = $Choo->query("SELECT * FROM `maskin` WHERE maskin_id=$maskin_id");

Her kontrollerer du ikke hva maskin_id inneholder før du benytter den i sql-spørringa.

Hvem som helst kan endre maskin_id i url til å inneholde potensiell skadelig kode.

 

Dersom maskin_id kun skal inneholde tall så kan du enkelt sjekke det med funksjonen is_numeric.

Et kjapt eksempel på hvordan det kan gjøres...

$maskin_id = null;
if (isset($_GET['maskin_id']) && !empty($_GET['maskin_id'])) {
if (is_numeric(trim($_GET['maskin_id'])) {
	$maskin_id = intval($_GET['maskin_id']); 
}
}

if(!$maskin_id) {
//Håndtere ugyldig id format
echo "Ugyldig id";
exit();
}
else {
//Gyldig id så langt...
//Sjekke om id eksisterer i database, og i så fall hente ut data...
}

En veldig nyttig funksjon ved sql-spørringer og MySQL er mysql_real_escape_string.

 

Når det gjelder spørring mot database så har du lite med feilhåndtering. Ta f.eks denne delen av koden din.

$result = $Choo->query("SELECT * FROM `$valg` WHERE maskin_id=$maskin_id ORDER BY pris");
if (mysql_num_rows($result)) {
//...
}

 

Enkelt eksempel på håndtering av feil ved den spørringen.

$sql = "SELECT * FROM `$valg` WHERE maskin_id=$maskin_id ORDER BY pris";
if ($result = $Choo->query($sql)) {
if (mysql_num_rows($result) > 0) {
	//behandle data videre...
}
else {
	//Håndtere at ingen rader ble funnet
	echo "Ingen rader funnet";
	exit();
}
}
else {
//Håndtere feil ved spørring
echo "Feil ved spørring: " . mysql_error();
exit();
}

 

Når det gjelder resten av koden så har jeg ikke sett så mye på den, men jeg vil anbefale deg å ta en titt på templates for php slik at du får skillt bedriftslogikk(det meste av php-kode, behandling av data fra database osv) og presentasjon (html og php som genererer html).

 

Hmm ble masse påpekninger dette her, så jeg skal gi deg et svar på det du opprinnelig spurte om.

 

Ta f.eks valgene for operativsystem. Der har du 3 radio-knapper som alle har name="os".

For å skille de fra hverandre setter du bare value-attributt'en på hver av de.

F.eks i html

<input name='os' type='radio' value="1">Vista Home Basic<br>
<input name='os' type='radio' value="2">Windows XP Home Norsk<br>
<input name='os' type='radio' value="3">Windows XP Pro SP2 Norsk<br>

I php henter du ut verdien som vanlig... f.eks

if(isset($_GET['os'])) {
$valgt_os = $_GET['os'];
switch($valgt_os) {
	case 1: 
		echo "Vista Home Basic valgt";
		break;
	case 2: 
		echo "Windows XP Home Norsk valgt";
		break;
	case 3: 
		echo "Windows XP Pro SP2 Norsk valgt";
		break;
}
}

 

Håper dette hjelper deg på vei.

Hvis det er noe du lurer på angående kommentarene mine, så er det bare å spørre.

Endret av Zandar
Lenke til kommentar
Hmm ble masse påpekninger dette her, så jeg skal gi deg et svar på det du opprinnelig spurte om.

 

Ta f.eks valgene for operativsystem. Der har du 3 radio-knapper som alle har name="os".

For å skille de fra hverandre setter du bare value-attributt'en på hver av de.

F.eks i html

<input name='os' type='radio' value="1">Vista Home Basic<br>
<input name='os' type='radio' value="2">Windows XP Home Norsk<br>
<input name='os' type='radio' value="3">Windows XP Pro SP2 Norsk<br>

I php henter du ut verdien som vanlig... f.eks

if(isset($_GET['os'])) {
$valgt_os = $_GET['os'];
switch($valgt_os) {
	case 1: 
		echo "Vista Home Basic valgt";
		break;
	case 2: 
		echo "Windows XP Home Norsk valgt";
		break;
	case 3: 
		echo "Windows XP Pro SP2 Norsk valgt";
		break;
}
}

 

Håper dette hjelper deg på vei.

Hvis det er noe du lurer på angående kommentarene mine, så er det bare å spørre.

 

Takk for gode tips. Skal få gjort noe med sikkerheten på sida. Har endra radioknapp delen nå. Regner med det er alt som trengs for å finne ut hvilken knapp er valgt? Alle knappene får nå tildelt values :)

 

if(mysql_num_rows($result)) {

echo ("<table width='420' cellspacing='0' cellpadding='0' align='center'>");

$i = 0;

$valgt = 0;

while($row = mysql_fetch_row($result)) {

if ($i == 0){

echo("<tr><td ><input name='$valg' type='radio' onClick='java script:' checked value='$valgt'></td><td>$row[1]</td><td align='right' style='font-weight: bold;' colspan='2'>$row[4] ,-</td></tr>");

$i = i + 1;

 

 

} else

 

 

echo("<tr><td width=10><input name='$valg' type='radio' onClick='java script:' value='$valgt'></td><td width=500>$row[1]</td><td width='60' align='right' style='color: green;' colspan='2'>+$row[4] ,-</td></tr>");

$valgt++;

} echo("</table>");

} else echo("ingen data i db: $valg ");

}

Endret av Pugger
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...