nepz Skrevet 24. oktober 2012 Del Skrevet 24. oktober 2012 Lag en webside der du kan skrive inn to tall i tekstbokser også få ut summen (+), differansen (-), produktet (*) og kvotienten (/) ved hjelp av 4 forskjellige knapper. Resultatet skal vises på neste side avhengig av hvilken knapp som trykkes. F.eks skal det skrives ut ”Summen av 5 og 5 er 10” dersom + tasten trykkes på forrige side. Tips : Bruk if(isset($_GET[”knappenavn”])) i PHP koden på neste side for å sjekke om hvilken knapp som er trykket på i skjema. Noen som har en link hvor jeg kan lære meg dette? Lenke til kommentar
mobile999 Skrevet 24. oktober 2012 Del Skrevet 24. oktober 2012 http://w3schools.com/php/default.asp Lenke til kommentar
Djn Skrevet 24. oktober 2012 Del Skrevet 24. oktober 2012 (endret) Rent praktisk, hva kan du fra før? Klarer du f.eks. å lage en PHP-side som skriver ut noe? Hvis du kan det, foreslår jeg at du leser litt om html forms. Prøv å lag en enkel form med et par felter og en submit-knapp i en fil, og i den samme fila skriver du ut alt innholdet i $_REQUEST for å se hva du fikk. (tips: Bruk print_r til å skrive den ut, og putt det inni <pre> </pre> for å gjøre det litt lettere å lese.) Les gjerne også dette. Endret 24. oktober 2012 av Djn Lenke til kommentar
nepz Skrevet 24. oktober 2012 Forfatter Del Skrevet 24. oktober 2012 (endret) Blir spurt om jeg vil åpne resultat.php? Jeg blir ikke sendt til neste side.... <!DOCTYPE html> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> </head> <body> <form action="resultat.php" method="post"> Firstnumber: <input name="num1" type="text" /><br> Secondnumber: <input name="num2" type="text" /> <input type="submit" /> </form> </body> </html> <?php $num1 = $_POST['num1']; $num2 = $_POST['num2']; $a = $num1 + $num2; echo "The sum of the two numbers is ". $a; ?> Endret 24. oktober 2012 av nepz Lenke til kommentar
mobile999 Skrevet 24. oktober 2012 Del Skrevet 24. oktober 2012 (endret) Dette bør foregå på en webserver som er satt opp til å kjøre php. Endret 24. oktober 2012 av mobile999 Lenke til kommentar
nepz Skrevet 24. oktober 2012 Forfatter Del Skrevet 24. oktober 2012 Dette bør foregå på en webserver som er satt opp til å kjøre php. Kjører Apache, Xampp Lenke til kommentar
Crowly Skrevet 24. oktober 2012 Del Skrevet 24. oktober 2012 du ut alt innholdet i $_REQUEST for å se hva du fikk. Ikke bruk $_REQUEST, du vet ikke hvor ting kommer i fra. $_REQUEST innholder alt fra $_POST, $_GET og $_COOKIE. Når man først bruker html form, så spesifiserer man jo method og vet dermed om data kommer via post eller get, og bruker da tilhørende variabel. 1 Lenke til kommentar
nepz Skrevet 24. oktober 2012 Forfatter Del Skrevet 24. oktober 2012 (endret) Slik ble det <form action="kalkulator.php" method="post"> Tall 1: <input type="text" name="tall1" /><br/> Tall 2: <input type="text" name="tall2" /><br/> <input type="submit" value="+" name="pluss" /> <input type="submit" value="-" name="minus" /> <input type="submit" value="*" name="gange" /> <input type="submit" value="/" name="dele" /> </form> <?php if(isset($_POST["pluss"])) { $sum = $_POST["tall1"] + $_POST["tall2"]; } elseif(isset($_POST["minus"])) { $sum = $_POST["tall1"] - $_POST["tall2"]; } elseif(isset($_POST["gange"])) { $sum = $_POST["tall1"] * $_POST["tall2"]; } elseif(isset($_POST["dele"])) { $sum = $_POST["tall1"] / $_POST["tall2"]; } echo "svaret er $sum."; Kom gjerne med kommentarer om dette f.eks kan gjøres på en annen måte. Gira på å lære. Endret 24. oktober 2012 av nepz Lenke til kommentar
mobile999 Skrevet 24. oktober 2012 Del Skrevet 24. oktober 2012 Fikk du tilslutt til å kjøre php-koden? Hva var løsningen? Lenke til kommentar
nepz Skrevet 24. oktober 2012 Forfatter Del Skrevet 24. oktober 2012 (endret) Fant ut av spm mitt. Takk til alle mann Endret 24. oktober 2012 av nepz Lenke til kommentar
mobile999 Skrevet 24. oktober 2012 Del Skrevet 24. oktober 2012 (endret) - Endret 24. oktober 2012 av mobile999 Lenke til kommentar
Djn Skrevet 25. oktober 2012 Del Skrevet 25. oktober 2012 du ut alt innholdet i $_REQUEST for å se hva du fikk. Ikke bruk $_REQUEST, du vet ikke hvor ting kommer i fra. $_REQUEST innholder alt fra $_POST, $_GET og $_COOKIE. Når man først bruker html form, så spesifiserer man jo method og vet dermed om data kommer via post eller get, og bruker da tilhørende variabel. Det var mest for å ikke rote til posten med en ting til han måtte tenke på. (Og altså, hva er galt med request? Hvis du skriver litt ordentlig skal det ikke ha stort å si uansett.) Lenke til kommentar
Crowly Skrevet 25. oktober 2012 Del Skrevet 25. oktober 2012 Problemet er mangel på kontroll. Hva skjer hvis du har f.eks. en cookie og ett url parameter ($_GET) med samme navn, og du skal hente ut begge med (kun) $_REQUEST? Dette er ikke ett problem når man bruker $_COOKIE og $_GET, da vet man nøyaktig hvor man henter ting i fra, og det gjør det mer ryddig å lese koden. (om cookie er med i $_REQUEST er avhengig av php.ini oppsettet og versjonen av PHP) Lenke til kommentar
Djn Skrevet 25. oktober 2012 Del Skrevet 25. oktober 2012 Problemet er mangel på kontroll. Hva skjer hvis du har f.eks. en cookie og ett url parameter ($_GET) med samme navn, og du skal hente ut begge med (kun) $_REQUEST? Dette er ikke ett problem når man bruker $_COOKIE og $_GET, da vet man nøyaktig hvor man henter ting i fra, og det gjør det mer ryddig å lese koden. (om cookie er med i $_REQUEST er avhengig av php.ini oppsettet og versjonen av PHP) Nå vil man vel typisk lagre forskjellige ting i cookies vs. post/get, og jeg sliter med å finne et eksempel hvor blanding mellom post og get ville være problematisk - men joda, jeg er forsåvidt enig i at det kan være ryddig å være eksplisitt. (Bare ikke nok til å ta opp forskjellen mellom post og get som nok et moment i en intro-post.) Lenke til kommentar
herdon Skrevet 29. oktober 2012 Del Skrevet 29. oktober 2012 Tips til noe som ville sett bedre ut på nettsiden din: Bruk en nedtrekksliste med +, -, *, /, i mellom input-feltene og ha kun en felles knapp man skal trykke på (er kun et tips for at det skal se bedre ut) Lenke til kommentar
Yawa Skrevet 2. november 2012 Del Skrevet 2. november 2012 (endret) dette er vel den letteste måten å oppnå dette på etter min mening: <?php if(isset($_POST['submit'])): extract($_POST); switch($operator): case 'add': $answer = (int)$int1 + (int)$int2; break; case 'sub': $answer = (int)$int1 - (int)$int2; break; case 'tms': $answer = (int)$int1 * (int)$int2; break; case 'dev': $answer = (int)$int1 / (int)$int2; break; endswitch; endif; ?> <form method="post"> <input type="text" name="int1"> <select name="operator"> <option value="add">+</option> <option value="sub">–</option> <option value="tms">*</option> <option value="dev">/</option> </select> <input type="text" name="int2"> <input type="submit" name="submit" value="Er lik"> <strong><?=$answer?></strong> </form> Endret 2. november 2012 av Yawa Lenke til kommentar
Crowly Skrevet 2. november 2012 Del Skrevet 2. november 2012 Hvorfor bruke extract($_POST) i stedet for kun switch($_POST['operator']) ? Virker unødvendig for meg, i tillegg må du ta hensyn til at den kan komme i konflikt med eksisterende variabler, og det må håndteres (selv om det ikke er tilfellet i denne kode snutten, men tenker på generelt basis og gode vaner). Lenke til kommentar
Yawa Skrevet 2. november 2012 Del Skrevet 2. november 2012 (endret) Variablene i kodesnutten er kun tilgjenglig når en bruker har klikket submit-knappen som gjelder for kalkulatoren. Personlig benytter jeg extract() svært ofte pga. jeg er nøye med navngivning og fordi det går endel fortere å skrive kode sånn fremfor slik: switch($_POST['operator']): case 'add': $answer = (int)$_POST['int1'] + (int)$_POST['int2']; break; case 'sub': $answer = (int)$_POST['int1'] - (int)$_POST['int2']; break; case 'tms': $answer = (int)$_POST['int1'] * (int)$_POST['int2']; break; case 'dev': $answer = (int)$_POST['int1'] / (int)$_POST['int2']; break; endswitch; Å skrive $_POST['name'] for hver av de 9 syns jeg er unødvendig, og så ser det stygt ut (i mine øyne). Til tider setter jeg en prefix om jeg skulle være i tvil om navnet jeg benytter kan komme i konflikt med annen kode på samme side. I dette tilfellet ville jeg nok valgt "calc_". altså $calc_operator, $calc_int1, $calc_int2. Appropos gode vaner; Jeg mener at god programmerings-teknikk er å skrive så lite og rent som mulig. Hovedsaklig pga. tidsmessig arbeid for programmerer. Ved å benytte extract() samt sette en forklarende prefix/suffix gjør man koden mye mer lettleslig fremfor å benytte $_POST['name']... Endret 2. november 2012 av Yawa Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå