fhs

Asynkron Rediger vilkår

fhs
Jun 6th, 2012
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 5.76 KB | None | 0 0
  1. <?php
  2. /* Problem:
  3.  * 1) I IE9 fungerer nedenfor asynkrone kode kun når man klikker på Kompatibilitetsvisning,
  4.  * og da kun at skjemaet vises når en bruker velger et medlem. Når man så klikker på submit i
  5.  * skjemaet, reloades siden (!) tilbake til utgangspunktet, db blir ikke oppdatert, og ingen
  6.  * suksessmld blir vist...
  7.  * 2) I Firefox og Opera skjer det ingenting når man klikker submit...man kan klikke til
  8.  * krampa tar deg, men ingenting skjer - absolutt ingenting :p
  9.  *
  10.  * All kildekode kommer i en paste her. Og ja, jeg er nybegynner, og vil ikke ha dette
  11.  * omdannet til objektorientert el.l. Vil bare finne ut hvorfor IE9, FF og Opera ikke
  12.  * liker koden min ;)
  13.  */
  14. ?>
  15. <?php
  16. //redvilkaar.php - Selve siden...
  17. ?>
  18. <!DOCTYPE html>
  19. <html lang="no">
  20. <head>
  21. <link rel="stylesheet" type="text/css" href="../style.css" />
  22. <!-- Script for asynkront å vise rediger kontrakt-vilkår i div id=vilkaar -->
  23. <script type="text/javascript" src="async.js"></script>
  24. <!-- JavaScript for validering -->
  25. <script language="javascript" type="text/javascript" src="../validater.js" ></script>
  26. </head>
  27. <body>
  28. <div id=velgVilkaar><?php include 'velgvilkaar.php';?></div><!-- Dynamisk listeboks -->
  29. <div id=vilkaar></div><!-- Her vises vilkåret (tittel og tekst) asynkront - samt mld om suksess -->
  30. <p>&nbsp;</p>
  31.  
  32. <?php include '../copyright.html';?>
  33. </body>
  34. </html>
  35.  
  36. <?php
  37. //async.js - JavaScript for kommunikasjon mellom bruker og server
  38. ?>
  39. /**
  40.  * Funksjon som viser rediger vilkår skjema asynkront på siden (i div id="skjema")
  41.  */
  42. function showVilkaar(str) {
  43.     var request =  new XMLHttpRequest();//Kaller funksjonen for å få objektet XMLHttpRequest
  44.     /* Om responsen er fullstendig mottatt, sender vi til HTML tag'en med tagID (skjema) */
  45.     request.onreadystatechange=function() {
  46.         if (request.readyState==4 && request.status==200) {
  47.             document.getElementById("vilkaar").innerHTML=request.responseText;
  48.         }
  49.     }
  50.     request.open("GET","vilkaarskjema.php?i="+str,true);
  51.     request.send();
  52. }
  53.  
  54. /**
  55.  * Funksjon som sender data til en php fil via POST og viser svar mottatt
  56.  */
  57. function showSuccsess(php_file, tagID) {
  58.     var request =  new XMLHttpRequest();//Kaller funksjonen for å få objektet XMLHttpRequest
  59.     /* Sjekker request status
  60.        Om responsen er fullstendig mottatt, sender vi til HTML tag'en med tagID (skjema) */
  61.     request.onreadystatechange = function() {
  62.       if (request.readyState == 4) {
  63.         document.getElementById(tagID).innerHTML = request.responseText;
  64.       }
  65.     }
  66.     /* Oppretter nytt objekt og tilegner verdi fra skjema */
  67.     var dataobjekt=new Object();
  68.     dataobjekt.id=document.getElementById('ident').value;
  69.     dataobjekt.tittel=document.getElementById('title').value;
  70.     dataobjekt.tekst=document.getElementById('text').value;
  71.     /* Validerer tittel og text */
  72.     if (dataobjekt.tittel=="" || dataobjekt.tekst=="") {
  73.         alert("Begge felt mÃ¥ være fylt ut!");
  74.     } else {//Ingen feil funnet, benytter JSON stringify() for lettere å behandle data
  75.         var the_data="data="+JSON.stringify(dataobjekt);
  76.         request.open("POST", php_file, true);
  77.         request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  78.         request.send(the_data); //Kaller på send() metoden med data som parameter
  79.     }
  80. }
  81. /* Debugger - ikke i bruk etter lansering
  82. function debug(str) {
  83.     document.getElementById("debug").innerHTML=str;
  84. }*/
  85.  
  86. <?php //velgvilkaar.php - Fil som lager dynamisk listeboks, validerer og sender til JS
  87. $q=$_GET["i"];
  88. include("db_tilkobling.php");
  89. $sqlSentence="SELECT * FROM `q4vls_vucmemport_kontrakt`;";
  90. $sqlResult=mysql_query($sqlSentence) or die (mysql_error());
  91. $numOfRows=mysql_num_rows($sqlResult);
  92. ?>
  93. <form method="post" action="" id="selection" name="selection">
  94. <h5>Vennligst velg en oppf&oslash;ring &aring; endre p&aring;:</h5>
  95. <select name="choice" id="choice" onchange="return selectedBox(document.selection.choice.value)&&showVilkaar(this.value)">
  96. <option selected="selected">Vennligst velg...</option>
  97. <?php
  98. for ($r=1;$r<=$numOfRows;$r++)
  99.   {
  100.     $rad=mysql_fetch_array($sqlResult);
  101.     $q=$rad[0];
  102.     print("<option value=\"$q\">$rad[1]</option>");
  103.   }
  104. ?>
  105. </select>
  106. </form>
  107.  
  108. <?php //vilkaarskjema.php - Skjema som viser endre kontrakt vilkår. Sender til JS
  109. $q=$_GET["i"];
  110. include("db_tilkobling.php");
  111. $sqlSentence="SELECT * FROM `q4vls_vucmemport_kontrakt` WHERE id='$q';";
  112. $sqlResult=mysql_query($sqlSentence) or die (mysql_error());
  113. $numOfRows=mysql_num_rows($sqlResult);
  114. $row=mysql_fetch_array($sqlResult);
  115. $title=$row[1];
  116. $text=$row[2];
  117.  
  118. print("<table>");
  119. print ("<form method=\"post\" action=\"\" id=\"editSelection\" name=\"editSelection\" onsubmit=\"showSuccsess('service/redigervilkaar.php', 'vilkaar'); return false;\">");
  120. print("<input type=\"hidden\" value=\"$q\" name=\"ident\" id=\"ident\"> <br/>");
  121. print ("<tr><td>Tittel:</td> <td> <input type=\"text\" size=\"55px\" value=\"$title\" name=\"title\" id=\"title\"></td></tr> <br />");
  122. print ("<tr><td>Innhold:</td> ");
  123. print ("<td><textarea rows=\"20\" cols=\"60\" name=\"text\" id=\"text\">$text</textarea></td></tr>");
  124. print ("<tr><td></td><td><input type=\"submit\" value=\"Endre valgt punkt\" name=\"edit\" id=\"edit\"></td></tr>");
  125. print ("</form>");
  126. print ("</table>");
  127. ?>
  128.  
  129. <?php //service/redigervilkaar.php - Fil som tar imot og behandler data
  130. include 'db_tilkobling.php';
  131. //Mottar data fra JS
  132. $datamotatt=$_POST["data"];
  133. //Dekoder JSON og henter verdiene
  134. $data=json_decode(stripslashes($datamotatt));
  135. $id=$data->id;
  136. $title=$data->tittel;
  137. $tekst=$data->tekst;
  138.  
  139. //Oppdaterer databasen og skriver ut mld
  140. $sqlSentence2="UPDATE `q4vls_vucmemport_kontrakt` SET tittel='$title', innhold='$tekst' WHERE id='$id';";
  141. mysql_query($sqlSentence2) or die (mysql_error());
  142. echo '<p><strong>Oppf&oslash;ringen har blitt endret hvor tittelen er '.$title.'</strong></p>';
  143. ?>
Advertisement
Add Comment
Please, Sign In to add comment