Avatar billede tcp Nybegynder
29. juli 2009 - 22:19 Der er 6 kommentarer og
2 løsninger

Enter til at køre en form

Har søgt og søgt og prøvet en masse.... men kan ikke få enter til at virke med min form den poster ikke indholdet når jeg trykker på enter den loder bare siden igen ?


Form :

    <form id="search" action="sf2.php" method="post">
    <input type="text" name="search" size="30">
    <input type="submit" name="submit" value="Søg" />
    </form>


Hele koden:

if(isset($_POST['submit'])){ //if the form was submited
    $search = $_POST['search']; //put in $search what the user entered
    if(trim($search) == ''){ //if the user didn't type a keyword
        $errors = '<font color="red">Du skal indtaste din søgning</font><br /><br />';
    }
    if($errors == ''){ //if we don't have any errors
                      // $search holds what the user typed
        $query = "SELECT * from news WHERE title LIKE '%$search%' OR post LIKE '%$search%' OR author LIKE '%$search%'";
        $result = mysql_query($query) or die(mysql_error());
        if($result){
            display_form();//redisplay the search box
            echo "<h1>Søgeresultat fandt ". mysql_num_rows($result)." hits </h1><br />";
            echo "<ul>";
            while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){
                $mess=$row['post'];
                //$view = "forum/setopic.php?id=".row['id'];
                echo "<li><a href=forum/setopic.php?id=".$row['id'].">".$row['title'].'</a></li>';
                echo '<p style="margin-right:100px;margin-top: 0px;">'.snippet($mess, 200, true).'</p>';//bring only 200 chars from datatabase
            }
        }
    }
}

if(!isset($_POST['submit']) || $errors != '?????'){
  echo $errors;
  display_form();//display first time the search box
}


function display_form(){
    ?>
    <form id="search" action="sf2.php" method="post">

    <input type="text" name="search" size="30">
    <input type="submit" name="submit" value="Søg" />
    </form>
    <?php
    } 
function snippet($text, $chars, $dots = false)
    {
        $end_char = substr($text, $chars, 1);
        if(preg_match('#S#', $end_char))
        {
            $chars += strpos($text, ' ', $chars) - $chars;
        }
        $ret = ($dots) ? substr($text, 0, $chars) . '...' : substr($text, 0, $chars);
        return $ret ;
    }
Avatar billede zuran Nybegynder
29. juli 2009 - 23:35 #1
Du har følgende to linjer i din kode:

if(isset($_POST['submit'])){ //if the form was submited

if(!isset($_POST['submit']) || $errors != '?????'){

De tjekker jo netop, om din submit knap med navn "submit" er blevet anvendt (Trykket på). I de tilfælde, hvor der trykkes enter til at submitte, bliver der jo ikke trykket på knappen.
Avatar billede olebole Juniormester
30. juli 2009 - 09:36 #2
<ole>

Regel #1: Brug aldrig navne som 'submit' til form- eller andre -elementer.

Derudover kan man kun finde knappens navn/værdi på serveren, hvis der klikkes på den. Skriv i stedet:

<form id="search" action="sf2.php" method="post">
<input type="hidden" name="contxt" value="blabla">

- og så i PHP dokumentet:

if (isset($_POST["contxt"]) && $_POST["contxt"]=="blabla") {
    // kode
}

/mvh
</bole>
Avatar billede tcp Nybegynder
30. juli 2009 - 19:52 #3
Ole det hele er i sf2.php


if(isset($_POST['submit'])){ //if the form was submited
    $search = $_POST['search']; //put in $search what the user entered
    if(trim($search) == ''){ //if the user didn't type a keyword
        $errors = '<font color="red">Du skal indtaste din søgning</font><br /><br />';
    }
    if($errors == ''){ //if we don't have any errors
                      // $search holds what the user typed
        $query = "SELECT * from news WHERE title LIKE '%$search%' OR post LIKE '%$search%' OR author LIKE '%$search%'";
        $result = mysql_query($query) or die(mysql_error());
        if($result){
            display_form();//redisplay the search box
            echo "<h1>Søgeresultat fandt ". mysql_num_rows($result)." hits </h1><br />";
            echo "<ul>";
            while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){
                $mess=$row['post'];
                //$view = "forum/setopic.php?id=".row['id'];
                echo "<li><a href=forum/setopic.php?id=".$row['id'].">".$row['title'].'</a></li>';
                echo '<p style="margin-right:100px;margin-top: 0px;">'.snippet($mess, 200, true).'</p>';//bring only 200 chars from datatabase
            }
        }
    }
}

if(!isset($_POST['submit']) || $errors != ''){
  echo $errors;
  display_form();//display first time the search box
}


function display_form(){
    ?>
    <form id="search" action="sf2.php" method="post">
    <input type="text" name="search" size="30">
    <input type="submit" name="submit" value="Søg" />
    </form>
    <?php
    } 
function snippet($text, $chars, $dots = false)
    {
        $end_char = substr($text, $chars, 1);
        if(preg_match('#S#', $end_char))
        {
            $chars += strpos($text, ' ', $chars) - $chars;
        }
        $ret = ($dots) ? substr($text, 0, $chars) . '...' : substr($text, 0, $chars);
        return $ret ;
    }
Avatar billede zuran Nybegynder
30. juli 2009 - 21:23 #4
Hvor vil du hen med det tcp? Den kode har du jo allerede postet.

Som nævnt, så kan du ikke anvende Enter til submit, eftersom du har et tjek, der kræver at din knap anvendes. Det er fejlen.

Så som et alternativ, er det Ole foreslår, at du kan bruge et skjult felt, for at tjekke, om formen er udført.
Avatar billede tcp Nybegynder
02. august 2009 - 17:13 #5
Ja skulle barelige forstå hvad i mente :-)
Takk for hjælpen



BAre send svar !
Avatar billede olebole Juniormester
02. august 2009 - 17:31 #6
Selvtak. Læg et svar, zuran - så deler vi  =)
Avatar billede zuran Nybegynder
03. august 2009 - 15:12 #7
Javel, svar :-)
Avatar billede olebole Juniormester
03. august 2009 - 21:20 #8
Hehe ... det var nu ikke ment som en ordre  ;o)

Tak for points  =)
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