Avatar billede overgreat Forsker
09. juli 2005 - 10:55 Der er 4 kommentarer og
1 løsning

Hvordan gøres denne søgefunktion dynamisk?

Nedenstående søgeformular virker (i samarbejde med JAW!).

Den giver dog et problem som jeg ikke kan løse:

Følgende linie virker på følgende måde:
$maerke = ($_POST['maerke'] == 1) ? "'2','3','4'" : "'".$_POST['maerke']."'";

---------------
I øjeblikket er der 3 bilmærker i bil-tabellen. Id=1 er valg af alle mærker; ID=2,3,4 er de tre mærker.

Vælges ID=1 vælger den 2,3,4; dvs dem alle sammen. Vælges en af de tre andre ID-numre vælges det pågældende mærke.

SPØRGSMÅLET JEG HAR ER:
Når jeg nu får flere bilmærker ind i bil-tabellen får jeg det problemer at den ikke automatisk kommer med i vælg alle mærker (når jeg vælger id=1).

Jeg har prøvet at erstatte:

? "'2','3','4'"

med

? "*"

men det var den ikke glad for!
(Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\www\henrik\gdo\dan\soeg1.php on line 16)

ER DER IKKE EN MÅDE HVORPÅ JEG KAN FÅ DEN TIL AT VÆLGE ALLE MÆRKERNE NÅR ID=1?
----------------------







------------------------------------

<?
if($_GET['up'] == "ja"){
    include("config.php");
    $db = mysql_connect($server, $user, $pass);
    mysql_select_db($database, $db);

    $maerke = ($_POST['maerke'] == 1) ? "'2','3','4'" : "'".$_POST['maerke']."'";
    $foresp = mysql_query("
    SELECT bil_bil.id, bil_bil.maerke, bil_bil.model, bil_bil.type, bil_maerke.maerke as maerke1
      FROM bil_bil
      LEFT JOIN bil_maerke ON bil_maerke.id = bil_bil.maerke
      WHERE bil_bil.maerke IN($maerke)
      ORDER BY bil_bil.maerke desc
    ");
   
    while($data = mysql_fetch_array($foresp)) {
      echo $data['maerke1'];
    }
}else{
?>

    <h5><b><font size=4>Søg</font></b><p>

    <FORM METHOD=POST ACTION='soeg1.php?action=soeg&amp;up=ja'>

<select name="maerke">
<?

  include("config.php");

  $db = mysql_connect($server, $user, $pass);

  mysql_select_db($database, $db);

$foresp = mysql_query("SELECT maerke, id FROM bil_maerke ORDER BY maerke");
  include("config.php");

  $db = mysql_connect($server, $user, $pass);

  mysql_select_db($database, $db);

while ($data = mysql_fetch_row($foresp)){

echo "<option value='$data[1]'>$data[0]</option>";

}
?>
</select>
<select name="model">
<?

  include("config.php");

  $db = mysql_connect($server, $user, $pass);

  mysql_select_db($database, $db);

$foresp = mysql_query("SELECT model, id FROM bil_model ORDER BY model");
  include("config.php");

  $db = mysql_connect($server, $user, $pass);

  mysql_select_db($database, $db);

while ($data = mysql_fetch_row($foresp)){

echo "<option value='$data[1]'>$data[0]</option>";

}
?>
</select>
<select name="type">
<?

  include("config.php");

  $db = mysql_connect($server, $user, $pass);

  mysql_select_db($database, $db);

$foresp = mysql_query("SELECT type, id FROM bil_type ORDER BY type");
  include("config.php");

  $db = mysql_connect($server, $user, $pass);

  mysql_select_db($database, $db);

while ($data = mysql_fetch_row($foresp)){

echo "<option value='$data[1]'>$data[0]</option>";

}
?>
</select>

<INPUT TYPE=SUBMIT VALUE="  Søg  ">
</h5>

<?
}
?>
Avatar billede xyborx Nybegynder
09. juli 2005 - 11:16 #1
Kan du ikke bare udelade WHERE, hvis $_POST['maerke']=='1'?

    $foresp = mysql_query("
    SELECT bil_bil.id, bil_bil.maerke, bil_bil.model, bil_bil.type, bil_maerke.maerke as maerke1
      FROM bil_bil
      LEFT JOIN bil_maerke ON bil_maerke.id = bil_bil.maerke
      ".($_POST['maerke']=='1'?'':'WHERE bil_bil.maerke='.$_POST['maerke'])."
      ORDER BY bil_bil.maerke desc
    ");
Avatar billede overgreat Forsker
09. juli 2005 - 15:46 #2
Hej xyborx

Det virker!

Men hvordan får jeg skrevet $model og $type ind i $foresp?

De er bygget op på samme måde som $maerke.

Håber du kan hjælpe!
Avatar billede xyborx Nybegynder
09. juli 2005 - 15:55 #3
Det er en anelse mere tricky, men jeg kan da prøve :)

    $where=array();
    if($_POST['maerke']!='1')
    {
        $where[]="bil_bil.maerke='".$_POST['maerke']."'";
    }
    if($_POST['model']!='1')
    {
        $where[]="bil_bil.model='".$_POST['model']."'";
    }
    if($_POST['type']!='1')
    {
        $where[]="bil_bil.type='".$_POST['type']."'";
    }

    $foresp = mysql_query("
    SELECT bil_bil.id, bil_bil.maerke, bil_bil.model, bil_bil.type, bil_maerke.maerke as maerke1
      FROM bil_bil
      LEFT JOIN bil_maerke ON bil_maerke.id = bil_bil.maerke
      ".(count($where)?"WHERE ".implode(" AND ",$where):"")."
      ORDER BY bil_bil.maerke desc
    ");
Avatar billede overgreat Forsker
09. juli 2005 - 19:04 #4
HElt suverænt!!!!!!!!

Du har givet mig løsningen på mit problem......

Samtidigt med at du har lært mig lidt om Array-brugen!!!!

Sender du et svar.
Avatar billede xyborx Nybegynder
09. juli 2005 - 19:11 #5
Jeg elsker bare arrays ;) Hvis man bruger dem rigtigt, så kan de gøre en del opgaver meget nemmere at løse.
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

IT-JOB