Avatar billede cmol Nybegynder
21. september 2005 - 13:22 Der er 5 kommentarer

Problem med at få egen function til at virke.

Ok.. Hold godt fast..

Alt det her startede som en måde at se om en bruger havde skrevet alt det der skulle være i en omgang input felter, og hvis det ikke var gjort, så sende vedkommene tilbage til siden hvor formen er på...

Derfor skulle de informationer som vedkommene havde skrevet selvfølgelig osse være der..

Alt det udmundede i den her function:

<?PHP

function chekform($mode, $value, $valuename, $msg)
{
    if($mode == 1)
    {
        if(isset($_POST['$valuename']))
        {
            echo $_POST['$valuename'];
        }
    }
   
    elseif($mode == 2)
    {
        if(isset($_POST['missing']))
        {
            $pos = stripos($_POST['missing'], $valuename);
            if($pos !== false)
            {
                echo $msg;
            }
        }
    }

    elseif($mode == 3)
    {
        echo '<form name="sendback" method="post" action="';
        echo $_POST['scriptname'];
        echo '" >';
    }
   
   
    elseif($mode == 4)
    {
        $strlen = strlen($value);
        if($strlen <= 1)
        {
            if(!isset($missing))
            {
                $missing = $valuename;
            }
            else
            {
                $missing .= $valuename;
            }
           
            echo'<input type="hidden" name="';
            echo $valuename;
            echo'" value="';
            echo $value;
            echo '" >';
        }
    }
    elseif($mode == 5)
    {
        if(isset($missing))
        {
            echo '<input type="hidden" name="missing" value="';
            echo $missing;
            echo '">';
            $valok = 0;
        }
        else
        {
            $valok = 1;
        }
        echo '</form>';
        if(isset($missing))
        {
            echo '<script type="text/javascript">
                document.sendback.submit();
                </script>';
        }
    }
}
?>

Mode 1: Bruges til at skrive det som brugeren havde skrevet.
Mode 2: Bruges til at fortælle at brugeren mangler at skrive noget.
Mode 3: Laver starten til det der skal sendes tilbage.
Mode 4: Kontrollere om variablen er sat.
Mode 5: Slutte formen til at sende tilbage, og sender tilbage hvis nødvendigt.

Se.. Det er jo meget godt!.. Men det virker ikke!..
For at i osse har det med... Kører jeg siderne sådan her:

"temp.createnews.php"
//Indhold Start
echo '<!--Indhold start-->';

echo '
<table width="570">
<tr><td>

<h1>Opret kode</h1><br>
<form name"Form" method="post" action="temp.nyhed.gem.php?mode=function" onSubmit="return checkform();">
<input type="hidden" name"scriptname" value="';

echo 'http://';
echo $_SERVER['HTTP_HOST'];
echo $_SERVER['REQUEST_URI'];
echo '">
            <input type="hidden" name="mode" value="function">
            <p class="medium">Overskrift<br>
              <input class="input" value="';
              echo chekform(1, "", title, "");
              echo '" name="title">';
              echo chekform(2, "", title, "<p class=\"alert\">Du skal skrive en titel!<p>");
            echo '</p>
             
            <p class="medium">Navn:<br>
             
    <input class="input" maxlength="19" value="';
    echo chekform(1, "", name, "");
    echo '" name="name">';
    echo chekform(2, "", title, "<p class=\"alert\">Du skal skrive dit navn!<p>");
  echo '</p>




  <p class="medium">Nyheden:<br>
           
              <textarea class="input" name="text" value="';
              echo chekform(1, "", text, "");
              echo '" cols="50" rows="10" wrap="VIRTUAL"></textarea>
              <br>';
              echo chekform(2, "", title, "<p class=\"alert\">Du skal skrive en nyhed!<p>");
              echo '<br>
              <input type="Submit" class="input" value="Opret nyhed!">
            </p><br>
          </form>
<a href="login.logout.php?mode=function">Log ud</a>';

echo '</td></tr></table>';
echo '<!--Indhold slut-->';
//Indhold Slut


"temp.nyhed.gem.php"

echo chekform(3, "", "", "");
echo chekform(4, $_POST['title'], "title", "");
echo chekform(4, $_POST['name'], "name", "");
echo chekform(4, $_POST['text'], "text", "");
echo chekform(5, "", "", "");
echo $missing;
echo $scriptname;


if($valok == 1)
{
$time = time();

mysql_query("INSERT INTO elver_nyt (title, name, date, text) VALUES ('$title', '$name', '$time', '$text')") OR DIE (mysql_error());
mysql_close;
header("Location: index.php");
}


I stedet for at blive sendt tilbage. så sker der ingenting...

Og i html'en står det her:

<!--Content start-->
    <table width="570" height="0%">
    <tr>
    <td><form name="sendback" method="post" action="" ><input type="hidden" name="title" value="" ><input type="hidden" name="name" value="" ><input type="hidden" name="text" value="" ></form></td></tr>
   

   
    </table>
    <!--Content end-->


Puha!.. Det var sådan set mit problem... Det virker ikke!.. Så hvis du har fundet en fejl.. Eller har en idé... Eller har en anden måde at gøre det på som der virker... Så ville jeg være taknemmelig!.. :-)


På forhånd mange mange tak...
Claus :-)
Avatar billede jakobdo Ekspert
21. september 2005 - 13:34 #1
Jeg tror jeg ville kode din funktion på denne måde:

function chekform($mode, $value, $valuename, $msg)
{
    switch($mode)
    {
        case 1:
            if(isset($_POST['$valuename']))
        {
                echo $_POST['$valuename'];
        }
        break;
        case 2:
        if(isset($_POST['missing']))
        {
                $pos = stripos($_POST['missing'], $valuename);
                if($pos !== false)
                {
                    echo $msg;
                }
        }
        break;
        case 3:
        echo '<form name="sendback" method="post" action="';
        echo $_POST['scriptname'];
        echo '" >';
            break;
        case 4:
        $strlen = strlen($value);
        if($strlen <= 1)
        {
                if(!isset($missing))
                {
                    $missing = $valuename;
                }
                else
                {
                    $missing .= $valuename;
                }
        echo'<input type="hidden" name="';
        echo $valuename;
        echo'" value="';
        echo $value;
        echo '" >';
            }
            break;
        case 5:
        if(isset($missing))
            {
                echo '<input type="hidden" name="missing" value="';
                echo $missing;
                echo '">';
                $valok = 0;
            }
        else
        {
                $valok = 1;
        }
            echo '</form>';
        if(isset($missing))
        {
                echo '<script type="text/javascript">
                document.sendback.submit();
                </script>';
            }
        default:
            echo "Fejl mode";
    }
}

Men når du mener sende tilbage, hvad mener du så?
Tilbage så brugeren skal udfylde felterne igen?
Avatar billede cmol Nybegynder
21. september 2005 - 13:36 #2
Jep!.. Til at brugeren skal udfylde de felter som der ikke er blevet udfyldt!..
Og at de felter som han/hun hár udfyltd, stadigt er det..
Avatar billede jakobdo Ekspert
21. september 2005 - 13:38 #3
Prøv lige at udskriv din form her, uden noget andet kode!
(undskyld mig direkte sprog, men jeg synes det virker lidt uoverskueligt)
Avatar billede cmol Nybegynder
21. september 2005 - 13:39 #4
<form name"Form" method="post" action="temp.nyhed.gem.php?mode=function" onSubmit="return checkform();">
<input type="hidden" name"scriptname" value="';

echo 'http://';
echo $_SERVER['HTTP_HOST'];
echo $_SERVER['REQUEST_URI'];
echo '">
            <input type="hidden" name="mode" value="function">
            <p class="medium">Overskrift<br>
              <input class="input" value="';
              echo chekform(1, "", title, "");
              echo '" name="title">';
              echo chekform(2, "", title, "<p class=\"alert\">Du skal skrive en titel!<p>");
            echo '</p>
             
            <p class="medium">Navn:<br>
             
    <input class="input" maxlength="19" value="';
    echo chekform(1, "", name, "");
    echo '" name="name">';
    echo chekform(2, "", title, "<p class=\"alert\">Du skal skrive dit navn!<p>");
  echo '</p>




  <p class="medium">Nyheden:<br>
           
              <textarea class="input" name="text" value="';
              echo chekform(1, "", text, "");
              echo '" cols="50" rows="10" wrap="VIRTUAL"></textarea>
              <br>';
              echo chekform(2, "", title, "<p class=\"alert\">Du skal skrive en nyhed!<p>");
              echo '<br>
              <input type="Submit" class="input" value="Opret nyhed!">
            </p><br>
          </form>
Avatar billede showsource Seniormester
21. september 2005 - 13:54 #5
Evt. med sessions
<?php
session_start();

$message = "Skal udfyldes!";

function tjekform($var) {
global $message;
if(isset($_SESSION[$var])) {
    if($_SESSION[$var] == $message) {
    echo" * <font color=\"red\" size=-1\">". $_SESSION[$var] ."</font>";
    }else{
    echo" value=\"". $_SESSION[$var] ."\"";
        }
unset($_SESSION[$var]);
    }
}

if(isset($_POST["formsubmit"])) {
$_SESSION["fejlnr"] = 0;
$_SESSION["antal"] = 0;

    foreach($_POST as $key=>$value) {
    $_SESSION["fejlnr"]++;
        if(trim($value) == "") {
        $_SESSION["antal"]++;
        $_SESSION[$key. $_SESSION["fejlnr"]] = $message;
        }else{
        $_SESSION[$key] = $value;
        }
    }
header("Location:". $_SERVER["PHP_SELF"] ."");
exit;
}
?>
<html>

<head>
<title>Tjek formfelter</title>
</head>

<body>
<center>

<?php
if(isset($_SESSION["antal"]) && $_SESSION["antal"] != 0) {
echo"<b>Du mangler at udfylde ". $_SESSION["antal"] ." felter!</b><p>";
unset($_SESSION["antal"]);
}
?>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
<input type="hidden" name="formsubmit" value="true">

Tjek formfelter:<br>

<table><tr>
    <td>Navn</td>
    <td><input type="text" name="navn"<?php tjekform("navn"); ?>><?php tjekform("navn2"); ?></td>
</tr><tr>
    <td>Adresse</td>
    <td><input type="text" name="adresse"<?php tjekform("adresse"); ?>><?php tjekform("adresse3"); ?></td>
</tr><tr>
    <td>Postnr.</td>
    <td><input type="text" name="postnr" size="5"<?php tjekform("postnr"); ?>><?php tjekform("postnr4"); ?></td>
</tr><tr>
    <td>By.</td>
    <td><input type="text" name="city"<?php tjekform("city"); ?>><?php tjekform("city5"); ?></td>
</tr><tr>
    <td>Telefon</td>
    <td><input type="text" name="tlf"<?php tjekform("tlf"); ?>><?php tjekform("tlf6"); ?></td>
</tr><tr>
    <td>E-Mail</td>
    <td><input type="text" name="email"<?php tjekform("email"); ?>><?php tjekform("email7"); ?></td>
</tr>
</table>
<input type="submit" value="Tjek form">
</form>
</center>
</body>

</html>
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