Avatar billede scapuliz Nybegynder
12. december 2005 - 22:17 Der er 8 kommentarer og
1 løsning

Søge funktion

Jeg vil have den til at finde en bruger, men man skal ikke behøve at fylde alle felterne ud, kun det man ved.



------------------------------------------------
<form method="get" action="<?php echo $_SERVER["PHP_SELF"]; ?>">

Find bruger:<br>



    <input name="brugernavn" value="brugernavn"><br>
    <input name="alder" value="alder"><br>
    <input name="navn" value="navn"><br>
    <input name="email" value="e-mail"><br>

    <input name="search" value="search" type="submit">


</form>



<?php
if (isset($_GET["search"])) {

include ("connect.php");


$query = mysql_query("SELECT * FROM bruger WHERE brugernavn='{$_GET['brugernavn']}' OR alder='{$_GET['alder']}'  OR navn='{$_GET['alder']} OR email='{$_GET['email']} ORDER BY brugernavn ");



    $antal = mysql_num_rows($query);



    if ($antal > 0) {
    echo "Der blev fundet ".$antal." resultater.<br>";




        while ($row = mysql_fetch_array($query)) {     



              echo "<a href='profil.php?brugernavn=" . ($row["brugernavn"]) ."'>" . $row['brugernavn'] . "</a><br>";


}
}
}
Avatar billede jakobdo Ekspert
12. december 2005 - 22:20 #1
Når du bruger OR, så vil den søge på de info den får!
Så din kode skulle faktisk virke!
Avatar billede ajenbo Nybegynder
12. december 2005 - 22:41 #2
Pt vil den være en smugle upræsis.

sammel istedet de infor den får sammen og brug AND.

$brugernavn = $_GET['brugernavn']
$alder = $_GET['alder']
$navn = $_GET['navn']
$email = $_GET['email']

if($brugernavn && !$where)
$where = "brugernavn='".$brugernavn."'";
elseif($brugernavn)
$where .= "AND brugernavn='".$brugernavn."'";

if($alder && !$where)
$where = "alder='".$alder."'";
elseif($alder)
$where .= "AND alder='".$alder."'";

if($navn && !$where)
$where = "navn='".$navn."'";
elseif($alder)
$where .= "AND navn='".$navn."'";

if($email&& !$where)
$where = "email='".$email."'";
elseif($email)
$where .= "AND email='".$email."'";

$query = mysql_query("SELECT * FROM bruger WHERE $where");
Avatar billede jakobdo Ekspert
13. december 2005 - 07:55 #3
Sådan er måske lidt pænere!
Og så er du kan der hellere ikke laves sql injections:

$brugernavn = mysql_real_escape_string($_GET['brugernavn']);
$alder      = mysql_real_escape_string($_GET['alder']);
$navn      = mysql_real_escape_string($_GET['navn']);
$email      = mysql_real_escape_string($_GET['email']);

$searchArray = array();

if(!empty($brugernavn))
{
    $searchArray[] = "brugernavn='".$brugernavn."'";
}

if(!empty($alder))
{
    $searchArray[] = "alder='".$alder."'";
}

if(!empty($navn))
{
    $searchArray[] = "navn='".$navn."'";
}

if(!empty($email))
{
    $searchArray[] = "email='".$email."'";
}

$where = implode(" AND ",$searchArray);
$query = mysql_query("SELECT * FROM bruger WHERE $where");
Avatar billede scapuliz Nybegynder
13. december 2005 - 19:47 #4
Den finder slet ikke noget nu :P
Når man bruger AND skal man så ikke fylde alle felterne korrekt ud ?
-----------------------------
<form method="get" action="<?php echo $_SERVER["PHP_SELF"]; ?>">

Find bruger:<br>


    <input name="brugernavn" value="brugernavn"><br>
    <input name="alder" value="alder"><br>
    <input name="navn" value="navn"><br>
    <input name="email" value="e-mail"><br>

    <input name="search" value="search" type="submit">


</form>

<?php
if (isset($_GET["search"])) {

$brugernavn = mysql_real_escape_string($_GET['brugernavn']);
$alder      = mysql_real_escape_string($_GET['alder']);
$navn      = mysql_real_escape_string($_GET['navn']);
$email      = mysql_real_escape_string($_GET['email']);

$searchArray = array();

if(!empty($brugernavn))
{
    $searchArray[] = "brugernavn='".$brugernavn."'";
}

if(!empty($alder))
{
    $searchArray[] = "alder='".$alder."'";
}

if(!empty($navn))
{
    $searchArray[] = "navn='".$navn."'";
}

if(!empty($email))
{
    $searchArray[] = "email='".$email."'";
}

$where = implode(" AND ",$searchArray);

include("connect.php");

$query = mysql_query("SELECT * FROM bruger WHERE $where");



    $antal = mysql_num_rows($query);



    if ($antal > 0) {
    echo "Der blev fundet ".$antal." resultater.<br>";




        while ($row = mysql_fetch_array($query)) {     



              echo "<a href='profil.php?brugernavn=" . ($row["brugernavn"]) ."'>" . $row['brugernavn'] . "</a><br>";

}
}
}
Avatar billede jakobdo Ekspert
13. december 2005 - 23:23 #5
Jo, men den tager kun de felter som er udfyldt i første omgang!
Prøv evt at echo: $where og se hvad den indeholder.
Avatar billede scapuliz Nybegynder
15. december 2005 - 17:10 #6
den skriver sslet ikke noget nå jeg echo den  men link ser ud til at være ok du kan  jo se for dig selv http://scapuliz.dk/a/search2.php du kan søge efter brugernavn = rune mail = rune@mail.com
Avatar billede ajenbo Nybegynder
15. december 2005 - 19:47 #7
Siden du har en standart værdi i alle dine søge flter skal du lige sige den skal ignorere dem.

if($brugernavn && $brugernavn != "brugernavn") {
    $searchArray[] = "brugernavn='".$brugernavn."'";
}

if($alder && $alder != "alder") {
    $searchArray[] = "alder='".$alder."'";
}

if($navn && $navn != "navn") {
    $searchArray[] = "navn='".$navn."'";
}

if($email != "e-mail") {
    $searchArray[] = "email='".$email."'";
}
Avatar billede scapuliz Nybegynder
04. november 2006 - 14:01 #8
svar
Avatar billede jakobdo Ekspert
04. november 2006 - 20:21 #9
Så du fandt et svar kan jeg se?
Husk at smid dig svar herind, så andre kan finde hjælp i denne tråd.
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