Avatar billede celfa Nybegynder
01. marts 2012 - 14:25 Der er 7 kommentarer og
1 løsning

Søge funktion virker kun i Chrome?

Mine søge funktion virker kun i chrome.. Den virker ikke i IE og FF, er der nogen der kan hjælpe mig med en forklaring på det?

<div id="searchwrapper"><form method="post" action="search.php?go"  id="searchform" >
<input type="text" class="searchbox" name="name" id="foo" value="Søg efter menukort..." onfocus="clear('foo')" />
<input type="image" src="../images/blank.png" class="searchbox_submit" value="Search" name="submit" />
</form>


<?php

//Viser det der er blevet søgt på
echo '<h3>Resultater for din søgning på: '.$_POST['name'].'</h3>';

if(isset($_POST['submit'])){
if(isset($_GET['go'])){
if(preg_match("/[A-Z | a-z | 0-9]+/", $_POST['name'])){
   
//bytter æ,ø og å ud med deres html koder.   
$fra = array("æ", "ø", "å", "Æ", "Ø", "Å");
$til = array("&aelig;", "&oslash;", "&aring;", "&AElig;", "&Oslash;", "&Aring;");

$name=$_POST['name'];
$name1 = str_replace($fra, $til, $name);

//opretter forbindelse til db
$db=mysql_connect (XXX) or die ('Kan opette forbindelse til databasen fordi: ' . mysql_error());

//vælg database
$mydb=mysql_select_db("XXX");

//query sætning
$sql="SELECT x FROM x WHERE x LIKE '%" . $x . "%' OR city LIKE '%" . $x ."%' OR post LIKE '%" . $x ."%'";

//lader den løbe igennem
$result=mysql_query($sql);

//Laver starten af min tabel som resultaterne skal præsenteres i.

echo '<table id="alle" class="sortable" width="100%">';
        echo '<thead>';
        echo '<tr>';
        echo '<th>Navn</th>';
        echo '<th class="sorttable_nosort">Telefon nummer</th>';
        echo '<th class="sorttable_nosort">Adresse</th>';
        echo '<th>By</th>';
        echo '<th>Postnummer</th>';
        echo '</tr> ';
    echo '</thead>';
    echo '<tbody> ';

//laver et while loop som finder resultaterne
while($row=mysql_fetch_array($result)){

    $FirstName =$row['navn'];
    $LastName=$row['city'];
    $ID=$row['id'];
    $tlf=$row['tlf'];
    $post=$row['post'];
    $adresse=$row['adresse'];
       
//-array bliver outputtet som en tr per hit.
   
echo '<tr>';
            echo '<td><a href="showAll/'.urlencode($FirstName).'">'.$FirstName.'</a></td>';
            echo '<td>'.$tlf.'</td>';
            echo '<td>'.$adresse.'</td>';
            echo '<td>'.$LastName.'</td>';
            echo '<td>'.$post.'</td>';
        echo '</tr>';

}
//-afslutter loopet, og lukker tabellen af.
    echo '</tbody> ';
    echo '</table>';
}
    }
else{
echo "<p>Søg venligst efter navn eller by</p>";
}
}
?>

Håber i kan forstå koden :)
Avatar billede michael_stim Ekspert
01. marts 2012 - 14:34 #1
Det har næppe noget at gøre med din PHP kode. Du skal nok give os et link til din side, eller hele koden (HTML, CSS), hvis vi skal hjælpe.

Desuden kan du kigge på Ole's guide her til venstre, om prepared statement ;o) Har allerede henvist 2 gange i dag.
Avatar billede michael_stim Ekspert
01. marts 2012 - 14:56 #2
Og guiden finder du selvfølgelig i HØJRE side ;o)

Eller her:

http://www.eksperten.dk/guide/1480
Avatar billede olebole Juniormester
01. marts 2012 - 15:27 #3
<ole>

@celfa: Du begår en del fejl her. Lad os begynde med dit spørgsmål. Hvad betyder "Den virker ikke"? Det er den dårligst tænkelige problembeskrivelse. Fortæl i det allermindste, hvad der sker - hvad der ikke sker - og hvad du havde forventet ville ske.

Når det er sagt, må du aldrig kalde en knap for submit. At bruge ord, som bruges til andet, giver ofte problemer, hvis du også vil anvende JavaScript mod formen.

Derudover bruger du i PHP-scriptet knappen til at undersøge, om formen er sendt. Det er ikke en god idé. Brug i stedet et hidden felt:

<input name="context" value="search" type="hidden">

- og spørg på feltet i PHP-scriptet, så du ved, hvad der skal ske:

if (!empty($_POST) && isset($_POST['context']) && $_POST['context']=='search')

Sagen er nemlig, at den knap, du har valgt at bruge, opfører sig anderledes end andre knapper. Prøv fælgende kode i et alm. HTML-dokument og se, hvad der kommer til stå i adresselinjen:

<form action="">
    <p><input name="foo" type="text"></p>
    <p><input name="bar" type="image" src="http://www.eksperten.dk/images/eksperten_logo.gif">
</form>

Der kommer til at stå noget i stil med:

?foo=blabla&bar.x=109&bar.y=45

- hvor bar.x og bar.y er koordinaterne for det punkt, hvori brugeren klikkede.

Derudover er der ingen grund til at udskifte skandinaviske tegn (æ, ø, å, osv) med entities. I stedet bør du få styr på det tegnsæt, du vil bruge - hvilket i øvrigt bør være utf-8. Så vil du ikke have problemer med specialtegn.

Derudover bruger du et hav af overflødige echo'er! Du bør i stedet samle en streng og skrive denne ud én gang. Det performer langt bedre.

Du bør ikke rode HTML- og PHP-kode sammen. Læg dine PHP-funktioner i toppen af dokumentet. Funktionerne kalder databasen - sammensætter en HTML-streng - og returnerer denne. Så kan du 'nede' i HTML'en nøjes med at skrive noget i stil med:

<div>
<?php echo get_search_results() ?>
</div>

- hvilket giver en langt mere overskuelig og vedligeholdelsesvenlig kode.

Sluttelig står dit script pivåbent for enhver, der vil smadre din database. Læs den guide, michael_stim henviser til og kom igang med at skrive mere tidssvarende databasekode  *o)

/mvh
</bole>
Avatar billede olebole Juniormester
01. marts 2012 - 15:29 #4
Hmmm ... nu må jeg snart huske at escape for Ekspertens URL-parser  :o|

Formeksemplet skulle se sådan ud:

<form action="">
    <p><input name="foo" type="text"></p>
    <p><input name="bar" type="image" src="http://www.eksperten.dk/images/eksperten_logo.gif">
</form>
Avatar billede olebole Juniormester
01. marts 2012 - 15:30 #5
- og så glemte jeg zq også at lukke det sidste <p>

<form action="">
    <p><input name="foo" type="text"></p>
    <p><input name="bar" type="image" src="http://www.eksperten.dk/images/eksperten_logo.gif"></p>
</form>
Avatar billede olebole Juniormester
01. marts 2012 - 15:36 #6
- og så undgå i øvrigt at sammenblande post og get:

<form method="post" action="search.php?go" ...>

Det er noget rod! Brug i stedet et hidden felt til go, så du kan finde det med $_POST['go'].

Meeeeeen ... der er da trods alt huller mellem fejlene  =)
Avatar billede celfa Nybegynder
25. april 2012 - 16:09 #7
Tusinde tak for din svar, har fået rettet det lidt til nu, jeg ved ikke hvad det var der gjorde forskellen men pludselig virkede den. Tak for din tid.

Smid svar :)
Avatar billede celfa Nybegynder
14. maj 2013 - 09:43 #8
Der kom ikke noget svar, så jeg lukker tråden. Mange tak for din hjælp!
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