Avatar billede mads375 Juniormester
29. oktober 2014 - 19:11 Der er 2 kommentarer og
1 løsning

søgefunktion

Hejsa.

Jeg er igang med at lære PHP. Jeg har lavet mig en indeks side, men en tilhørende connection til database. Som siden ser ud nu, får jeg returneret hvad jeg har i min database. Men jeg vil gerne prøve at lave en søgefunktion med ID. Så hvis man fx søger efter ID: "6", så skulle man få returneret hvad der er i denne streng. Er der en som kan give mig et hint til hvad jeg skal gøre? Mine sider ser sådan ud:

Index:

<html>
<head></head>

<body>
<a href="test.php">Test</a></br><br>

<form method="post" action="connection.php">
    <input type="text" name="search">
    <input type="submit" name="submit" value=" Search ">
</form>
<?php

include 'connection.php';

//select a database to work with
$selected = mysql_select_db("examples",$dbhandle)
  or die("Could not select examples");

//execute the SQL query and return records
$result = mysql_query("SELECT id, name, year FROM cars");

//fetch tha data from the database
while ($row = mysql_fetch_array($result)) {
  echo "ID: ".$row{'id'}.". Name: ".$row{'name'}.", Year: ".$row{'year'}."<br>"; //display the results
}


//close the connection
mysql_close($dbhandle);
?>
</body>
</html>
__________

connection.php:

<?php

$username = "root";
$password = "root";
$hostname = "127.0.0.1:8889";

//connection to the database
$dbhandle = mysql_connect($hostname, $username, $password)
or die("Unable to connect to MySQL");
echo "Connected to MySQL<br><br>";
?>
__________

Hvad jeg får vist i browseren:
Connected to MySQL

ID: 1. Name: Mercedes, Year: 2000
ID: 2. Name: BMW, Year: 2004
ID: 3. Name: Audi, Year: 2001
ID: 4. Name: Ferrari, Year: 2013
ID: 5. Name: Lamborghini, Year: 2012
ID: 6. Name: Mazda, Year: 2010

jeg tænker umiddelbart man skal loope igennem en specifik ID rækken, eller?

Mvh Mads
Avatar billede mads375 Juniormester
29. oktober 2014 - 19:47 #1
<?php
    include 'connection.php';
   
    $query = $_GET['query'];

   
    $min_length = 3;

   
    if(strlen($query) >= $min_length){
       
        $query = htmlspecialchars($query);
       
       
        $query = mysql_real_escape_string($query);
     
       
        $raw_results = mysql_query("SELECT * FROM cars
            WHERE (`id` LIKE '%".$query."%') OR (`name` LIKE '%".$query."%')") or die(mysql_error());
           
     
       
        if(mysql_num_rows($raw_results) > 0){
           
            while($results = mysql_fetch_array($raw_results)){
       
           
                echo "<p><h3>".$results['id']."</h3>".$results['name']."</p>";
           
            }
           
        }
        else{
            echo "No results";
        }
       
    }
    else{
        echo "Minimum length is ".$min_length;
    }
?>
29. oktober 2014 - 21:34 #2
Det fik du så selv løst.  Jeg finder også tit og ofte, at det at formulere et spørgsmål kan være en hjælp til at løse det.
Avatar billede arne_v Ekspert
30. oktober 2014 - 01:23 #3
$query = htmlspecialchars($query);

skal vist ikke vaere der.
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

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