Avatar billede overgreat Forsker
07. juli 2005 - 18:38 Der er 15 kommentarer og
1 løsning

problemer til at få søgeformular til at vælge alle i gruppe

Nedenstående søgeformular virker, når man ønsker at søge efter biler.

Jeg har mulighed for at bruge kriterierne maerke, model og type.

So far so good.....

Men hvis man f.eks. ønsker at den skal vælge alle maerkene og ikke kun en... kan man ikke lave en default værdi, i de forskellige kriterier så søge formularen kan forstå at den skal tage alle med?

eks. på en søgning kunne være:
maerke = alle maerker
model = kadet
type xl

i dette tilfælde har jeg problemet med min formular at jeg er nødt til at vælge et maerke!?

Håber der er en der kan hjælpe mig!

På forhånd tak

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




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

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

$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 = '$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&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 jaw Nybegynder
07. juli 2005 - 19:30 #1
Så skal du enten lave en if-sætning der finder ud af om det er ét mærke eller alle mærker der søges efter og så lave et udtræk for de 2 muligheder.
Eller du kan vælge at bruge IN() i dit SQL-udtræk. Et par eksempler:

SELECT * FROM tabel WHERE id IN(1, 2, 3)
SELECT * FROM tabel WHERE id IN(1)
Avatar billede overgreat Forsker
07. juli 2005 - 19:41 #2
Hvordan sætter jeg en If struktur ind så den starter med som default at vælge alle mærkerne? Jeg kan ikke helt se hvordan der er du gør det?
-------------
<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>";

}
?>
Avatar billede jaw Nybegynder
07. juli 2005 - 19:44 #3
Nej, men så skal du jo tilføje et valg i din dropdown der hedder alle og som har en value der f.eks. er alle. Så kan du forespørge:

if($_POST['dropdown'] == "alle") {
  $foresp = mysql_query("SELECT maerke, id FROM bil_maerke ORDER BY maerke");
} else {
  $foresp = mysql_query("SELECT maerke, id FROM bil_maerke WHERE id = $id ORDER BY maerke");
}

Kan du se det nu?
Avatar billede overgreat Forsker
07. juli 2005 - 19:47 #4
ahhhhhh... nu tændes der lamper..... :-)

Der går jo sommetider lidt tid inden brikkerne falder på plads!

jeg roder lige med det i morgen... har en aftale....
Avatar billede overgreat Forsker
07. juli 2005 - 22:39 #5
Hej Jaw

En enkelt ting mangler lige at blive gjort lidt klarere for mig.

Mht if-strukturen bliver den for uoverskulig for mig, da der jo er mulighed for at alle søgemuligheder både kan antage en bestemt værdi eller have "alle"-værdien....

Var der kun tale om en enkelt kan jeg bare direkte bruge, den du viste mig, men når der nu er mange bliver det noget rod for mig!

Håber du kan hjælpe mig!
Avatar billede jaw Nybegynder
08. juli 2005 - 01:20 #6
Så skal du lige give mig nogen linier fra din database, så jeg selv kan sætte det op lokalt, ellers bliver jeg vist aldrig færdig :)
Avatar billede overgreat Forsker
08. juli 2005 - 10:02 #7
Hvilke linier er det at du tænker på?
Avatar billede overgreat Forsker
08. juli 2005 - 10:32 #8
Håber det er det her du tænker på. Jeg tager chancen!

----------


--
-- Struktur-dump for tabellen `bil_aar`
--

CREATE TABLE `bil_aar` (
  `id` int(11) NOT NULL auto_increment,
  `aar` tinytext NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=29 ;

--
-- Data dump for tabellen `bil_aar`
--

INSERT INTO `bil_aar` VALUES (1, 'Alle årgange');
INSERT INTO `bil_aar` VALUES (2, '1978');
INSERT INTO `bil_aar` VALUES (3, '1979');
INSERT INTO `bil_aar` VALUES (4, '1980');
INSERT INTO `bil_aar` VALUES (5, '1981');
INSERT INTO `bil_aar` VALUES (6, '1982');
INSERT INTO `bil_aar` VALUES (7, '1983');
INSERT INTO `bil_aar` VALUES (8, '1984');
INSERT INTO `bil_aar` VALUES (9, '1985');
INSERT INTO `bil_aar` VALUES (10, '1986');
INSERT INTO `bil_aar` VALUES (11, '1987');
INSERT INTO `bil_aar` VALUES (12, '1988');
INSERT INTO `bil_aar` VALUES (13, '1989');
INSERT INTO `bil_aar` VALUES (14, '1990');
INSERT INTO `bil_aar` VALUES (15, '1991');
INSERT INTO `bil_aar` VALUES (16, '1992');
INSERT INTO `bil_aar` VALUES (17, '1993');
INSERT INTO `bil_aar` VALUES (18, '1994');
INSERT INTO `bil_aar` VALUES (19, '1995');
INSERT INTO `bil_aar` VALUES (20, '1996');
INSERT INTO `bil_aar` VALUES (21, '1997');
INSERT INTO `bil_aar` VALUES (22, '1998');
INSERT INTO `bil_aar` VALUES (23, '1999');
INSERT INTO `bil_aar` VALUES (24, '2000');
INSERT INTO `bil_aar` VALUES (25, '2001');
INSERT INTO `bil_aar` VALUES (26, '2002');
INSERT INTO `bil_aar` VALUES (27, '2003');
INSERT INTO `bil_aar` VALUES (28, '2004');

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

--
-- Struktur-dump for tabellen `bil_afgift`
--

CREATE TABLE `bil_afgift` (
  `id` int(11) NOT NULL auto_increment,
  `afgift` tinytext NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

--
-- Data dump for tabellen `bil_afgift`
--

INSERT INTO `bil_afgift` VALUES (1, 'Alle typer');
INSERT INTO `bil_afgift` VALUES (2, 'Med afgift');
INSERT INTO `bil_afgift` VALUES (3, 'Uden afgift');

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

--
-- Struktur-dump for tabellen `bil_bil`
--

CREATE TABLE `bil_bil` (
  `id` int(11) NOT NULL auto_increment,
  `kategori` tinytext NOT NULL,
  `maerke` tinytext NOT NULL,
  `model` tinytext NOT NULL,
  `variant` tinytext NOT NULL,
  `type` tinytext NOT NULL,
  `bstof` tinytext NOT NULL,
  `farve` tinytext NOT NULL,
  `aar` tinytext NOT NULL,
  `km` tinytext NOT NULL,
  `pris` tinytext NOT NULL,
  `afgift` tinytext NOT NULL,
  `billede` tinytext NOT NULL,
  `billedea` tinytext NOT NULL,
  `billedeb` tinytext NOT NULL,
  `udstyr` tinytext NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Data dump for tabellen `bil_bil`
--


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

--
-- Struktur-dump for tabellen `bil_bstof`
--

CREATE TABLE `bil_bstof` (
  `id` int(11) NOT NULL auto_increment,
  `bstof` tinytext NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

--
-- Data dump for tabellen `bil_bstof`
--

INSERT INTO `bil_bstof` VALUES (1, 'Alle typer');
INSERT INTO `bil_bstof` VALUES (2, 'Diesel');
INSERT INTO `bil_bstof` VALUES (3, 'Benzin');

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

--
-- Struktur-dump for tabellen `bil_farve`
--

CREATE TABLE `bil_farve` (
  `id` int(11) NOT NULL auto_increment,
  `farve` tinytext NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

--
-- Data dump for tabellen `bil_farve`
--

INSERT INTO `bil_farve` VALUES (1, 'Alle farver');
INSERT INTO `bil_farve` VALUES (2, 'Blå');
INSERT INTO `bil_farve` VALUES (3, 'Blå (metal)');
INSERT INTO `bil_farve` VALUES (4, 'Rød');

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

--
-- Struktur-dump for tabellen `bil_kategori`
--

CREATE TABLE `bil_kategori` (
  `id` int(11) NOT NULL auto_increment,
  `kategori` tinytext NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

--
-- Data dump for tabellen `bil_kategori`
--

INSERT INTO `bil_kategori` VALUES (1, 'Alle kategorier');
INSERT INTO `bil_kategori` VALUES (2, 'Personvogn');
INSERT INTO `bil_kategori` VALUES (3, 'Bus');
INSERT INTO `bil_kategori` VALUES (4, 'Stationcar');

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

--
-- Struktur-dump for tabellen `bil_maerke`
--

CREATE TABLE `bil_maerke` (
  `id` int(11) NOT NULL auto_increment,
  `maerke` tinytext NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

--
-- Data dump for tabellen `bil_maerke`
--

INSERT INTO `bil_maerke` VALUES (1, 'Alle mærker');
INSERT INTO `bil_maerke` VALUES (2, 'Opel');
INSERT INTO `bil_maerke` VALUES (3, 'Ford');
INSERT INTO `bil_maerke` VALUES (4, 'Audi');

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

--
-- Struktur-dump for tabellen `bil_model`
--

CREATE TABLE `bil_model` (
  `id` int(11) NOT NULL auto_increment,
  `model` tinytext NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

--
-- Data dump for tabellen `bil_model`
--

INSERT INTO `bil_model` VALUES (1, 'Alle modeller');
INSERT INTO `bil_model` VALUES (2, 'Kadet');
INSERT INTO `bil_model` VALUES (3, 'Mondeo');

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

--
-- Struktur-dump for tabellen `bil_type`
--

CREATE TABLE `bil_type` (
  `id` int(11) NOT NULL auto_increment,
  `type` tinytext NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

--
-- Data dump for tabellen `bil_type`
--

INSERT INTO `bil_type` VALUES (1, 'Alle typer');
INSERT INTO `bil_type` VALUES (2, 'xl');
INSERT INTO `bil_type` VALUES (3, 'cx');
INSERT INTO `bil_type` VALUES (4, 'Picasso');

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

--
-- Struktur-dump for tabellen `bil_udstyr`
--

CREATE TABLE `bil_udstyr` (
  `id` int(11) NOT NULL auto_increment,
  `alletyper` int(11) NOT NULL default '0',
  `airbag` int(11) NOT NULL default '0',
  `centrallas` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=15 ;

--
-- Data dump for tabellen `bil_udstyr`
--


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

--
-- Struktur-dump for tabellen `bil_udstyra`
--

CREATE TABLE `bil_udstyra` (
  `id` int(11) NOT NULL auto_increment,
  `udstyr` tinytext NOT NULL,
  `udstyra` tinytext NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

--
-- Data dump for tabellen `bil_udstyra`
--

INSERT INTO `bil_udstyra` VALUES (1, 'alletyper', 'Alle typer');
INSERT INTO `bil_udstyra` VALUES (2, 'airbag', 'Airbag');
INSERT INTO `bil_udstyra` VALUES (3, 'centrallas', 'Centrallås');

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

--
-- Struktur-dump for tabellen `bil_variant`
--

CREATE TABLE `bil_variant` (
  `id` int(11) NOT NULL auto_increment,
  `variant` tinytext NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

--
-- Data dump for tabellen `bil_variant`
--

INSERT INTO `bil_variant` VALUES (1, 'Alle varianter');
INSERT INTO `bil_variant` VALUES (2, '1,2');
INSERT INTO `bil_variant` VALUES (3, '1,4');
INSERT INTO `bil_variant` VALUES (4, '1,6');
Avatar billede jaw Nybegynder
08. juli 2005 - 13:02 #9
Er din bil_bil tom?
Avatar billede overgreat Forsker
08. juli 2005 - 17:34 #10
Sorry.... det var da jeg lavede mine alle typer værdier i tabellen, så tænkte jeg det var nemmere, hvis de alle havde id=1

Jeg opretter lige et par biler og sakser dem ind!
Avatar billede overgreat Forsker
08. juli 2005 - 17:49 #11
Her kommer de

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

CREATE TABLE `bil_bil` (
  `id` int(11) NOT NULL auto_increment,
  `kategori` tinytext NOT NULL,
  `maerke` tinytext NOT NULL,
  `model` tinytext NOT NULL,
  `variant` tinytext NOT NULL,
  `type` tinytext NOT NULL,
  `bstof` tinytext NOT NULL,
  `farve` tinytext NOT NULL,
  `aar` tinytext NOT NULL,
  `km` tinytext NOT NULL,
  `pris` tinytext NOT NULL,
  `afgift` tinytext NOT NULL,
  `billede` tinytext NOT NULL,
  `billedea` tinytext NOT NULL,
  `billedeb` tinytext NOT NULL,
  `udstyr` tinytext NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

--
-- Data dump for tabellen `bil_bil`
--

INSERT INTO `bil_bil` VALUES (1, '4', '2', '2', '3', '2', '2', '4', '25', '123454', '123456', '3', '1.jpg', 'a1.jpg', 'b1.jpg', 'centrallas');
INSERT INTO `bil_bil` VALUES (2, '3', '3', '3', '2', '2', '2', '4', '25', '123454', '123456', '3', '1.jpg', 'a1.jpg', 'b1.jpg', '');
INSERT INTO `bil_bil` VALUES (3, '4', '3', '2', '4', '3', '3', '2', '22', '123454', '123456', '3', '1.jpg', 'a1.jpg', 'b1.jpg', '');
INSERT INTO `bil_bil` VALUES (4, '2', '3', '3', '4', '3', '2', '2', '22', '123454', '123456', '3', '1.jpg', 'a1.jpg', 'b1.jpg', '');
Avatar billede jaw Nybegynder
08. juli 2005 - 21:23 #12
Sådan, nu har jeg prøvet lidt, har også ændret et par andre småting, såsom at fjerne nogen connections jeg mener er overflødige.

Det er stadig ikke 100% dynamisk, men måske det giver dig en god ide af hvad jeg mener:

<?
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");
    while ($data = mysql_fetch_row($foresp)){
        echo "<option value='$data[1]'>$data[0]</option>";
    }
?>
    </select>
    <select name="model">
<?
    $foresp = mysql_query("SELECT model, id FROM bil_model ORDER BY model");
    while ($data = mysql_fetch_row($foresp)){
        echo "<option value='$data[1]'>$data[0]</option>";
    }
?>
    </select>
    <select name="type">
<?
  $foresp = mysql_query("SELECT type, id FROM bil_type ORDER BY type");
    while ($data = mysql_fetch_row($foresp)){
        echo "<option value='$data[1]'>$data[0]</option>";
    }
?>
    </select>

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

<?
}
?>
Avatar billede overgreat Forsker
08. juli 2005 - 21:46 #13
1. Når jeg sakser den ind, og jeg vælger alle maerker kommer den ikke frem med nogle resultater???

2. Kan man ikke indsætte * eller sådan noget for at den er klar til når der kommer flere biler?

  $maerke = ($_POST['maerke'] == 1) ? "'2','3','4'" : "'".$_POST['maerke']."'"; 

3. ovenstående linie skal det forstås noget i stil med, at hvis maerke=1 så skal den vælge 2,3,4 og ellers skal den vælge det nummer som er valgt?

Håber du har mulighed for at svare!
Avatar billede jaw Nybegynder
08. juli 2005 - 21:49 #14
1. Forstår jeg ikke, virker fint her :) Kør lige koden igennem, måske jeg glemt at ændre en adgangskode eller noget lign. Jeg har jo ændret det hele til min lokale server.

2. Er jeg ikke 100% på om man kan eller ej - men du kan jo prøve. Ellers er der andre work-arounds.

3. Ja, det er helt præcis sådan det skal forstås.

Hvis der er flere problemer, især med nr. 1, så sig til, så må jeg jo lige teste det igen.
Avatar billede overgreat Forsker
09. juli 2005 - 10:26 #15
Sorry det var mig der havde lavet en svipser.

Tak for hjælpen.

Sender du et svar.
Avatar billede jaw Nybegynder
10. juli 2005 - 00:02 #16
Jow, det gør jeg da gerne. Selv tak :)
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