Avatar billede jolly_jay Nybegynder
11. april 2003 - 20:16 Der er 9 kommentarer og
1 løsning

Tjekke on fejl

Hvordan får jeg php'en til at tjekke om nogle inputs er tomme og hvis de er gå tilbage til den oprindelige side ig vise hvilke fejl der er?

Jeg har prøvet noget i denne stil, men det virker ikke...:

if ($action == 'opret')
{
$opret = $_REQUEST["opret"];
$navn = $_REQUEST["navn"];
$startdato = $_REQUEST["startdato"];
$startkl = $_REQUEST["startkl"];
$slutdato = $_REQUEST["slutdato"];
$slutkl = $_REQUEST["slutkl"];
$sted = $_REQUEST["sted"];

if ($opret)
{

  if ($navn == '')
  {
    $fejlnavn = '1';
  }

  if ($startdato == '' || $startkl == '')
  {
    $fejlstart = '1';
  }

  if ($slutdato == '' || $slutkl == '')
  {
    $fejlslut = '1';
  }

  if ($sted == '')
  {
    $fejlsted = '1';
  }

  if ($pris == '')
  {
    $fejlpris = '1';
  }

  if ($fejlnavn == '1' || $fejlstart == '1' || $fejlslut == '1' || $fejlsted == '1' || $fejlpris == '1')
  {
  $opret ='';
  header('location: /admin/?mode=party&action=opret');
  }
  else
  {
    require($_SERVER["DOCUMENT_ROOT"] . "/db.php");
    $sted = str_replace("\n","<br>",$sted);
    mysql_query("INSERT INTO party (navn, startdato, startkl, slutdato, slutkl, sted, pris) VALUES ('$navn', '$startdato', '$startkl', '$slutdato', '$slutkl', '$sted', '$pris')");
    mysql_close;
    header('Location: /admin/');
  }

}
else
{
require($_SERVER["DOCUMENT_ROOT"] . "/design/top.php");
?>
<table width='500' height='300' border='0' celpadding='0' cellspacing='0' bgcolor='#000000'>
  <tr>
    <td BGCOLOR="#000000">
      <table width='100%' height='100%' border='0' celpadding='0' cellspacing='0'>
        <TR>
          <TD bgcolor='#eeeeee'>
            <FORM ACTION="?mode=party&action=opret" METHOD="POST">
            <INPUT TYPE="hidden" VALUE="1" NAME="opret">
            <center>
            <TABLE BORDER="1" WIDTH="300">
            <TR>
                <TD ALIGN="center" COLSPAN="3"><B>Opret Party:</B></TD>
            <TR>
<?
if ($fejlnavn == '1'){
?>
            <TR>
                <TD ALIGN="center" COLSPAN="2"><B><FONT COLOR="#FF0000">Du har ikke skrevet noget navn</FONT></B></TD>
            <TR>
<?}?>
                <TD ALIGN="left">Navn:</TD>
                <TD><INPUT TYPE="text" SIZE="20" NAME="navn" VALUE="<? echo $navn; ?>"></TD>
            </TR>
<?
if ($fejlstart == '1'){
?>
            <TR>
                <TD ALIGN="center" COLSPAN="2"><B><FONT COLOR="#FF0000">Du har ikke skrevet noget start tidspunkt</FONT></B></TD>
            <TR>
<?}?>
            <TR>
                <TD ALIGN="left">Start:</TD>
                <TD><INPUT TYPE="text" SIZE="10" MAXLENGTH="8" NAME="startdato" VALUE="<? echo $startdato; ?>">&nbsp;kl.<INPUT TYPE="text" SIZE="5" MAXLENGTH="5" NAME="startkl" VALUE="<? echo $startkl ?>"></TD>
            </TR>
<?
if ($fejlslut == '1'){
?>
            <TR>
                <TD ALIGN="center" COLSPAN="2"><B><FONT COLOR="#FF0000">Du har ikke skrevet noget slut tidspunkt</FONT></B></TD>
            <TR>
<?}?>
            <TR>
                <TD ALIGN="left">Slut:</TD>
                <TD><INPUT TYPE="text" SIZE="10" MAXLENGTH="8" NAME="slutdato" VALUE="<? echo $slutdato; ?>">&nbsp;kl.<INPUT TYPE="text" SIZE="5" MAXLENGTH="5" NAME="slutkl" VALUE="<? echo $slutkl ?>"></TD>
            </TR>
<?
if ($fejlsted == '1'){
?>
            <TR>
                <TD ALIGN="center" COLSPAN="2"><B><FONT COLOR="#FF0000">Du har ikke skrevet noget sted</FONT></B></TD>
            <TR>
<?}?>
            <TR>
                <TD ALIGN="left" VALIGN="top">Sted:</TD>
                <TD COLSPAN="2"><TEXTAREA WRAP="off" ROWS="3" COLS="20" NAME="sted"><? echo $sted; ?></TEXTAREA></TD>
            </TR>
<?
if ($fejlpris == '1'){
?>
            <TR>
                <TD ALIGN="center" COLSPAN="3"><B><FONT COLOR="#FF0000">Du har ikke skrevet nogen pris</FONT></B></TD>
            <TR>
<?}?>
            <TR>
                <TD>Pris:</TD>
                <TD COLSPAN="2"><INPUT TYPE="text" SIZE="5" MAXLENGTH="3" NAME="pris" VALUE="<? echo $pris; ?>">&nbsp;kr.</TD>
            </TR>
            <TR>
                <TD COLSPAN="3" ALIGN="center"><INPUT TYPE="submit" VALUE="opret">&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="reset" VALUE="slet alt"></TD>
            </TR>
            </TABLE>
            </center>
            </FORM>
          </td>
        </tr>
      </TABLE>
    </td>
  </tr>
</table>
<?
require($_SERVER["DOCUMENT_ROOT"] . "/design/bund.php");
}
}

Hvordan får jeg det til at virker?
Avatar billede fangel Nybegynder
11. april 2003 - 20:24 #1
først skal du have en lille lektion om server-side sprog, og derefter kan vi snakke om at rette fejlen...

---

PHP er et såkaldt server-side sprog, dvs at når webserveren for et "request" af en side der ender på .php(3), så sender den lige siden forbi PHP fortolkeren før den sender den til brugeren...

Det PHP fortolkeren gør er at lede efter steder der begynder med <?php og ænder med ?>, hvis den finder sådanne steder, så fortolker den det som PHP, når den så er færdig med den side, så lukkes PHP fortolkeren igen, og alle variabler der IKKE er session variabler (eller ligger lokalt på brugerens computer i form af en cookie) vil blive GLEMT...

---

ALTSÅ, før at du rette din fejl, skal du vælge hvordan du vil vælge at få PHP til at gemme dine variabler, så PHP kan huske dem til næste gang PHP for en side tilsendt fra samme IP (og session)...

du har svarmulighedderne

a) session variabler
b) cookies

når du så har valgt en af disse svar, så kan vi snakke om hvordan du laver dit script, så den får gemt disse variabler, og kan huske dem til næste gang...

Morten
Avatar billede spoonbender Nybegynder
11. april 2003 - 21:07 #2
if (isset($varname)) {....} checker om variablen $varname er sat. (Hvis data stammer fra en html-form, vil funktionen give false hvis input-feltet var tomt)
Avatar billede fangel Nybegynder
12. april 2003 - 11:43 #3
spoonbender => korrekt, men dette hjælper ham ikke, da han jo skal bruge en måde at huske hvilke indtastninger der er forkerte...

Morten
Avatar billede jolly_jay Nybegynder
12. april 2003 - 11:44 #4
ok, jeg har ikke leget så meget med sessions endnu, men hvordan kan jeg på en nem måde løse mit problem, med sessions?
Avatar billede schaefner Juniormester
12. april 2003 - 13:54 #5
Det er vel sådan noget her du ønsker?
http://www.schaefner.dk/form.php
Avatar billede jolly_jay Nybegynder
12. april 2003 - 20:17 #6
jo det er det...
Avatar billede schaefner Juniormester
12. april 2003 - 20:28 #7
Du kan prøve at kigge på dette lille hurtig sammenflækkede eksempel:

--- form.php ---

<?php
session_start();
?>
<html>
<head>
<style type="text/css">
body,td {font-size: 11px; font-family: verdana}
.fejl {font-weight: bold; color: red}
</style>
</head>

<body>

<h3>Indtast værdier</h3>
<form method="post" action="post.php">
<input type="text" name="felt1" value="<? echo $_SESSION['felt1']; ?>"> <? if(empty($_SESSION['felt1']) && isset($_SESSION['f'])) echo "<span class=fejl>Fejl!</span>"; ?><br>
<input type="text" name="felt2" value="<? echo $_SESSION['felt2']; ?>"> <? if(empty($_SESSION['felt2']) && isset($_SESSION['f'])) echo "<span class=fejl>Fejl!</span>"; ?><br>
<input type="text" name="felt3" value="<? echo $_SESSION['felt3']; ?>"> <? if(empty($_SESSION['felt3']) && isset($_SESSION['f'])) echo "<span class=fejl>Fejl!</span>"; ?><br>
<input type="text" name="felt4" value="<? echo $_SESSION['felt4']; ?>"> <? if(empty($_SESSION['felt4']) && isset($_SESSION['f'])) echo "<span class=fejl>Fejl!</span>"; ?>
<br><br><input type="submit" name="send" value="Post">
</form>

</body>
</html>

--- post.php ---

<?php
session_start();
if($_POST['felt1'] == "" || $_POST['felt2'] == "" || $_POST['felt3'] == "" || $_POST['felt4'] == "") {
    $_SESSION['felt1'] = $_POST['felt1'];
    $_SESSION['felt2'] = $_POST['felt2'];
    $_SESSION['felt3'] = $_POST['felt3'];
    $_SESSION['felt4'] = $_POST['felt4'];
    $_SESSION['f'] = "on";
    header("location: form.php");
} else {
    echo "De er alle sat";
}
?>
Avatar billede jolly_jay Nybegynder
12. april 2003 - 20:35 #8
Jeg har ikke lige tid idag til at prøve det. Jeg ser på det imorgen.
Avatar billede jolly_jay Nybegynder
29. april 2003 - 14:48 #9
schaefner: takker for hjælpen vil du have points?
Avatar billede jolly_jay Nybegynder
09. maj 2003 - 22:11 #10
hmmm igen svar...
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester