Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
dvprog15 [2016-02-09 09:36]
Daniel Viström
dvprog15 [2019-04-15 11:14]
Daniel Viström
Line 1: Line 1:
-====== Tips för att undvika notice (och lite annat======+====== Tips till gästboken: Undvika notice, hantera felmeddelanden, lägga in värden i formulär och lite annat ======
  
 Om du vill ha en större utmaning och få en bättre kod så försök att klara dig utan att använda \\ error_reporting(E_ALL ^E_NOTICE);   Om du vill ha en större utmaning och få en bättre kod så försök att klara dig utan att använda \\ error_reporting(E_ALL ^E_NOTICE);  
Line 7: Line 7:
 <code php> <code php>
 <?php <?php
 + 
 // Ha gärna logiken längst upp och utskrifterna längst ner. // Ha gärna logiken längst upp och utskrifterna längst ner.
- +  
-// Skapar en tom sträng för felmeddelanden för att inte riskera att få  +// Skapar en tom array för felmeddelanden
-// notice om att variabeln inte finns när felmeddelandet ska skrivas ut. +$errors = [];  
-$error = '';   +  
 +// Skapar en tom sträng för meddelanden för att inte riskera att få  
 +// notice om att variabeln inte finns när meddelandet ska skrivas ut. 
 +$message = '';   
 + 
 // isset() kollar om $_POST['namn'] finns för att inte få // isset() kollar om $_POST['namn'] finns för att inte få
 // felmeddelande och utskrift när sidan laddas första gången. // felmeddelande och utskrift när sidan laddas första gången.
-if (isset($_POST['namn'])) { +if (isset($_POST['namn'], $_POST['alder'])) { 
 +  
 +  $ok = true;  // Variabeln håller reda på om något är fel. 
 +  
 +  if(empty($_POST['namn'])){ // empty() kollar om inget är inmatat. 
 +    $errors[] = 'Du har inte angett namn.<br>';  // Lägger till ett felmeddelande. 
 +    $ok = false;  // Nu har ett fel hittats. 
 +  } 
 +  if($_POST['namn'] == 'Daniel'){ 
 +    $errors[] = 'Du får inte ange detta namn.<br>'; // Lägger till ett felmeddelande. 
 +    $ok = false;  // Nu har ett fel hittats. 
 +  } 
 +  
 +  if(empty($_POST['alder'])){ // empty() kollar om inget är inmatat. 
 +    $errors[] = 'Du har inte angett ålder.'; // Lägger till ett felmeddelande. 
 +    $ok = false;  // Nu har ett fel hittats. 
 +  } else { 
 +    if(!is_numeric($_POST['alder'])){ // Kollar om inmatningen INTE består av siffror. 
 +      $errors[] = 'Angiven ålder måste bestå av siffror.'; // Lägger till ett felmeddelande. 
 +      $ok = false;  // Nu har ett fel hittats. 
 +    } 
 +  }
  
-    $ok = true // Variabeln håller reda på om något är fel. +  
-  +  if ($ok == true){  // Utförs om inga fel hittats
-    if(empty($_POST['namn'])){ // empty() kollar om inget är inmatat. +    $message = 'Namnet är ' . $_POST['namn'] . '<br>'; 
- $error = 'Du har inte angett namn.<br />'; +    if($_POST['namn'== $_POST['namn2']){ 
- $ok = false;  // Nu har ett fel hittats.+      $message $message.'SAMMA IGEN <br>';
     }     }
-    if($_POST['namn'] == 'Daniel'){ +  
- $error = 'Du får inte ange detta namn.<br />'; + 
- $ok = false;  // Nu har ett fel hittats. +
-    } +
-     +
-    if ($ok == true){  // Utförs om inga fel hittats. +
-       echo 'Namnet är ' . $_POST['namn'] . '<br />'; +
-       if($_POST['namn'] == $_POST['namn2']){ +
-         echo 'SAMMA IGEN <br />'; +
-       } +
-    +
-           +
 } else { } else {
 + 
   // $_POST['namn'] skapas om det inte finns för att undvika    // $_POST['namn'] skapas om det inte finns för att undvika 
   // fel i formuläret där det används.   // fel i formuläret där det används.
-  $_POST['namn']='';  +  $_POST['namn'] = ''; 
 } }
 + 
 include('head.php'); include('head.php');
-echo $error . '<br />'; // Skriver ut eventuellt felmeddelande eller tom sträng.+echo $message . '<br>'; // Skriver ut eventuellt meddelande eller tom sträng.
  
 +// Skriver ut felmeddelanden. 
 +$i = 0;
 +while ($i < count($errors)){
 +  echo '<div class="error">' . $errors[$i] . '</div>';
 +  $i++;
 +}
 +/*
 +.error {
 +  border: black 1px solid;
 +  color: red;
 +  padding: 10px;
 +  margin: 10px 0px;
 +}
 +*/
 + 
 // Skickar med ett "gömt" värde i formuläret för att kunna jämföra // Skickar med ett "gömt" värde i formuläret för att kunna jämföra
 // med nästa inmatning som görs. // med nästa inmatning som görs.
 echo ' echo '
 <form method="post"> <form method="post">
- <input type="text" placeholder="Namn" name="namn" /><br /+    <input type="text" placeholder="Namn" name="namn"><br
-    <input type="hidden" name="namn2" value="' . $_POST['namn'] . '" />+    <input type="text" placeholder="Ålder" name="alder"><br
 +    <input type="hidden" name="namn2" value="' . $_POST['namn'] . '">
     <input type="submit" name="submit" value="Skicka">     <input type="submit" name="submit" value="Skicka">
 </form> </form>
 ';  // Hela formuläret ligger i en "php-rad". ';  // Hela formuläret ligger i en "php-rad".
 + 
 include('foot.php'); include('foot.php');
-?>+?></code>
  
-</code>+Kolla upp [[http://www.php.net/manual/en/ref.strings.php|strängfunktionerna]] för att hantera html-taggar i saker som matas in i formulär.