30. juni 2005 - 08:50Der er
33 kommentarer og 2 løsninger
ASP-side skal laves om til PHP
Hej PHP-guruer! Da mit webhotel kun kører php og ikke asp, skal jeg have lavet en eksisterende og velfungerende asp-side om til php.
Funktionen på siden er: 1.Der modtages en tekststreng, som skal laves til et array. Fra dette array vælges nogle af posterne og sendes videre i en mail.
ASP-koden ser sådan ud:
<% Set browser=Server.CreateObject("MSWC.BrowserType") 'Bruges til at finde frem til Browsertype, Operativsystem og Browserversion
bolWasPosted = Request.ServerVariables("HTTP_METHOD") = "POST" If bolWasPosted Then strTest = Trim(request("Quiz Results"))
strTest = Replace(strTest,"Core Data ","") strTest = Replace(strTest, """", "")
arrTest = split(strTest,",") procent = (arrTest(6)/arrTest(8)*100 & "%") svar = (arrTest(6)) pas = (arrTest(7)/arrTest(8)*100 & "%") max = (arrTest(8)) min = (arrTest(9)) if pas => procent then besta ="Quizzen er bestået" else besta ="Quizzen er ikke bestået" end if
ja, bare man ved det, så ser det let ud, men....... OKAY!! Følgeproblem: kan du så det til at spille sammen med resten af koden på asp-siden - eller skal jeg lave et nyt spørgsmål?? Her er den ihverttilfælde:
function MM_validateForm() { //v4.0 var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments; for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]); if (val) { nm=val.name; if ((val=val.value)!="") { if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@'); if (p<1 || p==(val.length-1)) errors+='- '+nm+' skal være en e-mailadresse.\n'; } else if (test!='R') { num = parseFloat(val); if (isNaN(val)) errors+='- '+nm+' skal indeholde et nummer.\n'; if (test.indexOf('inRange') != -1) { p=test.indexOf(':'); min=test.substring(8,p); max=test.substring(p+1); if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n'; } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' mangler.\n'; } } if (errors) alert('De(n) følgende fejl opstod:\n'+errors); document.MM_returnValue = (errors == ''); } //--> </script> </HEAD> <body text="#000000" link="#000000" vlink="#000000" alink="#000000" leftmargin="20" topmargin="20" style="color: #000000; font-family: Verdana; font-size: 8 pt" > <img src="../billeder/logo.jpg" width="700" height="70"> <p> <% if mode <> "send" then %>
<form method="POST" action="confirm.asp?mode=send"> <table> <tr> <td width="98%" colspan="2" valign="top"><p><font face="Tahoma, Verdana" size="2"><br> <font size="3"><strong>Resultatet fra quizzen</strong></font></font></p> <font size="2" face="Verdana, Arial, Helvetica, sans-serif">Quizzens navn: <%=quiznavn%> <br> <br> Antal mulige point: <%=Response.write(max)%><br> Procent for at bestå quizzen: <%=Response.write(pas)%><br> Opnåede antal point: <%=Response.write(svar)%><br> Resultatet i procent: <%=Response.write(procent)%><br> <%=Response.write(besta)%></font><br> <p><font size="2" face="Tahoma, Verdana"><strong>Her skal du udfylde alle felter og derefter klikke på Send. Dermed sender du en e-mail til din underviser.</strong><br> <br> </font> </p> </td> </tr> <tr> <td width="30%" valign="top"><font face="Tahoma, Verdana" size="2">Underviserens e-mail</font></td> <td width="68%" valign="top"><font face="Tahoma, Verdana" size="2"><input type="text" name="modtagers_email" size="40"></font></td> </tr> <tr> <td width="30%" valign="top"><p><font face="Tahoma, Verdana" size="2">Din e-mail</font></p></td> <td width="68%" valign="top"><font face="Tahoma, Verdana" size="2"><input type="text" name="din_email" size="40"></font></td> </tr> <tr> <td width="30%" valign="top"><p><font face="Tahoma, Verdana" size="2">Dit navn </font></p></td> <td width="68%" valign="top"><font face="Tahoma, Verdana" size="2"><input type="text" name="navn" size="40"></font></td> </tr> <tr> <td width="30%" valign="top"><p><font face="Tahoma, Verdana" size="2">Din skole </font></p></td> <td width="68%" valign="top"><font face="Tahoma, Verdana" size="2"><input type="text" name="skole" size="40"></font></td> </tr> <tr> <tr> <td width="30%" valign="top"><p><font face="Tahoma, Verdana" size="2">Din klasse </font></p></td> <td width="68%" valign="top"><font face="Tahoma, Verdana" size="2"><input type="text" name="klasse" size="40"></font></td> </tr>
Helt generelt skal du lave alle dine <% %> om til <? ?> If statements indeholder ikke nogle Then og End If men er omklamret i stedet Så er der lidt syntaks omkring alt andet, fx er <> i php != Så denne her linje <% if mode <> "send" then %> bliver til <? if (mode != "send"){ // kode som så eksekveres her } ?>
Jeg ved ikke hvordan du har fået denne her til at virke før ? <%=Response.write(max)%> For <%= er jo i sig selv en forkortelse for response.write response.write hedder i php echo og du kan tilsvarende benytte <?= som forkorter Dvs <?=max?>
Til din kommentar 09:35:46 Så er det fordi du skal afslutte din php kode når du vil outputte ren html, analogt til asp faktisk Så følgende mm: --- <? if (mode != "send"){ <form method="POST" action="<?php $PHP_SELF ;?>?mode=send"> --- skal rettes til --- <? if (mode != "send"){ ?> <form method="POST" action="<?php $PHP_SELF ;?>?mode=send">
angående din kommentar 09:24:34 Hvis du ønsker at $pas skal være større end eller lig med $procent så skal det være sådan her if ( $pas >= $procent ) Men fordi fx $pas = 15% og $procent = 10% Så ved jeg ikke hvordan den vil reagere på if ( '15%' >= '10%' ) Da det jo ikke er tal sammenligning!
Angående din kommentar 10:13:15 core data ? Linjen: $strTest = str_replace( "Core Data ", "", $strTest ); Betyder jo at den i $strTest skal udskifte forekomster af strengen "Core Data " med ingenting, nemlig "" Så hvad mener du med om core data er defineret ? Det er ren streng sammenligning og udskiftning
Hvor kommer Quiz Results fra ? Jeg synes ikke jeg kan se et felt i formen med det navn? Hvis ikke der er et felt så er det jo klart den er tom ;o) I øvrigt vil jeg også anbefale dig at benytte $_POST og $_GET i stedet for $_REQUEST, når din form har henholdsvis method="post" og method="get"
Hvor kommer Quiz Results fra ? Quiz Results sendes fra kilden som post (en form i en flash quiz) og modtages på denne php-side vha. $_REQUEST["Quiz Results"]; - men den er tom!!
ok så bare den ikke var med i den kode du postede tidligere , men hvis den kommer fra flash er det måske derfor Jeg kender intet til flash desværre, eller til hvordan det hives over i php/asp
NAME="subject" går rent igennem men NAME="Quiz Results" er tom når den modtages på php-siden men i orden på asp-siden med rigtige = request("Quiz Results")
Man må jo ikke dividere med nul så fejlen er vel i denne her og tilsvarende linjer $procent = ( $arrTest[6] / $arrTest[8] * 100 ) . "%"; Fordi $arrTest[8] er nul Du kan jo fange den med en If If ($arrTest[8] == 0){ $procent = "0%"; }else{ $procent = ( $arrTest[6] / $arrTest[8] * 100 ) . "%"; }
der skal fjernes \ fra teksten Reslutatet ser således ud: Antal mulige point max: \40\ Procent for at bestå quizzen: \28\ Opnåede antal point: \20\ ud af \40\
Har prøvet med $strTest = str_replace( "'\'", '', $strTest ); men det dur ikke, så............
Jeg er ikke helt klar over det, men du skal vist fordele points på en eller anden måde :) Jeg er ikke vandt til at bruge eksperten på den måde selv, jeg hjælper bare :)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.